Travian FarmList Manager

By Buyaa Last update Jun 6, 2012 — Installed 18,688 times.

There are 8 previous versions of this script.

Add Syntax Highlighting (this will take a few seconds, probably freezing your browser while it works)

// ==UserScript==



// @name           FarmList Manager

// @namespace      Buyaas

// @version        1.4.1

// @description    Travian Auto FarmList Manager

// @include        http://*.travian.*/build.php?*tt=99*

// @include        http://*.travian.*/login.php

// @include        http://*.travian.*/dorf3.php*

// ==/UserScript==





var Troops = {};

Troops.Name = [

			[	"Legionnaire", "Praetorian", "Imperian", "Equites Legati", "Equites Imperatoris",

				"Equites Caesaris", "Battering Ram", "Fire Catapult", "Senator", "Settler", "Hero"],

			[	"Clubswinger", "Spearman", "Axeman", "Scout", "Paladin", "Teutonic Knight", 

				"Ram", "Catapult", "Chief", "Settler", "Hero"],

			[	"Phalanx", "Swordsman", "Pathfinder", "Theutates Thunder", "Druidrider"] ,

];



Troops.Speed = [

		[6,5,6,16,14,10,4,3,5,4,16],

		[7,7,6,9,10,9,4,3,4,5,10],

		[7,6,17,19,16,13,4,3,5,5,10],

];





var Config = {};



Config.DMin = 10;

Config.DMax = 15;



Config.Save = function(ListID){

  GM_setValue(dataIndex+"_Interval_"+ListID,Doc.Element("int_"+ListID).value);

  GM_setValue(dataIndex+"_Pause_"+ListID,Doc.Element("p_"+ListID).value);

};



Config.Board = function(){

  ctnt = Doc.Element("content");

  BTable = Doc.New("table", [["cellpadding",5], ["cellspacing",1],["style","margin-top: 10px;"],["class",""]]);

  BTable.innerHTML = "<thead><tr><th>Name</th><th>LastSent</th><th>NextSent</th><th>InterVal</th><th>State</th><th></th></tr></thead>";

  aLists = GM_getValue(dataIndex + "_all","");

  if(aLists.length > 0){

    BTableBody = Doc.New("tbody");

    BTable.appendChild(BTableBody);

    for (var i = 0 ; i < aLists.split("$").length ; i++){

      ListID = aLists.split("$")[i];

      tr = Doc.New("tr",[['class','hover']]);

      tdName = Doc.New("td",[['class','vil fc'],['style','font-size:9px;']]);

      tdName.innerHTML = GM_getValue(dataIndex+"_Name_"+ListID,"");

      tdLast = Doc.New("td",[['style','font-size:9px;']]);

      tdLast.innerHTML =  GM_getValue(dataIndex+"_LastSent_"+ListID,"");

      tdNext = Doc.New("td",[['style','font-size:9px;']]);

      tdNext.innerHTML =  GM_getValue(dataIndex+"_NextSent_"+ListID,"");

      iInterval = GM_getValue(dataIndex+"_Interval_"+ListID,"10-20");



      tdInterval = Doc.New("td");

      tdInp = Doc.New("input",[['type','text'],['class','text'],['size',6],['id','int_'+ListID],['value',iInterval]]);

      tdInterval.appendChild(tdInp);

      is_paused = GM_getValue(dataIndex+"_Pause_"+ListID,"0");

      tdPause = Doc.New("td");

      tdSel = Doc.New("select",[['id','p_'+ListID]]);

      tdPause.appendChild(tdSel);

      tdOp0 = Doc.New("option",[['value',0]]);

      tdOp0.innerHTML = 0;

      tdOp1 = Doc.New("option",[['value',1]]);

      tdOp1.innerHTML = 1;

      if (is_paused == "0"){

        tdOp0.selected = true;

      }else{

        tdOp1.selected = true;

      }

      tdSel.appendChild(tdOp0);

      tdSel.appendChild(tdOp1);

      tdBut = Doc.New("td");

      saveImg = Doc.New("img",[['src',Images.Save],['width','16px'],['height','16px'],["id",ListID]]);

      saveImg.addEventListener("click",function(){Config.Save(this.id)},false);

      tdBut.appendChild(saveImg);

      tr.appendChild(tdName);

      tr.appendChild(tdLast);

      tr.appendChild(tdNext);

      tr.appendChild(tdInterval);

      tr.appendChild(tdPause);

      tr.appendChild(tdBut);

      BTableBody.appendChild(tr);

    }

  }

  ctnt.appendChild(BTable);

};





