var validIntChars = "0123456789";

addLoadEvent(prepareLineClass);
addLoadEvent(prepareIntegerInputs);
addLoadEvent(prepCalcInputs);

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 prepareIntegerInputs() {
	var chkInteger = getElementsByClassName("chkInteger");
	for (var x = 0; x < chkInteger.length; x++) {
		if (chkInteger[x].getAttribute("type") != "button") {
		//chkInteger[x].onblur = new Function("isInteger(this);calcTotal();prepareForPaypal();");
		chkInteger[x].onblur = new Function("isInteger(this);");
		}
	}
}

function prepCalcInputs() {
	var container = document.getElementById("calcDues");
	var allInputs = container.getElementsByTagName("input");
	for (var x = 0; x < allInputs.length; x++) {
		var thisInput = allInputs[x];
		var oldonchange = thisInput.getAttribute("onchange");
		if (oldonchange) {
			thisInput.setAttribute("onchange",oldonchange + "calcTotalDues();");
		} else {
			thisInput.setAttribute("onchange","calcTotalDues();");
		}
	}
}
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 chkEmptyFields() {
	var errorList = new Array();
	var allInputs = document.getElementsByTagName("input");
	for (var x = 0; x < allInputs.length; x++) {
		var thisInput = allInputs[x];
		if (thisInput.value == "" && thisInput.className.indexOf("optional") < 0 && thisInput.getAttribute("type") != "hidden") {
			errorList.push(thisInput.getAttribute("name"));
		}
	}
	if (errorList.length > 0) {
		alert("The following field(s) still need to be filled out:\n\n" + errorList);
		return false;
	} else {
		return true;
	}
}

function toggleOptional(elemID) {
	var newDentistRadio = document.getElementById("Dues_NewDentist");
	var elem = document.getElementById("NewDentistDues");
	var elemClass = elem.className;
	if (newDentistRadio.checked) {
		if (elemClass.indexOf(" optional") > 0) {
			//alert("\"Optional\" is NOT the first class");
			elem.className = elemClass.replace(" optional","");
			//alert(elem.className);
		} else if (elemClass.indexOf("optional ") > 0) {
			//alert("\"Optional\" IS the first class");
			elemClass = elemClass.replace("optional ","");
		} else if (elemClass == "optional") {
			//alert("\"Optional\" is the only class");
			elemClass == "";
		}
	} else {
		if (elemClass.indexOf("optional") < 0){
			var oldClass = "";
			if (elemClass) {
				oldClass = elemClass + " ";
			}
			elem.className = oldClass + "optional";
		}
	}
}

function setComponentDues(){
	var elem = document.getElementById("LocalComponentDues");
	elem.value = "0";
	elem.disabled = true;
}
function clearComponentDues(){
	var elem = document.getElementById("LocalComponentDues");
	elem.value = "";
	elem.disabled = false;
}
function calcTotalDues() {
	var dentistDues = 0;
	var componentDues = 0;
	var verdict = false;
	
	var container = document.getElementById("calcDues");
	var allInputs = container.getElementsByTagName("input");
	for (var x = 0; x < allInputs.length; x++) {
		var thisInput = allInputs[x];
		if (thisInput.checked) {
			//alert(thisInput.value);
			switch (thisInput.value) {
				case "2010 Academy Dues":
					dentistDues = 504;
				break;
				
				case "New Dentist":
					var inputVal = document.getElementById("NewDentistDues").value;
					if (inputVal > 0) {
						dentistDues = inputVal;
					} else {
						dentistDues = 0;
					}
				break;
				
				case "Student Dues":
					dentistDues = 16;
				break;
			}
		}
	}//	for
	var componentVal = document.getElementById("LocalComponentDues").value;
	if (componentVal > 0) {
		componentDues = componentVal;
	} else {
		componentDues = 0;
	}
	document.getElementById("totalPrice").innerHTML = parseFloat(dentistDues) + parseFloat(componentDues);
}

function getElementsByClassName(tarClass,container) {
	var allTags = new Array();
	var finalElems = new Array();
	if (container) {
		allTags = container.getElementsByTagName("*");
	} else {
		allTags = document.getElementsByTagName("*");
	}
	for (var x = 0; x < allTags.length; x++) {
		var thisTag = allTags[x];
		if (thisTag.className.indexOf(tarClass) > 0) {
			finalElems.push(thisTag);
		}
	}
	return finalElems;
}

function initSubmit() {
	calcTotalDues();
	var verdict = chkEmptyFields();
	if (verdict) {
		document.getElementById("paypalAmount").value = document.getElementById("totalPrice").innerHTML;
		var postData = $("#informationForm").serialize();
		//alert("going to send:\n" + postData);
		$.ajax({
			type: "POST",
			url: "assets/php/membershipApp.php",
			data: postData,
			dataType: "text",
			success: function(data, textStatus){
			   //alert("success data: " + data + "\ntextStatus: " + textStatus);
			   document.getElementById('paypalForm').submit();
			},
			error: function(XMLHttpRequest, textStatus, errorThrown){
				//alert("error data\nXMLHttpRequest: " + XMLHttpRequest + "\ntextStatus: " + textStatus + "\nerrorThrown: " + errorThrown);
			}
		});
		
	}
}

function addLoadEvent(func) {
	var oldonload = window.onload;
	if(typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}