// show/hide functions

function openTRAll(prefix, which) {
	divs = document.getElementsByTagName("tr");
	for (i = 0; i < divs.length; i++) {
		if (divs[i].id != "") {
			if (divs[i].id == prefix + which + "_div")
				divs[i].style.display = (is_msie ? "block" : "table-row");
			else if (divs[i].id.substr(0, prefix.length) == prefix && divs[i].id.substr(divs[i].id.length - 4) == "_div")
				divs[i].style.display = "none";
		}
	}
}

// form functions

var errorColor = "ffdddd";
var goodColor = "ffffff";
function maxLength(fldname, max) {
	var fld = document.getElementById(fldname);
	if (fld.value.length >= max) {
		fld.value = fld.value.substring(0, max);
		return false;
	} else return true;
}
function setFieldColor(fld, color) {
	fld.style.backgroundColor = color;	
}
function trimFormField(fm, fieldname) {
	formfield = document.getElementById(fieldname);
	//formfield = eval("fm." + fieldname);
	if (! formfield) alert("Field '" + fieldname.name + "' is undefined.");
	formfield.value = formfield.value.replace(/^ */g, '').replace(/ *$/g, '');
}
function trimLoginField(fm, fieldname) {
	//formfield = document.getElementById(fieldname);
	formfield = eval("fm." + fieldname);
	if (! formfield) alert("Field '" + fieldname.name + "' is undefined.");
	formfield.value = formfield.value.replace(/^ */g, '').replace(/ *$/g, '');
}
function requiredFormField(fm, fieldname, fielddesc, max) {
	formfield = document.getElementById(fieldname);
	//formfield = eval("fm." + fieldname);	
	if (! formfield) alert("Field '" + fieldname.name + "' is undefined.");
	setFieldColor(formfield, goodColor);
	if (formfield.value == "") {
		setFieldColor(formfield, errorColor);
		return "<li>" + fielddesc + " is a required field.</li>";
	} else if (max && formfield.value.length > max) {
		setFieldColor(formfield, errorColor);
		return "<li>" + fielddesc + " is limited to " + max + " characters.</li>";
	} else return "";
}
function requiredLoginField(fm, fieldname, fielddesc, max) {
	//formfield = document.getElementById(fieldname);
	formfield = eval("fm." + fieldname);	
	if (! formfield) alert("Field '" + fieldname.name + "' is undefined.");
	setFieldColor(formfield, goodColor);
	if (formfield.value == "") {
		setFieldColor(formfield, errorColor);
		return "<li>" + fielddesc + " is a required field.</li>";
	} else if (max && formfield.value.length > max) {
		setFieldColor(formfield, errorColor);
		return "<li>" + fielddesc + " is limited to " + max + " characters.</li>";
	} else return "";
}
function requiredChecked(fm, fieldname, fielddesc, max) {
	formfield = document.getElementById(fieldname);
	//formfield = eval("fm." + fieldname);
	if (! formfield) alert("Field '" + fieldname + "' is undefined.");
	setFieldColor(formfield, goodColor);
	if (formfield.checked == false) {
		setFieldColor(formfield, errorColor);
		return "<li>" + fielddesc + " is a required field.</li>";
	} else if (max && formfield.value.length > max) {
		setFieldColor(formfield, errorColor);
		return "<li>" + fielddesc + " is limited to " + max + " characters.</li>";
	} else return "";
}
function maxFormField(fm, fieldname, fielddesc, max) {
	formfield = document.getElementById(fieldname);
	//formfield = eval("fm." + fieldname);
	if (! formfield) alert("Field '" + fieldname + "' is undefined.");
	setFieldColor(formfield, goodColor);
	if (formfield.value.length > max) {
		setFieldColor(formfield, errorColor);
		return "<li>" + fielddesc + " is limited to " + max + " characters.</li>";
	} else return "";
}
function dateField(fm, fieldname, fielddesc, reqd, gtfieldname, gtfielddesc) {
	formfield = document.getElementById(fieldname);
	//formfield = eval("fm." + fieldname);	
	if (! formfield) alert("Field '" + fieldname + "' is undefined.");
	setFieldColor(formfield, goodColor);
	if (formfield.value == "" && reqd) {
		setFieldColor(formfield, errorColor);
		return "<li>" + fielddesc + " is a required field.</li>";
	} else if (formfield.value != "") {
		d = new Date(formfield.value);
		if (d.getFullYear() >= 1900 && d.getFullYear() <= 1969)
			d.setYear(d.getFullYear() + 100);
		if (isNaN(d) || d.getFullYear() < 1970) {
			setFieldColor(formfield, errorColor);
			return "<li>" + fielddesc + " must be in a valid date format.</li>";
		} else {
			month = d.getMonth() + 1;
			month_str = month < 10 ? "0" + month : month;
			date = d.getDate();
			date_str = date < 10 ? "0" + date : date;	
			formfield.value = month_str + "/" + date_str + "/" + d.getFullYear();
			if (gtfieldname) {
				gtformfield = eval("fm." + gtfieldname);
				gtd = new Date(gtformfield.value);
				if (! isNaN(gtd) && gtd >= d) {
					setFieldColor(formfield, errorColor);
					return "<li>" + fielddesc + " must be greater than " + gtfielddesc + ".</li>";
				}
			}
			return "";
		}
	}
	return "";
}
function emailField(fm, fieldname, fielddesc, reqd) {
	formfield = document.getElementById(fieldname);
	//formfield = eval("fm." + fieldname);		
	if (! formfield) alert("Field '" + fieldname + "' is undefined.");
	setFieldColor(formfield, goodColor);
	if (formfield.value == "" && reqd) {
		setFieldColor(formfield, errorColor);
		return "<li>" + fielddesc + " is a required field.</li>";
	} else if (formfield.value != "") {
		temp = formfield.value + " ";
		found = temp.search(/[\w\.-]+@([\w-]+\.){1,3}[a-zA-Z]{2,}\s{1}/);
		if (found != 0) {
			setFieldColor(formfield, errorColor);
			return "<li>" + fielddesc + " must be in the form abc@def.com</li>";
		} else return "";
	} else return "";
}
function emailLoginField(fm, fieldname, fielddesc, reqd) {
	//formfield = document.getElementById(fieldname);
	formfield = eval("fm." + fieldname);		
	if (! formfield) alert("Field '" + fieldname + "' is undefined.");
	setFieldColor(formfield, goodColor);
	if (formfield.value == "" && reqd) {
		setFieldColor(formfield, errorColor);
		return "<li>" + fielddesc + " is a required field.</li>";
	} else if (formfield.value != "") {
		temp = formfield.value + " ";
		found = temp.search(/[\w\.-]+@([\w-]+\.){1,3}[a-zA-Z]{2,}\s{1}/);
		if (found != 0) {
			setFieldColor(formfield, errorColor);
			return "<li>" + fielddesc + " must be in the form abc@def.com</li>";
		} else return "";
	} else return "";
}
function integerField(fm, fieldname, fielddesc, reqd, type) {
	formfield = eval("fm." + fieldname);
	if (! formfield) alert("Field '" + fieldname + "' is undefined.");
	setFieldColor(formfield, goodColor);
	if (formfield.value != "") {
		temp = formfield.value + " ";
		found = temp.search(/\-?\d+\s{1}/i);
		if (found != 0 || (type >= 0 ? (type > 0 ? (new Number(formfield.value) <= 0) : (new Number(formfield.value) < 0)) : false)) {
			setFieldColor(formfield, errorColor);
			return "<li>" + fielddesc + " must be a" + (type >= 0 ? (type > 0 ? " positive" : " non-negative") : "n") + " integer.</li>";
		} else return "";
	} else if (reqd) {
		setFieldColor(formfield, errorColor);
		return "<li>" + fielddesc + " is a required field.</li>";
	} else return "";
}
function dollarField(fm, fieldname, fielddesc, reqd, type) {
	formfield = eval("fm." + fieldname);
	if (! formfield) alert("Field '" + fieldname + "' is undefined.");
	setFieldColor(formfield, goodColor);
	if (formfield.value != "") {
		temp = formfield.value + " ";
		found = temp.search(/\-?\d+\.?\d{0,2}\s{1}/i);
		if (found != 0 || (type >= 0 ? (type > 0 ? (new Number(formfield.value) <= 0) : (new Number(formfield.value) < 0)) : false)) {
			setFieldColor(formfield, errorColor);
			return "<li>" + fielddesc + " must be a" + (type >= 0 ? (type > 0 ? " positive" : " non-negative") : "") + " dollar amount.</li>";
		} else return "";
	} else if (reqd) {
		setFieldColor(formfield, errorColor);
		return "<li>" + fielddesc + " is a required field.</li>";
	} else return "";
}
function regexpField(fm, regexp, fieldname, fielddesc, msg, reqd) {
	formfield = document.getElementById(fieldname);
	//formfield = eval("fm." + fieldname);
	if (! formfield) alert("Field '" + fieldname + "' is undefined.");
	setFieldColor(formfield, goodColor);
	if (formfield.value != "") {
		temp = formfield.value + " ";
		found = temp.search(regexp);
		if (found != 0) {
			setFieldColor(formfield, errorColor);
			return "<li>" + fielddesc + msg + "</li>";
		} else return "";
	} else if (reqd) {
		setFieldColor(formfield, errorColor);
		return "<li>" + fielddesc + " is a required field.</li>";
	} else return "";
}
function checkCCType(number) {
	if (! checkCCValid(number))
		return "Invalid";
	else if (number.length == 16 && number.substr(0, 4) == "6011")
		return "DI";
	else if (number.length == 16 && (number.substr(0, 2) == "51" || number.substr(0, 2) == "52" || number.substr(0, 2) == "53" || number.substr(0, 2) == "54" || number.substr(0, 2) == "55"))
		return "MC";
	else if ((number.length == 13 || number.length == 16) && number.substr(0, 1) == "4")
		return "VI";
	else if (number.length == 15 && (number.substr(0, 2) == "34" || number.substr(0, 2) == "37"))
		return "AX";
	else
		return "Indeterminable";
}
function checkCCValid(number) {
	d = new Array(0,2,4,6,8,1,3,5,7,9);
	num = number;
	sum = 0;
	doub = false;
	while (num != "") {
		digit = parseInt(num.substr(num.length - 1, 1));
		if (! isNaN(digit)) {
			if (doub)
				sum = sum + d[digit];
			else
				sum = sum + digit;
			doub = ! doub;
			num = num.substr(0, num.length - 1);
		} else {
			num = "";
			sum = 1;
		}
	}
	return (sum % 10 == 0);
}
function errorMessage(msg) {
	if (document.getElementById("message_div")) {
		document.getElementById("message_div").innerHTML = "<b>The following errors were found:<br><ul style='margin-top:3px;'>" + msg + "</ul></b>";
		document.getElementById("message_div").style.display = "block";
	} else alert("The following errors were found:\n" + msg.replace(/(\<li\>)/g, '\n - ').replace(/(\<\/li\>)/g, ''));
}
function submitForm(fm, missing) {
	if (missing != "") {
		errorMessage(missing);
		return false;
	} else {
		if (document.getElementById("message_div"))
			document.getElementById("message_div").style.display = "none";
		return true;
		fm.submit();
	}
}