var Images = {

	Pause : 'data:image/gif;base64,R0lGODlhFwAXAMZQAFVXU1ZYVFdZVVdZVlhaVllbV1lbWFtdWV9gXmJlYGNlY2VmYmVmY2VnZGdpZm1va8vLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2djb1Nra2tvb29zc3N3d3dve2d7e3t7g29/h3OHh4eHj3+Lk3+Lk4OTk5OPl4OPl4eTl4uXl5eTm4uXm4uXm4+Xn4+bn4+fn5+jo6Ofp5ujp5ujq5+rq6urr6Ovs6ezs7O7u7e7u7u/w7vj5+Pn5+Pr6+fr7+vv7+/v8+/z8+/z8/Pz9/P39/P39/f3+/f7+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ywAAAAAFwAXAAAH/oBQgoOEhYaHiImKi4yNUECQHhCTlB5AGpSUIIOQQBIIAKEABhBAEAOiAAkUnJATAkmDD6URBIQLFa1AFbApKkKzQBMETioqRgsWuha9vw8RQBTExkYMGLoYsCsrwBJAFsTb1Rm6GQRLNDNDDxVAF8Q0MUcMGroaBEw6OEQPFkDmTkh8SMKAgy4O+F6cKPLgApANxE6YINhBlwd8NVwYeZABSAcCT2S0UMLAgy4QBJr0yIHkgQYgF6HwwMGEwSZBQHwACVHASZAeSR5sAIISyo8eTBqE4AQDiIiesjrstDWowQhOIoCUUBCga4ADIZwW8BrAQQlOlliMEMFWxAgWKUDUtnULgxOKTnjz6uW0A1KIECX66s3byseOG4htKF5sA/GNHTodMQoEADs=',



	Resume : 'data:image/gif;base64,R0lGODlhFwAXAOeHAFlbVllbV1lcV1pcV1pcWFpdWFtdWFtdWlteW15gXV9gXmBgXmBhX2JjX2JlYWRlY2VnZGdpZWlpZ21ubG9wbnJzcXJ0cnN0cXN1cnR2cnZ2dXt8en+AfoSEg4SFhIqKiY2OjZCQjo6RjZCRj5SUk5mZmZubmpydm6SkpKurq6ysrK2trbCwr7CwsLCyrrCzsLe4t7y8vL2+u7+/v77AvsHBwcrKysvLy83Nzc7Ozs/Pz87QztDQ0NHR0dLS0tTU1NbW1tbX1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3uDg4OHh4eLi4uPj4+Pk4+Tl4+Xl5eXm4+bm5ufn5+jo6Ofp5Ofp5enp6ejq5unq5+rq6unr5+vr6+ns5+rs6Ovs6ezs7Ovt6uzt6uzt7O3t7ezu6uzu6+7u7u7v7O7w7e/w7e/w7u/x7vDx7vDx7/Hy7/Hy8PLz8vP08fP08vT08/T18/X19fX29PX29fb39ff39/f49vf49/j5+Pr6+vr7+vv8+/z8+/z8/Pz9/P39/P39/f7+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ywAAAAAFwAXAAAI/gDPHBpIsKDBg4fOKDwDpEeThRAjChwI8QaIFD+mSIxIsGKABBZiDNGyUWHHhTcE8HFxwIONI2Q2nlSY8tCfOCIWmMixROLMMzWxwBEUBYOEFj2gQPwZFMuWOoJ2NNAwAwiVkkAFHMKCJcuWMHv8vEDw4UYRLhtxEDgURkyZt2Xc/KEzwgEKHUok8libZg2bv2nKbFkD6EkGCjUk+ihwqIuXx1yxWKlShxANACwk/jBw6IsZNGr+qqlTyAmFCzWYSBTC982cO3n4DLITIsIKJGglElnbRg6ePoUKwVBQwsjViGAUFlmL5k0fQ0EedPChdGN1I7wDjdlQocaS5CWPQCjEfkjPCQgqklzBGpPI+AEyGJAoIgUrxJ5njEzgoOO7fYgk5WdEEgH+BxEYWlCh4BQMNjiFglRoAZ5JCFWIUEAAOw==',



	Map : 'data:image/gif;base64,R0lGODlhFwAXAOf/AM0AAGg5RjdHYjhIYzNJeqQ3PkVQZ684OZVBUVRVU1VWVFNXWlZXVXhOaVlbWHpUaH1Tbl5gXXpWb5hQWk9jhVpigKtRUU5njk9oj2VmZFlohVVpi1Nskz1yrlptkE9xl1FwnUd0q0F2sllymWlwhG9xbotodVpzmoxpdkV5tXN1cld5n6VobFl6oFp7olx6p1t8o0qAtmh7klx9pF58qXJ5jV1+pXZ7fmZ9mkyCuHp8eWt+lU+Eu1KGvX+Bfqh3d1qIuYKEgXeGmGiJsF+MvoWHhIOHloKJkW2NqH+LmG2OtmWSxIOPnKaKiWmWyXiUtqeLipCSj4yUm36Ws3uXuoqVonKZxoeWqZSWk32Zu36avX+bvnedyoCcv4GdwIadunmfzZGcqZidn5udmYmgvn2j0Yqhv4uiwJ6gnaKfo32mzYyjwZ+hno2kwo6lw6KkoZCnxbSho5mou4qr1KOoq6aopamnq4Wv1qKrs5Wty7mmqKmrqJqtxoiy2pevzZ+uwautqqiusKautqSwvqKxxZuy0K6wrZG22Ku0vLK0sZy4z5W526C31qu2xLG2uK63v6W40ba4tae607e5tqi71Ky7zqm81Z+/3LC8ypvA4rq8ua++0qy/2Li+wJ7D5bTAza3B2rHB1LnByb7BvabG47DE3cHDv7zEzLbG2cDFyKnJ5rTH4L7Gz7fH2rjI3MXHw6/L48bIxcDJ0cfJxq3N68jKx73M4MnLyMPM1MbMzsrMycHN28TN1bHR78bO1r/P4snO0MzOy7bS6cfP18rP0cTQ3svQ0rTU8c/RzsbS4MrS28jU4tDV183W3tXX1MzY5sDb88rZ7dLa4tXa3Nja1s/b6sLe9tLe7Nne4dDg9Mvj9d7g3c7i+9/h3tTj+ODi39fj8dvk7NXl+eHk4ODl6OXn5Nnp/ePo693p9+Tp7Ofp5tvr/+jq59/r+enr6Obs7t7u/+Lu/ePv/urv8u3v6+Tx//Dy7+7z9vHz8PP18vb49Pj69/r8+ff9//z/+/7//CwAAAAAFwAXAAAI/gDpCRxIsKBBgoEIKFxIYEeLhzuqEDsoMKFCCjbgtHp2bVmoNTaYUKSXcMOZas+Y8XMkjNSqX11wTDOY0AMfabtO4cIU7ZctbMaStcGhB6FCM+GU/Rsmr523Yqdk3bO3LIuJogKNEHjxrN+/TuDq1UOX7Zy+f/vIoZrBYmAFAm7u/XsUT57ddb4QVXr0Tl0zLxOwErgQKh0ib/ESxzOnNJ2sT+yYFUJgQSABDskuwbJmbl28ddX+if5HLhUeThIq0yMA4hkmVcegcfOmzdfof/kEdSrVAoBlF78IffK1qVcvWpy8iqaXS4glCL7pkcBA6Q62f/MUecq06MwXXPjG8xH74AdBdBIUyBwa3a9RnzlquMgp50yKkiwFogeqMaOVKH6iDVIGGFYsMYUztSQhCQwAHDCQETJkwQgw9NhzhRNLENEDErFM4sYTJgDww0CB2HHCGZtMEwYQPfAQQwohOPJHFg8AAABWAqVBxwhUcPJEDimI0EEIQ0DyRAM2xlEQNaPUoQENWfhxxClJ5JEFgzY24U5B7iCjyRs3GCDAAmIsMEAANqaJVTCJYBFECREwkMCc3XTzSgJp5gkFPdsEE8kedQCiySts+DDOLGxk4AMapiRShyGvOMPnLXtEoUMGDigw5yhjFDFnAgpEoAIWkegSEAA7',



	Save : 'data:image/png;base64,R0lGODlhFwAXAMZbAAAAAExCJlRUVGtXNnBbOY9ZAm1tbW5ubnR0dHV1dXd3d3l5eXt7e35+fpt+UYOEgp+BVJ+CVKCCVqKFVaKFVqOFVYiKhaSHV42OjJKSkpSUlJycnMSgAJ+fn6CgoKOjo8ifZMuhZaenp6mpqaqqqs6maKysrK2trc+qacKris2rb9Ksas+tcbGxsbKysre3t7i4uLm5ubq6uru7u7y8vL29vb6+vr+/v8DAwMPDw8TExMXFxcnJycrKysvLy8zMzNHR0dPT09TU1PTVl9nZ2dvb29zc3N/f3+Hh4fTivO3lxOXl5e3mxebm5u7oxufn5+jo6O7qxunp6e/rx+rq6uvr6+zs7O3t7e7u7vPz8/39/f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACwAAAAAFwAXAAAH/oBYglgchIaFiIaDi4RbHI6Qj5KOjIMcSRxDmZuanYVYV4sYCxwMpacHHKkGHAgWBQWLFkUjMyMyHjIjOLkfNSIKBVEssYIWWVJST1RSzMrKTzQFUysSxVgWWlbb3N1WQtMrF9fYW9s/6OnoL8IoDuTl3t1BwiUR8PFW6usFTiXjFipZMCePnhMVFAp4CMho4Ll07JiEmFBAiAuGsghyq1JACQgIFYV0wDjIob4fPhIQSFGhAAwbNTaQNKbRipQCAQYUOHHCRAwNM62YRKkDQAEBDW7cANIjgwUri5aYtFKFirMmyag0IWFhSShBRqbK29jCgpEqoLAQCeiirdu3PG8tEEErCMkDC3jz6t37AAlUQVSOBOGxY0eOw4hzFOYR5AgVRlaoQJn8pLLlJ5OhUPkraIvnz6BDi/YcCAA7',



	VillageFrom : 'data:image/gif;base64,R0lGODlhFwAXAOeCAKQAAJwICIQiIdwlJdwmJt4mJuAmJuInJ3tMSlVXU+U5OTRlpIhaWGVnY+xGRpldW/FMTEp2rvBRUXJ1enV1dW52gXV2dvJVVXF4gXV4e3V4fHd4enZ5fHZ5ffNbW511c/JeXn6Ae3+BfICCfV+Gt/NjY/NkZPRmZoSFgoSGgYqIZYWHgomIcIaIg4iJfoeJhPRsbIiKhY+QjfR1daONi3eYwnmZw8CKiqqRkZeZlJiZlpmalpmal5ubmq2YmJ6enq6bm5+gnqGgnqefnaGhoaKioqKjoaOjoqOjo6SkpMShoaqqqqysrK+vr7GztrOzs7i5uMm1tbq6ubq7vLi8wbm9wb29vb+/vsS+vsLCwcLCwsbBwc3Nzc7OztLS0tzQ0NPT09TU1NbW1tfX19jX19jY2Nra2tvb29vc29zc3N3d3d7e3d7e3uLe3uDg4OLi4uPj4+Tk5OXl5ebm5ufn5+np6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/j4+Pn5+f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ywAAAAAFwAXAAAI/gD1CBxIsKBBQYIMEiQDAMAWhQgVCsQCYMYMAGQOJlRI0aJFjAUjGuyowOKBixkHiiTY0QEEkydBClw5saKECxcrGoiZkmZHDyAuImBQsQBPPSt9VDRh4uIDFD1uVCTAc2VFGCcufpABJYsUJRUHxBRJp2KJizSCXFmzRs2YKAFmDLgoUk3Fi0OOmLHDt04dOl/i0t1od4YAIUbKzKHDeE6cOHDaxAWwEggANAkyZ/67oQOFDhb+AMBBM4GeBCFEjBgxRw4HGxRqaPCT4E7pPAlS6F4R500GEhQiTOiTAM9KO8UTtGihgsUbNxgWUFhQgU8COSLvuKmd4MULFyLcawRyQmVKlSR7EoAhKyYB8hjwY7AJVASJfSRqEnghGyYBnwY56LADD38YBEgCaUTEhR1saObggw7aEZEbedQBxxldWLEEET8QQQQTTTyhRRdv3IFUQm7okUceeNhRhxyQwTHHYnTYkYdKggQEADs=',



	AttackMode : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjM2qefiJQAAAhpJREFUKFM1kd1Lk3EUxx/pQijqD/C+29qFBt7kosILQzFKijBKqSwpp6IVlClWhgjzLV2aMTOn5dRe1AUuc2K+ZeJcMVm2R1eTfC2VMt3z+31amh84FwfO93w55xui/Oezb1E39mVJv3NHqHFuOaBIQpRd27cpSyvr6bvDQrsj94SNbs0qvSPf9K0On1ppm8HUtcobt8ZLp0bR6zXyrXPU2HxqvW1cvyGY+PpD12CfVAtfzJHTJrnVruGZFTj9gqxWQUYzXKlborhFVe2DkzqltMltuFw9RZpVcvGZ5FKTpMQRoLBL43ywT26EpHpJQsk02Q9cBqWmw0tM8QIJZsHZRklKs6DHq2EbF5x5KklskJx8Iomv+kOO2Y2Sfn+UqNI1IsokR2ol51oCeOYFrhnJaavgeAPE10HsI8mx2yMoqSUfCDeusrcc9lXDqX+CBYFnUZDZKTgRvCH6seTgQ0Fc3hBKabObiHvfCa+SHAhaZ9g1Jn9KppYlhYOC5A7Yb5ZEli2TWRl0uGnqNxzOd6I3B4ixQn6/wL8imf0NtW5J2ls4ZBFE3XGTdNdhUN67/LobpkE1tnicxPZ1cgcEw9Man+Y1LB7Jtd4AR01eUo19amPHR91GFpZXY/rs8j41umA4+Bk/OY4VjMO/uGqbJc7o5ELROzWvomczuC26h7y6lAK74XrVAAm59mB1klXRx3PHBJY21+bmIH8BLUeFBNafPYwAAAAASUVORK5CYII=',

	

};







