// FOR EACH TEST OBJECT DEFINED AT TOP, CHECK ONSCREEN INPUT FIELD VALUE AND DISPLAY ERROR IF EVALUATION FAILS
function validateFormData(_testObject) {
	var errors = false;
	
	for(i=0;i<_testObject.length;i++) {
		var _testComponent = String(_testObject[i]).split(",");
		var _id = _testComponent[0];
		var _tests = String(_testComponent[1]).split(":");
		var _errMsgs = String(_testComponent[2]).split(":");
		var _numTests = _tests.length;

		//alert(_numTests+": "+_id+' '+_tests+' '+_errMsgs);

		for (j=0; j<_tests.length; j++) {
			if (evaluateTest(_id, _tests[j])) {
				// TEST FAILED...DISPLAY ERROR MESSAGE, HIGHLIGHT THE INPUT ELEMENT, & PREPARE FOCUS EVENT TO REMOVE ERROR MESSAGE
				$jQ("#"+_id).after('<span id="'+_id+'Error" style="color:red;padding-left:5px;">'+_errMsgs[j]+'</span>');
				$jQ("#"+_id).addClass("errorInputField");
				
				$jQ("#"+_id).focus(function() {
					$jQ(this).next().remove();
					$jQ(this).removeClass("errorInputField");
				});
				
				errors = true;
			}
		}
	}
	return errors;
}

// EVALUATE IF TEST CONDITIONS FAIL FOR A PARTICULAR ONSCREEN INPUT ID
function evaluateTest(_testID, _testType) {
	var error = false;

	switch(_testType) {
		case "required":
			if (($jQ("#"+_testID).val()=='') || ($jQ("#"+_testID).attr("value")==0) || ($jQ("#"+_testID).attr("value")==null)) 
			{
			    //alert('tt='+_testType+' id='+_testID);
				error = true;
			}
			break;
		case "min3":
			field = $jQ("#"+_testID).attr("value");
			if ((!field) || (field.length != 3)) {
				error = true;
			}
			break;
		case "min5":
			field = $jQ("#"+_testID).attr("value");
			if ((!field) || (field.length != 5)) {
				error = true;
			}
			break;
		case "min16":
			field = $jQ("#"+_testID).attr("value");
			if ((!field) || field.length != 16) {
				error = true;
			}
			break;
		case "decimal":
			field = $jQ("#"+_testID).attr("value");
			if (field) {
				expr = "/^\d+$/";
				if (!field.test(expr)) {
					error = true;
				}
			} else {
				error = true;
			}
			break;
		case "email":
			if ($jQ("#"+_testID).attr("value") != $jQ("#"+_testID+"7again").attr("value")) {
				error = true;
			}
			break;
		case "password":
			if ($jQ("#"+_testID).attr("value") != $jQ("#"+_testID+"_2").attr("value")) {
				error = true;
			}
			break;
		default:
			$jQ.prompt('Test not found for test'+_testID+': '+_testType);
	}
	
	return error;
}
