var oneChar, oneNum, letter, number, str;
var letters="abcdefghijklmnopqrstuvwxyz";
var numbers="0123456789";
function isEmpty(inputVal,form,field){
	if(inputVal==null || inputVal==""){
	alert("Please fill in all required fields.");
	document.forms[form].elements[field].focus();
	return true;}
	else
	return false;
}
function toStart(form,field){
	if(document.forms){
		document.forms[form].elements[field].focus();
	return true;}
}
function moveFocus(inputVal,form,field,full){
	if(inputVal.length==full-1)
	document.forms[form].elements[field+1].focus();
return true;
}
function statusMsg(msg){
	window.status=msg;
return true;
}
function isName(inputVal,form,field){
	inputStr=inputVal.toString();
	inputStr=inputStr.toLowerCase();
	for (var i=0;i<inputStr.length;i++){
	oneChar=inputStr.charAt(i);
		for (var j=0;j<letters.length;j++){
		letter=letters.charAt(j);
		if(oneChar==letter && j<letters.length)
		break;
		else if(j==letters.length-1){
		alert("You have entered characters other than letters!");
		document.forms[form].elements[field].focus();
		document.forms[form].elements[field].select();
		return false;}
	}
}
return true;
}
function isNames(inputVal,form,field){
	var allowedChars=letters+".,-&' ";
	inputStr=inputVal.toString();
	inputStr=inputStr.toLowerCase();
	for (var i=0;i<inputStr.length;i++){
	oneChar=inputStr.charAt(i);
		for (var j=0;j<allowedChars.length;j++){
		letter=allowedChars.charAt(j);
		if(oneChar==letter && j<allowedChars.length)
		break;
		else if(j==allowedChars.length-1){
		alert("You have entered characters other than letters!");
		document.forms[form].elements[field].focus();
		document.forms[form].elements[field].select();
		return false;}
	}
}
return true;
}
function isNumber(inputVal,form,field){
	inputStr=inputVal.toString();
	for (var i=0;i<inputStr.length;i++){
	oneNum=inputStr.charAt(i);
		for (var j=0;j<numbers.length;j++){
		number=numbers.charAt(j);
		if(oneNum==number && j<numbers.length)
		break;
		else if(j==numbers.length-1){
		alert("You have entered characters other than numbers!");
		document.forms[form].elements[field].focus();
		document.forms[form].elements[field].select();
		return false;}
	}
}
return true;
}
function isTelNum(inputVal,form,field){		//for a 2-field phone number
	if(!isNumber(inputVal,form,field))
	return false;
	if((field==phoneNums[0] && inputVal.length!=3) ||
	   (field==phoneNums[1] && inputVal.length!=7)){
	alert("You must enter a valid number!");
	document.forms[form].elements[field].focus();
	document.forms[form].elements[field].select();
	return false;}
return true;
}
function isTelNum2(inputVal,form,field){	//for a single field phone number
	var allowedChars=numbers+"-";
	inputStr=inputVal.toString();
	for (var i=0;i<inputStr.length;i++){
	oneNum=inputStr.charAt(i);
		for (var j=0;j<allowedChars.length;j++){
		number=allowedChars.charAt(j);
		if((oneNum==number && (i!=3 && i!=7)) ||
		   (oneNum=="-" && (i==3 || i==7)))
		break;
		else if(j==allowedChars.length-1 || inputStr.length<12){
		document.forms[form].elements[field].focus();
		document.forms[form].elements[field].select();
		alert("You must enter a valid phone number!");
		return false;}
	}
}
return true;
}
function isAddress(inputVal,form,field){
	var allowedChars=letters+numbers+".,-:&' ";
	inputStr=inputVal.toString();
	inputStr=inputStr.toLowerCase();
	for (var i=0;i<inputStr.length;i++){
	oneChar=inputStr.charAt(i);
		for (var j=0;j<allowedChars.length;j++){
		var addrChar=allowedChars.charAt(j);
		if(oneChar==addrChar && j<allowedChars.length)
		break;
		else if(j==allowedChars.length-1){
		alert("You have entered invalid characters!");
		document.forms[form].elements[field].focus();
		document.forms[form].elements[field].select();
		return false;}
	}
}
return true;
}
function isZipCode(inputVal,form,field){
	inputStr=inputVal.toString();
	for (var i=0;i<inputStr.length;i++){
	oneNum=inputStr.charAt(i);
		for (var j=0;j<numbers.length;j++){
		number=numbers.charAt(j);
		if((oneNum==number || (oneNum=="-" && i==5)) && j<numbers.length)
		break;
		else if(j==numbers.length-1 || inputStr.length<5 || (oneNum=="-" && i!=5)
			|| (inputStr.length>5 && inputStr.length<10)){
		alert("You have entered an invalid zip code!");
		document.forms[form].elements[field].focus();
		document.forms[form].elements[field].select();
		return false;}
	}
}
return true;
}
function isEmail(inputVal,form,field){
	var allowedChars=letters+numbers+"_-.@";
	inputStr=inputVal.toString();
	inputStr=inputStr.toLowerCase();
	if((!inputStr.match("@") || inputStr.indexOf("@")!=inputStr.lastIndexOf("@") ||
	   inputStr.indexOf("@")==0 || inputStr.lastIndexOf("@")>inputStr.length-5) ||
	   (!inputStr.match(".") || inputStr.lastIndexOf(".")<inputStr.length-5 ||
	   inputStr.lastIndexOf(".")>inputStr.length-3) || inputStr.indexOf(".")==0 ||
	   inputStr.charAt(inputStr.indexOf("@")+1)=="." ||
	   inputStr.charAt(inputStr.indexOf("@")-1)=="."){
	   alert("You have entered an invalid e-mail address!");
	   document.forms[form].elements[field].focus();
	   document.forms[form].elements[field].select();
	   return false;}
	for (var i=0;i<inputStr.length;i++){
	oneChar=inputStr.charAt(i);
		for (var j=0;j<allowedChars.length;j++){
		var eChar=allowedChars.charAt(j);
		if(oneChar==eChar && j<allowedChars.length)
		break;
		else if(j==allowedChars.length-1){
	   	alert("You have entered characters not allowed in e-mails!");
	   	document.forms[form].elements[field].focus();
	   	document.forms[form].elements[field].select();
	   	return false;}
	}
}
return true;
}
function login(inputVal,form,field){
	var allowedChars=letters+numbers;
	inputStr=inputVal.toString();
	inputStr=inputStr.toLowerCase();
	if(inputStr.length<6){
	alert("You must enter from 6 to 8 characters!");
	document.forms[form].elements[field].focus();
	document.forms[form].elements[field].select();
	return false;}
	for (var i=0;i<inputStr.length;i++){
	oneChar=inputStr.charAt(i);
		for (var j=0;j<allowedChars.length;j++){
		var loginChar=allowedChars.charAt(j);
		if(oneChar==loginChar && j<allowedChars.length)
		break;
		else if(j==allowedChars.length-1){
		alert("You have entered characters other than letters and numbers!");
		document.forms[form].elements[field].focus();
		document.forms[form].elements[field].select();
		return false;}
	}
}
return true;
}
function isMatch(inputVal,form,field){
	str=document.forms[form].elements[field-1].value;
	str=str.toString();
	inputStr=inputVal.toString();
		if(str!=inputStr){
		alert("No match on entries!");
		document.forms[form].elements[field].focus();
		document.forms[form].elements[field].select();
		return false;}
return true;
}
function submitcontrol(inputVal,targetbtn){
	if(inputVal=="1"){
	btn=eval(mainref(targetbtn));
	btn.disabled=true;}
}
//CUSTOM VALIDATIONS___________________________________________________________________
function isShipping(form){
	if (document.forms[form].DeliveryType){
	var groupName=document.forms[form].DeliveryType;
	for (var i=0;i<groupName.length;i++){
		if(groupName[i].checked)
		break;
		else if(i==groupName.length-1){
		alert("Please select one of the delivery options");
		return false;}
	}
	return true;}
	else{
	return true;}
}
function isResDate(form){
	if (document.forms[form].rdate &&
	(document.forms[form].rdate.value==null || document.forms[form].rdate.value=="")){
		alert("Please select a date");
		return false;}
	else{
		return true;}
}
function isResTime(form){
	if (document.forms[form].hr &&
	(document.forms[form].hr.value==null || document.forms[form].hr.value=="")){
		alert("Please select time");
		return false;}
	else{
		return true;}
}
function isResParty(form){
	if (document.forms[form].party &&
	(document.forms[form].party.value==null || document.forms[form].party.value=="")){
		alert("Please select party number");
		return false;}
	else{
		return true;}
}
function doSubmit(form){
	for (var i=0;i<document.forms[form].elements.length;i++){
	field=i;
	inputVal=document.forms[form].elements[field].value;
	var stopCheck=0;
	for (n=0;n<rFields.length;n++){
		if(field==rFields[n] && isEmpty(inputVal,form,field)){
		stopCheck=1;
		break;}
	}
	if(stopCheck==1)
	break;
	for (n=0;n<Nums.length;n++){
		if(field==Nums[n] && inputVal!="" && !isNumber(inputVal,form,field)){
		stopCheck=1;
		break;}
	}
	if(stopCheck==1)
	break;
	for (n=0;n<sName.length;n++){
		if(field==sName[n] && inputVal!="" && !isName(inputVal,form,field)){
		stopCheck=1;
		break;}
	}
	if(stopCheck==1)
	break;
	for (n=0;n<eMail.length;n++){
		if(field==eMail[n] && inputVal!="" && !isEmail(inputVal,form,field)){
		stopCheck=1;
		break;}
	}
	if(stopCheck==1)
	break;
	for (n=0;n<uNPwd.length;n++){
		if(field==uNPwd[n] && inputVal!="" && !login(inputVal,form,field)){
		stopCheck=1;
		break;}
	}
	if(stopCheck==1)
	break;
	for (n=0;n<CC.length;n++){
		if(field==CC[n] && inputVal!="" && !isNumber(inputVal,form,field)){
		stopCheck=1;
		break;}
	}
	if(stopCheck==1)
	break;
	for (n=0;n<mNames.length;n++){
		if(field==mNames[n] && inputVal!="" && !isNames(inputVal,form,field)){
		stopCheck=1;
		break;}
	}
	if(stopCheck==1)
	break;
	for (n=0;n<sAddress.length;n++){
		if(field==sAddress[n] && inputVal!="" && !isAddress(inputVal,form,field)){
		stopCheck=1;
		break;}
	}
	if(stopCheck==1)
	break;
	var opt=document.forms[form].elements[field];
	for (n=0;n<State.length;n++){
		if(field==State[n] && (opt.options[opt.selectedIndex].value==0 ||
			opt.options[opt.selectedIndex].value=="")){
	   	alert("Please make a selection from the list");
	   	document.forms[form].elements[field].focus();
		stopCheck=1;
		break;}
	}
	if(stopCheck==1)
	break;
	for (n=0;n<zipCode.length;n++){
		if(field==zipCode[n] && inputVal!="" && !isZipCode(inputVal,form,field)){
		stopCheck=1;
		break;}
	}
	if(stopCheck==1)
	break;
	for (n=0;n<phoneNums.length;n++){
		if(field==phoneNums[n] && inputVal!="" && !isTelNum(inputVal,form,field)){
		stopCheck=1;
		break;}
	}
	if(stopCheck==1)
	break;
	for (n=0;n<phoneNum.length;n++){
		if(field==phoneNum[n] && inputVal!="" && !isTelNum2(inputVal,form,field)){
		stopCheck=1;
		break;}
	}
	if(stopCheck==1)
	break;
	for (n=0;n<confirms.length;n++){
		if(field==confirms[n] && inputVal!="" && !isMatch(inputVal,form,field)){
		stopCheck=1;
		break;}
	}
	if(stopCheck==1)
	break;
	//CUSTOM FUNCTION CALLS______________________________________________________
	if(!isShipping(form)){
	stopCheck=1;
	break;}
	if(!isResDate(form)){
	stopCheck=1;
	break;}
	if(!isResTime(form)){
	stopCheck=1;
	break;}
	if(!isResParty(form)){
	stopCheck=1;
	break;}
}
	if(stopCheck==1)
	return false;
	else{
	//submitcontrol(1,"submit");
	document.forms[form].submit();
	return true;}
}