var Doc = {



	New : function(tt,attrs){

		newElement = document.createElement(tt);

		if (attrs !== undefined) {

		  for(var xi = 0; xi < attrs.length; xi++) {

		  	newElement.setAttribute(attrs[xi][0], attrs[xi][1]);

		  }

	  }

  	return newElement;

	}, 



	Element : function(eid){

		return document.getElementById(eid);	

	},



	xy2id : function (x, y) {

		 return (((400-parseInt(y))*801)+(parseInt(x)+401));

	},

	id2xy : function(vid) {

    arrXY = [];

	  var x = (vid % 801) - 401;

    var y = 400 - (vid - 401 - x) / 801;

	  arrXY[0] = x;

	  arrXY[1] = y;

	  return arrXY;

	},



	Tab : function(url){

		form = this.New('form',[['action', url],['target','_blank'],['method','get']]);

		form.appendChild(this.New('input',[['type','submit'],['value','build']]));

		document.body.appendChild(form);

		form.submit();

	},



  Login : function(){

		LoginReq = document.getElementsByClassName("innerLoginBox");

		if (LoginReq && LoginReq.length > 0){

      LoginForm = LoginReq[0].getElementsByTagName("form")[0];

			LoginData = "";

			LoginForm.setAttribute('target', '_blank');

      document.getElementsByName("password")[0].value = "password";

			LoginForm.submit();



			setInterval(function(){

			  window.location = "/build.php?gid=16&tt=99";

			},10000);

		}

  },

  Safe : function(){

    safer = GM_getValue(dataIndex+"_safe",'');

    if (safer == ''){

      GM_setValue(dataIndex+"_safe",Time.getCurrTime());

      Doc.Tab("dorf3.php");

			setInterval(function(){

			  window.location = "/build.php?gid=16&tt=99";

			},1000);

    }else{

      safe_sec = Time.toSec(safer);

      cur_sec = Time.toSec(Time.getCurrTime());

      if ((cur_sec - safe_sec) > 1800){

         GM_setValue(dataIndex+"_safe",Time.getCurrTime());

         Doc.Tab("dorf3.php");

			   setInterval(function(){

			      window.location = "/build.php?gid=16&tt=99";

			   },1000);

      }

    }

  }

};



