Ikariam 100 CRs

By Overkill Last update Jun 25, 2009 — Installed 15,214 times. Daily Installs: 10, 10, 10, 7, 11, 10, 7, 11, 5, 10, 12, 4, 5, 7, 8, 8, 9, 6, 6, 8, 9, 10, 9, 13, 8, 4, 9, 5, 6, 10, 11, 12

There are 8 previous versions of this script.

// ==UserScript==
// @name           Ikariam 100 CRs
// @namespace      overkill_gm
// @description    Makes the Military advisor give first 100 CRs on the first page
// @version        9
// @include        http://*.ikariam.*/index.php?view=militaryAdvisorCombatReports*
// @exclude        http://board.ikariam.*
// @homepage       http://userscripts.org/scripts/show/34564
// ==/UserScript==

// I integrated Ikariam Attack Counter since it won't work with this AJAX http://ikariam.nfshost.com/

// variables to set up
var enableCounts = true;      // Activate attack counter script after retrieving CRs
var hilightColor = '#DAE899'; // Color to hilight cities attacked  background is #EEE8AA // old color: #CAE877
var bashingColor = '#FAE877'; // Color to hilight cities attacked 6 times or greater in the past 24 hours.

// begin script
var loadingImg = 'data:image/gif;base64,'+
    'R0lGODlhEAAQAPYAAO7oqobRM9zjlcHeeKzZX5/WUKHXUrLaZcfeft/jmcjff5TTQ5XURJjUSZvV'+
    'TJ/VT7HZY9HgiZHSP7PbaObloOfmotTijb7dc6XYV6zYXtPhi9rilJ3VTY7SPL/cc8vggavZXbjb'+
    'bOHlnLzccYvRObDZY8Xee6/aYs/hh6LWUonRNs3ghMLeeI/SPofRNeTln+nmpbbbarvccOrmpbrc'+
    'b8rfgeznp+3nqNPijNjikevmpt3jl83fhOfmotvjlOLlneDkmtrjktbij9LhiuDkm97kl+jmo97k'+
    'mLfba8/ghs7ghqTXVabXWKrYXK3ZYKDWUZ7VTtXijrXaaZnUSeXloJbURsDddanYW5fUR5LTQMbf'+
    'faXXV4zSO73dcq7ZYJrVStfij9njkuPlndDhibncbcDddsbefKjYWsDddqPXVaPWVJPUQsnfgIvR'+
    'OYrROMzgg4bQNMTee5TTRI3SO5zVTLTaaJjVR4jRNrLaZpLTQafXWrLaZbnbbgAAAAAAAAAAACH+'+
    'GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwA'+
    'AAAAEAAQAAAHjYAAgoOEhYUbIykthoUIHCQqLoI2OjeFCgsdJSsvgjcwPTaDAgYSHoY2FBSWAAML'+
    'E4wAPT89ggQMEbEzQD+CBQ0UsQA7RYIGDhWxN0E+ggcPFrEUQjuCCAYXsT5DRIIJEBgfhjsrFkaD'+
    'ERkgJhswMwk4CDzdhBohJwcxNB4sPAmMIlCwkOGhRo5gwhIGAgAh+QQACgABACwAAAAAEAAQAAAH'+
    'jIAAgoOEhYU7A1dYDFtdG4YAPBhVC1ktXCRfJoVKT1NIERRUSl4qXIRHBFCbhTKFCgYjkII3g0hL'+
    'UbMAOjaCBEw9ukZGgidNxLMUFYIXTkGzOmLLAEkQCLNUQMEAPxdSGoYvAkS9gjkyNEkJOjovRWAb'+
    '04NBJlYsWh9KQ2FUkFQ5SWqsEJIAhq6DAAIBACH5BAAKAAIALAAAAAAQABAAAAeJgACCg4SFhQkK'+
    'E2kGXiwChgBDB0sGDw4NDGpshTheZ2hRFRVDUmsMCIMiZE48hmgtUBuCYxBmkAAQbV2CLBM+t0pu'+
    'aoIySDC3VC4tgh40M7eFNRdH0IRgZUO3NjqDFB9mv4U6Pc+DRzUfQVQ3NzAULxU2hUBDKENCQTtA'+
    'L9yGRgkbcvggEq9atUAAIfkEAAoAAwAsAAAAABAAEAAAB4+AAIKDhIWFPygeEE4hbEeGADkXBycZ'+
    'Z1tqTkqFQSNIbBtGPUJdD088g1QmMjiGZl9MO4I5ViiQAEgMA4JKLAm3EWtXgmxmOrcUElWCb2zH'+
    'kFQdcoIWPGK3Sm1LgkcoPrdOKiOCRmA4IpBwDUGDL2A5IjCCN/QAcYUURQIJIlQ9MzZu6aAgRgwF'+
    'GAFvKRwUCAAh+QQACgAEACwAAAAAEAAQAAAHjIAAgoOEhYUUYW9lHiYRP4YACStxZRc0SBMyFoVE'+
    'PAoWQDMzAgolEBqDRjg8O4ZKIBNAgkBjG5AAZVtsgj44VLdCanWCYUI3txUPS7xBx5AVDgazAjC3'+
    'Q3ZeghUJv5B1cgOCNmI/1YUeWSkCgzNUFDODKydzCwqFNkYwOoIubnQIt244MzDC1q2DggIBACH5'+
    'BAAKAAUALAAAAAAQABAAAAeJgACCg4SFhTBAOSgrEUEUhgBUQThjSh8IcQo+hRUbYEdUNjoiGlZW'+
    'QYM2QD4vhkI0ZWKCPQmtkG9SEYJURDOQAD4HaLuyv0ZeB4IVj8ZNJ4IwRje/QkxkgjYz05BdamyD'+
    'N9uFJg9OR4YEK1RUYzFTT0qGdnduXC1Zchg8kEEjaQsMzpTZ8avgoEAAIfkEAAoABgAsAAAAABAA'+
    'EAAAB4iAAIKDhIWFNz0/Oz47IjCGADpURAkCQUI4USKFNhUvFTMANxU7KElAhDA9OoZHH0oVgjcz'+
    'rJBRZkGyNpCCRCw8vIUzHmXBhDM0HoIGLsCQAjEmgjIqXrxaBxGCGw5cF4Y8TnybglprLXhjFBUW'+
    'VnpeOIUIT3lydg4PantDz2UZDwYOIEhgzFggACH5BAAKAAcALAAAAAAQABAAAAeLgACCg4SFhjc6'+
    'RhUVRjaGgzYzRhRiREQ9hSaGOhRFOxSDQQ0uj1RBPjOCIypOjwAJFkSCSyQrrhRDOYILXFSuNkpj'+
    'ggwtvo86H7YAZ1korkRaEYJlC3WuESxBggJLWHGGFhcIxgBvUHQyUT1GQWwhFxuFKyBPakxNXgce'+
    'YY9HCDEZTlxA8cOVwUGBAAA7AAAAAAAAAAAA';
    
