/*------------------------------------------------
ILT scripts
------------------------------------------------*/

// globals used for the form validation
var goFlag = true;
var msg = "";
var today = new Date();

function checkTerms(agreed) {

	// reset all buttons

	$("agree").className = "buttonDis";
	$("agree").removeAttribute("onclick");
	$("cancel").className = "buttonDis";
	$("cancel").removeAttribute("onclick");
	if (agreed == "true") {
		//$("cancel").className = "buttonDis";
		$("cancel").disabled = true;
		$("agree").disabled = false;
		$("back").disabled = false;
		$("agree").className = "button";
		$("back").className = "button";
		//$("agree").onclick = new Function("window.location='/gateway/index.cfm?fa=ilt.confirmation';");
	} else {
		$("back").className = "buttonDis";
		$("back").disabled = true;
		$("agree").className = "buttonDis";
		$("agree").disabled = true;

		//$("back").removeAttribute("onclick");
		$("cancel").className = "button";
		$("cancel").disabled = false;
		//$("cancel").onclick =new Function("window.location='/gateway/index.cfm?fa=catalog.gateway';");
	}
}

function checkreviewform(thisform) {
	goFlag = "true";
	myOption = -1;
	for (i=0; i<thisform.acceptance.length; i++) {
		if (thisform.acceptance[i].checked) {
			myOption = i;
		}
	}
	if (myOption == -1) {
		goFlag = false;
	}

	// return result
	if (goFlag) {
		thisform.submitbutton.disabled = true;
		return true;
	} else {
		//return false;
		$("errFlag").innerHTML = "Please agree to the terms before proceeding";
		$("errFlag").style.display = "block";
		return false;
	}
}

function val_stuInfo() {
	goFlag = "true";
	msg = "The fields marked with this icon are required.";
	var tmpTbl = document.getElementsByTagName("table");
	// reset any marked errors
	for (var i = 0; i < tmpTbl.length; i ++) {
		var tmpRows = tmpTbl.item(i).getElementsByTagName("td");
		// clear any previous errors 
		for (var q = 0; q < tmpRows.length; q ++) {
			if (tmpRows.item(q).className == "error") {
				tmpRows.item(q).className = "";
			}
		}
	}
	$("errFlag").style.display = "none";
	// loop thru the tables and validate the fields
	for (var i = 0; i < tmpTbl.length; i ++) {
		var tmpCells = tmpTbl.item(i).getElementsByTagName("input");
		for (var t = 0; t < tmpCells.length; t ++) {
			if (regXtrim(tmpCells.item(t).value).length < 1) {
				tmpPar = tmpCells.item(t).parentNode;
				tmpPar.className = "error";
				goFlag = false;
			}
			// if this is the email input, do a little extra validation
			if (tmpCells.item(t).name.indexOf("email_") != -1) {
				if (!checkMailSyntax(tmpCells.item(t).value)) {
					tmpPar = tmpCells.item(t).parentNode;
					tmpPar.className = "error";
					goFlag = false;
				}
			}
		}
		// check the select lists
		var tmpList = tmpTbl.item(i).getElementsByTagName("select");
		for (var e = 0; e < tmpList.length; e ++) {
			if (tmpList.item(e).selectedIndex < 1) {
				tmpPar = tmpList.item(e).parentNode;
				tmpPar.className = "error";
				goFlag = false;
			}
		}
	}

	// return result
	if (goFlag) {
		return true;
	} else {
		$("errFlag").innerHTML = msg;
		$("errFlag").style.display = "block";
		return false;
	}
}

function tagError(id,text) {
	tmpPar = $(id).parentNode;
	tmpPar.className="error";
	tmpPar.setAttribute("title","This field is required");
	goFlag = false;
	//msg = text;
	msg = "The fields marked with this icon are required.";
}

function init(){
	var tmpTds = document.getElementsByTagName("td");
	for(var p = 0; p < tmpTds.length; p++) {
		if(tmpTds.item(p).className == "error") {
			tmpTds.item(p).className == "";
		}
	}
	$("errFlag").style.display = "none";
	goFlag = true;
	msg = "The fields displaying this icon are required";
}

