var validIntChars = "0123456789";

addLoadEvent(prepareLineClass);
addLoadEvent(prepareIntegerInputs);
//addLoadEvent(prepareRegistrantInputs);

function calcTotal() {
	var runningTotal = 0;
	var container = document.getElementById("events");
	var allInputs = container.getElementsByTagName("input");
	for (var x = 0; x < allInputs.length; x++) {
		var currInput = allInputs[x];
		
		var currValue;
		
		if (isNaN(parseFloat(currInput.value))) {
			currValue = 0;
		} else {
			currValue = parseFloat(currInput.value);
		}
		
		var currPrice;
		
		if (isNaN(parseFloat(currInput.getAttribute("alt")))) {
			currPrice = 0;
		} else {
			currPrice = parseFloat(currInput.getAttribute("alt"));
		}
		
		if (currInput == document.getElementById("Donation_amount")) {
			runningTotal += currValue;
		} else if (currInput == document.getElementById("Donation_amount2")) {
			runningTotal += currValue;
		}else if (currInput.getAttribute("type") == "text") {
			runningTotal += currPrice * currValue;
		}
	}
	if (runningTotal == "NaN") {
		document.getElementById("runningTotal").innerHTML = "0";
	} else {
		document.getElementById("runningTotal").innerHTML = runningTotal;
	}
}
function prepareRegistrantInputs() {
	var container = document.getElementById("registrantInfo");
	var allInputs = container.getElementsByTagName("input");
	for (var x = 0; x < allInputs.length; x++) {
		if (allInputs[x].getAttribute("type") == "text") {
			allInputs[x].onblur = new Function("prepareRegistrantInfo();");
		}
	}
}
function prepareRegistrantInfo() {
	var container = document.getElementById("registrantInfo");
	var allInputs = container.getElementsByTagName("input");
	var fullList = new Array();
	var finalOutput = "";
	for (var x = 0; x < allInputs.length; x++) {
		if (allInputs[x].value) {
			fullList.push(allInputs[x]);
			//allInputs[x].onblur = new Function("prepareRegistrantInfo();");
		}
	}
	for (var x = 0; x < fullList.length; x++) {
		var currValue = fullList[x];
		finalOutput += currValue.getAttribute("name") + "=" + currValue.value + "&";
	}
	var outputLocation = document.getElementById("registrantInfoOutput");
	outputLocation.value = finalOutput;
			//alert(outputLocation.value);
	
}
function prepareForPaypal() {
	var container = document.getElementById("events");
	var allTRs = container.getElementsByTagName("tr");
	var removeList = new Array();
	var paypalList = new Array();
	
	for (var x = 0; x < allTRs.length; x++) {
		var forPaypal = false;
		if (5 > allTRs[x].getElementsByTagName("input").length && allTRs[x].getElementsByTagName("input").length > 0) {
			var currInputSet = allTRs[x].getElementsByTagName("input");
			
			// Check to see if one of the fields is an amount field
			for (var y = 0; y < currInputSet.length; y++) {
				var currInput = currInputSet[y];
				if (currInput.getAttribute("name").match("quantity")) {
					
					// If it's value is null or 0...
					if (currInput.value == "0" || currInput.value == "") {
						forPaypal = false;
						break;
						
					// Otherwise...
					} else {
						forPaypal = true;
						break;
					}
				}
			}
			
			// If forPaypal = true...
			if (forPaypal == true) {
				paypalList.push(currInputSet);
			} else if (forPaypal == false) {
				for (var y = 0; y < currInputSet.length; y++) {
					removeList.push(currInputSet[y]);
				}
			}
		}
	}
	
	// Reset all Non-Paypal-ready input names
	for (var x = 0; x < removeList.length; x++) {
		var currElem = removeList[x];
		var currElemName = currElem.getAttribute("name");
		if (currElemName.match("item_name")) {
			currElem.setAttribute("name","item_name");
		}
		if (currElemName.match("amount")) {
			currElem.setAttribute("name","amount");
		}
		if (currElemName.match("quantity")) {
			currElem.setAttribute("name","quantity");
		}
	}
	var enrolledList = new Array();
	
	// Set all Paypal-ready input names
	for (var x = 0; x < paypalList.length; x++) {
		var currEnrolledText = "";
		var currElemSet = paypalList[x];
		for (var y = 0; y < currElemSet.length; y++) {
			var z = x + 1;
			var currElem = currElemSet[y];
			var currElemName = currElem.getAttribute("name");
			
			if (currElemName.match("item_name")) {
				currEnrolledText = currElem.value + currEnrolledText;
				currElem.setAttribute("name","item_name_" + z);
			}
			if (currElemName.match("amount")) {
				currElem.setAttribute("name","amount_" + z);
			}
			if (currElemName.match("quantity")) {
				currEnrolledText = currEnrolledText + " x " + currElem.value;
				currElem.setAttribute("name","quantity_" + z);
			}
		}
		enrolledList.push(currEnrolledText);
	}
	//alert(enrolledList);
	
	var z = paypalList.length + 1;
	if (document.getElementById("Donation_amount").value != "0" || document.getElementById("Donation_amount").value != "") {
		document.getElementById("Donation_name").setAttribute("name","item_name_" + z);
		document.getElementById("Donation_amount").setAttribute("name","amount_" + z);
	}
	var selCourses = "--------------------\n";
	for (var x = 0; x < enrolledList.length; x++) {
		selCourses += enrolledList[x].toString() + "\n";
	}
	var tarInput = document.getElementById("selectedCourses");
	tarInput.value = selCourses;
	
}

function isInteger(elem) {
	var textString = elem.value;
	var isInteger = true;
	for (var x = 0; x < textString.length; x++) {
		if (validIntChars.indexOf(textString.charAt(x)) == -1) {
			isInteger = false;
			alert("Please use whole numbers.");
			elem.focus();
			break;
		}
	}
}

function prepareIntegerInputs() {
	var container = document.getElementById("events");
	var allInputs = container.getElementsByTagName("input");
	for (var x = 0; x < allInputs.length; x++) {
		if (allInputs[x].getAttribute("type") != "button") {
		allInputs[x].onblur = new Function("isInteger(this);calcTotal();prepareForPaypal();");
		}
	}
}

function prepareLineClass() {
	var allInputs = document.getElementsByTagName("input");
	for (var x = 0; x < allInputs.length; x++) {
		var currInput = allInputs[x];
		if (currInput.getAttribute("type") == "text") {
			var oldClass = "";
			if (currInput.className) {
				oldClass = currInput.className + " ";
			}
			currInput.className = oldClass + "line";
		}
	}
}

function addLoadEvent(func) {
	var oldonload = window.onload;
	if(typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}