function basketRemoveItem(itemid) {
	return (function() {
		document.getElementById("quantity"+itemid).value = 0;
		document.getElementById("basketcontents").parentNode.submit();
	});
}
function initBasketRemoveButtons() {
	if (document.getElementById("basketcontents")) {
		var t = document.getElementById("basketcontents");
		var rows = t.getElementsByTagName("TR");
		for (var i=0; i<rows.length; i++) {
			var itemid = rows[i].id.substr(10);
			var cells = rows[i].getElementsByTagName("TD");
			if (cells.length==6) {
				var f = basketRemoveItem(itemid);
				cells[cells.length-1].firstChild.onclick = f;
			}
		}
	}
}
function initCheckoutCountrySelect() {
	if (document.getElementById("worldshiprequired_yes")) {
		document.getElementById("worldshiprequired_yes").onclick=function() {
			document.getElementById("countryfield").style.display = (this.isChecked) ? "none" : "block";
		}
		document.getElementById("worldshiprequired_no").onclick=function() {
			document.getElementById("countryfield").style.display = (this.isChecked) ? "block" : "none";
		}
	}
}
function stripe() {

	// the flag we'll use to keep track of 
	// whether the current row is odd or even
	var even = true;

	// obtain a reference to the data tables
	// if no such table exists, abort
	var tables = getElementsByClassname("data");
	if (! tables) { return; }

	// Iterate through the available data tables...
	for (var g = 0; g < tables.length; g++) {

		// by definition, tables can have more than one tbody
		// element, so we'll have to get the list of child
		// &lt;tbody&gt;s 
		var tbodies = tables[g].getElementsByTagName("tbody");

		// and iterate through them...
		for (var h = 0; h < tbodies.length; h++) {

			// find all the &lt;tr&gt; elements... 
			var trs = tbodies[h].getElementsByTagName("tr");

			// ... and iterate through them (provided that the table has less than 500 rows)
			for (var i = 0; i < trs.length && trs.length < 500; i++) {

				// avoid rows that have a class attribute
				if (!hasClass(trs[i])) {

					// set a class on the row so the cells inherit a color
					trs[i].className = even ? "stripeeven" : "stripeodd";

					// flip from odd to even, or vice-versa
					even = !even;
				}
			}
		}
	}
}
function getElementsByClassname (needle) {
	var my_array = document.getElementsByTagName("*");
	var retvalue = new Array();
	var i;
	var j;

	for (i = 0, j = 0; i < my_array.length; i++) {
		var c = " " + my_array[i].className + " ";
		if (c.indexOf(" " + needle + " ") != -1) retvalue[j++] = my_array[i];
	}
	return retvalue;
}
function hasClass(obj) {
	var result = false;
	if (obj.getAttributeNode("class") != null) {
		result = obj.getAttributeNode("class").value;
	}
	return result;
}
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}


// Steps through the page's forms, finding those to be styled by checking the
// class tags, and adjusts the labels to have the same width.
function initStyledForms() {
	var maxLabelWidth = 0;
	var labelsToStyle = new Array();
	var classRegExp = new RegExp("(^|\\s)styledform(\\s|$)");
	var nostyleRegExp = new RegExp("(^|\\s)nostyle(\\s|$)");
	for (var i=0; i<document.forms.length; i++) {
		if (!classRegExp.test(document.forms[i].className)) continue;
		var labels = document.forms[i].getElementsByTagName("label");
		for (var j=0; j<labels.length; j++) {
			if (!labels[j].parentNode || (labels[j].parentNode.tagName != "LI") || (nostyleRegExp.test(labels[j].className))) continue;
			if (labels[j].offsetWidth > maxLabelWidth) maxLabelWidth = labels[j].offsetWidth;
			labelsToStyle[labelsToStyle.length] = labels[j];
		}
	}
	maxLabelWidth += 5;
	for (var i=0; i<labelsToStyle.length; i++) {
		labelsToStyle[i].style.width = maxLabelWidth + "px";
		labelsToStyle[i].style.cssFloat = "left";
		labelsToStyle[i].style.styleFloat = "left";
		//labelsToStyle[i].style.display = "inline"; // IE bug workaround
	}
}

function pageinit() {
	initBasketRemoveButtons();
	initCheckoutCountrySelect();
	initStyledForms();
	stripe();
}

// Add pageinit as load event
addLoadEvent(pageinit);


/* JavaScript for competition entry pages */

// Hide all 'please specify' fields, unless the associated drop down has been prepopulated with 'other'
addLoadEvent(function() {
	var specify = getElementsByClassname("compquestionnaireselect");
	if (specify.length) {
		for (i in specify) {
			if ((specify[i].options[specify[i].selectedIndex].className) == "specify") {
				continue;
			} else {
				var tables = specify[i].parentNode.getElementsByTagName("TABLE");
				for (j in tables) {
					if (tables[j].className == "compquestionnaireSpecify") {
						tables[j].style.display = "none";
					}
				}
			}
		}
	}
})

function compquestionnaireSelChange(field) {
	var dd = document.getElementById("sel_compquestionnaire"+field);
	var selectedOpt = dd.options[dd.selectedIndex];
	if (selectedOpt.className == "specify") {
		document.getElementById("tbl_compquestionnaire"+field+"Specify").style.display = "";
	} else {
		document.getElementById("tbl_compquestionnaire"+field+"Specify").style.display = "none";
		document.getElementById("txt_compquestionnaire"+field+"Specify").value = "";
	}
}