function showMeth(m) {
	// hide any displayed payment methods
	for(var i = 1; i <= 8; i ++) {
		var tmp = "meth" + i;
		$(tmp).style.display = "none";
		//clear form fields if hidden
		var tmpDiv = document.getElementById(tmp);
		//var tmpInputs = tmpDiv.getElementsByTagName("input");
		// text inputs
		//for (var z = 0; z < tmpInputs.length; z ++) {
			//tmpInputs.item(z).value = "";
		//}
		// select lists
		//var tmpselects = tmpDiv.getElementsByTagName("select");
		//for(var z = 0; z < tmpInputs.length; z ++) {
			//tmpInputs.item(z).selectedIndex=0;
		//}
	}
	var tmp2 = "meth" + m;
	$(tmp2).style.display = "block";
	// after the div loads, clear it
	init();
}

function val_payment(objForm) {
	init();
	// see if any radio buttons were checked
	var itemselected = objForm.paymentMeth.value;
	if (itemselected > 0) {
		switch(itemselected) {
			case "1":
				init();
				if (regXtrim($("pon").value) == "") {
					tagError("pon","Enter your PO number");
					goFlag = false;
				}
				break;
			case "2":
				init();
				if (regXtrim($("checkno").value) == "") {
					tagError("checkno","Enter your check number");
					goFlag = false;
				}
				break;
			case "3":
				init();
				if (regXtrim($("govno").value) == "") {
					tagError("govno","Enter your requisition number");
					goFlag = false;
				}
				break;
			case "4":
				init();
				if (regXtrim($("ppContract").value) == "") {
					tagError("ppContract","Enter your Pre-Paid Training Order Number");
					goFlag = false;
				}
				/*if(regXtrim($("ppProgram").value) == ""){
					tagError("ppProgram","Enter your program");
					goFlag = false;
				}*/
				break;
			case "5":
				if (regXtrim($("contractno").value) == "") {
					tagError("contractno","Enter your contract number");
					goFlag = false;
				}
				break;
			case "6":
				if ($("cctype").selectedIndex < 1) {
					tagError("cctype","Select a card type");
					goFlag = false;
				}
				if (regXtrim($("ccname").value) == "") {
					tagError("ccname","Enter the cardholder's name");
					goFlag = false;
				}
				if (regXtrim($("ccnumber").value) == "") {
					tagError("ccnumber","Enter the card account number");
					goFlag = false;
				}
				if (My_CF_checkcreditcard($("ccnumber").value) == false) {
					tagError("ccnumber","The card number appears to be invalid - make sure you entered it correctly");
					goFlag = false;
				}
				if ($("month").selectedIndex < 1) {
					tagError("month","Select an expiration month");
					goFlag = false;
				}
				if ($("year").selectedIndex < 1) {
					tagError("year","Select an expiration year");
					goFlag = false;
				}
				if (CardExpired($("year").options[$("year").selectedIndex].value,$("month").options[$("month").selectedIndex].value)) {
					tagError("year","The card expiration date has passed");
					goFlag = false;
				}
				if (regXtrim($("ccphone").value) == "") {
					tagError("ccphone","Enter the card holder's phone number");
					goFlag = false;
				}
		}
	}
	else {
		tagError("paymentMeth", "Choose a payment method");
		goFlag = false;
	}
	// return result
	if (goFlag) {
		return true;
	} else {
		$("errFlag").innerHTML = msg;
		$("errFlag").style.display = "block";
		return false;
	}
}

function My_CF_checkcreditcard(object_value) {
	var white_space = " -";
	var creditcard_string="";
	var check_char;

	if (object_value.length == 0)
		return true;
		// squish out the white space

	for (var i = 0; i < object_value.length; i++) {
		check_char = white_space.indexOf(object_value.charAt(i));
		if (check_char < 0)
			creditcard_string += object_value.substring(i, (i + 1));
	}

	// if all white space return error
	if (creditcard_string.length == 0)
		return false;

	// make sure number is a valid integer

	if (creditcard_string.charAt(0) == "+")
		return false;

	if (!My_CF_checkinteger(creditcard_string))
		return false;

	// now check mod10

	var doubledigit = creditcard_string.length % 2 == 1 ? false : true;
	var checkdigit = 0;
	var tempdigit;

	for (var i = 0; i < creditcard_string.length; i++) {
		tempdigit = eval(creditcard_string.charAt(i))
		if (doubledigit) {
			tempdigit *= 2;
			checkdigit += (tempdigit % 10);
			if ((tempdigit / 10) >= 1.0)
				checkdigit++;
			doubledigit = false;
		} else {
			checkdigit += tempdigit;
			doubledigit = true;
		}
	}
	return (checkdigit % 10) == 0 ? true : false;
}

