PK
N1: chrome/UT ?qI!IUx PK
H: chrome/content/UT 攏I!IUx PK
|Q:yIl l chrome/content/about.xulUT r I7 IUx
PK
7:е
" " chrome/content/contents.rdfUT 6XzI7 IUx
chrome://firefusk/content/firefusk.xul
chrome://firefusk/content/firefusk.xul
PK
|Q:SKI I chrome/content/firefusk.jsUT I!IUx if(!com) var com={};
if(!com.xoxosoma) com.xoxosoma={};
if(!com.xoxosoma.firefusk) com.xoxosoma.firefusk={};
com.xoxosoma.firefusk = function() {
var prefmanager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
var pub = {};
var gfirefuskBundle = Components.classes["@mozilla.org/intl/stringbundle;1"].getService(Components.interfaces.nsIStringBundleService);
var mystrings = gfirefuskBundle.createBundle("chrome://firefusk/locale/firefusk.properties");
pub.firefuskclickforinfobeforeusing = mystrings.GetStringFromName("firefuskclickforinfobeforeusing");
pub.firefuskwelcome1 = mystrings.GetStringFromName("firefuskwelcome1");
pub.firefuskwelcome2 = mystrings.GetStringFromName("firefuskwelcome2");
pub.firefuskwelcome3 = mystrings.GetStringFromName("firefuskwelcome3");
pub.firefuskwelcome4 = mystrings.GetStringFromName("firefuskwelcome4");
pub.firefuskwelcome5 = mystrings.GetStringFromName("firefuskwelcome5");
pub.firefuskwelcome6 = mystrings.GetStringFromName("firefuskwelcome6");
pub.firefuskwelcome7 = mystrings.GetStringFromName("firefuskwelcome7");
pub.firefuskenterurl = mystrings.GetStringFromName("firefuskenterurl");
pub.firefuskthatsnotanumber = mystrings.GetStringFromName("firefuskthatsnotanumber");
pub.firefuskhowmany = mystrings.GetStringFromName("firefuskhowmany");
pub.firefuskcouldntfindanydigitsintheurl = mystrings.GetStringFromName("firefuskcouldntfindanydigitsintheurl");
pub.mostRecentTab = null;
pub.link = "";
pub.initOverlay = function() {
var menu = document.getElementById("contentAreaContextMenu");
menu.addEventListener("popupshowing", com.xoxosoma.firefusk.contextPopupshowing, true);
}
pub.contextPopupshowing = function() {
if(gContextMenu.onImage || gContextMenu.hasBGImage) {
gContextMenu.showItem("context-firefusk", true);
} else {
if(gContextMenu.isTextSelected) {
gContextMenu.showItem("context-firefusk", gContextMenu.isTextSelected);
} else {
gContextMenu.showItem("context-firefusk", gContextMenu.onSaveableLink);
}
}
shown = pub.firefuskGetPref("shownAdvisory",2);
// if(shown != true) {
// document.getElementById("firefusk-item").setAttribute("label", firefuskclickforinfobeforeusing);
// document.getElementById("firefusk-item").setAttribute("oncommand", "showAdvisory();");
// } else {
pub.link = pub.getLink();
var filename = pub.firefuskGetFilename(pub.link);
document.getElementById("firefusk-item").setAttribute("label", filename );
document.getElementById("firefusk-item").setAttribute("oncommand", "com.xoxosoma.firefusk.firefuskConstructAndExecute('" + pub.link + "', 100, 1)");
// }
}
pub.showAdvisory = function() {
alert(pub.firefuskwelcome1 +
pub.firefuskwelcome2 +
pub.firefuskwelcome3 +
pub.firefuskwelcome4 +
pub.firefuskwelcome5 +
pub.firefuskwelcome6 +
pub.firefuskwelcome7);
pub.firefuskGetPref("shownAdvisory", true, 2);
}
pub.firefuskIsImage = function(url) {
if(!(/http:/.test(url))) return false;
var extension = pub.firefuskGetExtension(url);
var imgExtensions = new Array(".jpg", ".jpeg", ".gif", ".png", ".bmp", ".tga", ".tif", ".tiff");
var imgExtensions2 = new Array(".JPG", ".JPEG", ".GIF", ".PNG", ".BMP", ".TGA", ".TIF", ".TIFF");
for(i=0;i < imgExtensions.length; i++) {
if(imgExtensions[i] == extension) { return true; }
if(imgExtensions2[i] == extension) { return true; }
}
return false;
}
pub.getLink = function() {
var url = null;
if( gContextMenu.hasBGImage ) {
url = gContextMenu.bgImageURL;
}
if(gContextMenu.isTextSelected) {
return (gContextMenu.searchSelected ? gContextMenu.searchSelected() : getBrowserSelection() );
}
if(gContextMenu.onImage) {
url = gContextMenu.target.src;
}
if(gContextMenu.onSaveableLink) {
link_text = 'getLinkText' in gContextMenu ? gContextMenu.getLinkText() : gContextMenu.linkText();
if(pub.firefuskIsImage(link_text)) {
url = link_text;
}
link_url = 'getLinkURL' in gContextMenu ? gContextMenu.getLinkURL() : gContextMenu.linkURL();
if(pub.firefuskIsImage(link_url)) {
url = link_url;
}
}
if( /http.{2,9}firefusk\.com/.test(url)) return "????";
if( url == null) return "????";
return url;
}
pub.prepData = function(type, span, url) {
var url = pub.getLink();
pub.firefusk(type, span, url);
}
pub.firefuskManual = function(url) {
var url = ( url == null ) ? pub.link : pub.getLink();
url = prompt( pub.firefuskenterurl, url );
pub.link = "";
if(url.indexOf("[") != -1) {
pub.firefusk(url);
return;
}
var newDiv = _content.document.createElement("div");
newDiv.id = "ffImage";
newDiv.style.border = "solid 1px #ccc";
newDiv.style.margin = "7px";
newDiv.style.textAlign = "center";
newDiv.style.position = "absolute";
newDiv.style.backgroundColor = "#fff";
newDiv.style.padding = "3px";
newDiv.style.fontFamily = "helvetica, arial, sans-serif";
newDiv.style.fontSize = "12px";
var closeBox = _content.document.createElement("div");
closeBox.style.textAlign = "right";
closeBox.style.margin = "0px";
closeBox.style.padding = "0px";
closeBox.style.backgroundColor = "#eee";
closeBox.style.marginBottom = "7px;"
closeBox.innerHTML = "
Firefusk
close";
newDiv.appendChild(closeBox);
var newImg = _content.document.createElement("img");
if(url.substring(0, 7) == "http://") {
newImg.src = url;
} else {
newImg.src = "http://" + url;
}
newImg.style.margin = "auto";
newImg.style.marginBottom = "4px";
newDiv.appendChild(newImg);
var temp = (window.innerHeight / 2) - (newImg.height) - 100;
if(temp < 1) {
newDiv.style.top = 0;
} else {
newDiv.style.top = temp;
}
temp = (window.innerWidth / 2) - (newImg.width) - 30;
if(temp < 1) {
newDiv.style.top = 0;
} else {
newDiv.style.left = temp;
}
newDiv.innerHTML = newDiv.innerHTML + "
" + url;
_content.document.body.appendChild(newDiv);
_content.document.location.href = _content.document.location.href + "#";
}
pub.firefuskConstructAndExecute = function(url, count, direction) {
var url = ( url == null ) ? pub.link : url;
while( ( count == null ) || ( parseInt( count, 10 ) == NaN ) || count < 1 ) {
count = parseInt(prompt(pub.firefuskhowmany), 10);
if(count == NaN) {
alert(pub.firefuskthatsnotanumber);
return false;
}
}
var findFuskRegexp = /(.*)\[(\d+)[\-](\d+)\](.*)/;
var fuskCheck =findFuskRegexp.exec( url );
if( fuskCheck != null ) {
pub.firefusk( url );
return true;
}
var count = ( count == null) ? 20 : count;
var direction = ( direction == null) ? 1 : direction;
var findDigitsRegexp = /^(.*?)(\d+)([^\d]*)$/;
var digitsCheck = findDigitsRegexp.exec(url);
if( digitsCheck == null ) {
alert(pub.firefuskcouldntfindanydigitsintheurl);
} else {
var begin = digitsCheck[1];
var number = digitsCheck[2];
var end = digitsCheck[3];
var leadingZeroes = ( number.length > String(parseInt(number, 10)).length ) ? true : document.getElementById("firefusk-leading").getAttribute("checked");
var firstNum;
var lastNum;
switch( direction ) {
case 0:
firstNum = parseInt(number, 10) - count;
lastNum = parseInt(number, 10) + count;
break;
case -1:
firstNum = number;
lastNum = parseInt(firstNum, 10) - count;
break;
case 1:
firstNum = number;
lastNum = parseInt(firstNum, 10) + count;
break;
}
if( firstNum < 0 ) { firstNum = 0; }
if( lastNum < 0 ) { lastNum = 0; }
firstNum = String(firstNum);
lastNum = String(lastNum);
while( ( direction < 1 ) && ( firstNum.length < number.length ) ) {
firstNum = "0" + firstNum;
}
while( ( direction > -1 ) && ( lastNum.length < firstNum.length ) ) {
lastNum = "0" + lastNum;
}
pub.firefusk(begin + "[" + firstNum + "-" + lastNum + "]" + end);
}
}
pub.firefusk = function(url, primary) {
if( url != null ) {
url = url.replace(/(\w+)\.photobucket\.com/,"photobucket.com");
}
var primary = ( primary == null ) ? true : false;
var findFuskRegexp = /^(.*)\[(\d+)[\-](\d+)\](.*?)$/;
var fuskCheck = findFuskRegexp.exec( url );
if( fuskCheck != null ) {
var begin = fuskCheck[1];
var firstNum = fuskCheck[2];
var lastNum = fuskCheck[3];
var end = fuskCheck[4];
var minLength = ( firstNum.length > lastNum.length ) ? lastNum.length : firstNum.length;
firstNum = parseInt( firstNum, 10 );
lastNum = parseInt( lastNum, 10 );
var incr = ( firstNum > lastNum ) ? -1 : 1;
var current;
var content = "";
for( var i = firstNum; i != lastNum + incr; i = i + incr ) {
current = String( i );
while( current.length < minLength ) {
current = "0" + current;
}
content = content + pub.firefusk( begin + current + end, false );
}
if( primary ) {
pub.craftPage(content, url);
} else {
return content;
}
}
return pub.craftImage(url);
return false;
}
pub.craftPage = function(content, url) {
var ffContent = "" +
"" +
"" +
"

" +
"
toggle broken links
" +
"
" + url + "
" + content;
if( document.getElementById("firefusk-track").getAttribute("checked") ) {
ffContent = ffContent + "

";
}
ffContent += "
";
var tab = document.getElementById("firefusk-tab").getAttribute("checked");
if(tab) {
var ffTab = gBrowser.addTab("about:blank");
pub.mostRecentTab = ffTab;
var ffBrowser = gBrowser.getBrowserForTab(ffTab);
var populate = function() {
ffBrowser.removeEventListener("load", populate, true);
ffBrowser.contentDocument.title = "firefusk: " + url;
ffBrowser.contentDocument.body.innerHTML = ffContent;
};
ffBrowser.addEventListener("load", populate, true);
// var ffTarget = ffBrowser.contentWindow;
// ffBrowser.loadURI("data:text/html;charset=UTF-8," + encodeURIComponent());
} else {
var ffTarget = window.open("data:text/html;charset=UTF-8," + encodeURIComponent(ffContent));
pub.mostRecentTab = null;
}
pub.putInstance(url, "recent");
}
pub.craftImage = function(url) {
return "" +
"

" +
"
" + url + "" +
"
"
}
pub.firefuskGetFilename = function(url) {
return url.substring(url.lastIndexOf("/") + 1);
}
pub.firefuskGetDomain = function(url) {
return url.substring(0, url.indexOf("/"));
}
pub.firefuskGetExtension = function(url) {
return url.substring(url.lastIndexOf("."));
}
pub.firefuskPopulateInstance = function(source) {
var use = pub.getInstances(source);
var theMenu = document.getElementById("firefusk-" + source);
var popup = theMenu.firstChild;
while(popup.firstChild != null) {
popup.removeChild(popup.firstChild);
}
if(use != null) {
for(var i = 0; i < use.length; i++) {
var subitem = document.createElement("menuitem");
subitem.setAttribute("label", use[i]);
subitem.setAttribute("oncommand", "com.xoxosoma.firefusk.firefuskManual('" + use[i] + "')");
popup.appendChild(subitem);
}
var clearitem = document.createElement("menuitem");
clearitem.setAttribute("label", "clear");
clearitem.setAttribute("oncommand", "com.xoxosoma.firefusk.clearInstances('" + source + "')");
popup.appendChild(clearitem);
}
if(source == 'saved') {
var newsub = document.createElement("menuitem");
newsub.setAttribute("label", "save");
newsub.setAttribute("oncommand", "com.xoxosoma.firefusk.saveIt()");
popup.appendChild(newsub);
}
}
pub.saveIt = function() {
url = pub.getLink();
pub.putInstance(url, "saved");
}
// destination - either saved or recent
pub.putInstance = function(q, destination) {
try {
var kept = pub.getInstances(destination, 0);
var newKept = q;
while(kept.length > 20) {
kept.pop();
}
if(kept != null) {
for(var i = 0; i < kept.length; i++) {
if(kept[i] == q) return;
newKept = newKept + "|%|" + kept[i];
}
}
} catch(e) {
var newKept = q;
}
pub.firefuskSetPref(destination, newKept, 0);
}
pub.clearInstances = function(source) {
pub.firefuskSetPref(source, null, 0);
}
pub.getInstances = function(source) {
try {
var kept = pub.firefuskGetPref(source, 0);
kept = kept.split("|%|");
} catch(e) {
kept = null;
}
return kept;
}
pub.removeInstance = function(q, destination) {
// try {
var kept = pub.getInstances(destination, 0);
if(kept != null) {
if(kept[0] != q) {
newKept = kept[0];
if(kept[1] != q) {
newKept = newKept + "|%|" + kept[1];
}
} else {
newKept = kept[1];
}
for(i = 2; i < kept.length; i++) {
if(kept[i] != q) newKept = newKept + "|%|" + kept[i];
}
}
// } catch(e) {
// newKept = null;
// }
if(newKept == "") newKept = null;
pub.firefuskGetPref(destination, newKept, 0);
}
pub.firefuskSetPref = function(name, value, type) {
var prefname = "extensions.firefusk." + name;
if(value == null) {
try {
prefmanager.clearUserPref(prefname);
} catch(e) {}
} else {
switch(type) {
case 0: prefmanager.setCharPref(prefname, value); break;
case 1: prefmanager.setIntPref(prefname, value); break;
case 2: prefmanager.setBoolPref(prefname, value); break;
}
}
}
pub.firefuskGetPref = function(name, type) {
var prefname = "extensions.firefusk." + name;
try {
switch(type) {
case 0: return prefmanager.getCharPref(prefname);
case 1: return prefmanager.getIntPref(prefname);
case 2: return prefmanager.getBoolPref(prefname);
}
} catch(e) {
return null;
}
}
// AJAX
pub.req = new Array();
pub.working = 0;
pub.activeCons = 0;
pub.waitList = 0;
pub.startTry = function(ffTarget, src) {
var num = req.length;
req[num] = false;
// branch for native XMLHttpRequest object
if(window.XMLHttpRequest) {
try {
req[num] = new XMLHttpRequest();
} catch(e) {
req[num] = false;
}
// branch for IE/Windows ActiveX version
} else if(window.ActiveXObject) {
try {
req[num] = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
req[num] = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
req[num] = false;
}
}
}
if(req[num]) {
req[num].onreadystatechange = function () { pub.firefuskProcessReqChange(ffTarget, src, num) };
req[num].open("HEAD", src, true);
req[num].send("");
}
}
pub.firefuskProcessReqChange = function(ffTarget, src, num) {
// only if req shows "loaded"
if (req[num].readyState == 4) {
// only if "OK"
activeCons--;
if (req[num].status == 200) {
if(req[num].getResponseHeader("Content-Type").indexOf("video") != "-1") {
} else {
// was 'notsure', but im sure (heh heh) that most of these that aren't
// webpages are .wmv being served incorrectly...
if(req[num].getResponseHeader("Content-Type") != "text/html") {
}
}
}
if(activeCons == 0) {
working = false;
if(waitList == 0) {
ffTarget.document.writeln("");
ffTarget.document.writeln("