function validate(){
//alert("validate script  type arg.0:  "+typeof(arguments[0]));
//alert("validate script  type arg.1:  "+typeof(arguments[1]));
//alert("validate script  arg.1.length:  "+arguments[1].length);
//alert("validate script  arg.0:  "+arguments[0]);
	var HasErrors=false;
	var FieldHasErrors={};
	var ErrorString='This form has not been filled out correctly. Please correct the following errors:\n_____________________________\n\n';
	for(counter=0;counter<arguments[1].length;counter++){
		if(typeof(ValFuncs[arguments[1][counter][1]])=='function' && (!FieldHasErrors[arguments[1][counter][0]])){
			if(!ValFuncs[arguments[1][counter][1]](document.forms[arguments[0]][arguments[1][counter][0]],arguments[1][counter][2],arguments[1][counter][4])){
				if(!HasErrors){
					document.forms[arguments[0]][arguments[1][counter][0]].focus();
				}
				HasErrors=true;
				FieldHasErrors[arguments[1][counter][0]]=true;
				ErrorString+=arguments[1][counter][3]+'\n';
			}
		}else{
			if(!FieldHasErrors[arguments[1][counter][0]])	alert('unknown val type!!');
		}
	}
	if(HasErrors){
		alert(ErrorString+'_____________________________\n');
		return false;
	}
	return true;
}

function AlertErrorList(){
	if(arguments[0]!='undefined'){
		arguments[0]=new String(arguments[0]).split(/,/);
		if(arguments[0].length>0){
			var ErrorString='This form has not been filled out correctly. Please correct the following errors:\n_____________________________\n\n';
			for(arguments[3]=0;arguments[3]<arguments[0].length;arguments[3]++){
				if(arguments[3]==0)	arguments[1][arguments[2][arguments[0][arguments[3]]][0]].focus();
				ErrorString+=arguments[2][arguments[0][arguments[3]]][3]+'\n';
			}
			alert(ErrorString+'_____________________________\n');
		}
	}
}

var ValFuncs={};


ValFuncs['CHECKARGUMENTS']=function(){
	return arguments[1];
}

ValFuncs['LENGTHRANGE']=function(){
	arguments[0]=new String(arguments[0].value);
	return (arguments[0].length>=arguments[1][0] && arguments[0].length<=arguments[1][1])
}
ValFuncs['MATCHVALUE']=function(){
	return (arguments[0].value==arguments[1].value);
}
ValFuncs['MINSELECTINDEX']=function(){
	return (arguments[0].selectedIndex>=arguments[1]);
}
ValFuncs['EMAIL']=function(){
	arguments[0]=new String(arguments[0].value);
	return /..+@..+\...+/.test(arguments[0]);
}
ValFuncs['NUMBER']=function(){
	if(arguments[0].value=='' && arguments[2])	return true;
	return /^[-+]?\d+(\.\d+)?$/.test(arguments[0].value);
}
ValFuncs['NUMERICRANGE']=function(){
	if(arguments[0].value=='' && arguments[2])	return true;
	arguments[0]=parseFloat(arguments[0].value);
	return (arguments[0]>=arguments[1][0] && arguments[0]<=arguments[1][1]);
}
ValFuncs['MAXVALUE']=function(){
	arguments[0]=parseFloat(arguments[0].value);
	return (arguments[0]<=arguments[1][0]);
}
ValFuncs['MINVALUE']=function(){
	arguments[0]=parseFloat(arguments[0].value);
	return (arguments[0]>=arguments[1][0]);
}
ValFuncs['PRICE']=function(){
	arguments[0]=parseFloat(arguments[0].value);
	//arguments[2]=new String(arguments[0]);
	return (arguments[0]>=0 && arguments[0]<10000);
}
ValFuncs['VALIDPASSWORD']=function(){
	arguments[2] = /^.*\d.*$/;
	arguments[3] = /^.*[a-zA-Z].*$/;
	return (arguments[2].test(arguments[0].value) && arguments[3].test(arguments[0].value));
}
ValFuncs['DATE']=function(){
	//alert(arguments[1][0]);
	arguments[0]=new Date(Date.parse(arguments[0].value)).valueOf();
	arguments[2]=new Date(arguments[1][1]).valueOf();
	arguments[1]=new Date(arguments[1][0]).valueOf();
	//alert(arguments[0]+'/'+arguments[1]+'/'+arguments[2]);
	if(isNaN(arguments[1])) arguments[1]=-1;
	if(isNaN(arguments[2])) arguments[2]=-1;
	if(isNaN(arguments[0]))	return false;	
	if(arguments[1]>=0 && arguments[0]<=arguments[1])	return false;
	if(arguments[2]>0 && arguments[0]>arguments[2])	return false;
	//arguments[2]=new String(arguments[0]);
	return true;
}
ValFuncs['TIMEZONE_OFFSET']=function(){
	arguments[2] = /[-+]\d{4}/;
	return (arguments[2].test(arguments[0].value));
}

