function isblank(s){
  for(var i = 0; i < s.length; i++) {
      var c = s.charAt(i);
      if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
  }
  return true;
}
function verify(f){
	var msg;
	var empty_fields = "";
	var errors = "";
	var iempty = 0;
	var ielement = 0;	var all_empty_fields = "";
  // Loop through the elements of the form, looking for all 
  // select-one, text and textarea elements that don't have an "optional" property
  // defined. Then, check for fields that are empty and make a list of them.
  // Also, if any of these elements have a "min" or a "max" property defined,
  // then verify that they are numbers and that they are in the right range.
  // Put together error messages for fields that are wrong.
  for(var i = 0; i < f.length; i++) {
      var e = f.elements[i];        
      //need to loop through to wk out if all of the fields are empty regardless of if there optional      if ((e.type == "text") || (e.type == "textarea") || (e.type == "password") || (e.type == "select-one")) {
					ielement = (ielement + 1)      }      if ((e.value == null) || (e.value == "") || isblank(e.value) || (e.options == "")) {
          iempty = (iempty + 1)      //    continue;
      }
		 // Now check for fields that are supposed to be numeric.
                if ((e.numeric || (e.min != null) || (e.max != null)) && (e.value != "")) { 
            var v = parseFloat(e.value);
            if (isNaN(v) || 
                ((e.min != null) && (v < e.min)) || 
                ((e.max != null) && (v > e.max))) {
                errors += "- The field " + e.name + " must be a number";
                if (e.min != null) 
                    errors += " that is greater than " + e.min;
                if (e.max != null && e.min != null) 
                    errors += " and less than " + e.max;
                else if (e.max != null)
                    errors += " that is less than " + e.max;
                errors += ".\n";
            }
        }        
                if (((e.type == "text") || (e.type == "textarea") || (e.type == "password") || (e.type == "select-one")) && !e.optional) {            // first check if the field is empty
            if ((e.value == null) || (e.value == "") || isblank(e.value) || (e.options == "")) {
                empty_fields += "\n          " + e.name;                continue;            }

            
        }
    }    	// check if the number of valuated elements = the number of empty elements
	// if it does then display extra error message	// if all fields are optional then don't display any field names
	
	if (iempty == ielement) {		all_empty_fields += "\n          " + e.name;
	}		
    // Now, if there were any errors, or all fields are empty display the messages, and
    // return false to prevent the form from being submitted. 
    // Otherwise return true.
    if (!empty_fields && !errors && !all_empty_fields) return true;

    msg = "Form Validation\n";    msg += "______________________________________________________\n\n"
    msg += "The form request was not submitted due to the following error(s).\n";
    msg += "Please correct these error(s) and re-submit.\n";
    msg += "______________________________________________________\n\n"

    if (empty_fields) {
        msg += "- The following required field(s) are empty:" 
        //msg += "- hello:"                 + empty_fields + "\n";
        if (errors) msg += "\n";
    }    
    //msg += errors + "\n";   // if (all_empty_fields) {
    //    msg += "- All fields are empty, at least one search criteria must be specified." 
                
    //}
    alert(msg);
    return false;
}  