validateForm = function(formid){
	var isvalid = false;
	var errors = 0;
	setFormStatus();
	
	allFields = Form.getElements(formid);
	//alert("field length="+allFields.length);
for(i = 0; i < allFields.length; i++) {
	
//first check field has value or is required
	if($(allFields[i]).hasClassName("required") || $F(allFields[i]) > 0 ||  $F(allFields[i]) != 0){
		
		
if($(allFields[i]).hasClassName('validemail')){
	isvalid = isValidEmail(allFields[i]);
if(!isvalid) errors+=1;

} else if ($(allFields[i]).hasClassName('notempty')){
	
	isvalid = isNotEmpty(allFields[i]);
if(!isvalid) errors+=1;

} else if ($(allFields[i]).hasClassName('validpc')){
	isvalid = isValidPC(allFields[i]);
if(!isvalid) errors+=1;

} else if ($(allFields[i]).hasClassName('validtel')){
	isvalid = isValidTel(allFields[i]);
if(!isvalid) errors+=1;
} else if ($(allFields[i]).hasClassName('match')){
	isvalid = isMatch(allFields[i]);
	if(!isvalid) errors+=1;
} else if ($(allFields[i]).hasClassName('validpass')){
	isvalid = isValidPass(allFields[i]);
if(!isvalid) errors+=1;
} else if ($(allFields[i]).hasClassName('isselect')){
	isvalid = isSelected(allFields[i]);
	if(!isvalid) errors+=1;

} else if ($(allFields[i]).hasClassName('isvalidcc')){
	
	isvalid = isValidCard(allFields[i]);
	if(!isvalid) errors+=1;
} else if ($(allFields[i]).hasClassName('validcarddate')){
	isvalid = isValidCardDate();
	if(!isvalid) errors+=1;
} else if ($(allFields[i]).hasClassName('isnumeric')){
	isvalid = isNumeric(allFields[i]);
if(!isvalid) errors+=1;
} else if ($(allFields[i]).hasClassName('issecnum')){
	isvalid = isSecurityNum(allFields[i]);
	if(!isvalid) errors+=1;
} else {
// do nothing
}
	}
	
}
//alert(isvalid);
if(errors>0) isvalid = false;
if(!isvalid) setFormStatus(false);
return isvalid;
}





function setFormStatus(status){
	if(status == false){
		//alert('set status');
		$('errorbox').addClassName('show');
	} else {
		$('errorbox').removeClassName('show');
	}
}
	











/*=====================
validation functions
======================*/
function isNotEmpty(value){
		var isvalid = true;
	$(value.id).removeClassName("error");
if($F(value).length < 2){
	isvalid = false;
	$(value.id).addClassName("error");
}
return isvalid;
}


function isMatch(value){
		var isvalid = true;
$(value.id).removeClassName("error");
matchField = value.id.gsub('_2', '');
if($F(value) != $F(matchField) || $F(value) == ""){
isvalid = false;
$(value.id).addClassName("error");
}
return isvalid;
}

function isValidEmail(value){
		var isvalid = true;
		$(value.id).removeClassName("error");
	//isvalid = false;
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	isvalid = filter.test($F(value))
	if(!isvalid) $(value.id).addClassName("error");
	return isvalid;
}

function isAlpha(value){
		var isvalid = true;
isvalid = false;
	$(value.id).removeClassName("error");
var filter =  /^[a-zA-z\s]+$/	;
	isvalid = filter.test($F(value))
	if(!isvalid) $(value.id).addClassName("error");
	return isvalid;
}

function isAlphaNumeric(value){
		var isvalid = true;
//isvalid = false;
	$(value.id).removeClassName("error");
var filter =   /^[a-zA-Z0-9]+$/	;
	isvalid = filter.test($F(value))
	if(!isvalid) $(value.id).addClassName("error");
	return isvalid;
}

