// Standard form validator
// Must define tstvl Array(form name, element id, type, min req'd value, message on error)
//
// example: 
// var tstvl = new Array(
//			"frmMain|txtName|any||You did not enter your name",
//			"frmMain|txtAddr1|any||You did not enter your address",
//			"frmMain|txtAge|integer|1|You did not enter your age"
//			) 
//
//=================================================================================

// Check individual input:
// -----------------------
function doChk(form,el,type,min,msg){
	var x
	var myval = ""

	var tpchk = new Array()
	tpchk["number"] = /^[0-9\.]+$/
	tpchk["integer"] = /^[0-9]+$/
	tpchk["any"] = /\w+/

	switch(form.elements[el].type){

		case "select-one":
			myval = form.elements[el][form.elements[el].selectedIndex].value;				
		break;

		case "select-multiple":
			for(x=0; x<form.elements[el].options.length; x++){
				if(form.elements[el].options[x].selected && tpchk[type].test(form.elements[el].options[x].value)){	
					myval = form.elements[el].options[x].value;
				}				
			}
		break;


		default:
			myval = form.elements[el].value;
		break;

	}


	var fails = 0
	if(!tpchk[type].test(myval)){fails++;}
	
	if(tpchk["number"].test(min)){
		if(myval<min){fails ++;}
	}
	
	if(fails > 0){
		return ("- "+msg+"\n")
	}else{
		return ("")
	}
	
}


// ---------------
// Validate form:
// ---------------
function doVal(form){

	var x
	var err = ""
	for(x = 0; x<tstvl.length; x++){
		tmp = tstvl[x].split("|")
		if(tmp[0]==form.name){err+=doChk(form,tmp[1],tmp[2],tmp[3],tmp[4]);}
	}
	if(err==""){
		return true;
	}else{
		alert("Your request cannot be processed, because:\n\n"+err)
		return false;
	}

}