var Time = {



	Sync : function(x,y,x1,y1,last_sent,farm_id,trps,interval){

		dist = this.getDistance(x,y,x1,y1);

		slow = 20;

		for (var i = 1 ; i <= 11 ; i++ ){

			tid = "f"+farm_id+"_t"+i;

			if (parseInt(trps.split("|")[i-1]) > 0){

				if (slow > Troops.Speed[Race][i-1]){

					slow = Troops.Speed[Race][i-1];

				}

			} 

		}

		mtime = this.getTTime(dist,slow);

		lsec = this.toSec(last_sent);

		crT = this.getCurrTime();

		nsec = this.toSec(crT);

		msec = this.toSec('0000-00-00 '+mtime);

		msec = parseInt((msec * 2)/interval);

		mode = 'def1';

		dsec = nsec - lsec;

		tm = parseInt(lsec) + parseInt(msec) - parseInt(nsec);

		if ( tm < 0 ){ tm = 0; }

		if (dsec > msec) {

			dsec = msec;

		}

		return [mtime,this.toHour(tm+lsec),mode,tm,msec,dsec];

	}, 



	getDistance: function(sx1, sy1, sx2, sy2){

		var x1 = parseInt(sx1);

		var y1 = parseInt(sy1);

		var x2 = parseInt(sx2);

		var y2 = parseInt(sy2);



		var dX = Math.min(Math.abs(x2 - x1), Math.abs(801 - Math.abs(x2 - x1)));

		var dY = Math.min(Math.abs(y2 - y1), Math.abs(801 - Math.abs(y2 - y1)));

		var dist = Math.sqrt(Math.pow(dX, 2) + Math.pow(dY, 2));



		return dist;

	},



	getTTime : function(qDist,theSlow){

		var aTime = Math.round(qDist * 3600000 / theSlow);

		//aTime += 10;

		hh=Math.floor(aTime/3600000);

		if(hh<10){hh="0"+hh;}

		mm=Math.floor((aTime-hh*3600000)/60000);

		if(mm<10){mm="0"+mm;}

		ss=Math.ceil((aTime-hh*3600000-mm*60000)/1000);

		if(ss<10){ss="0"+ss;}

		return hh+":"+mm+":"+ss;

	},



	toSec : function(dt){



		// 2009-10-10 12:00:00

		d = dt.split(" ");

		dds = d[1].split(":");

		hhs = d[0].split("-");

		s = parseInt(dds[2]) + parseInt((dds[1]) * 60) + parseInt((dds[0]) * 3600);

		//alert(parseInt(dds[0]) + "s = " +s);

		s1 = parseInt(hhs[2]) * 86400  + parseInt(hhs[1]) * 2592000;

		return parseInt(s) + parseInt(s1);

	},



	toHour : function(sc){



		sc = parseInt(sc);

		m = Math.floor(sc/2592000);

		sc = Math.floor(sc%2592000);



		d = Math.floor(sc/86400);

		sc = Math.floor(sc%86400);



		h = Math.floor(sc/3600);

		sc = Math.floor(sc%3600);



		mm = Math.floor(sc/60);

		sc = Math.floor(sc%60);



		if (m<10){m = "0"+m;}

		if (d<10){d = "0"+d;}

		if (h<10){h = "0"+h;}

		if (mm<10){mm = "0"+mm;}

		if (sc<10){sc = "0"+sc;}

		res =  "2012-"+m+"-"+d+" " +h+":"+mm+":"+sc;

		return res;



	},



	getCurrTime : function(){

		crTime = new Date();

		year = crTime.getFullYear();

		month = parseInt(crTime.getMonth()+1);

   	day = crTime.getDate();

		hour = (crTime.getHours() );

    minute = crTime.getMinutes();

    second = crTime.getSeconds();



		if (month < 10) {month = "0" + month;}

		if (day < 10) {day = "0" + day;} 

		if (hour < 10) {hour = "0" + hour;} 

		if (minute < 10)  {minute = "0" + minute;} 

		if (second < 10) {second = "0" + second;}



		res =  year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second; 

		return res;

	},



};