function isNumeric(value){
		var isvalid = true;
//isvalid = false;
	$(value.id).removeClassName("error");
var filter =  /^[-]?\d+(\.\d+)?$/	;
	isvalid = filter.test($F(value))
	if(!isvalid) $(value.id).addClassName("error");
	return isvalid;
}

function isSecurityNum(value){
		var isvalid = true;
	$(value.id).removeClassName("error");

var filter =  /^[-]?\d+(\.\d+)?$/	;
	isvalid = filter.test($F(value))
	
	
if($F(value).length < 3) isvalid = false;
if(!isvalid) $(value.id).addClassName("error");
	return isvalid;

}

function isValidCCNum(value){
		var isvalid = true;
	//isvalid = false;
	$(value.id).removeClassName("error");
var filter =  /^((4\d{3})|(5[1-5]\d{2})|(6011))([- ])?\d{4}([- ])?\d{4}([- ])?\d{4}|3[4,7]\d{13}$/
	isvalid = filter.test($F(value))
	if(!isvalid) $(value.id).addClassName("error");
	return isvalid;
}


function isValidTel(value){
	var isvalid = true;
	tel = $F(value).replace(" ","");
		$(value.id).removeClassName("error");
	//isvalid = false;
	var filter  = /^([0-9]{11})$/;
	isvalid = filter.test(tel)
	if(!isvalid) $(value.id).addClassName("error");
	return isvalid;
	
}



function isValidCard(value){

	var isvalid = true;
	var cardno = $F(value).replace(" ","");
	var strValidChars = "0123456789";
	var strChar;
	$(value.id).removeClassName("error");
	//var isvalid = false;
	//return false if number less than 13 chars or higher than 16
	if(cardno.length < 13 || cardno.length > 18){
		
		$(value.id).addClassName("error");
		return false;
	}
	//check is numeric
	 for (i = 0; i < cardno.length && isvalid == true; i++){
		  strChar = cardno.charAt(i);
		  if (strValidChars.indexOf(strChar) == -1) isvalid = false;
	 }
	 	
	if(!isvalid) $(value.id).addClassName("error");

	return isvalid;
}


function isValidCardDate(){
		var isvalid = true;

		$('StartDate_Month').removeClassName("error");
		$('ExpiryDate_Month').removeClassName("error");
	
	
	var today= new Date();
var thismonth= today.getMonth()+1;
var thisyear= today.getFullYear();
	//first check start date has been completed
	if($("StartDate_Month").selectedIndex > 0 && $("StartDate_Year").selectedIndex >0){
	var sMonth = $F("StartDate_Month");
	//check for valid start 
	if(sMonth > thismonth){
		$('StartDate_Month').addClassName("error");
		isvalid = false;
	}
	}
	//check valid expiry
		var eMonth = $F("ExpiryDate_Month");
	var eYear = $F("ExpiryDate_Year");
	if(eYear = thisyear && eMonth < thismonth){
		$('ExpiryDate_Month').addClassName("error");
		isvalid = false;
	
}
return isvalid;


}	



function isValidPC(value){
		var isvalid = true;
		$(value.id).removeClassName("error");
	isvalid = false;
	pc = $F(value).replace(" ","");
	var filter  = /^([A-Za-z]{1,2})([0-9]{2,3})([A-Za-z]{2})$/;
	isvalid = filter.test(pc)
	if(!isvalid) $(value.id).addClassName("error");
	return isvalid;
	}
	
function isValidPass(value){
		$(value.id).removeClassName("error");
	isvalid = true;
	if($F(value).length > 20 || $F(value).length < 8 || $F(value).indexOf(" ")> -1){
		isvalid = false;
		$(value.id).addClassName("error");
	}
	return isvalid;
}

function isSelected(value){
		$(value.id).removeClassName("error");
	isvalid = true;
	if(value.selectedIndex < 1){
	isvalid = false;
	$(value.id).addClassName("error");
	}
	return isvalid;
}

/*=====================
end validation functions
======================*/
