Travian MP Percent Dependent Fill

By tumuulunku Last update Jun 8, 2008 — Installed 3,521 times.
// ==UserScript==
// @name           Travian MP Percent Dependent Fill
// @version        0.1
// @description    Lets you fill Send Ressource Fields with one click. Amount of each ressource depends on how much of the total reasources each represents.
// @include        http://*.travian.tld/build.php?*
// ==/UserScript==

//Images
images = [];
images["0"]  = "R0lGODlhEgAMAOYAAP/////+/v/++/38+/369/v6+fHt6e/p4+7n4u/f1OPc1tjUz9rTy9zRyNrQxfzIi/fEnvTEkdLGvfa/i+/BcO6+btK9pPSzgOe1g9e4lu+0b+u1dvGxiNe4ht60eOqwdeSxd/qradCxguinb+WnatOnh9+mdOGked6jfuCmU9CnZrSqnuWgcNyicdija+aeYrukkdqgVNGbctGadeOXZM+afNibVuOXXLeeitGaXNWaVLWcjtKUd9qXSKmckK+bibWYfr+UedCUSN6OWteSQbWVft2NRdqJRtyKOsSLV6qPbMWKRL6HZ8GKRZ6MgbuJU8qDTKiJb72CVNZ+NLaBadt7OcF8T8l5SMZ1W8Z4Qq96UsdyPqx1UrB3PbB1P7BxTLtpMaNnPKRkO3tiTptQKHpYM5BSLoxOOGNRSIBJNoFIOHNKKnk7Kmw7LGc7H10zGk4yJ0M0KEUzJ1YsIlArFEUuH0wlEjgiGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAAAALAAAAAASAAwAAAeRgACCg4SCChYIAYqFgytOPzUnTFRDVg6MAAtRJRA5ZW0xWGoEjEVaLDdgb2wbPHMGjDMtLhdpcF80WXE7jEo9HSAyZ1wjV2hAhQVjKFVINlBiEVtudweDA0EmE09hdHY6Lw9mcoUJRykfFV51FBgqQms+hQ1TRhxNTRJEIRokMJg4kpDxwABABildRAjAxLBhIAA7";
images["0g"] = "R0lGODlhEgAMAOZaAG1tbYeHh319fYGBgf7+/nJycpSUlH5+fqGhoT09PWtra3R0dKSkpKamplJSUpKSkvj4+ISEhB4eHpaWljc3N6ioqIqKinNzc4uLi7W1tR8fH0RERMPDw0NDQzU1NS4uLsDAwGxsbGlpaXd3d7+/v2ZmZjQ0NBQUFJmZmdXV1X9/f7Kysqenp+Xl5aOjox0dHY2NjZCQkCgoKGNjY2pqaoKCgisrK4iIiGFhYbOzsxsbG7CwsM7OzpOTkyIiIl9fX6qqqrm5uWBgYMLCwuDg4F5eXpubmxwcHJqamoaGhpGRkb6+vqKiont7e/39/fr6+nV1dd7e3omJiUFBQVxcXI6OjhkZGZWVlbu7u4ODg////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFoALAAAAAASAAwAAAeRgFqCg4SCPBVRBIqFgzAAKgETBQpZCkuMWhwABlhJCTZVIhQQjE0zBhhUPh8sERItjAEPMUAUGkUYNC8DjAUBLghSCT9IIR4ChRAbPQsHFhcOQSUyJ0SDTwITGQUOR1Y3DyRTEoUpAldMO0I6OQ1KAyYHhSAXAw1QCys1DBUoFpgRRnRAMEQLAwA4jDjBxLBhIAA7";
images["1"]  = "R0lGODlhEgAMAOYAAJBcMPHWwMahh7R4VMdQHP727ci6sNt6VqtlPsltT+rl48JrQtivpbaIZ96FXI9YSOjGr+m1iNphNrxqPvPr3dGomc14VOVsSZxxSeCeduPHvPB8S9u+sqFWLubhwLteNP///8iwlNJpRcmKacldMNdrNeSJY9JuS6VkT+17U9CCWt62l92HTcl5Wvjz8PjdxeDEvLxwUfTQsKZhPNephfHg2JNhROrYz9jCs8OWduFpKtW3pZtzWu/mz8xvS/B+W8lyQOzMsfR+Q+qDVqxmTPDHp/fy6+ZrQMyZZrdtS+R1U86betSunNh9WeaWaNFgK9uzo7+Pcei0kp5bOtdxOeR6S869tNBZF//69o9jVu6BPqVbN8SRZvKQYOJ2SeHRx61jQeTPvfDh29a2qs1ySs2DYNh+Uu6GVMxyQpNaOPLWxdBrP7eLdOa1jORmN+ZzSr9jNNCslNyynMOAXfb19PTjyaRmQevYzqN1V+aLVb1rSv///wAAAAAAAAAAAAAAACH5BAUUAHsALAAAAAASAAwAAAeygHuCglhYg4eIg3Q5RWFhAS8FiYcKAxF4KAlmQZOCODtsNHMnKV1FnXsCMhQhZSYZEVxxapKDYndLIzwDJGQ2aWA+DhCHVnUQIxNUWiwICwcpVSuHBh49UWhvZ05JTUpKXipyhntWGA0qJVMAM3pAWw9EC2ZSRntfHXAlQjN2FiJVwGRp8WNDnhp7bnwgcEUHmglrJLghE+PJkQtDEGIZU4EJkzAcGDBgogEGFCgMOLgIBAA7";
images["1g"] = "R0lGODlhEgAMAOZTAGRkZICAgGhoaGBgYH19faenp8DAwLi4uJ6enl1dXWlpaZubm9fX11RUVPn5+aOjo5iYmHx8fFNTU3h4eHl5eUZGRmxsbLu7u2ZmZnBwcNra2kpKSm9vb1xcXPT09GdnZ2tra1ZWVlBQUFtbW6KiorW1tYuLi1dXV5GRkfDw8Pj4+I2NjaamplhYWJSUlHd3d5eXl8vLy6+vr4KCgq2traWlpcHBwePj46ioqG1tbYSEhERERE1NTdzc3FJSUoiIiIODg0tLS9XV1X9/f2JiYsXFxYyMjL+/v19fX0hISKGhodLS0qysrO3t7Xt7e+/v73R0dHV1dczMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFMALAAAAAASAAwAAAexgFOCgg4qg4eIgykBFwYGMUIeiYcaAAUdPgBRR5OCMg9QMBwKESsXnVMmRTcQUTMoBU4QUpKDDFI/FC0AIwobFQ0fBAeHOBoHEwkWAQQNA1AREzWHD0s9FAJQQEYJUVFQUFFKDoIFJxlRAr8iSB88OyEDUSxNUzZJIwIBIhI5GC8SglgYQkAHgylSQjToAEJAAgwAQCggMiADhwAHHTxwsWCBARoIECw4UIIECQRMngQCADs=";
images["2"]  = "R0lGODlhEgAMAOYAAA4SDOvhzaaOdXZrXM/EtFJKPv///7Ozqj05NIR5aPDu62VXT+jeyTAkFYZuXKWXkV9JM5yEb9nSynZuaCQiG8y/r+3n45N8bGlUQ6OSgVZTTd/f3Ec4MYtzZPr38q6bkSEbGMK1pW5XSD8xItvOxIuFepmGeOXXvH5zcHpnVGZWRkxBMrWjlK+bj2lkVOTe1/LlyF1JOYBxXMO2raCLcz0rGCkhGUM5Mt3TyaORe3VwZurl4HxtXPn49/bx7JRzY0dEPYt7amZfUpaCbsvGv7+3sDInHJqFcR4hH3JVQ1NRUK6gmpmJfHZjUPDmzVlLRYFzZEJCMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAAYALAAAAAASAAwAAAeFgAaCg4SFhocWPoeLGxo6BAEMAYceOEsPSkgALicwToUKFSEVHxw2FFEFMzgHhAoJPBAtLCkqIUcrQAVChEUYTTEdOQIXDwsNHAMjhDNJPEFQCUMiIDc1ND8OhDsdHSsoCAMZRkwXIYczDilPICsyQjMkiwoZESYTJUQ9PYuCPS8S+PULBAA7";
images["2g"]  = "R0lGODlhEgAMAOYGAA4SDOvhzaaOdXZrXM/EtFJKPgAAALOzqj05NIR5aPDu62VXT+jeyTAkFYZuXKWXkV9JM5yEb9nSynZuaCQiG8y/r+3n45N8bGlUQ6OSgVZTTd/f3Ec4MYtzZPr38q6bkSEbGMK1pW5XSD8xItvOxIuFepmGeOXXvH5zcHpnVGZWRkxBMrWjlK+bj2lkVOTe1/LlyF1JOYBxXMO2raCLcz0rGCkhGUM5Mt3TyaORe3VwZurl4HxtXPn49/bx7JRzY0dEPYt7amZfUpaCbsvGv7+3sDInHJqFcR4hH3JVQ1NRUK6gmpmJfHZjUPDmzVlLRYFzZEJCMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAYALAAAAAASAAwAAAd9gAaCg4SFhocbCoeLEghKBxsSG4c9RCUoCAB/QEQbk4QWBw8HJUgAAEgID0QPoEpKSCUlQKoTSLdAhEsItEooE49EKEgPRYQPjq9KE0BFAEUHRAiEG69IsEATKBsIG0uGS0q0qEoIRArfhju/LkouBz093weUEkQ9g/SC6YEAOw==";
images["3"]  = "R0lGODlhEgAMAOYAAIhNJfn05+LHqcyogumqOqKFYuGRKvvlxLp3Jt+ybP///+DEicSISODQwPHp3+GqY+vGj821ncORQ/j39OGfT+CpUPHIdu7Xr/HavNx7GujHnPPo1cWgbtezjfG6W6JSFtvBpvfw6NiBKv778LiQZ+zdw/DXs96+oPKWI+urUOjUtuy8Qfvq0//13ujRhPjIbOW2ctS1g//mxfzx4d7Fn8mMWuzRn82NNvbbqfrt0vHNgObYvNq9jP/89uiULvTZvOfNlv/55vz59ezgtv/x5evbzPbq2Y1VJfjsxt7FlPfm3vLGefTAXd69pfCyVeTKivG3dvvo0f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFIALAAAAAASAAwAAAeCgFKCUkIhg4KFh4obMTlGIBsbJyo9ij0BQTQ8NkkcAxdAFwIHAYMBQ0gLC086LzAQHT8CKqWDPTsRGC4eK0wWF0QNIFGHMyVFRjhOBChLI4rQUgESCB8k0dATBUcANZXYgyMPIhk+LeCDQlApBhQs6IINCRU3DBrf4A4HJiYltYeBAAA7";
images["3g"] = "R0lGODlhEgAMAOYAAFZWVvDw8MXFxaenp5GRkYKCgoWFhd/f33BwcKWlpf///7S0tIaGhtDQ0Ojo6KKior29vbW1tYODg/b29piYmJiYmLOzs87OztbW1nt7e8LCwuTk5JmZmbKysqamplxcXMDAwO/v74GBgff394+Pj9fX19HR0b+/v4qKip2dnc/Pz5aWlufn5+7u7ra2trKysqurq6urq+Li4u7u7r6+vpGRkcXFxYGBgc/Pz+bm5ri4uNHR0bOzs/r6+ouLi9jY2L6+vvLy8vj4+NHR0fLy8tvb2+fn51lZWd/f37m5uerq6rW1taioqMHBwaKiore3t7Ozs+bm5v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFIALAAAAAASAAwAAAeCgFKCUkIhg4KFh4obMTlGIBsbJyo9ij0BQTQ8NkkcAxdAFwIHAYMBQ0gLC086LzAQHT8CKqWDPTsRGC4eK0wWF0QNIFGHMyVFRjhOBChLI4rQUgESCB8k0dATBUcANZXYgyMPIhk+LeCDQlApBhQs6IINCRU3DBrf4A4HJiYltYeBAAA7";
images["switch"] = "R0lGODlhNAAMAOZuAP/+/vv49v7+/eLi4vXu6btjOvLu68p1U+/QvtpwRu/p5fDXzvbw67N2UNpwSvfu6f7+/q5sTerp6MOkg/379ceZaMuYc65mRF1QQ896SfPg2d1rMb6AXtdxPnRkU8+OZcWVd7yxpu3SxbR/V8iTbsu/t9itgZB7aPDZ0MO2rr50TM+RXt+ib+bm5qGNevDZy+FwR4FyaO/Z0suGRHBkWZVcP+XDo/z7+1NHQPb29r5mOufh28fAtOTh2LBxVW5aSOeuda13T+CoaNJ/VaRzTbSwqObj4J9/aUAzJrZkSM6tk7+EUf79/OLb1j47L4aGge7r6Nra2uzg2fHn4PPk3fjx7LxySPLk2717YnRsXstxSdSZfNi3mXtOK+3Xzu/p4uPj48duSvPv69R3UO2TbLuNderQtVNIQd7Pw/n08fz8/Pjv6NelftnZ2f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAG4ALAAAAAA0AAwAAAe0gG6Cg4SFhoJqUA9SL2mHj49tkJOCAWhsREERCjcSTz0UlIZtkqKHYjYsNQ0jKTslZ05ZPKaEpLe4ubdRggAESjNLJBZYWz8uJzFIGIO6zs/QbWCCa0BCXRVcIGMfRzQeOCFNgjnR5tEDggwrJl9mHB0ZFzBlRUYCgy3nt7WFEFNVDEwYokOFliQHEADox5BSgAIbrIRJ4MMBGSYNMx4S4EXEFRkoqCzQsFCjyZMoU6pceTIQADs=";
images["switchg"] = "R0lGODlhNAAMAOZZAP7+/m9vb21tbWJiYtXV1c/Pz5eXl83NzZOTk/39/VtbW2pqalhYWH9/f2RkZNvb2/r6+ujo6OHh4evr6zw8PCsrK2tra8zMzGlpacbGxpKSkn19ferq6vz8/IODg4CAgFpaWuPj44yMjPDw8GBgYFxcXG5ubjIyMrOzs6ioqNzc3Pb29tTU1CwsLJ6ennV1dd7e3r+/v/X19R0dHV5eXkhISODg4NbW1lFRUVZWVtfX15qamt/f3+np6WxsbPLy8sPDw0NDQ8XFxUlJSYiIiI2NjWNjY6SkpHZ2dnBwcOzs7CEhIXNzc+fn56mpqcrKyp+fn9jY2Pn5+URERDg4OGdnZ4SEhMnJycjIyP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFkALAAAAAA0AAwAAAfHgFmCg4SFhoIQIT0EBSOHj49YkJOCMjEaCiQgEhA8AyxSlIZXkqKHESgINQMYLgROLUtDKaaEWLekWLm4V7lXT4IAEQYvAQ1WC0QUJiU4MyeDure6u9PS077WuzeCHFAGVB5HHwEbRkFTFQYHgj/W0r7V19jZpASCEw07NkACPgE5kiBBoAPAoAfZqPHqVarWoAQwlDQRwUSBgyoMFggx6LDjpBUMLAxwIICGgCIdPKo8lOBChgcFCqg4EIXjyps4c+rcyfNmIAA7";

