function prepString(s){
	return s.replace(/^\s+|\s+$/, '');
}
function validateEmpty(fld,msgname,regbg,errbg){
	var error="";
	if(fld.value.length==0){
	fld.style.background=errbg;
        error=msgname+" is required!\n"}
	else{fld.style.background=regbg;}
	return error;
}
function validateText(fld,msgname,required,regbg,errbg){
	var error="";
	var inputval=fld.value;
	inputval=inputval.replace(/'/g, "`");
	if(required=="required" && inputval==""){
	error=msgname+" is required!\n";
	fld.style.background=errbg;}
	else{fld.style.background=regbg;}
	return error;
}
function validateInteger(fld,msgname,required,regbg,errbg){
	var error="";
	if(required=="required" && fld.value==""){
	error=msgname+" is required!\n";
	fld.style.background=errbg;}
	else if(isNaN(fld.value) || fld.value.indexOf('.')!=-1){
        error=msgname+" is not an integer value!\n";
	fld.style.background=errbg;}
	else{fld.style.background=regbg;}
	return error;
}
function validateDecimal(fld,msgname,required,regbg,errbg){
	var error="";
	if(required=="required" && fld.value==""){
	error=msgname+" is required!\n";
	fld.style.background=errbg;}
	else if(isNaN(fld.value) || fld.value.indexOf('.')==-1){
        error=msgname+" is not a decimal (use 0.00 format)!\n";
	fld.style.background=errbg;}
	else{fld.style.background=regbg;}
	return error;
}
function validateWholeNumber(fld,nsign,msgname,required,regbg,errbg){
	var error="";
	if(required=="required" && fld.value==""){
	error=msgname+" is required!\n";
	fld.style.background=errbg;}
	else if(isNaN(fld.value) || fld.value.indexOf('.')!=-1 ||
	(nsign=="positive" && fld.value.indexOf('-')!=-1) || (nsign=="negative" && fld.value.indexOf('-')==-1)){
        error=msgname+" is not a valid number!\n";
	fld.style.background=errbg;}
	else{fld.style.background=regbg;}
	return error;
}
function validateDecimalNumber(fld,nsign,msgname,required,regbg,errbg){
	var error="";
	if(required=="required" && fld.value==""){
	error=msgname+" is required!\n";
	fld.style.background=errbg;}
	else if(isNaN(fld.value) || fld.value.indexOf('.')==-1 ||
	(nsign=="positive" && fld.value.indexOf('-')!=-1) || (nsign=="negative" && fld.value.indexOf('-')==-1)){
        error=msgname+" is not a valid number!\n";
	fld.style.background=errbg;}
	else{fld.style.background=regbg;}
	return error;
}
function validatePIN(fld,msgname,required,regbg,errbg){
	var error="";
	if(required=="required" && fld.value==""){
	error=msgname+" is required!\n";
	fld.style.background=errbg;}
	else if(isNaN(fld.value) || fld.value.indexOf('.')!=-1 || fld.value.indexOf('-')!=-1 || fld.value.length!=4){
        error=msgname+" is invalid (must be 4 numbers only)!\n";
	fld.style.background=errbg;}
	else{fld.style.background=regbg;}
	return error;
}
function validateDate(fld,msgname,required,regbg,errbg){
	var error="";
	if(required=="required" && fld.value==""){
	error=msgname+" is required!\n";
	fld.style.background=errbg;}
	else if(fld.value.length!=8 || isNaN(fld.value.substr(0,2)+fld.value.substr(3,2)+fld.value.substr(6,2)) ||
	fld.value.indexOf('/')!=2 || fld.value.lastIndexOf('/')!=5){
        error=msgname+" is not a valid date (use mm/dd/yy format)!\n";
	fld.style.background=errbg;}
	else if(parseInt(fld.value.substr(0,2))>12 || isNaN(fld.value.substr(0,1))){
        error=msgname+" has a wrong month value!\n";
	fld.style.background=errbg;}
	else if(((parseInt(fld.value.substr(0,2))==1 || parseInt(fld.value.substr(0,2))==3 ||
	parseInt(fld.value.substr(0,2))==5 || parseInt(fld.value.substr(0,2))==7 ||
	parseInt(fld.value.substr(0,2))==8 || parseInt(fld.value.substr(0,2))==10 ||
	parseInt(fld.value.substr(0,2))==12) && parseInt(fld.value.substr(3,2))>31) ||
	((parseInt(fld.value.substr(0,2))==2 || parseInt(fld.value.substr(0,2))==4 ||
	parseInt(fld.value.substr(0,2))==6 || parseInt(fld.value.substr(0,2))==9 ||
	parseInt(fld.value.substr(0,2))==11) && parseInt(fld.value.substr(3,2))>30) ||
	isNaN(fld.value.substr(3,1))){
        error=msgname+" has a wrong day value!\n";
	fld.style.background=errbg;}
	else if(parseInt(fld.value.substr(6,2))>99 || isNaN(fld.value.substr(6,1))){
        error=msgname+" has a wrong year value!\n";
	fld.style.background=errbg;}
	else{fld.style.background=regbg;}
	return error;
}
function validatePhone(fld,msgname,required,regbg,errbg){
	var error="";
	if(required=="required" && fld.value==""){
	error=msgname+" is required!\n";
	fld.style.background=errbg;}
	else if(fld.value!=""){
	if(fld.value.length!=12 && fld.value.length!=14){
        error=msgname+" is invalid (use 000-000-0000 or 1-000-000-0000 format)!\n";
	fld.style.background=errbg;}
	else if(fld.value.length==12 && (isNaN(fld.value.substr(0,3)) || isNaN(fld.value.substr(4,3)) ||
	isNaN(fld.value.substr(8,4)) || fld.value.substr(3,1)!='-' || fld.value.substr(7,1)!='-')){
        error=msgname+" is invalid (use 000-000-0000 or 1-000-000-0000 format)!\n";
	fld.style.background=errbg;}
	else if(fld.value.length==14 && (fld.value.substr(0,1)!='1' || isNaN(fld.value.substr(2,3)) ||
	isNaN(fld.value.substr(6,3)) || isNaN(fld.value.substr(10,4)) || fld.value.substr(1,1)!='-' ||
	fld.value.substr(5,1)!='-' || fld.value.substr(9,1)!='-')){
        error=msgname+" is invalid (use 000-000-0000 or 1-000-000-0000 format)!\n";
	fld.style.background=errbg;}}
	else{fld.style.background=regbg;}
	return error;
}
function validateZipCode(fld,msgname,required,regbg,errbg){
	var error="";
	if(required=="required" && fld.value==""){
	error=msgname+" is required!\n";
	fld.style.background=errbg;}
	else if(fld.value!=""){
	if(fld.value.length!=5 && fld.value.length!=10){
        error=msgname+" is invalid (use short 00000 or long 00000-0000 format)!\n";
	fld.style.background=errbg;}
	else if(fld.value.length==5 && (isNaN(fld.value) || fld.value.indexOf('.')!=-1)){
        error=msgname+" is invalid (use short 00000 or long 00000-0000 format)!\n";
	fld.style.background=errbg;}
	else if(fld.value.length==10 && ((isNaN(fld.value.substr(0,5)) || fld.value.substr(0,5).indexOf('.')!=-1) ||
	fld.value.substr(5,1)!='-' || (isNaN(fld.value.substr(6,4)) || fld.value.substr(6,4).indexOf('.')!=-1))){
        error=msgname+" is invalid (use short 00000 or long 00000-0000 format)!\n";
	fld.style.background=errbg;}}
	else{fld.style.background=regbg;}
	return error;
}
function validateCreditCard(fld,msgname,required,regbg,errbg){
	var error="";
	if(required=="required" && fld.value==""){
	error=msgname+" is required!\n";
	fld.style.background=errbg;}
	else if(isNaN(parseInt(fld.value))){
        error=msgname+" contains illegal characters!\n";
	fld.style.background=errbg;}
	else if(fld.value.length<15 || fld.value.length>19){
        error=msgname+" is the wrong length!\n";
	fld.style.background=errbg;}
	else{fld.style.background=regbg;}
	return error;
}
function validateDropdown(fld,msgname,required,regbg,errbg){
	var error="";
	if(required=="required" && fld.options[fld.selectedIndex].value==""){
        error=msgname+" required is not selected!\n";
	fld.style.background=errbg;}
	else{fld.style.background=regbg;}
	return error;
}
function validateEmail(fld,msgname,required,regbg,errbg){
	var error="";
	var tfld=prepString(fld.value);		// value of field with whitespace trimmed off
	var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
	var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
	if(required=="required" && fld.value==""){
	error=msgname+" is required!\n";
	fld.style.background=errbg;}
	else if(tfld!="" && !emailFilter.test(tfld)){	//test email for illegal characters
        error=msgname+" is the wrong type!\n";
	fld.style.background=errbg;}
	else if(tfld!="" && tfld.match(illegalChars)){
	error=msgname+" contains illegal characters!\n";
	fld.style.background=errbg;}
	else{fld.style.background=regbg;}
	return error;
}
function validatePassword(fld,msgname,required,regbg,errbg){
	var error="";
	var illegalChars = /[\W_]/; 		// allow only letters and numbers
	if(required=="required" && fld.value==""){
	error=msgname+" is required!\n";
	fld.style.background=errbg;}
	else if((fld.value.length<6) || (fld.value.length>10)){
        error=msgname+" is invalid (must be 6 to 10 letters & numbers only)!\n";
	fld.style.background=errbg;}
	else if(illegalChars.test(fld.value)){
	error=msgname+" is invalid (must be 6 to 10 letters & numbers only)!\n";
	fld.style.background=errbg;}
	//else if(fld.value.search(/[a-zA-Z]+/)==-1 || fld.value.search(/[0-9]+/)==-1){
        //error=msgname+" must contain at least one letter and one number!\n";
	//fld.style.background=errbg;}
	else{fld.style.background=regbg;}
	return error;
}
function confirmMatch(fld1,fld2,msgname1,msgname2,required,regbg,errbg){
	var error="";
	if(required=="required" && fld2.value==""){
	error=msgname2+" is required!\n";
	fld2.style.background=errbg;}
	else if(fld1.value!=fld2.value){
        error=msgname1+" and "+msgname2+" do not match!\n";
	fld2.style.background=errbg;}
	else{fld2.style.background=regbg;}
	return error;
}
function validateChecked(fld,msgname,regbg,errbg){
	var error="";
	if(!fld.checked){error=msgname+" was not checked!\n";}
	return error;
}
function validateCheckboxGroup(fld,msgname,regbg,errbg){
	var error="";
	numchecked=0;
	for(var c=0; c<fld.length; c++){
	if(fld[c].checked){numchecked=c+1;}
	else if(c==fld.length-1 && numchecked==0){error=msgname+" was not checked!\n";}}
	return error;
}
function toDelete(msg,action){
	var confirmed=window.confirm(msg);
	if(confirmed){eval(action);}
}
// CUSTOM VALIDATIONS
function validateReturnPolicy(fld,msgname,required,regbg,errbg){
	var error="";
	if(required=="required" && fld.value==""){
	error=msgname+" is required!\n";
	fld.style.background=errbg;}
	else if(fld.value.length<6 || fld.value.length>9){
        error=msgname+" is invalid (use \'00 days\' or \'00 months\' format)!\n";
	fld.style.background=errbg;}
	else if(fld.value.length==6 && (isNaN(fld.value.substr(0,1)) || fld.value.substr(1)!=" days")){
        error=msgname+" is invalid (use \'00 days\' or \'00 months\' format)!\n";
	fld.style.background=errbg;}
	else if(fld.value.length==7 && (isNaN(fld.value.substr(0,2)) || fld.value.indexOf('.')!=-1 ||
	fld.value.substr(2)!=" days")){
        error=msgname+" is invalid (use \'00 days\' or \'00 months\' format)!\n";
	fld.style.background=errbg;}
	else if(fld.value.length==8 && (isNaN(fld.value.substr(0,1)) || fld.value.substr(1)!=" months")){
        error=msgname+" is invalid (use \'00 days\' or \'00 months\' format)!\n";
	fld.style.background=errbg;}
	else if(fld.value.length==9 && (isNaN(fld.value.substr(0,2)) || fld.value.indexOf('.')!=-1 ||
	fld.value.substr(2)!=" months")){
        error=msgname+" is invalid (use \'00 days\' or \'00 months\' format)!\n";
	fld.style.background=errbg;}
	else{fld.style.background=regbg;}
	return error;
}
/* 
To be included in the file containing the form
function validateFormOnSubmit(theForm){
	var reason="";
	reason+=validateFunction(theForm.fldName);
	if(reason!=""){
	alert("Some fields need correction:\n\n"+reason);
	return false;}
	else{theForm.submit();return true;}
}
*/