<!--
function fChkDynFrm(frm, aObj){

	var q;
	var w;
	var e;
	var r;
	var curObj;
	var curType;
	var aPass = new Array;
	var aResult = new Array;
	var sResult = "";
	var bPass = true;

	e = 0;
	
//	alert('boo!');
	
	for (q = 0;  q < aObj.length; q++){
//		alert(aObj[q][2])
		curObj = aObj[q][0];
		curType = aObj[q][1];
		for (w = 0; w < aObj[q][2].length; w++){
//			alert(curObj + "-" + curType + "-" + aObj[q][2][w])
			switch (aObj[q][1]){
				case "b": //radio and checkbox (bit validation)
					switch (aObj[q][2][w]){
						case 1: // radio or checkbox required
							var isChecked = false;
							for (i=0;i<eval("document." + frm + "." + curObj + ".length");i++){
								if (eval("document." + frm + "." + curObj + "[" + i + "].checked")){
									isChecked = true;
									break;
								}
							}
							if (isChecked != false){
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " is required.\n";
							}
						break;
					}
					break;
				case "p": //password fields.  Passed as PWObject|PWConfirmObject
					switch (aObj[q][2][w]){
						case 1: //confirm match
							aPW = curObj.split("|");
							if (eval("document." + frm + "." + aPW[0] + ".value") == eval("document." + frm + "." + aPW[1] + ".value")){
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " do not match.\n";
							}
							break;
					}
					break;
				case "c": //Comparisons.  Passed as Data|Comparison
					switch (aObj[q][2][w]){
						case 1: //Less than
							aComp = curObj.split("|");
							if (aComp[0] < aComp[1]){
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " must be before " + aComp[1] + ".\n";
							}
							break;
					}
					break;
				case "d": //text boxes, passed as dates
					switch (aObj[q][2][w]){
						case 1: //valid date
							if (fCheckDate(eval("document." + frm + "." + curObj + ".value"))){
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " is not a properly formatted date (mm/dd/yyyy).\n";
							}
							break;
						case 2: //valid date if not null
							if (eval("document." + frm + "." + curObj + ".value.length") > 0){
								if (fCheckDate(eval("document." + frm + "." + curObj + ".value"))){
									aPass[e] = 0;
									e++;
								} else {
									aPass[e] = 1;
									e++;
									sResult += aObj[q][3] + " is not a properly formatted date (mm/dd/yyyy).\n";
								}
							}
							break;
						case 3: //valid date/time
							var theDateTime = eval("document." + frm + "." + curObj + ".value");
							var theDate = '', theTime = '';
							var bDoDate = true;
							for (i=0;i<theDateTime.length;i++){
								if (theDateTime.charAt(i) == ' '){
									bDoDate = false;
								}
								if (bDoDate){
									theDate += theDateTime.charAt(i);
								} else {
									theTime += theDateTime.charAt(i);
								}
							}
							if (fCheckDate(theDate)){
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " is not a properly formatted date (mm/dd/yyyy).\n";
							}
							for (i=0;i<theTime.length;i++){
								if (theTime.charAt(i) != ' ') {
									theTime = theTime.substr(i, theTime.length - 1);
									break;
								}
							}
							if (theTime.length > 0){
								if (fCheckTime(theTime)){
									aPass[e] = 0;
									e++;
								} else {
									aPass[e] = 1;
									e++;
									sResult += aObj[q][3] + " is not a properly formatted time (hh:mm AM|PM or HH:mm).\n";
								}
							}
							break;
					}
					break;
				case "s": //select objects
					switch(aObj[q][2][w]){
						case 1: //non value
							var sBadVal;
							if (aObj[q][4] == ""){
								sBadVal = 0;
							} else {
								sBadVal = aObj[q][4];
							}
							if (eval("document." + frm + "." + curObj + ".options[document." + frm + "." + curObj + ".selectedIndex].value") != sBadVal){
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " has not been selected.\n";
							}	
							break;
					}
					break;
				case "t": //text boxes
					switch (aObj[q][2][w]){
						case 1: //not empty
							if (eval("document." + frm + "." + curObj + ".value") != "") {
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " is empty.\n"
							}
							break;
						case 2: //not zero
							if (eval("document." + frm + "." + curObj + ".value") != 0) {
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " is set to zero.\n";
							}
							break;
						case 3: //string
							if (isNaN(parseInt(eval("document." + frm + "." + curObj + ".value")))) {
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " is not a text value.\n"
							}
							break;
						case 4: //number
							if (!isNaN(parseInt(eval("document." + frm + "." + curObj + ".value")))) {
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " is not a numeric value.\n"
							}
							break;
						case 5: //day of month (numeric)
							if (eval("document." + frm + "." + curObj + ".value") > 0 && eval("document." + frm + "." + curObj + ".value") < 32) {
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " is not valid day of the Month (between 1 and 31).\n"
							}
							break;
						case 6: //month of year (numeric)
							if (eval("document." + frm + "." + curObj + ".value") > 0 && eval("document." + frm + "." + curObj + ".value") < 13) {
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " is not a valid Month (between 1 and 12).\n"
							}
							break;
						case 7: //number or Null
							if (!isNaN(parseInt(eval("document." + frm + "." + curObj + ".value"))) || eval("document." + frm + "." + curObj + ".value") == "") {
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " is not a numeric value.\n"
							}
							break;
						case 8: //not just spaces
							if (eval("document." + frm + "." + curObj + ".value") != " "){
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " must contain more than spaces.\n";
							}
							break;
						case 9: //not email address (reg exp)
							if (eval("document." + frm + "." + curObj + ".value") != ""){
								if (fCheckEmail(eval("document." + frm + "." + curObj + ".value"))){
									aPass[e] = 0;
									e++;
								} else {
									aPass[e] = 1;
									e++;
									sResult += aObj[q][3] + " is not a properly formatted email.\n";
								}
							} else {
								aPass[e] = 0;
								e++;
							}
							break;
						case 10: //not valid time (regular or military)
							if (eval("document." + frm + "." + curObj + ".value.length") > 0){
								if (fCheckTime(eval("document." + frm + "." + curObj + ".value"))){
									aPass[e] = 0;
									e++;
								} else {
									aPass[e] = 1;
									e++;
									sResult += aObj[q][3] + " is not a properly formatted time (hh:mm AM|PM or HH:mm).\n";
								}
							}
							break;
						case 11: //max length check
							if (eval("document." + frm + "." + curObj + ".value.length") <= aObj[q][4]){
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " exceeds the maximum length allowed (" + aObj[q][4] + " characters).\n";
							}
							break;
						case 12: //min length check
							if (eval("document." + frm + "." + curObj + ".value.length") >= aObj[q][5]){
								aPass[e] = 0;
								e++;
							} else {
								aPass[e] = 1;
								e++;
								sResult += aObj[q][3] + " does not meet the minimum length required (" + aObj[q][5] + " characters).\n";
							}
							break;
						}
					break;
				
			}
		}
	}
	
//	alert(aPass);
	
	for (r = 0; r < aPass.length; r++){
		if (aPass[r] == 1){
			bPass = false;
			break;
		}
	}
	
	aResult[0] = bPass;
	aResult[1] = sResult;
	
	return aResult;
}

//-->

