//javascript form verification
//use:
//<SCRIPT LANGUAGE="JavaScript" type="text/javascript" src="shared/form_verify.js"></SCRIPT>
//
//<FORM onSubmit="
//	  this.strErrorStart = "It was not possible to submit the for because: ";		
//    this.no_list_empty_fields = true;
//    this.firstname.optional = true;
//    this.phonenumber.optional = true;
//	  this.phonenumber.alt_name = "Phone Number";
//	  this.email.isEmail = true;  //for email validation
//    this.zip.min = 0;
//    this.zip.max = 99999;
//    return verify(this);
//">



// A utility function that returns true if a string contains only 
// whitespace characters.
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;
}

// This is the function that performs form verification.  It will be invoked
// from the onSubmit() event handler.  The handler should return whatever
// value this function returns.

function verify(f)
{
    var msg;
    var empty_fields = "";
    var errors = "";

    // Loop through the elements of the form, looking for all 
    // 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];
		if (!e.alt_name) e.alt_name = e.name;
        if (((e.type == "text") || (e.type == "textarea")) && !e.optional) {
            // first check if the field is empty
            if ((e.value == null) || (e.value == "") || isblank(e.value)) {
					//display alt_name if defined
//	                empty_fields += "\n          " + e.alt_name;
//				else
                empty_fields += "\n          " + e.alt_name;
                continue;
            }

			if (e.isEmail) {
				if (e.value.indexOf("@") == -1)
					errors += e.alt_name + " is not a valid email address\n";
			}
			
            // 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))) {
                    errors += "- The field " + e.alt_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";
                }
            }
        }
    }

    // Now, if there were any errors, then display the messages, and
    // return true to prevent the form from being submitted.  Otherwise
    // return false
    if (!empty_fields && !errors) return true;

	if (f.strErrorStart) 
		msg = f.strErrorStart
	else {
	
	    msg  = "______________________________________________________\n\n"
	    msg += "Please correct the following error(s).\n";
	    msg += "______________________________________________________\n\n"
	}

	if (!f.no_list_empty_fields) {
	    if (empty_fields) {
	        msg += "- You have not entered information in the following fields:\n" 
	                + empty_fields + "\n";
	        if (errors) msg += "\n";
	    }
	}
    msg += errors;
    alert(msg);
    return false;
}