function logincheck(fm) {
	
	var msg_div = document.getElementById("loginform_message_div");
	trimLoginField(fm, "username");
	var em = emailLoginField(fm, "username", "E-Mail", true);
	var pw = requiredLoginField(fm, "password", "Password");
	if (em == "" && pw == "") {
		if (msg_div) msg_div.style.display = "none";
		return true;
	} else {	
		if (msg_div) {
			msg_div.innerHTML = ("<b>The e-mail address or password entered is invalid. Please try again.</b>");
			msg_div.style.display = "block";
		}
		return false;
	}
}
function forgotPassword(formname) {
	document.location = "forgot_password.cfm?username=" + document.forms[formname].username.value;
}
function registercheck(fm) {
	var missing = "";
	trimLoginField(fm, "username");
	trimLoginField(fm, "first_name");
	trimLoginField(fm, "last_name");
	//trimFormField(fm, "hint_answer");
	missing += emailLoginField(fm, "username", "E-Mail", true);
	missing += requiredLoginField(fm, "first_name", "First Name");
	missing += requiredLoginField(fm, "last_name", "Last Name");
	missing += requiredLoginField(fm, "password", "Password");
	if (fm.password.value != "" && fm.password.value.length < 6) {
		setFieldColor(fm.password, errorColor);
		missing +=  "<li>Password must be at least 6 characters in length.</li>";
	}
	missing += requiredLoginField(fm, "confirmpw", "Confirm Password");
	if (fm.confirmpw.value != "" && fm.password.value != fm.confirmpw.value) {
		setFieldColor(fm.password, errorColor);
		setFieldColor(fm.confirmpw, errorColor);
		missing +=  "<li>Confirm Password must match Password.</li>";
	}
	//missing += requiredFormField(fm, "hinttype_ID", "Hint Question");
	//missing += requiredFormField(fm, "hint_answer", "Hint Answer");
	return submitForm(fm, missing);
}
function checkoutdetailcheck(fm) {
	var missing = "";
	var noerror = true;
	trimfields = new Array("bill_first_name","bill_middle_name","bill_last_name","bill_address_1","bill_address_2","bill_apartment","bill_city","bill_zip","bill_phone","bill_evening_phone","bill_fax","bill_email");
	//,"bill_zip_4"
	for (i = 0; i < trimfields.length; i++)
		trimFormField(fm, trimfields[i]);
	missing += requiredFormField(fm, "bill_first_name", "Billing First Name");
	missing += requiredFormField(fm, "bill_last_name", "Billing Last Name");
	missing += requiredFormField(fm, "bill_address_1", "Billing Address 1");
	missing += requiredFormField(fm, "bill_city", "Billing City");
	
	// added password check if not empty	
	if(document.getElementById('bill_pwd') && document.getElementById('bill_pwd_confirm')) {
		if (document.getElementById('bill_pwd').value != "" && document.getElementById('bill_pwd').value.length < 6) {
			setFieldColor(document.getElementById('bill_pwd'), errorColor);
			missing +=  "<li>Password must be at least 6 characters in length.</li>";
		}
		if (document.getElementById('bill_pwd_confirm').value != ""){ 
			if(document.getElementById('bill_pwd').value != document.getElementById('bill_pwd_confirm').value) {
				setFieldColor(document.getElementById('bill_pwd'), errorColor);
				setFieldColor(document.getElementById('bill_pwd_confirm'), errorColor);
				missing +=  "<li>Confirm Password must match Password.</li>";
			}
		}
	}
	if ((document.getElementById('bill_country').value == "US" && "NA,AB,BC,MB,NB,NF,NS,NT,ON,PE,PQ,QC,QU,SA,SK,YT".indexOf(document.getElementById('bill_state').value) >= 0) ||
		(document.getElementById('bill_country').value == "CA" && "AB,BC,MB,NB,NF,NS,NT,ON,PE,PQ,QC,QU,SA,SK,YT".indexOf(document.getElementById('bill_state').value) < 0) ||
		("US,CA".indexOf(document.getElementById('bill_country').value) < 0 && document.getElementById('bill_state').value != "NA"))
		missing += "<li>Billing State and Country are mismatched</li>";
	if (document.getElementById('bill_country').value == "US")
		missing += regexpField(fm, /\d{5}(-\d{4}){0,1}\s{1}/, "bill_zip", "Billing Zip Code", " must be in the form 99999 or 99999-9999", true);
	else if (document.getElementById('bill_country').value == "CA")
		missing += regexpField(fm, /[a-zA-Z]{1}\d{1}[a-zA-Z]{1}\s{0,1}\d{1}[a-zA-Z]{1}\d{1}\s{1}/, "bill_zip", "Billing Zip Code", " must be in the form A1A 1A1", true);
	else missing += regexpField(fm, /[\-a-zA-Z0-9]{1,10}\s{1}/, "bill_zip", "Billing Zip Code", " must be letters, numbers and dashes", false);
	if (document.getElementById('bill_country').value == "US") {
		tmp = document.getElementById('bill_phone').value + " ";
		if (tmp.search(/\d{10}\s{1}/) == 0)
			document.getElementById('bill_phone').value = document.getElementById('bill_phone').value.substring(0, 3) + "-" + document.getElementById('bill_phone').value.substring(3, 6) + "-" + document.getElementById('bill_phone').value.substring(6);
		missing += regexpField(fm, /\d{3}-\d{3}-\d{4}\s{1}/, "bill_phone", "Billing Phone", " must be in the form 999-999-9999", true);
		tmp = document.getElementById('bill_evening_phone').value + " ";
		if (tmp.search(/\d{10}\s{1}/) == 0)
			document.getElementById('bill_evening_phone').value = document.getElementById('bill_evening_phone').value.substring(0, 3) + "-" + document.getElementById('bill_evening_phone').value.substring(3, 6) + "-" + document.getElementById('bill_evening_phone').value.substring(6);
		missing += regexpField(fm, /\d{3}-\d{3}-\d{4}\s{1}/, "bill_evening_phone", "Billing Alternate Phone", " must be in the form 999-999-9999", false);
		tmp = document.getElementById('bill_fax').value + " ";
		if (tmp.search(/\d{10}\s{1}/) == 0)
			document.getElementById('bill_fax').value = document.getElementById('bill_fax').value.substring(0, 3) + "-" + document.getElementById('bill_fax').value.substring(3, 6) + "-" + document.getElementById('bill_fax').value.substring(6);
		missing += regexpField(fm, /\d{3}-\d{3}-\d{4}\s{1}/, "bill_fax", "Billing Fax", " must be in the form 999-999-9999", false);
	} else {
		missing += regexpField(fm, /[\-\d]{1,12}\s{1}/, "bill_phone", "Billing Phone", " must be numbers and dashes", true);
		missing += regexpField(fm, /[\-\d]{1,12}\s{1}/, "bill_evening_phone", "Billing Alternate Phone", " must be numbers and dashes", false);
		missing += regexpField(fm, /[\-\d]{1,12}\s{1}/, "bill_fax", "Billing Fax", " must be numbers and dashes", false);
	}
	missing += emailField(fm, "bill_email", "Billing E-Mail", true);
	var msg_div = document.getElementById("billing_message_div");
	if (missing == "") {
		if (msg_div) msg_div.style.display = "none";
	} else {
		if (msg_div) {
			msg_div.innerHTML = "<b>The following errors were found:<br><ul style='margin-top:3px;'>" + missing + "</ul></b>";
			msg_div.style.display = "block";
		}
	}
	noerror = noerror && (missing == "");
	missing = "";
	trimfields = new Array("ship_first_name","ship_middle_name","ship_last_name","ship_address_1","ship_address_2","ship_apartment","ship_city","ship_zip","ship_phone","ship_evening_phone","ship_fax","ship_email");
	//,"ship_zip_4"
	for (i = 0; i < trimfields.length; i++)
		trimFormField(fm, trimfields[i]);
	missing += requiredFormField(fm, "ship_first_name", "Shipping First Name");
	missing += requiredFormField(fm, "ship_last_name", "Shipping Last Name");
	missing += requiredFormField(fm, "ship_address_1", "Shipping Address 1");
	missing += requiredFormField(fm, "ship_city", "Shipping City");
	if ((document.getElementById('ship_country').value == "US" && "NA,AB,BC,MB,NB,NF,NS,NT,ON,PE,PQ,QC,QU,SA,SK,YT".indexOf(document.getElementById('ship_state').value) >= 0) ||
		(document.getElementById('ship_country').value == "CA" && "AB,BC,MB,NB,NF,NS,NT,ON,PE,PQ,QC,QU,SA,SK,YT".indexOf(document.getElementById('ship_state').value) < 0) ||
		("US,CA".indexOf(document.getElementById('ship_country').value) < 0 && document.getElementById('ship_state').value != "NA"))
		missing += "<li>Shipping State and Country are mismatched</li>";
	if (document.getElementById('ship_country').value == "US")
		missing += regexpField(fm, /\d{5}(-\d{4}){0,1}\s{1}/, "ship_zip", "Shipping Zip Code", " must be in the form 99999 or 99999-9999", true);
	else if (document.getElementById('ship_country').value == "CA")
		missing += regexpField(fm, /[a-zA-Z]{1}\d{1}[a-zA-Z]{1}\s{0,1}\d{1}[a-zA-Z]{1}\d{1}\s{1}/, "ship_zip", "Shipping Zip Code", " must be in the form A1A 1A1", true);
	else missing += regexpField(fm, /[\-a-zA-Z0-9]{1,10}\s{1}/, "ship_zip", "Shipping Zip Code", " must be letters, numbers and dashes", false);
	if (document.getElementById('ship_country').value == "US") {
		tmp = document.getElementById('ship_phone').value + " ";
		if (tmp.search(/\d{10}\s{1}/) == 0)
			document.getElementById('ship_phone').value = document.getElementById('ship_phone').value.substring(0, 3) + "-" + document.getElementById('ship_phone').value.substring(3, 6) + "-" + document.getElementById('ship_phone').value.substring(6);
		missing += regexpField(fm, /\d{3}-\d{3}-\d{4}\s{1}/, "ship_phone", "Shipping Phone", " must be in the form 999-999-9999", true);
		tmp = document.getElementById('ship_evening_phone').value + " ";
		if (tmp.search(/\d{10}\s{1}/) == 0)
			document.getElementById('ship_evening_phone').value = document.getElementById('ship_evening_phone').value.substring(0, 3) + "-" + document.getElementById('ship_evening_phone').value.substring(3, 6) + "-" + document.getElementById('ship_evening_phone').value.substring(6);
		missing += regexpField(fm, /\d{3}-\d{3}-\d{4}\s{1}/, "ship_evening_phone", "Shipping Alternate Phone", " must be in the form 999-999-9999", false);
		tmp = document.getElementById('ship_fax').value + " ";
		if (tmp.search(/\d{10}\s{1}/) == 0)
			document.getElementById('ship_fax').value = document.getElementById('ship_fax').value.substring(0, 3) + "-" + document.getElementById('ship_fax').value.substring(3, 6) + "-" + document.getElementById('ship_fax').value.substring(6);
		missing += regexpField(fm, /\d{3}-\d{3}-\d{4}\s{1}/, "ship_fax", "Shipping Fax", " must be in the form 999-999-9999", false);
	} else {
		missing += regexpField(fm, /[\-\d]{1,12}\s{1}/, "ship_phone", "Shipping Phone", " must be numbers and dashes", true);
		missing += regexpField(fm, /[\-\d]{1,12}\s{1}/, "ship_evening_phone", "Shipping Alternate Phone", " must be numbers and dashes", false);
		missing += regexpField(fm, /[\-\d]{1,12}\s{1}/, "ship_fax", "Shipping Fax", " must be numbers and dashes", false);
	}
	missing += emailField(fm, "ship_email", "Shipping E-Mail", true);
	msg_div = document.getElementById("shipping_message_div");
	if (missing == "") {
		if (msg_div) msg_div.style.display = "none";
	} else {
		if (msg_div) {
			msg_div.innerHTML = "<b>The following errors were found:<br><ul style='margin-top:3px;'>" + missing + "</ul></b>";
			msg_div.style.display = "block";
		}
	}
	noerror = noerror && (missing == "");
	
	// Validate Agree to terms
	missing = "";
	trimfields = new Array("terms_agree");
	for (i = 0; i < trimfields.length; i++)
		trimFormField(fm, trimfields[i]);
	missing += requiredChecked(fm, "terms_agree", "Terms and Conditions");
	msg_div = document.getElementById("terms_agree_message_div");
	if (missing == "") {
		if (msg_div) msg_div.style.display = "none";
	} else {
		if (msg_div) {
			msg_div.innerHTML = "<b>Please agree to Terms and Conditions before continuing.</b>";
			msg_div.style.display = "block";
		}
	}
	noerror = noerror && (missing == "");
	
	return noerror;
}

