/*******************************************************************************
* +--------------------------[ File Revision Info ]--------------------------+ *
* | $Revision::                                                           $: | *
* | $Date::                                                               $: | *
* | $Author::                                                             $: | *
* +--------------------------------------------------------------------------+ *
* | $Id::                                                                 $: | *
* +--------------------------------------------------------------------------+ *
*******************************************************************************/

// 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;
}
