/**javascript console***/ function LOG(msg) { var consoleService = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService); consoleService.logStringMessage(msg); } function aPlaya(page){ var dUrl = page.URL; function iCanHazTubes(fv, vidID, pD){ function handleErr(msg,url,l){ return true; } onerror=handleErr; //to get around the lack of same-domain restriction in extensions var sGetter = page.createElement('script'); sGetter.type = "text/javascript"; sGetter.innerHTML = "try{"+ "var vidID1 = document.URL.split('v=')[1].split('&')[0];"+ "var gM = document.getElementById('movie_player');"+ "var getMp1 = gM.getAttribute('flashvars');"+ "var srcWithT = 'http://'+document.domain+'/get_video?video_id='+vidID1+'&t='+getMp1.split('t=')[1].split('&')[0];"+ "var httpRequest = new XMLHttpRequest();"+ "httpRequest.onreadystatechange = function() { "+ " if(httpRequest.readyState == 4 && httpRequest.status == 303){"+ " var respHed = httpRequest.getResponseHeader('Location');"+ " if(respHed.indexOf('cache.googlevideo.com') > -1){"+ " respHed = 'http://'+httpRequest.getResponseHeader('Location').split('&origin=')[1]+'/get_video?video_id='+vidID1;"+ " }"+ " var spanna = document.createElement('span');"+ " spanna.id = 'spannaResphead';"+ " spanna.style.visibility = 'hidden';"+ " spanna.textContent = respHed;"+ " document.getElementsByTagName('body')[0].appendChild(spanna);"+ " }"+ "};"+ "httpRequest.open('HEAD', srcWithT, true);"+ "httpRequest.send(null);"+ "}"+ "catch (err){"+ "}"; page.getElementsByTagName('body')[0].appendChild(sGetter); var srcWithT = 'http://www.youtube.com/get_video?video_id='+vidID+'&t='+fv.split("t=")[1].split("&")[0]; var loaderThere; function timedCount(){ var iCanHazSpanna = page.getElementById('spannaResphead'); if( ( iCanHazSpanna && page.getElementById('tempLoader') )== null){ pD.innerHTML = '

Loading FlowPlayer   '+ '

'; loaderThere = true; window.setTimeout(timedCount,5); } else if( ( iCanHazSpanna == null) && loaderThere){ window.setTimeout(timedCount,5); } else if(iCanHazSpanna){ var spanTex = iCanHazSpanna.textContent; //var fileObj = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile); var sPath = encodeURI('file:///'+file.path.replace(/\\/g, "/")+'/youtubealternateplayer@forboden/chrome/content/FlowPlayer.swf'); //fileObj.initWithPath("c:\\FlowPlayer.swf"); LOG(sPath); pD.innerHTML = ''; var e = page.createElement('embed'); e.src = sPath; pD.appendChild(e); } } timedCount(); } //end of: function icanhaztubes var vidID; if(dUrl.match('youtube.com/watch?')){ var getMp = page.getElementById('movie_player'); var getwPlayerVars = getMp.getAttribute('flashvars'); vidID = dUrl.split("v=")[1].split("&")[0]; iCanHazTubes(getwPlayerVars, vidID, getMp.parentNode); } else if( dUrl.match('youtube.com/user/') ){ var xE = content.document.evaluate( "/html/body/div[@id='baseDiv']/div[3]/div[2]/div[1]/object/embed", content.document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue; vidID = xE.src.split("video_id=")[1].split("&")[0]; iCanHazTubes(xE.src, vidID, xE.parentNode); } } //end of: function aPlaya(page){ var appcontent = document.getElementById("appcontent"); if (appcontent){ appcontent.addEventListener("DOMContentLoaded", function (event) { aPlaya(event.target); }, false); }