function checkoutpaymentcheck(fm) {
	var missing = "";
	var noerror = true;
	trimfields = new Array("cc_nameoncard","cc_address_1","cc_city","cc_state","cc_zip","cc_country","cc_number"); //,"cc_ccid");
	for (i = 0; i < trimfields.length; i++)
		trimFormField(fm, trimfields[i]);
	missing += requiredFormField(fm, "cc_nameoncard", "Name on Credit Card");
	missing += requiredFormField(fm, "cc_address_1", "Credit Card Address");
	missing += requiredFormField(fm, "cc_city", "Credit Card City");
	missing += requiredFormField(fm, "cc_state", "Credit Card State");
	missing += requiredFormField(fm, "cc_zip", "Credit Card Zip");
	missing += requiredFormField(fm, "cc_country", "Credit Card Country");
	missing += requiredFormField(fm, "cc_type", "Credit Card Type");	
	
	missing += regexpField(fm, /\d{15,16}\s{1}/, "cc_number", "Credit Card Number", " must be 15 or 16 digits", true);
	if (checkCCType(document.getElementById('cc_number').value) != document.getElementById('cc_type').value)
		missing += "<li>Credit Card Number is not valid for selected Credit Card Type</li>";
	//missing += integerField(fm, "cc_ccid", "CCID", true, 1)
	var thismonth = (new Date()).getMonth() + 1;
	var thisyear = (new Date()).getFullYear();
	if (document.getElementById('cc_year').value == thisyear && document.getElementById('cc_month').value < thismonth)
		missing += "<li>Credit Card Expiration must not be an expired month/year</li>";
	msg_div = document.getElementById("payment_message_div");
	if (missing == "") {
		if (msg_div) msg_div.style.display = "none";
	} else {
		if (msg_div) {
			msg_div.innerHTML = "<b>The following errors were found:<br><ul style='margin-top:3px;'>" + missing + "</ul></b>";
			msg_div.style.display = "block";
		}
	}
	
	noerror = noerror && (missing == "");
	return noerror;
}