function debug() { var msg = ''; for (var i = 0, n = arguments.length; i<n; ++i) msg += arguments[i] + ' '; setTimeout(function() { throw new Error("[debug] " + msg); }, 0);}
$ = document.getElementById;
function $x( xpath, root ) {
  var doc = root ? root.evaluate ? root : root.ownerDocument : document, next;
  var got = doc.evaluate( xpath, root||doc, null, 0, null ), result = [];
  switch (got.resultType) {
    case got.STRING_TYPE:
      return got.stringValue;
    case got.NUMBER_TYPE:
      return got.numberValue;
    case got.BOOLEAN_TYPE:
      return got.booleanValue;
    default:
      while (next = got.iterateNext())
        result.push( next );
      return result;
  }
}
function $X( xpath, root ) {
  var got = $x( xpath, root );
  return got instanceof Array ? got[0] : got;
}
function node(type, className, styles, content) {
  var n = document.createElement(type||"div");
  if (className) n.className = className;
  if (styles)
    for (var prop in styles)
      n.style[prop] = styles[prop];
  if (content)
    n.innerHTML = "string" == typeof content ? content : content.toXMLString();
  return n;
}
function remove(node){ if (node) return node.parentNode.removeChild(node); }
function replace(node,newNode){ if (node) { node.parentNode.insertBefore(newNode,node); node.parentNode.removeChild(node); } }
function onClick(node, fn, capture, e) { node.addEventListener((e||"") + "click", fn, !!capture); }

function get(url, cb) {
  GM_xmlhttpRequest({
    method: "GET",
     url: url,
     onload: function(xhr) { cb(xhr.responseText); }
  });
}
function getCRs(page){
  if (page && tableBody) {
    $('okMore').innerHTML = titleText + ' [' + $X("//*[@id='finishedReports']/table/tfoot//a").innerHTML+']';
    var rows = $x(".//*[@id='finishedReports']/table/tbody/tr",node("div", "", "", page));
    //debug("rows: "+rows.length);
    for (var i = 0; i < rows.length - 4; ++i) tableBody.appendChild(rows[i]);
    if (enableCounts) { attack_counter(); }
  }
}

