var element;strErrorList="";function getFormErrors(form){var errors=new Array();for(var elementIndex=0;elementIndex<form.elements.length;elementIndex++){element=form.elements[elementIndex];if(element.type=="text"||element.type=="textarea"){element.value=trimWhitespace(element.value)
if(element.required&&element.value==''){errors[errors.length]=element.requiredError;strErrorList=strErrorList+ element.name+',';}
else if(element.maxlength&&isValidLength(element.value,0,element.maxlength)==false){errors[errors.length]=element.maxlengthError;strErrorList=strErrorList+ element.name+',';}
else if(element.minlength&&isValidLength(element.value,element.minlength,Number.MAX_VALUE)==false){errors[errors.length]=element.minlengthError;strErrorList=strErrorList+ element.name+',';}
else if(element.pattern){if(((element.pattern.toLowerCase()=='visa'||element.pattern.toLowerCase()=='mastercard'||element.pattern.toLowerCase()=='american express'||element.pattern.toLowerCase()=='diners club'||element.pattern.toLowerCase()=='discover'||element.pattern.toLowerCase()=='enroute'||element.pattern.toLowerCase()=='jcb'||element.pattern.toLowerCase()=='credit card')&&isValidCreditCard(element.value,element.pattern)==false)||(element.pattern.toLowerCase()=='email'&&isValidEmailStrict(element.value)==false)||(element.pattern.toLowerCase()=='zip or postal code'&&isValidZipcode(element.value)==false&&isValidPostalcode(element.value)==false)||(element.pattern.toLowerCase()=='zipcode'&&isValidZipcode(element.value)==false)||(element.pattern.toLowerCase()=='postal code'&&isValidPostalcode(element.value)==false)||(element.pattern.toLowerCase()=='us phone number'&&validatePhone(element.value)==false)||(element.pattern.toLowerCase()=='alphanumeric'&&isAlphanumeric(element.value,true)==false)||(element.pattern.toLowerCase()=='numeric'&&isNumeric(element.value,true)==false)||(element.pattern.toLowerCase()=='alphabetic'&&isAlphabetic(element.value,true)==false)){errors[errors.length]=element.patternError;strErrorList=strErrorList+ element.name+',';}}}
else if(element.type=="password"){if(element.required&&element.value==''){errors[errors.length]=element.requiredError;strErrorList=strErrorList+ element.name+',';}
else if(element.maxlength&&isValidLength(element.value,0,element.maxlength)==false){errors[errors.length]=element.maxLengthError;strErrorList=strErrorList+ element.name+',';}
else if(element.minlength&&isValidLength(element.value,element.minlength,Number.MAX_VALUE)==false){errors[errors.length]=element.minLengthError;strErrorList=strErrorList+ element.name+',';}}
else if(element.type=="hidden"){if(element.required){errors[errors.length]=element.requiredError;strErrorList=strErrorList+ element.name+',';}}
if(element.type=="file"){if(element.required&&element.value==''){errors[errors.length]=element.requiredError;strErrorList=strErrorList+ element.name+',';}}
else if(element.type=="select-one"||element.type=="select-multiple"||element.type=="select"){if(element.required&&element.selectedIndex==-1){errors[errors.length]=element.requiredError;strErrorList=strErrorList+ element.name+',';}
else if(element.disallowEmptyValue&&element.options[element.selectedIndex].value==''){errors[errors.length]=element.disallowEmptyValueError;strErrorList=strErrorList+ element.name+',';}}
else if(element.type=="radio"||element.type=="checkbox"){var radiogroup=form.elements[element.name];if(radiogroup.length&&radiogroup[0]&&radiogroup[0].required){var checkedRadioButton=-1;for(var radioIndex=0;radioIndex<radiogroup.length;radioIndex++){if(radiogroup[radioIndex].checked==true){checkedRadioButton=radioIndex;break;}}
if(checkedRadioButton==-1&&!radiogroup.tested){strErrorList=strErrorList+ element.name+',';if(!inArray(errors,radiogroup[0].requiredError))errors[errors.length]=radiogroup[0].requiredError;radiogroup.tested=true;}
if(element==radiogroup[radiogroup.length- 1]){radiogroup.tested=false;}}
radiogroup=null;}}
return errors;}
function inArray(arr,str){for(var i=0;i<arr.length;i++){if(arr[i]==str)return true;}
return false;}
function isValidLength(string,min,max){if(string.length<min||string.length>max){strErrorList=strErrorList+ element.name+',';return false;}
else return true;}
function isValidCreditCard(number){number=''+ number;if(number.length>16||number.length<13)return false;else if(getMod10(number)!=0)return false;else if(arguments[1]){var type=arguments[1];var first2digits=number.substring(0,2);var first4digits=number.substring(0,4);if(type.toLowerCase()=='visa'&&number.substring(0,1)==4&&(number.length==16||number.length==13))return true;else if(type.toLowerCase()=='mastercard'&&number.length==16&&(first2digits=='51'||first2digits=='52'||first2digits=='53'||first2digits=='54'||first2digits=='55'))return true;else if(type.toLowerCase()=='american express'&&number.length==15&&(first2digits=='34'||first2digits=='37'))return true;else if(type.toLowerCase()=='diners club'&&number.length==14&&(first2digits=='30'||first2digits=='36'||first2digits=='38'))return true;else if(type.toLowerCase()=='discover'&&number.length==16&&first4digits=='6011')return true;else if(type.toLowerCase()=='enroute'&&number.length==15&&(first4digits=='2014'||first4digits=='2149'))return true;else if(type.toLowerCase()=='jcb'&&number.length==16&&(first4digits=='3088'||first4digits=='3096'||first4digits=='3112'||first4digits=='3158'||first4digits=='3337'||first4digits=='3528'))return true;else return true;}
else return true;}
function isValidEmail(address){if(address!=''&&address.search){if(address.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/)!=-1)return true;else{strErrorList=strErrorList+ element.name+',';return false;}}
else return true;}
function isValidEmailStrict(address){if(isValidEmail(address)==false)return false;var domain=address.substring(address.indexOf('@')+ 1);if(domain.indexOf('.')==-1){strErrorList=strErrorList+ element.name+',';return false;}
if(domain.indexOf('.')==0||domain.indexOf('.')==domain.length- 1){strErrorList=strErrorList+ element.name+',';return false;}
return true;}
function isValidZipcode(zipcode){zipcode=removeSpaces(zipcode);if(!(zipcode.length==5||zipcode.length==9||zipcode.length==10)){strErrorList=strErrorList+ element.name+',';return false;}
if((zipcode.length==5||zipcode.length==9)&&!isNumeric(zipcode)){strErrorList=strErrorList+ element.name+',';return false;}
if(zipcode.length==10&&zipcode.search&&zipcode.search(/^\d{5}-\d{4}$/)==-1){strErrorList=strErrorList+ element.name+',';return false;}
return true;}
function isValidPostalcode(postalcode){if(postalcode.search){postalcode=removeSpaces(postalcode);if(postalcode.length==6&&postalcode.search(/^[a-zA-Z]\d[a-zA-Z]\d[a-zA-Z]\d$/)!=-1)return true;else if(postalcode.length==7&&postalcode.search(/^[a-zA-Z]\d[a-zA-Z]-\d[a-zA-Z]\d$/)!=-1)return true;else return false;}
return true;}
function isValidUSPhoneNumber(areaCode,prefixNumber,suffixNumber){if(arguments.length==1){var phoneNumber=arguments[0];phoneNumber=phoneNumber.replace(/\D+/g,'');var length=phoneNumber.length;if(phoneNumber.length>=7){var areaCode=phoneNumber.substring(0,length-7);var prefixNumber=phoneNumber.substring(length-7,length-4);var suffixNumber=phoneNumber.substring(length-4);}
else{strErrorList=strErrorList+ element.name+',';return false;}}
else if(arguments.length==3){var areaCode=arguments[0];var prefixNumber=arguments[1];var suffixNumber=arguments[2];}
else return true;if(areaCode.length!=3||!isNumeric(areaCode)||prefixNumber.length!=3||!isNumeric(prefixNumber)||suffixNumber.length!=4||!isNumeric(suffixNumber)){strErrorList=strErrorList+ element.name+',';return false;}
return true;}
function validatePhone(fld){var stripped=fld.replace(/[\(\)\.\-\ ]/g,'');if(fld.value==""){strErrorList=strErrorList+ element.name+',';return false;}else if(!(isNumeric(stripped,true))){strErrorList=strErrorList+ element.name+',';return false;}else if(!(stripped.length==10)){strErrorList=strErrorList+ element.name+',';return false;}
return true;}
function isAlphanumeric(string,ignoreWhiteSpace){if(string.search){if((ignoreWhiteSpace&&string.search(/[^\w\s]/)!=-1)||(!ignoreWhiteSpace&&string.search(/\W/)!=-1)){strErrorList=strErrorList+ element.name+',';return false;}}
return true;}
function isAlphabetic(string,ignoreWhiteSpace){if(string.search){if((ignoreWhiteSpace&&string.search(/[^a-zA-Z\s]/)!=-1)||(!ignoreWhiteSpace&&string.search(/[^a-zA-Z]/)!=-1)){strErrorList=strErrorList+ element.name+',';return false;}}
return true;}
function isNumeric(string,ignoreWhiteSpace){if(string.search){if((ignoreWhiteSpace&&string.search(/[^\d\s]/)!=-1)||(!ignoreWhiteSpace&&string.search(/\D/)!=-1)){strErrorList=strErrorList+ element.name+',';return false;}}
return true;}
function removeBadCharacters(string){if(string.replace){string.replace(/[<>\"\'%;\)\(&\+]/,'');}
return string;}
function removeSpaces(string){var newString='';for(var i=0;i<string.length;i++){if(string.charAt(i)!=' ')newString+=string.charAt(i);}
return newString;}
function trimWhitespace(string){var newString='';var substring='';beginningFound=false;for(var i=0;i<string.length;i++){if(string.charAt(i)!=' '&&string.charCodeAt(i)!=9){if(substring!=''){newString+=substring;substring='';}
newString+=string.charAt(i);if(beginningFound==false)beginningFound=true;}
else if(beginningFound==true)substring+=string.charAt(i);}
return newString;}
function getMod10(number){number=''+ number;number=removeSpaces(number);if(!isNumeric(number))return-1;var checksum=0;for(var i=number.length- 1;i>=0;i--){var isOdd=((number.length- i)%2!=0)?true:false;digit=number.charAt(i);if(isOdd)checksum+=parseInt(digit);else{var evenDigit=parseInt(digit)*2;if(evenDigit>=10)checksum+=1+(evenDigit- 10);else checksum+=evenDigit;}}
return(checksum%10);}
function isDate(dtStr){var daysInMonth=DaysArray(12)
var pos1=dtStr.indexOf(dtCh)
var pos2=dtStr.indexOf(dtCh,pos1+1)
var strMonth=dtStr.substring(0,pos1)
var strDay=dtStr.substring(pos1+1,pos2)
var strYear=dtStr.substring(pos2+1)
strYr=strYear
if(strDay.charAt(0)=="0"&&strDay.length>1)strDay=strDay.substring(1)
if(strMonth.charAt(0)=="0"&&strMonth.length>1)strMonth=strMonth.substring(1)
for(var i=1;i<=3;i++){if(strYr.charAt(0)=="0"&&strYr.length>1)strYr=strYr.substring(1)}
month=parseInt(strMonth)
day=parseInt(strDay)
year=parseInt(strYr)
if(pos1==-1||pos2==-1){dtErr="The date format should be: mm/dd/yyyy."
return false}
if(strMonth.length<1||month<1||month>12){dtErr="The month is not valid."
return false}
if(strDay.length<1||day<1||day>31||(month==2&&day>daysInFebruary(year))||day>daysInMonth[month]){dtErr="The day is not valid."
return false}
if(strYear.length!=4||year==0||year<minYear||year>maxYear){dtErr="The year must be a valid 4 digit year between "+minYear+" and "+maxYear+"."
return false}
if(dtStr.indexOf(dtCh,pos2+1)!=-1||isInteger(stripCharsInBag(dtStr,dtCh))==false){dtErr="The date is not valid."
return false}
return true}
