Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Hunter v. 1.4
- _skhunterVersion=14;
- var xmlhttp;
- var targetDoc;
- var UI;
- var data;
- //there is no tbody ?? rightnow
- function getSectorTable(documentBody,trIndex,tdIndex,TextFlagRegex){
- var tables=documentBody.getElementsByTagName("table");
- var tryTable = null;
- var sectorTableNotFound = true;
- var j = 0;
- while(j<tables.length && sectorTableNotFound) {
- if(tables[j].getElementsByTagName("tbody")[0]){
- tryTable = tables[j].getElementsByTagName("tbody")[0];
- } else {
- tryTable = tables[j];
- }
- var tryRow = tryTable.getElementsByTagName("tr")[trIndex];
- if(tryRow){
- var tryTD = tryRow.getElementsByTagName("td")[tdIndex];
- if(tryTD && tryTD.innerHTML.match(TextFlagRegex)){
- sectorTableNotFound = false;
- }
- }
- j++;
- }
- return tryTable;
- }
- function getSectorTable_(documentBody,trIndex,tdIndex,TextFlagRegex){
- var tables=documentBody.getElementsByTagName("table");
- var tryTable = null;
- var sectorTableNotFound = true;
- var j = 0;
- while(j<tables.length && sectorTableNotFound) {
- if(tables[j].getElementsByTagName("tbody")[0]){
- tryTable = tables[j].getElementsByTagName("tbody")[0];
- } else {
- tryTable = tables[j];
- }
- var tryRow = tryTable.getElementsByTagName("tr")[trIndex];
- if(tryRow){
- var tryTD = tryRow.getElementsByTagName("td")[tdIndex];
- if(tryTD && tryTD.innerHTML.match(TextFlagRegex)){
- sectorTableNotFound = false;
- }
- }
- j++;
- }
- if (sectorTableNotFound == true) return null;
- return tryTable;
- }
- function makeReport(event){
- //var data = self.data;
- var timeIndex = UI.value;
- eval(data);
- var ITarget = event.originalTarget.parentNode.parentNode.parentNode.parentNode;
- //documentB=event.originalTarget.getElementsByTagName("body")[0];
- //var ITarget = getSectorTable_(documentB,1,0,/^Kingdom Name/);
- var slotsTarget=ITarget.getElementsByTagName("tr");
- //alert(slotsTarget[3].innerHTML);
- for(i=0;i<slotsNR;i++){
- var tds=slotsTarget[i+2].getElementsByTagName("td");
- if ((0 <= timeIndex) && (timeIndex < times.length)){
- Land = ""
- if (landchange[timeIndex][i] != 0){
- if ( landchange[timeIndex][i] > 0) {
- Land += " +"+landchange[timeIndex][i];
- tds[3].style.color="#22FF22";
- } else {
- Land += landchange[timeIndex][i];
- tds[3].style.color="#FF2222";
- }
- tds[3].lastChild.nodeValue = Land;
- } else {
- tds[3].lastChild.nodeValue = "";
- }
- NW = ""
- if (nwchange[timeIndex][i] != 0){
- if ( nwchange[timeIndex][i] > 0) {
- NW += " +"+nwchange[timeIndex][i];
- tds[5].style.color="#22FF22";
- } else {
- NW += nwchange[timeIndex][i];
- tds[5].style.color="#FF2222";
- }
- tds[5].lastChild.nodeValue = NW;
- } else {
- tds[5].lastChild.nodeValue = "";
- }
- Honour = ""
- if (hchange[timeIndex][i] != 0){
- if ( hchange[timeIndex][i] > 0) {
- Honour += " +"+hchange[timeIndex][i];
- tds[7].style.color="#22FF22";
- } else {
- Honour += hchange[timeIndex][i];
- tds[7].style.color="#FF2222";
- }
- tds[7].lastChild.nodeValue = Honour;
- } else {
- tds[7].lastChild.nodeValue = "";
- }
- } else {
- tds[3].lastChild.nodeValue = "";
- tds[5].lastChild.nodeValue = "";
- tds[7].lastChild.nodeValue = "";
- }
- }
- //alert(data);
- }
- function evalData(event) {
- if(xmlhttp.readyState==4) {
- if(xmlhttp.getResponseHeader("Content-Type") != "text/plain") {
- targetDoc.getElementById("serverMessageTD").lastChild.nodeValue="SK Hunter: No response from server.";
- times=null;
- //alert(xmlhttp.responseText);
- return;
- }
- if(xmlhttp.responseText.match(/\/\*MAINT\*\//)) {
- targetDoc.getElementById("serverMessageTD").lastChild.nodeValue="SK Hunter Server Response: server is in maintainance.";
- times=null;
- return;
- }
- if(xmlhttp.responseText.match(/\/\*VERSION\*\//)) {
- targetDoc.getElementById("serverMessageTD").lastChild.nodeValue="SK Hunter Server Response: Please upgrade your Hunter extension.";
- times=null;
- return;
- }
- if(xmlhttp.responseText.match(/\/\*ERROR\*\//)) {
- targetDoc.getElementById("serverMessageTD").lastChild.nodeValue="SK Hunter Server Response:" + xmlhttp.responseText;
- throw "SK HUNTER server response:"+xmlhttp.responseText;
- times=null;
- return;
- }
- if(xmlhttp.responseText.match(/\/\*DROP\*\//)) {
- targetDoc.getElementById("serverMessageTD").lastChild.nodeValue="SK Hunter Server Response: No data for this sector.";
- times=null;
- return;
- }
- if(!xmlhttp.responseText.match(/\/\*OK\*\//)) {
- targetDoc.getElementById("serverMessageTD").lastChild.nodeValue="SK Hunter Server Response: Your request failed.";
- times=null;
- return;
- }
- var firstChar = xmlhttp.responseText.indexOf("/*OK*/") + 6;
- var lastChar = xmlhttp.responseText.indexOf("/*EOT*/");
- var msgEv = xmlhttp.responseText.substring(firstChar, lastChar);
- //alert(msgEv);
- try {
- eval(msgEv);
- } catch(x) {
- targetDoc.getElementById("serverMessageTD").lastChild.nodeValue="SK HUNTER server response does not make sense. See Javascript Error Console.";
- throw "SK HUNTER server response is jibberish. Forced ads might have been injected or your PHP script gets filtered by host.";
- return;
- }
- //alert(landchange[1][1]);
- //display server message
- if(srvmsg){
- var tdM = targetDoc.getElementById("serverMessageTD");
- if(srvmsg_link){
- var Aelem = targetDoc.createElement("a");
- Aelem.setAttribute("href",srvmsg_link);
- if(srvmsg_color)Aelem.style.color=srvmsg_color;
- var AelemT = targetDoc.createTextNode(srvmsg);
- Aelem.appendChild(AelemT);
- tdM.replaceChild(Aelem,tdM.lastChild);
- } else {
- if(srvmsg_color)tdM.style.color=srvmsg_color;
- tdM.lastChild.nodeValue=srvmsg;
- }
- }
- //add times to selection element
- //UI=targetDoc.getElementById("timeline");
- order=Components.classes["@mozilla.org/preferences-service;1"].
- getService(Components.interfaces.nsIPrefService).
- getBranch("extensions.skhunter.").getBoolPref('order');
- if(order){
- //ascending
- for (i=times.length-1;i>=0;i--){
- s = targetDoc.createElement("option");
- s.setAttribute("value",i);
- t = targetDoc.createTextNode(times[i]);
- s.appendChild(t);
- UI.appendChild(s);
- }
- } else {
- //descending
- for (i=0;i<times.length;i++){
- s = targetDoc.createElement("option");
- s.setAttribute("value",i);
- t = targetDoc.createTextNode(times[i]);
- s.appendChild(t);
- UI.appendChild(s);
- }
- }
- var s = targetDoc.createElement("option");
- s.setAttribute("value",times.length);
- var t = targetDoc.createTextNode("none");
- s.appendChild(t);
- UI.appendChild(s);
- //add a reference to the target documet to use by the event handler
- //add a reference to the recieved data to use by the event handler
- //UI.data = xmlhttp.responseText
- //display data; pass the object itself for reference;
- //UI.onchange(UI);
- data = msgEv;
- //UI.addEventListener("change", makeReport, false);
- // works!! document.addEventListener("change", function(e) { makeReport(e);}, true);
- UI.addEventListener("change", function(e) { makeReport(e);}, true);
- //window.addEventListener("change", function(e) { makeReport(e);}, false);
- //UI.addEventListener("change", function(e) { makeReport(e);}, false);
- //makeReport(event);
- // does still work !! alert(targetDoc.getElementsByTagName("body")[0].innerHTML);
- var event = document.createEvent("HTMLEvents");
- event.initEvent("change", true, false);
- UI.dispatchEvent(event);
- //
- }
- }
- function buildPostData(server){
- try{
- var documentB=targetDoc.getElementsByTagName("body")[0];
- var postData = "";
- var ITarget = null;
- var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.skhunter.");
- var aPWD;// = encodeURIComponent(prefs.getCharPref('aPWD'));
- var kdnm;// = encodeURIComponent(prefs.getCharPref('kdnm'));
- var email;// = encodeURIComponent(prefs.getCharPref('email'));
- var kdx;// = encodeURIComponent(prefs.getIntPref('kdx'));
- var kdy;// = encodeURIComponent(prefs.getIntPref('kdy'));
- //
- if (server == 1){
- aPWD = encodeURIComponent(prefs.getCharPref('aPWD'));
- kdnm = encodeURIComponent(prefs.getCharPref('kdnm'));
- email = encodeURIComponent(prefs.getCharPref('email'));
- kdx = encodeURIComponent(prefs.getIntPref('kdx'));
- kdy = encodeURIComponent(prefs.getIntPref('kdy'));
- } else {
- aPWD = encodeURIComponent(prefs.getCharPref('aPWD2'));
- kdnm = encodeURIComponent(prefs.getCharPref('kdnm2'));
- email = encodeURIComponent(prefs.getCharPref('email2'));
- kdx = encodeURIComponent(prefs.getIntPref('kdx2'));
- kdy = encodeURIComponent(prefs.getIntPref('kdy2'));
- }
- //
- var tcap = encodeURIComponent(prefs.getIntPref('tcap'));
- postData = "l="+encodeURIComponent(targetDoc.location.href);
- postData += "&aPWD=" + aPWD;
- postData += "&hver=" + _skhunterVersion;
- postData += "&kdnm=" + kdnm;
- postData += "&email=" + email;
- postData += "&kdx=" + kdx;
- postData += "&kdy=" + kdy;
- postData += "&tcap=" + tcap;
- }
- catch(err)
- {
- txt = "SK HUNTER::buildPostData() failed: " + err.description;
- throw txt;
- }
- SKTime = function(HTMLObj){
- try{
- var DateString = HTMLObj.getElementsByTagName("tr")[0].getElementsByTagName("td")[2].innerHTML
- DateString=DateString.replace(/,/g, "");
- var Date=DateString.split(" ");
- this.month=encodeURIComponent(Date[0]);
- this.day= new Number(Date[1]);
- var Temp2=Date[2].split(":");
- this.hour=new Number(Temp2[0]);
- this.minute=new Number(Temp2[1]);
- this.sufix=encodeURIComponent(Date[3]);
- }
- catch(err)
- {
- txt = "SK HUNTER::buildPostData::SKTime() failed: " + err.description;
- throw txt;
- }
- }
- SKTime_ = function(HTMLObj){
- var DateString = HTMLObj.innerHTML;
- DateString = DateString.replace(/,/g, "");
- var start = DateString.indexOf("(");
- var end = DateString.indexOf(")");
- DateString = DateString.slice(start+1,end);
- var Date=DateString.split(" ");
- this.month=encodeURIComponent(Date[0]);
- this.day= new Number(Date[1]);
- var Temp2=Date[2].split(":");
- this.hour=new Number(Temp2[0]);
- this.minute=new Number(Temp2[1]);
- this.sufix="";
- }
- var date;
- var ITarget = targetDoc.getElementById("time");
- // alert(ITarget.innerHTML);
- if(ITarget){
- date = new SKTime_(ITarget);
- } else {
- ITarget = getSectorTable(documentB,1,0,/^Money:/);
- date = new SKTime(ITarget);
- }
- postData += "&m="+date.month+"&d="+date.day+"&hour="+date.hour+"&min="+date.minute+"&s="+date.sufix;
- SKgalaxy = function(HTMLObj){
- try{
- var Coords=HTMLObj.getElementsByTagName("tr")[0].getElementsByTagName("td")[1].getElementsByTagName("input");
- this.X=encodeURIComponent(Coords[0].getAttribute("value"));
- this.Y=encodeURIComponent(Coords[1].getAttribute("value"));
- }
- catch(err)
- {
- txt = "SK HUNTER::buildPostData::SKgalaxy() failed: " + err.description;
- throw txt;
- }
- }
- ITarget = getSectorTable(documentB,0,1,/Galaxy:/);
- var galaxy = new SKgalaxy(ITarget);
- postData += "&x=" + galaxy.X + "&y="+ galaxy.Y;
- getAlliance = function(HTMLObj){
- try{
- var temp = HTMLObj.getElementsByTagName("tr")[0].getElementsByTagName("td")[2].getElementsByTagName("a");
- if(temp[0]) {
- return encodeURIComponent(temp[0].innerHTML);
- } else {
- return "none";
- }
- }
- catch(err)
- {
- txt = "SK HUNTER::buildPostData::getAlliance() failed: " + err.description;
- throw txt;
- }
- }
- try{
- // ITarget = getSectorTable(documentB,0,0,/^The Sector Of:/);
- // var alliance = getAlliance(ITarget);
- // postData += "&ali=" + alliance;
- postData += "&ali=" + "no";
- ITarget = getSectorTable(documentB,0,0,/^Kingdom Name/);
- var slots=ITarget.getElementsByTagName("tr");
- for (i=1;i<slots.length;i++){
- var status= slots[i].getAttribute("class");
- var tds=slots[i].getElementsByTagName("td");
- var a=tds[0].getElementsByTagName("a")[0];
- if(a) {
- var name=a.innerHTML;
- name=name.slice(0,name.indexOf("(")-1);
- } else {
- name="";
- }
- //var type=tds[1].innerHTML;
- type="";
- a=tds[2].getElementsByTagName("a")[0];
- if(a) {
- var land=a.innerHTML.replace(/,/g, "");
- } else {
- land=tds[2].innerHTML.replace(/,/g, "");
- }
- a=tds[3].getElementsByTagName("a")[0];
- if(a) {
- var nw=a.innerHTML.replace(/,/g, "");
- } else {
- nw=tds[3].innerHTML.replace(/,/g, "");
- }
- a=tds[4].getElementsByTagName("a")[0];
- if(a) {
- var h=a.innerHTML.replace(/,/g, "");
- } else {
- h=tds[4].innerHTML.replace(/,/g, "");
- }
- postData+="&name["+i+"]="+name;
- postData+="&sts["+i+"]="+status;
- postData+="&type["+i+"]="+type;
- postData+="&land["+i+"]="+land;
- postData+="&nw["+i+"]="+nw;
- postData+="&h["+i+"]="+h;
- }
- }
- catch(err)
- {
- txt = "Error description: " + err.description + "\n";
- throw txt;
- }
- //alert(postData);
- return postData;
- }
- var skhunter = {
- onLoad: function() {
- // initialization code
- this.initialized = true;
- this.strings = document.getElementById("skhunter-strings");
- document.getElementById("contentAreaContextMenu")
- .addEventListener("popupshowing", function(e) { this.showContextMenu(e); }, false);
- var appcontent = document.getElementById("appcontent");
- if(appcontent && !appcontent.hasHunter) {
- appcontent.addEventListener("DOMContentLoaded", this.onPageLoad, true);
- appcontent.hasHunter = true;
- }
- },
- //
- onPageLoad: function(aEvent) {
- targetDoc = aEvent.originalTarget;
- if(targetDoc.location.href.match(/game.php?page=viewsector/) == null) return;
- if(targetDoc.location.href.match(/game.php?page=viewsector&scroll=yoursector/)) return;
- var sk1 = 0;
- var sss = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.skhunter.").getCharPref('sSHORT');
- var sss2 = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.skhunter.").getCharPref('sSHORT2');
- var smatch_ = new RegExp (sss+"\gearsofconquest\.com\u1");
- // var smatch2 = new RegExp (sss2+"\.starkingdoms\.com");
- if(targetDoc.location.href.match(smatch_) != null) {
- sk1 = 1;
- } else {
- if(targetDoc.location.href.match(smatch2) != null){
- sk1 = 2;
- } else {
- return;
- }
- }
- var HunterEnabled = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.skhunter.").getBoolPref('on');
- var HunterEnabled2 = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.skhunter.").getBoolPref('on2');
- if(sk1 == 1)
- {
- if(!HunterEnabled) return;
- }
- if(sk1 == 2)
- {
- if(!HunterEnabled2) return;
- }
- xmlhttp = new XMLHttpRequest();
- //-->? xmlhttp.targetDoc = targetDoc;
- xmlhttp.onreadystatechange=evalData;
- var sURL;
- if (sk1 == 1){
- sURL = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.skhunter.").getCharPref('sURL');
- } else {
- sURL = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.skhunter.").getCharPref('sURL2');
- }
- //if(!targetDoc.location.href.match(/s1/)) return;
- xmlhttp.open("POST",sURL,true);
- xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
- var postData = buildPostData(sk1);
- xmlhttp.send(postData);
- // make User Interface
- documentBody=targetDoc.getElementsByTagName("body")[0];
- //var ITarget=documentBody.getElementsByTagName("table")[6].getElementsByTagName("tbody")[0];
- var ITarget = getSectorTable(documentBody,0,0,/^Kingdom Name/);
- //create selection element
- UI=targetDoc.createElement("select");
- UI.setAttribute("id","timeline");
- //create first option element
- //s = targetDoc.createElement("option");
- //s.setAttribute("value",0);
- //t = targetDoc.createTextNode(" ");
- //s.appendChild(t);
- //UI.appendChild(s);
- //text surrounding selection tag
- var t = targetDoc.createTextNode("View ");
- var t2 = targetDoc.createTextNode(" ago");
- //create selection <td>
- var td=targetDoc.createElement("td");
- td.appendChild(t);
- td.appendChild(UI);
- td.appendChild(t2);
- //create hunter table row
- tr=targetDoc.createElement("tr");
- tr.appendChild(td);
- //tds for server message
- var tM = targetDoc.createTextNode("loading data, please wait...");
- var tdM=targetDoc.createElement("td");
- //set server message id for later reference
- tdM.setAttribute("id","serverMessageTD");
- tdM.setAttribute("colspan","8");
- tdM.appendChild(tM);
- tr.appendChild(tdM);
- //ITarget is the the table body, it's chiles are the table rows displaying kindom lines
- var ref=ITarget.getElementsByTagName("tr");
- ITarget.insertBefore(tr,ref.item(0));
- ref=ITarget.getElementsByTagName("tr");
- var tdref=ref[1].getElementsByTagName("td");
- //add tds "change"
- td=targetDoc.createElement("td");
- t = targetDoc.createTextNode("change");
- td.appendChild(t);
- ref[1].insertBefore(td,tdref.item(3));
- td2=td.cloneNode(true);
- ref[1].insertBefore(td2,tdref.item(5));
- td3=td.cloneNode(true);
- ref[1].insertBefore(td3,tdref.item(7));
- //create tds for change values;
- for(i=1;i<21;i++){
- tdref=ref[i+1].getElementsByTagName("td");
- td=targetDoc.createElement("td");
- t = targetDoc.createTextNode("--");
- td.appendChild(t);
- ref[i+1].insertBefore(td,tdref.item(3));
- td2=td.cloneNode(true);
- ref[i+1].insertBefore(td2,tdref.item(5));
- td3=td.cloneNode(true);
- ref[i+1].insertBefore(td3,tdref.item(7));
- }
- //
- //
- },
- showContextMenu: function(event) {
- // show or hide the menuitem based on what the context menu is on
- // see http://kb.mozillazine.org/Adding_items_to_menus
- document.getElementById("context-skhunter").hidden = gContextMenu.onImage;
- },
- onMenuItemCommand: function(e) {
- var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
- .getService(Components.interfaces.nsIPromptService);
- var HunterEnabled = Components.classes["@mozilla.org/preferences-service;1"].
- getService(Components.interfaces.nsIPrefService).
- getBranch("extensions.skhunter.").getBoolPref('on');
- var seURL = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.skhunter.").getCharPref('sURL');
- var strH = this.strings.getString("helloMessage");
- if(HunterEnabled){
- promptService.alert(window, this.strings.getString("helloMessageTitle"),
- strH + " " + seURL );
- } else {
- promptService.alert(window, this.strings.getString("helloMessageTitle"),
- this.strings.getString("sorryMessage"));
- }
- },
- };
- window.addEventListener("load", function(e) { skhunter.onLoad(e); }, false);
- //window.addEventListener("onchange", function(e) { skhunter.makeReport(e);}, false);
- // works!! window.addEventListener("change", function(e) { alert('fuck you'); }, false);
Add Comment
Please, Sign In to add comment