//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, NUMBER_FORMAT=8, ALPHA_NUMERIC_FORMAT=9, USA_CA_ZIPCODE_FORMAT=10;

var formats=new Array();
formats[TEXTONLY_FORMAT]=new Array("checkText", "debe ser de solo texto, sin numeros o caracteres especiales");
formats[TEXT_FORMAT]=new Array("checkField", "");
formats[EMAIL_FORMAT]=new Array("checkEmail", "debe ser una direccion de correo electronico valida");
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[USA_CA_ZIPCODE_FORMAT]=new Array("checkUSA_CA_ZipCode", "must be a valid USA or Canada zip code");
formats[CARDNUMBER_FORMAT]=new Array("checkCardNumber", "must be a valid credit/debit card number");
formats[NUMBER_FORMAT]=new Array("checkNumber", "debe ser un numero valido");
formats[ALPHA_NUMERIC_FORMAT]=new Array("checkAlphaNum", "solo puede contener letras o numeros");

var strFieldValue="";

//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]].type.toLowerCase().indexOf("select")!=-1){
				if(form.elements[fields[cnt][0]].options[form.elements[fields[cnt][0]].options.selectedIndex].value==""){
					if(!first_field) first_field=form.elements[fields[cnt][0]];
					msg+="- Una opcion valida de la lista \"" + fields[cnt][1] + "\" debe ser seleccionada.\n";
				}
			}
			else{
				if(form.elements[fields[cnt][0]].value==""){
					if(!first_field) first_field=form.elements[fields[cnt][0]];
					msg+="- El campo llamado \"" + fields[cnt][1] + "\" no puede dejarse en blanco\n";
				}
			}
		}	
strFieldValue = form.elements[fields[cnt][0]].value;
		var isvalid=eval(formats[fields[cnt][2]][0] + "(strFieldValue);");
		if(!isvalid){
			msg+="- El campo llamado \"" + fields[cnt][1] + "\" " + formats[fields[cnt][2]][1] + "\n";
			if(!first_field) first_field=form.elements[fields[cnt][0]];
		}
		 }

		if(msg!=""){
			alert("Encontramos los siguientes problemas al procesar tu informacion:\n\n" + msg + "\nPor favor intenta corregir estos problemas para que podamos proceder con el proceso de tu peticion.");
			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 checkZipCode(txt){
	if(txt=="") return true;
	var exp=new RegExp("^[0-9]{5}$", "i");
	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);
}

function checkUSA_CA_ZipCode(txt){
	if(txt=="") return true;
	return (checkZipCode(txt) || checkCAZipCode(txt));
}

function checkCardNumber(txt){
	if(txt=="") return true;
	var exp=new RegExp("^[0-9 .\-]{15,16}$");
	return exp.test(txt);
}

function checkNumber(txt){
	if(txt=="") return true;
	var exp=new RegExp("^[0-9.]{1,}$");
	return exp.test(txt);
}

function checkAlphaNum(txt){
	if(txt=="") return true;
	var exp=new RegExp("^[a-z0-9]{1,}$", "i");
	return exp.test(txt);
}