var Farm = {};



Farm.Send = function(ListIndex){

  raidList = Doc.Element(ListIndex);



  ListRows = raidList.getElementsByClassName("slotRow");

  AtLeastChecked = false;

  for (var i = 0 ; i < ListRows.length ; i++){

    ListRow = ListRows[i];

    RowCheck = ListRow.getElementsByTagName("input")[0];

    RowDistance = parseInt(ListRow.getElementsByClassName("distance")[0].innerHTML);

    RowLastCont = ListRow.getElementsByClassName("lastRaid")[0];

    if (RowLastCont.getElementsByTagName("img") && RowLastCont.getElementsByTagName("img").length > 0){

      RowLast = RowLastCont.getElementsByTagName("img")[0].className; 

      if (RowLast.split(" ")[1] == "iReport1"){

        RowCheck.checked = true;

        AtLeastChecked = true;

      }

    }else{

      RowCheck.checked = true;

      AtLeastChecked = true;

    }

  }



  if (AtLeastChecked == true){

    currTime = Time.getCurrTime();

    GM_setValue(dataIndex+"_LastSent_"+ListIndex,currTime);



    CalcNextSent = GM_getValue(dataIndex+"_Interval_"+ListIndex,"10-20");

    dDif = parseInt(CalcNextSent.split("-")[1]) - parseInt(CalcNextSent.split("-")[0])



     //dDif = Config.DMax - Config.DMin;

    dMin = parseInt(CalcNextSent.split("-")[0]);



    dDif *= 60;

    dMin *= 60;



    rNum = Math.ceil(dMin + (Math.random() * dDif));



    GM_setValue(dataIndex+"_NextSent_"+ListIndex,Time.toHour(rNum + Time.toSec(currTime)));

    GM_setValue(dataIndex + "_safe", Time.getCurrTime());

    Log.Info("Sent: " + ListIndex);

    raidList.getElementsByTagName("form")[0].submit();



  }else{

     currTime = Time.getCurrTime();

     GM_setValue(dataIndex+"_LastSent_"+ListIndex,currTime);



     CalcNextSent = GM_getValue(dataIndex+"_Interval_"+ListIndex,"10-20");

     //alert(CalcNextSent);

     dDif = parseInt(CalcNextSent.split("-")[1]) - parseInt(CalcNextSent.split("-")[0])



     //dDif = Config.DMax - Config.DMin;

     dMin = parseInt(CalcNextSent.split("-")[0]);



     dDif *= 60;

     dMin *= 60;



     rNum = Math.ceil(dMin + (Math.random() * dDif));

     GM_setValue(dataIndex + "_safe", Time.getCurrTime());

     GM_setValue(dataIndex+"_NextSent_"+ListIndex,Time.toHour(rNum + Time.toSec(currTime)));

     Log.Info("Nothing Found: " + ListIndex);

  }

};



