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 = "";

    for(var i = 0; i < f.length; i++) {
        var e = f.elements[i];
        if (((e.type == "text") || (e.type == "textarea") ||
			(e.type == "select-one") || (e.type == "select-multiple")) && !e.optional) {
            // first check if the field is empty
            if ((e.type != "select-one" && e.value == null) 
				|| (e.value == "") 
				|| (e.type != "select-one" && isblank(e.value))
				|| (e.type == "select-one" && e.options[e.selectedIndex].value == 0)
			) {
                if (e.alt != null) {
					empty_fields += "\n " + e.alt;
                } else {
					empty_fields += e.options[e.selectedIndex].value + "\n " + e.name;
				}
				continue;
            }
           
		    // Now check for fields that are supposed to be numeric.
            if (e.numeric || (e.min != null) || (e.max != null)) { 
                var v = parseFloat(e.value);
                if (isNaN(v) || 
                    ((e.min != null) && (v < e.min)) || 
                    ((e.max != null) && (v > e.max))) {
                    if (e.alt != null) {
						errors += "- The field " + e.alt + " must be a number";
                    } else {
						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";
                }
            }
        
		} else if (((e.type == "text") || (e.type == "textarea")) && e.optional) {
			if (isblank(e.value) == false) {
	        	if (e.numeric || (e.min != null) || (e.max != null)) { 
	                var v = parseFloat(e.value);
	                if (isNaN(v) || 
	                    ((e.min != null) && (v < e.min)) || 
	                    ((e.max != null) && (v > e.max))) {
	                    if (e.alt != null) {
							errors += "- The field " + e.alt + " must be a number";
	                    } else {
							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.emailFormat && ((e.type == "text") || (e.type == "textarea"))) {
	   	 	if (isblank(e.value) == false) {
			   	var emailError = 0
				
			   	indAt = e.value.indexOf('@');
				indDot = e.value.lastIndexOf('.');
			
				if ( (indAt == -1) || (indDot == -1) || (indDot < indAt) || (indDot < (e.value.length - 4)) || ((indDot - indAt) <= 1) || (indAt == 0) ) {
					errors += "- The email address '" + e.value + "' apprears to be in an invalid format.  Please confirm the email address.";
					errors += "\n";			
				}
			}
	   }

    }

    if (!empty_fields && !errors) return true;

    msg  = "______________________________________________________\n\n"
    msg += "The form was not submitted because of 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:" 
                + empty_fields + "\n";
        if (errors) msg += "\n";
    }
    msg += errors;
    alert(msg);
    return false;
}