function getNextPage(){
  var nextPage = $X("//*[@id='finishedReports']/table/tfoot//a");
  if (nextPage) {
    $('okMore').innerHTML = '<img src="'+loadingImg+'" width="16" height="16" style="margin:2px;"/>';
    replace(nextPage,node('span','','',nextPage.innerHTML));
    get(nextPage.href, getCRs);
  }
}
function main(){
  titleText = $X("//*[@id='troopsOverview']/div/h3/span/text()").nodeValue;
  tableBody = $X("//*[@id='finishedReports']/table/tbody");
  var rows = $x("./tr",tableBody);
  if (rows.length == 14) {
    var newFoot = node("tfoot",'','');
    newFoot.appendChild(remove(rows[10]));
    newFoot.appendChild(remove(rows[11]));
    newFoot.appendChild(remove(rows[12]));
    newFoot.appendChild(remove(rows[13]));
    tableBody.parentNode.appendChild(newFoot);
    
    var temp = $('finishedReports').appendChild(node('div','okMore',{background:'PaleGoldenRod',fontSize:'16px',textAlign:'center',cursor:'pointer',height:'20px'},titleText + ' ['+$X(".//a",rows[10]).innerHTML+']'));
    temp.id = 'okMore';
    onClick(temp,getNextPage);
/*
    $(window).scroll(function(){
      if( tnt_twitter.is_scroll_bottom() )
      {
        tnt_twitter.timeline_load_next_page();
      }
    }
*/
  } else { return false; }
  if (enableCounts) { attack_counter(); }
}



var tableBody;
var reportTimer;
var titleText;

if ($('servertime') && (document.body.id == "militaryAdvisorCombatReports")) {
  main();
}

//document.addEventListener('DOMMouseScroll', function(e){ debug('hi you scrolled',e.detail,document.body.scrollTop); }, false); 







function trim(str) {
  var	str = str.replace(/^\s\s*/, ''),
    ws = /\s/,
    i = str.length;
  while (ws.test(str.charAt(--i)));
  return str.slice(0, i + 1);
}




function attack_counter(){
  var CURRENTYEAR = new Date().getFullYear();
  function parsedate(date){
    date = trim(date);
    s=date.split(' ');
    d=s[0].split('.');
    t=s[1].split(':');
    return new Date(CURRENTYEAR,d[1]-1,d[0],t[0],t[1]) - 0; // Date cast to int
    // new Date(year, month, date [, hour, minute, second, millisecond ])
  }
  function townadd(name){ counts[name] = counts[name] ? counts[name] + 1 : 1; }

  var battlere = /^Battle for /;
  var seabatre = /^Sea battle near /;

  var counts = {};

  var servertime = parsedate(document.getElementById('servertime').innerHTML);
  var reports = $x("//form[@id='finishedReports']/table/tbody/tr/td[3][@class='date']/..");
  for each(var report in reports) {
    var cells = report.getElementsByTagName('td');
    var date = cells[2];
    var rtime = parsedate(date.innerHTML);
    if((servertime - rtime) < (1000*60*60*24)){
      date.style.fontWeight = 'bold';
      if(cells[3].className == "subject won" || cells[3].className == "subject won new"){
        t = $X('./a/@title',cells[3]).nodeValue;  //todo, move RE inside XPATH
        t = t.replace(battlere, '');
        t = t.replace(seabatre, '');
        townadd(t);
      }
    } else {
      break;
    }
  }
  for each(var report in reports) {
    var temp, cells = report.getElementsByTagName('td');
    var td = cells[3];
    if(td.className == "subject won" || td.className == "subject won new"){
      t = $X('./a/@title',cells[3]).nodeValue;  //todo, move RE inside XPATH
      t = t.replace(battlere, '');
      t = t.replace(seabatre, '');
      if (counts[t]) {
        if (temp = $X('./span',td)) {
          temp.innerHTML = "[ " + counts[t] + " ]";
        } else {
          td.appendChild(node('span','','',"[ " + counts[t] + " ]"));
        }
        td.style.backgroundColor = (counts[t] >= 6) ? bashingColor : hilightColor;
        delete counts[t];
      }
    }
  }
}