Farm.Toggle = function(lid){

  window.location.href = "javascript:void(Travian.Game.RaidList.toggleList("+lid+"));";

};



Farm.IDS = [];

Farm.NextSents = [];

Farm.Timer = false;

Farm.Init = function(){

  FarmIDstr = "";

  ToMinID = -1;

  ToMinVal = 99999999;

  RL = Doc.Element("raidList");

  ListEntries = RL.getElementsByClassName("listEntry");

  if (ListEntries && ListEntries.length > 0){

    for (var i = 0; i < ListEntries.length ; i++){

      ShouldDelay = 0;

      ListEntry = ListEntries[i];



      ListIndex = ListEntry.id;

      NextSent = GM_getValue(dataIndex + "_NextSent_"+ListIndex,"");

      LastSent = GM_getValue(dataIndex + "_LastSent_"+ListIndex,"");



      if (NextSent == ""){

        NextSent = Time.getCurrTime();

      }

      if (Time.toSec(NextSent) < ToMinVal){

        HasPaused = GM_getValue(dataIndex + "_Pause_" + ListIndex, "1");

        if (HasPaused == "0"){

          ToMinID = i;

          ToMinVal = Time.toSec(NextSent);

        }

      }

      Farm.IDS[i] = ListIndex;

      Farm.NextSents[i] = NextSent;

      //GM_setValue(dataIndex + "_Pause_" + ListIndex, "0");

      fName = ListEntry.getElementsByClassName("listTitleText")[0].innerHTML;

      GM_setValue(dataIndex + "_Name_" + ListIndex,fName);

      FarmIDstr += (ListIndex + "$");

      NameData = "<font color='red'>"+LastSent+"</font> / ";

      NameData += "<font color='green'>"+NextSent+"</font>";

     

      ListTitleText = ListEntry.getElementsByClassName("listTitleText")[0];

      ListTitleText.innerHTML += NameData;

    }

  }

  GM_setValue(dataIndex + "_all",FarmIDstr);

  if (ToMinID >= 0){

    Farm.Timer = setInterval(function(){Farm.Observe(ToMinID);},1000);

  }

};



