function isNumeric(strString){

	var ValidChars = "0123456789.%";
	var IsNumber=true;
	var Char;

		
	for (i = 0; i < strString.length && IsNumber == true; i++){ 
		Char = strString.charAt(i); 
		if (ValidChars.indexOf(Char) == -1){
			IsNumber = false;
		}
	}
	
	return IsNumber;		
}

function isDate(dateStr) {

	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	var matchArray = dateStr.match(datePat); // is the format ok?

	if (matchArray == null) {
		return false;
	}

	day = matchArray[1]; // p@rse date into variables
	month = matchArray[3];
	year = matchArray[5];

	if (month < 1 || month > 12) { // check month range
		return false;
	}

	if (day < 1 || day > 31) {
		return false;
	}

	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		return false;
	}

	if (month == 2) { // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day==29 && !isleap)) {			
			return false;
		}
	}
	
	return true; // date is valid
}

function isEmail(str) {
	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
	return (!r1.test(str) && r2.test(str));
}

function formCheck(objTarget){

	intErrors=0;
	strOut="";

	for(a=1;a<arguments.length;a=a+3){
	
		tmpVal="";
		
		if(objTarget[arguments[a]].type==null){
			for(b=0;b<objTarget[arguments[a]].length;b++){
			
				if(objTarget[arguments[a]][b].type=="checkbox" || objTarget[arguments[a]][b].type=="radio"){
			
					if(objTarget[arguments[a]][b].checked==true){tmpVal+=objTarget[arguments[a]][b].value;}
					
				}
				else{
					tmpVal+=objTarget[arguments[a]][b].value;
				}
			
			}
		}
		
		else{
		
			if(objTarget[arguments[a]].type=="checkbox" || objTarget[arguments[a]].type=="radio"){
				if(objTarget[arguments[a]].checked==true){tmpVal=objTarget[arguments[a]].value;}
			}
			else{
				tmpVal=objTarget[arguments[a]].value;
			}
		
		}
		
		
		chrType=arguments[a+1]; // A=alphanumeric, N=numeric, E=email, D=date
		
		tmpE=intErrors;
		
		switch(chrType){
			case 'A' : if(tmpVal=="" || tmpVal==null){intErrors++;strOut+=arguments[a+2]+"\n"}; break;
			case 'N' : if(tmpVal=="" || tmpVal==null || isNumeric(tmpVal)==false){intErrors++;strOut+=arguments[a+2]+"\n"}; break;
			case 'E' : if(tmpVal=="" || tmpVal==null || isEmail(tmpVal)==false){intErrors++;strOut+=arguments[a+2]+"\n"}; break;
			case 'D' : if(tmpVal=="" || tmpVal==null || isDate(tmpVal)==false){intErrors++;strOut+=arguments[a+2]+"\n"}; break;
		}
	
	}
	
	if(intErrors==0){
		objTarget.submit();
		//alert("would submit");
	}
	else{
		alert(strOut);
	}

}