if ( document.getElementById("r1") ) {
	var res_table = document.getElementById("r1").parentNode.parentNode.parentNode;

	var newTr = document.createElement("tr");
		var newTd = document.createElement("td");
		newTd.setAttribute("colspan", "5");
		
			var newImg = [];
			
			newImg[0] = document.createElement("img");
			newImg[0].setAttribute("src", "data:image/gif;base64,"+images["0"]);
			newImg[0].style.cursor = "pointer";
			addEvent( newImg[0], 'click', function(){ switch_mode(0); } );
			newTd.appendChild(newImg[0]);
			
			newImg[1] = document.createElement("img");
			newImg[1].setAttribute("src", "data:image/gif;base64,"+images["1"]);
			newImg[1].style.cursor = "pointer";
			addEvent( newImg[1], 'click', function(){ switch_mode(1); } );
			newTd.appendChild(newImg[1]);
			
			newImg[2] = document.createElement("img");
			newImg[2].setAttribute("src", "data:image/gif;base64,"+images["2"]);
			newImg[2].style.cursor = "pointer";
			addEvent( newImg[2], 'click', function(){ switch_mode(2); } );
			newTd.appendChild(newImg[2]);
			
			newImg[3] = document.createElement("img");
			newImg[3].setAttribute("src", "data:image/gif;base64,"+images["3g"]);
			newImg[3].style.cursor = "pointer";
			addEvent( newImg[3], 'click', function(){ switch_mode(3); } );
			newTd.appendChild(newImg[3]);
			
			var newA = document.createElement("a");
			newA.setAttribute("href", "javascript:void(0);");
			newA.innerHTML = "Fill Up<br/>";
			addEvent( newA, 'click', function(){prop_fill();} );
			newTd.appendChild(newA);
			
			newImg["switch"] = document.createElement("img");
			newImg["switch"].setAttribute("src", "data:image/gif;base64,"+images["switch"]);
			newImg["switch"].style.cursor = "pointer";
			addEvent( newImg["switch"], 'click', function(){ switch_mode("switch"); } );
			newTd.appendChild(newImg["switch"]);
			
		newTr.appendChild(newTd);
	res_table.appendChild(newTr);
	
	var r = [];
	for ( i = 0; i < 4; i++ ) {
		r[i] = parseInt(document.getElementById( "l"+(4-i) ).innerHTML.split("/")[0]);
	}
	
	var marketinfo = [];
	marketinfo[0] = document.getElementsByTagName("script")[1].innerHTML.replace(/\n/g, " ");
	marketinfo[1] = document.getElementsByTagName("script")[2].innerHTML.replace(/\n/g, " ");
	
	var regex = /<!-- var haendler = ([0-9]+); var carry = ([0-9]+); \/\/-->/g;
	if ( regex.exec(marketinfo[0]) ) {
		h = RegExp.$1;
		c = RegExp.$2;
	} else if ( regex.exec(marketinfo[1]) ) {
		h = RegExp.$1;
		c = RegExp.$2;
	}
}