Farm.StateToggle = function(ListIndex){

  HasPaused = GM_getValue(dataIndex + "_Pause_" + ListIndex, "1");

  if (HasPaused == "0"){

    GM_setValue(dataIndex + "_Pause_" + ListIndex, "1");

  }else{

    GM_setValue(dataIndex + "_Pause_" + ListIndex, "0");

  }

	window.location = "/build.php?gid=16&tt=99";

};





Farm.Toggling = 0;

Farm.Observe = function(ListID){

  ListIndex = Farm.IDS[ListID];

  NextSent = Time.toSec(Farm.NextSents[ListID]);

  CurrTime = Time.toSec(Time.getCurrTime());

  if (CurrTime >= NextSent){

    ListEntry = Doc.Element(ListIndex);

    InfoBox = ListEntry.getElementsByClassName("troopSelection");

    if (InfoBox && InfoBox.length > 0){

      Farm.Send(ListIndex);

      clearInterval(Farm.Timer);

    }else{

      if (Farm.Toggling == 0){

        Farm.Toggle(ListIndex.substr(4));

        Farm.Toggling = 1;

      }

    }

  }

};



var Log = {};



Log.Info = function(msg){

		var strLog = decodeURIComponent(GM_getValue(dataIndex+"_log",false));

		if (strLog != 'false' && strLog.length > 1 && strLog.length < 20000 ) {

			strLog += ("\n[" + Time.getCurrTime() + "] - ["+ msg + " ] ");		

		}else{

		    strLog = ("\n[" + Time.getCurrTime() + "] - ["+ msg + " ] ");	

		}

		GM_setValue(dataIndex+"_log",encodeURIComponent(strLog));

};