function CardExpired(eYear,eMonth) {
	//var today = new Date(); // get today's date
	var thisYear =  today.getFullYear();
	var thisMonth = today.getMonth();
	var expYear=parseInt('20'+eYear);
	if(thisYear < expYear ) {
		return false;
	}
	if(parseInt(eMonth) < thisMonth) {
		return true;
	}
	if(thisMonth < parseInt(eMonth)) {
		return false;
	}
	return true;
}

function My_CF_checkinteger(object_value) {
	//Returns true if value is a number or is NULL
	//otherwise returns false
	if (object_value.length == 0)
		return true;
	//Returns true if value is an integer defined as
	//   having an optional leading + or -.
	//   otherwise containing only the characters 0-9.
	var decimal_format = ".";
	var check_char;
	//The first character can be + -  blank or a digit.
	check_char = object_value.indexOf(decimal_format)
	//Was it a decimal?
	if (check_char < 1)
		return My_CF_checknumber(object_value);
	else
		return false;
}

function My_CF_checknumber(object_value) {
	//Returns true if value is a number or is NULL
	//otherwise returns false
	if (object_value.length == 0)
		return true;
	//Returns true if value is a number defined as
	//   having an optional leading + or -.
	//   having at most 1 decimal point.
	//   otherwise containing only the characters 0-9.
	var start_format = " .+-0123456789";
	var number_format = " .0123456789";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;

	//The first character can be + - .  blank or a digit.
	check_char = start_format.indexOf(object_value.charAt(0))
	//Was it a decimal?
	if (check_char == 1)
		decimal = true;
	else if (check_char < 1)
		return false;
	//Remaining characters can be only . or a digit, but only one decimal.
	for (var i = 1; i < object_value.length; i++) {
		check_char = number_format.indexOf(object_value.charAt(i))
		if (check_char < 0)
			return false;

		else if (check_char == 1) {
			if (decimal) // Second decimal.
				return false;
			else
				decimal = true;
		}

		else if (check_char == 0) {
			if (decimal || digits)
				trailing_blank = true;
				// ignore leading blanks
		}
		else if (trailing_blank)
			return false;
		else
			digits = true;
	}
	//All tests passed, so...
	return true
}

function ChooseSameBillingandOrgAddress() {
	if (document.form1.SameBillingandOrgAddress.checked == true) {
		document.form1.billing_address1.value = document.form1.address.value;
		document.form1.billing_city.value = document.form1.city.value;
		document.form1.billing_stateprov.value = document.form1.stateprov.value;
		document.form1.billing_country.value = document.form1.country.value;
		document.form1.billing_zip.value = document.form1.zip.value;
		document.form1.SameBillingandOrgAddress.checked = true;
	}
	else {
		document.form1.billing_address1.value = "";
		document.form1.billing_city.value = "";
		document.form1.billing_stateprov.value = "";
		document.form1.billing_country.value = "";
		document.form1.billing_zip.value = "";
		document.form1.SameBillingandOrgAddress.checked = false;
	}
}

function chooseSameBillingandTrainingContact() {
	if (document.form1.SameBillingandTrainingContact.checked == true) {
		document.form1.contact_fname.value = document.form1.billing_firstname.value;
		document.form1.contact_lname.value = document.form1.billing_lastname.value;
		document.form1.contact_telephone.value = document.form1.billing_phone.value;
		document.form1.SameBillingandTrainingContact.checked = true;
	}
	else {
		document.form1.contact_fname.value = "";
		document.form1.contact_lname.value = "";
		document.form1.contact_telephone.value = "";
		document.form1.SameBillingandTrainingContact.checked = false;
	}
}

