PMOG Crate Urchin

By Ryan.Wolf Last update Jun 27, 2008 — Installed 115 times.
// ==UserScript==
// @name           PMOG Crate Urchin
// @namespace      google.com
// @include        http://pmog.com/locations/*/crates
// ==/UserScript==

//definitions
// define selects
var selects = new Object;
if (document.getElementsByName('crate[datapoints]').length == 1) {
	selects["dp"] = document.getElementsByName('crate[datapoints]')[0];
}
if (document.getElementsByName('crate[tools][armor]').length == 1) {
	selects["armor"] = document.getElementsByName('crate[tools][armor]')[0];
}
if (document.getElementsByName('crate[tools][crates]').length == 1) {
	selects["crates"] = document.getElementsByName('crate[tools][crates]')[0];
}
if (document.getElementsByName('crate[tools][lightposts]').length == 1) {
	selects["lightposts"] = document.getElementsByName('crate[tools][lightposts]')[0];
}
if (document.getElementsByName('crate[tools][mines]').length == 1) {
	selects["mines"] = document.getElementsByName('crate[tools][mines]')[0];
}
if (document.getElementsByName('crate[tools][portals]').length == 1) {
	selects["portals"] = document.getElementsByName('crate[tools][portals]')[0];
}
if (document.getElementsByName('crate[tools][st_nicks]').length == 1) {
	selects["st_nicks"] = document.getElementsByName('crate[tools][st_nicks]')[0];
}

// define function
function calc_free () {
	var free = 10;
	for (var i in selects) {
		if (i == "dp") {
			free -= Math.ceil(selects["dp"].value / 100); // convert dp to slots
		}
		else {
			free -= selects[i].value;
		}
	}
	return free;
}

function adjust_options () {
	// for every item you have 1 or more of
	for (var j in selects) {
		var len = selects[j].length;
		var val = selects[j].value;
		var tmp_free = calc_free();
		if (j == "dp") {
			tmp_free *= 100; // convert slots to dp
		}
		for (var k=0; k<len; k++) {
			if ((selects[j].options[k].value - val) > tmp_free) {
				selects[j].options[k].disabled = true;
			}
			else {
				selects[j].options[k].disabled = false;
			}
		}
	}
}

// define events
for (var l in selects) {
	selects[l].addEventListener("change", adjust_options, true);
}