function copyaddress(fm, checkbox) {
	//checkbox.checked = false;	
	document.getElementById('ship_first_name').value = document.getElementById('bill_first_name').value;
	document.getElementById('ship_middle_name').value = document.getElementById('bill_middle_name').value;
	document.getElementById('ship_last_name').value = document.getElementById('bill_last_name').value;
	document.getElementById('ship_address_1').value = document.getElementById('bill_address_1').value;
	document.getElementById('ship_address_2').value = document.getElementById('bill_address_2').value;
	document.getElementById('ship_apartment').value = document.getElementById('bill_apartment').value;
	document.getElementById('ship_city').value = document.getElementById('bill_city').value;
	for (i = 0; i < document.getElementById('ship_state').options.length; i++) {
		if (document.getElementById('ship_state').options[i].value == document.getElementById('bill_state').value) {
			document.getElementById('ship_state').options[i].selected = true;
		}
	}
	document.getElementById('ship_zip').value = document.getElementById('bill_zip').value;
	//fm.ship_zip_4.value = fm.bill_zip_4.value;
	for (i = 0; i < document.getElementById('ship_country').options.length; i++) {
		if (document.getElementById('ship_country').options[i].value == document.getElementById('bill_country').value) {
			document.getElementById('ship_country').options[i].selected = true;
		}
	}
	document.getElementById('ship_phone').value = document.getElementById('bill_phone').value;
	document.getElementById('ship_evening_phone').value = document.getElementById('bill_evening_phone').value;
	document.getElementById('ship_fax').value = document.getElementById('bill_fax').value;
	document.getElementById('ship_email').value = document.getElementById('bill_email').value;
}

