/*
USAGE: Submits a form if the specified fields a valid. else it prompts the
user with the required fields.

ARGS: nform = name of form not 'document.form_name' but 'form_name'
fields: multidimensional array:
		[0][0] = id of form item
		[0][1] = expression-> example value must be more than 5: > 5
		[0][2] = message that will be rendered if the expression is not met 
		[0][3] = type of field: currently works with radio and text but text
				js_var: is used if you want a javascript generated value to
				be checked and posted i.e star rating. you must have a hidden type field which name matches the js variable name
		[0][4] = expresssion type: can be N i.e number  >  5
									   or S i.e 'string' !=""

EXAMPLE:
var fields = new Array();
fields[0] = new Array('name',' !="" ','Please enter your name','text',"S");

NOTES: use '' rather than "" for multidimensional array value assigment.
place script call and array after the form declaration.
*/
<!-- Begin
function validate_form(nform,fields,ret){
	var field_err = "";
	//alert("length " + fields.length);
	for (var i = 0; i < fields.length; i++ ){
		var obj = i;
		// if the value is a jsvar add the value to a hidden field 
		if (fields[obj][3] == "js_var"){
			document.getElementById(fields[obj][0]).value = eval(fields[obj][0]);	
		}
		//alert(document.getElementById(fields[obj][0]).name + " index " + obj);

		// are we expressing against a string or number?
		var iN = (fields[obj][4] =="N")?'':'"';
			
		var val = document.getElementById(fields[obj][0]).name;
		// is the field type radio!
		if (fields[obj][3] == "radio"){
			var rad_val = getRadioValue(nform,val);
			if(!rad_val){;
				field_err +=""+fields[obj][2]+"\n"; 
			}
			
		} else if (fields[obj][3] == "dropdown"){
			
			// get the dropdown value
			var el = document.getElementById(fields[obj][0]);
			var selectedValue = el.options[el.selectedIndex].value;

			var val_expr =	iN+selectedValue+iN +' '+ fields[obj][1];
			//alert("drop down " + val_expr);
			var res = eval(val_expr);
			if(!res){
				 field_err +=""+fields[obj][2]+"\n";
			}
		}

		else{
			
			// get the value and the expression;
			var val = document.getElementById(fields[obj][0]).value;
			var expr  = fields[obj][1];
			
			// concatenate the value and the expression
			var val_expr =	iN+val+iN +' '+ fields[obj][1];
			// eval returns true or false
			//alert(val_expr);
			var res = eval(val_expr);
			if(!res){
				 field_err +=""+fields[obj][2]+"\n";
			}
		}
	}
	if (field_err == ""){
		if (ret){
			// return value rather than submit
			return 1;
		}
		document.forms[nform].submit();
		//eval(document.nform.submit());
	}else{
		alert(field_err);
	}
}

function getRadioValueEl(field){
	for (var i=0; i < eval('document.getElementById.'+field+'.length'); i++){
		if (eval('document.getElementById('+field+')[i].checked')){
			var rad_val = eval('document.getElementById('+field+')[i].value');
			return  rad_val;
		}
	}
}


function validate_form1(nform,fields,ret){
	var field_err = "";
	//alert("length " + fields.length);
	for (var i = 0; i < fields.length; i++ ){
		var obj = i;
		// if the value is a jsvar add the value to a hidden field 
		if (fields[obj][3] == "js_var"){
			document.getElementById(fields[obj][0]).value = eval(fields[obj][0]);	
		}
		//alert(document.getElementById(fields[obj][0]).name + " index " + obj);
		var val = document.getElementById(fields[obj][0]).name;
		// is the field type radio!
		if (fields[obj][3] == "radio"){
			var rad_val = getRadioValue(val); //nform, see comented function
			if(!rad_val){;
				field_err +=""+fields[obj][2]+"\n"; 
			}			
		}
		else{
			// are we expressing against a string or number?
			var iN = (fields[obj][4] =="N")?'':'"';
			
			// get the value and the expression;
			var val = document.getElementById(fields[obj][0]).value;
			var expr  = fields[obj][1];
			
			// concatenate the value and the expression
			var val_expr =	iN+val+iN +' '+ fields[obj][1];
			// eval returns true or false
			var res = eval(val_expr);
			if(!res){
				 field_err +=""+fields[obj][2]+"\n";
			}
		}
	}
	if (field_err == ""){
		if (ret){
			// return value rather than submit
			return 1;
		}
		document.forms[nform].submit();
		//eval(document.nform.submit());
	}else{
		alert(field_err);
	}
}

function getRadioValue(nform,field){
	for (var i=0; i < eval('document.forms[nform].'+field+'.length'); i++){
		if (eval('document.forms[nform].'+field+'[i].checked')){
			var rad_val = eval('document.forms[nform].'+field+'[i].value');
			return  rad_val
		}
	}
}

// End -->