//Formats to validate the form

var TEXTONLY_FORMAT=0, TEXT_FORMAT=1, EMAIL_FORMAT=2, PASSWORD_FORMAT=3, PHONE_FORMAT=4, ZIPCODE_FORMAT=5, CAZIPCODE_FORMAT=6, CARDNUMBER_FORMAT=7;

var formats=new Array();
formats[TEXTONLY_FORMAT]=new Array("checkText", "must be made of only text, no numbers or special characters");
formats[TEXT_FORMAT]=new Array("checkField", "");
formats[EMAIL_FORMAT]=new Array("checkEmail", "must be a properly formatted email address");
formats[PASSWORD_FORMAT]=new Array("checkPassword", "must be a password between 5 and 15 characters of length, must be made only of letters and numbers, and no spaces");
formats[PHONE_FORMAT]=new Array("checkPhone", "must be a phone/fax number");
formats[ZIPCODE_FORMAT]=new Array("checkZipCode", "must be a valid United States zip code");
formats[CAZIPCODE_FORMAT]=new Array("checkCAZipCode", "must be a valid Canada zip code");
formats[CARDNUMBER_FORMAT]=new Array("checkCardNumber", "must be a valid credit/debit card number");

//This function returns whether all fields in the form are valid or not and
//also outputs a message to the user if one or more of the fields are incorrect
function IsValidForm(form, fields){
var msg="", first_field=null;
for(cnt=0;cnt<fields.length;cnt++){
if(fields[cnt][3]==true){
if(form.elements[fields[cnt][0]].value==""){
if(!first_field) first_field=form.elements[fields[cnt][0]];
msg+="- The field \"" + fields[cnt][1] + "\" cannot be blank\n";
}
 }
var isvalid=eval(formats[fields[cnt][2]][0] + "('" + form.elements[fields[cnt][0]].value.replace(/\'/gi, "\\'") + "');");
if(!isvalid){
msg+="- The field \"" + fields[cnt][1] + "\" " + formats[fields[cnt][2]][1] + "\n";
if(!first_field) first_field=form.elements[fields[cnt][0]];
}
 }
if(msg!=""){
alert("The following errors were found in the information you entered: \n\n" + msg + "\nPlease correct those errors in order to submit your information correctly.");
try{
first_field.focus();
first_field.select();
}
catch(e){}
return false;
}
return true;
}

function checkText(txt){
var exp=new RegExp("^[a-z. ]{0,}$", "i");
return exp.test(txt);
}

function checkField(str){
return true;
}

function checkEmail(email){
if(email=="") return true;
var exp=new RegExp("^[a-z0-9_.\-]{3,}@[a-z0-9.\-]{3,}\.[a-z]{2,3}$", "i");
return exp.test(email);
}

function checkPassword(txt){
var exp=new RegExp("^[A-Za-z0-9]{5,15}$");
return exp.test(txt);
}

function checkPhone(txt){
if(txt=="") return true;
var exp=new RegExp("^[0-9( )+,.\-]{5,}$");
return exp.test(txt);
}

function checkCardNumber(txt){
if(txt=="") return true;
var exp=new RegExp("^[0-9 .\-]{15,16}$");
return exp.test(txt);
}

function checkZipCode(txt){
if(txt=="") return true;
var exp=new RegExp("^[0-9]{5}$");
return exp.test(txt);
}

function checkCAZipCode(txt){
if(txt=="") return true;
var exp=new RegExp("^[a-z0-9]{3} ?[a-z0-9]{3}$", "i");
return exp.test(txt);
}