function checkoutreviewcheck(fm) {
	var missing = "";
	return submitForm(fm, missing);
}

function invalidZipEntered(fm, fld, flg) {	
	if(fld.name.substring(0, 4) == "ship") {
		var zmsg_div = document.getElementById("ship_zip_message_div");
		var fds = "Shipping Zip Code";
	} else {
		var zmsg_div = document.getElementById("bill_zip_message_div");
		var fds = "Billing Zip Code";
	}
	if(flg == "1") {		
		if (zmsg_div) {
			zmsg_div.innerHTML = "<b>The zip code entered is invalid</b>";
			zmsg_div.style.display = "block";
			requiredFormField(fm, fld, fds);
		}
	}	
}

// cart functions

function cartcheck(fm) {
	var missing = "";
	var fld;
	for (i = 0; i < fm.elements.length; i++) {
		fld = fm.elements[i];
		if (fld.name.substring(0, 6) == "pqpid_") {
			setFieldColor(fld, goodColor);
			if (fld.options[fld.selectedIndex].value == "0" && ! pricing[fld.name.substring(6)]["later"]) {
				setFieldColor(fld, errorColor);
				missing = "<li>Quantity must be set for items in your cart.</li>";
			}
		}
	}
	return submitForm(fm, missing);
}
function deleteCartItem(pcid) {
	var fm = document.forms["cartform"];
	fm.formtype.value = "deletefromcart";
	fm.deleteid.value = pcid;
	fm.submit();
}
function laterCartItem(pcid) {
	var fm = document.forms["cartform"];
	fm.formtype.value = "lateritem";
	fm.deleteid.value = pcid;
	fm.submit();
}
function nowCartItem(pcid) {
	var fm = document.forms["cartform"];
	fm.formtype.value = "nowitem";
	fm.deleteid.value = pcid;
	fm.submit();
}
function checkInteger(fld) {
	if (isNaN(fld.value) || fld.value < 0)
		fld.value = "0";
}
function checkSets(fm, id) {
	var addsetfld = eval("fm.addset_" + id);
	var qtyfld = eval("fm.pqpid_" + id);
	if (addsetfld.value > 0 && qtyfld.selectedIndex + 1 < qtyfld.length) {
		var inc = Math.min(addsetfld.value, qtyfld.length - qtyfld.selectedIndex - 1);
		qtyfld.options[qtyfld.selectedIndex + inc].selected = true;
		addsetfld.value -= inc;
	}
}
function checkSets2(fm, id) {
	var addsetfld = eval("fm.addset_" + id);
	var qtyfld = eval("fm.pqpid_" + id);
	if ((qtyfld.selectedIndex < qtyfld.length) && addsetfld)
		addsetfld.value = "0";
}
function setItemTotal(fm, id) {
	var addsetfld = eval("fm.addset_" + id);
	var qtyfld = eval("fm.pqpid_" + id);
	document.getElementById("qtytot_" + id).innerHTML = pricing[id]["addqty"] * addsetfld.value + pricing[id][qtyfld.selectedIndex + 1]["qty"];
	document.getElementById("price_" + id).innerHTML = "$" + dollarFormat(pricing[id]["addprice"] * addsetfld.value + pricing[id][qtyfld.selectedIndex + 1]["price"] + pricing[id]["addcost"]);
	setSubTotal(fm);
}
function setSubTotal(fm) {
	if (document.getElementById("subtotal")) {
		var cpidlist = eval("fm.cartprodidlist.value").split(",");
		var subtot = 0;
		for (i = 0; i < cpidlist.length; i++) {
			if (pricing[cpidlist[i]]["later"] == false)
				subtot += new Number(document.getElementById("price_" + cpidlist[i]).innerHTML.substring(1));
		}
		document.getElementById("subtotal").innerHTML = "$" + dollarFormat(subtot);
	}
}
function numberFormat(val) {
	val = (isNaN(val) ? 0 : val);
	return Math.round(val * 100) / 100;
}
function dollarFormat(val) {
	val = (isNaN(val) ? 0 : val);
	val = new String(numberFormat(val));
	if (val.indexOf(".") < 0)
		return val + ".00";
	else return (val + "00").substring(0, val.indexOf(".") + 3);
}

function GetWidth()
{
        var x = 0;
        if (self.innerHeight)
        {
                x = self.innerWidth;
        }
        else if (document.documentElement && document.documentElement.clientHeight)
        {
                x = document.documentElement.clientWidth;
        }
        else if (document.body)
        {
                x = document.body.clientWidth;
        }
        return x;
}
 
function GetHeight()
{
        var y = 0;
        if (self.innerHeight)
        {
                y = self.innerHeight;
        }
        else if (document.documentElement && document.documentElement.clientHeight)
        {
                y = document.documentElement.clientHeight;
        }
        else if (document.body)
        {
                y = document.body.clientHeight;
        }
        return y;
}