var mode = [];
mode[0] = 1;
mode[1] = 1;
mode[2] = 1;
mode[3] = 0;
mode["switch"] = 1;

function switch_mode(j) {
	if ( j == "switch" ) {
		
		if ( mode["switch"] == 1 ) {
			for ( i = 0; i<3; i++) {
				newImg[i].setAttribute("src", "data:image/gif;base64,"+images[i+"g"]);
				mode[i] = 0;
			}
		} else {
			for ( i = 0; i<3; i++) {
				newImg[i].setAttribute("src", "data:image/gif;base64,"+images[i.toString()]);
				mode[i] = 1;
			}
		}
		
	} else {
		
		if ( mode[j] == 1 ) {
			newImg[j].setAttribute("src", "data:image/gif;base64,"+images[j+"g"]);
			mode[j] = 0;
		} else {
			newImg[j].setAttribute("src", "data:image/gif;base64,"+images[j.toString()]);
			mode[j] = 1;
		}
		
	}
	
	if ( mode[0] && mode[1] && mode[2] ) {
		newImg["switch"].setAttribute("src", "data:image/gif;base64,"+images["switch"]);
		mode["switch"] = 1;
	} else {
		newImg["switch"].setAttribute("src", "data:image/gif;base64,"+images["switchg"]);
		mode["switch"] = 0;
	}
}

function prop_fill () {

	res = 0;
	for ( i = 0; i <= 3; i++ ) {
		if ( mode[i] == 1) {
			res += r[i];
		}
	}
	
	rf = [];
	for ( i = 1; i <= 4; i++ ) {
		rf[i] = document.getElementById("r"+i);
		
		if ( mode[i-1] == 1) {
			if ( Math.floor(h*c*r[i-1]/res) < r[i-1] ) {
				rf[i].value = Math.floor(h*c*r[i-1]/res);
			} else {
				rf[i].value = r[i-1]
			}
		} else {
			rf[i].value = "";
		}
	}
	
}

/* Helpers */
function xpath(xp) {
    return document.evaluate(xp, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
}

function addEvent( obj, type, fn ) {	
	if (obj.addEventListener)
		obj.addEventListener( type, fn, false );
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}
}

function removeEvent( obj, type, fn ) {
	if (obj.removeEventListener)
		obj.removeEventListener( type, fn, false );
	else if (obj.detachEvent) {
		obj.detachEvent( "on"+type, obj[type+fn] );
		obj[type+fn] = null;
		obj["e"+type+fn] = null;
	}
}