function frmValidate(frm,message) {
// Checks that all fields specified in the hidden field 'required' are filled out
// Works with textboxes and multiple checkboxes and radio buttons (not single ones though, must be a group)
// V1.0 : ??/??/?? : JA
// V1.1 : 06/07/02 : JA : Added textarea and radio support. Also added ability to specify form and 'fields requird' message
// V1.2 : 06/07/02 : AR : Modified for empty required field
// V1.3 : 27/02/08 : DB : Added support for single required checkboxes and radio boxes (ie. must tick box)

	if (frm.required.value == "")
		return true;
	
	var fields = frm.required.value.split(",");
	var i = 0, required = 0;
	
	while( fields[i] ) {
		field = fields[i];
		
		if( field == "email" && frm.email.value != "") {
			// Do e-mail validation check
			var regExp = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$/;			
			
			if(!regExp.test(frm.email.value)){
				alert("Please provide a valid e-mail address");
				return false;
			}
		}
		
		type = eval("frm." + field + ".type");
		
		if( type == null ) {
		// Then we assume there are more than one of this element on the page (as with checkboxes, radio buttons)
			type = eval("frm." + field + "[0].type");
		}
		
		if (type == "select-one")
			{
			var selectfield = eval("frm." + field );
			
			if (selectfield.options.selectedIndex != 0)
				required++;
				
			}
			
		if( type == "checkbox" || type == "radio") {
			
			check = 0;
			
			if(typeof eval("frm." + field + "[1]") != "undefined"){
				// Mulitple Options
				x = 0;
				while( eval("frm." + field + "[" + x + "]") ) {
					if( eval("frm." + field + "[" + x + "].checked") == true )
						check = 1;
						
					x++;
				}
				
			}else{
				// Single Options (must be selected)
				if( eval("frm." + field + ".checked") == true )
					check = 1;
			}
			
			if( check == 1 )
				required++;
		}
		
		if( type == "text" || type == "textarea") {
			if( eval("frm." + field + ".value") != "" )
				required++;
		}		
		i++;
	}
	
	if( required != fields.length ) {
		if( message ) {
			alert(message);
		}
		else {
			alert("Please check that you have completed all fields marked *");		
		}
		return false;
	} else {
		return true;
	}
}