Log.Show = function(){

	  logTable = Doc.New('ul');

		var strLog = decodeURIComponent(GM_getValue(dataIndex+"_log",false));

		aLogs = strLog.split("\n");

		for (var j = 0 ; j < aLogs.length ; j++){

      td = Doc.New("li");

			td.innerHTML = "<p>" + aLogs[j] + "</p>";

			logTable.appendChild(td);

    

		} 

		td = Doc.New("li");

		clearButton = Doc.New("button");

		clearButton.addEventListener('click',function(){Log.Clear()},false);

		clearButton.innerHTML = "Clear Log"

		td.appendChild(clearButton);

		logTable.appendChild(td);

		side_info = Doc.Element("villageList").getElementsByClassName("list")[0];

    

		side_info.appendChild(logTable);

};



Log.Clear = function(){

	GM_setValue(dataIndex+"_log",'');

};



function getUserId(){

		navi = Doc.Element("side_info");

		navi_p = navi.getElementsByClassName("sideInfoPlayer")[0];

		profile_link = navi_p.getElementsByTagName("a")[0];

		return profile_link.href.split("=")[1];

};



var crtPage = window.location.href;

Doc.Login();

if (crtPage.match(/login.php/)){

  Doc.Login();

} else if (crtPage.match(/dorf3.php/)){

  var user_id = getUserId();

  var dataIndex = window.location.hostname.split(".")[0]+"_"+user_id+"_farms";

  setInterval(function(){Doc.Safe()},60000);

  Config.Board();

  

} else {

  var user_id = getUserId();

  var dataIndex = window.location.hostname.split(".")[0]+"_"+user_id+"_farms";

  Farm.Init();

}