ValFuncs['SELECT']=function(){
	return (arguments[0].selectedIndex>0);
}
ValFuncs['HOURS']=function(){
	if(arguments[0].value=='' && arguments[2])	return true;
	arguments[0]=parseFloat(arguments[0].value);
	arguments[0]=new String(arguments[0]);
	return /^\d?\d?\d?\.?\d?$/.test(arguments[0]);
}
function Pad(){
	arguments[0]=new String(arguments[0]);
	if(arguments[0].length==1)	arguments[0]='0'+arguments[0];
	return arguments[0];
}

ValFuncs['VALIDTZDATE']=function(){
	arguments[1]=new Date(Date.parse(arguments[0].value))
	//alert(arguments[1].valueOf());
	//alert(arguments[1].valueOf()>=0)
	if(arguments[1].valueOf()>0){
		arguments[0].value=arguments[1].getFullYear()+'/'+(Pad(arguments[1].getMonth()+1))+'/'+Pad(arguments[1].getDate());
		return true;
	}else{
		arguments[0].value='';
		return false;
	}
}
ValFuncs['TODAY_OR_FUTURE']=function(){
	arguments[0]=new String(arguments[0].value);
	arguments[2]=new Date();
	arguments[0]=arguments[0].split(/\//);
	arguments[0][0]=parseInt(arguments[0][0]);
	arguments[0][1]=parseInt(arguments[0][1]);
	arguments[0][2]=parseInt(arguments[0][2]);
	if(isNaN(arguments[0][0]))	return false;
	if(isNaN(arguments[0][1]))	return false;
	if(isNaN(arguments[0][2]))	return false;
	if(arguments[0][1]>12 || arguments[0][1]<1) return false;
	if(arguments[0][2]>31 || arguments[0][2]<1)	return false;
	arguments[2]=new Array(arguments[2].getYear(),(arguments[2].getMonth()+1),arguments[2].getDate());
	if(arguments[0][0]>arguments[2][0]){
		return true;
	}else{
		if(arguments[0][0]>arguments[2][0]){
			return true;
		}else{
			if(arguments[0][1]>arguments[2][1]){
				return true;
			}else{
				if(arguments[0][2]==arguments[2][2]){
					return true;
				}else{
					return false;
				}
			}
		}
	}
	return false;
}
ValFuncs['TODAY_OR_PAST']=function(){
	alert('called');
	arguments[0]=new String(arguments[0].value);
	arguments[2]=new Date();
	arguments[0]=arguments[0].split(/\//);
	arguments[0][0]=parseInt(arguments[0][0]);
	arguments[0][1]=parseInt(arguments[0][1]);
	arguments[0][2]=parseInt(arguments[0][2]);
	if(isNaN(arguments[0][0]))	return false;
	if(isNaN(arguments[0][1]))	return false;
	if(isNaN(arguments[0][2]))	return false;
	alert(arguments[0][0]+'-'+arguments[0][1]+'-'+arguments[0][2]);
	arguments[2]=new Array(arguments[2].getYear(),(arguments[2].getMonth()+1),arguments[2].getDate());
	alert(arguments[2][0]+'-'+arguments[2][1]+'-'+arguments[2][2]);
	return false;
}
ValFuncs['DATE']=function(){
	alert('called');
	arguments[0]=new String(arguments[0].value);
	arguments[2]=new Date();
	arguments[0]=arguments[0].split(/\//);
	arguments[0][0]=parseInt(arguments[0][0]);
	arguments[0][1]=parseInt(arguments[0][1]);
	arguments[0][2]=parseInt(arguments[0][2]);
	if(isNaN(arguments[0][0]))	return false;
	if(isNaN(arguments[0][1]))	return false;
	if(isNaN(arguments[0][2]))	return false;
	alert(arguments[0][0]+'-'+arguments[0][1]+'-'+arguments[0][2]);
	arguments[2]=new Array(arguments[2].getYear(),(arguments[2].getMonth()+1),arguments[2].getDate());
	alert(arguments[2][0]+'-'+arguments[2][1]+'-'+arguments[2][2]);
	return false;
}

