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 isValidEmail(str)
{
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
		 return false
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		 return false
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
			return false
	}

	 if (str.indexOf(at,(lat+1))!=-1){
			return false
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
			return false
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
			return false
	 }
	
	 if (str.indexOf(" ")!=-1){
			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 name;
    var empty_fields = "";
    var errors = "";
		 
    // Loop through the elements of the form, looking for all 
    // text and textarea elements that have a "mandatory" 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.type == "text") || (e.type == "textarea")) {
            // first check if the field is empty
            if (e.mandatory && ((e.value == null) || (e.value == "") || isblank(e.value))) {
                if (e.outputname != null)
									name = e.outputname;
								else
									name = e.name;
                  
                empty_fields += "\n          " + name;
                continue;
            }

            // Now check for fields that are supposed to be numeric.
            if (e.numeric || ((e.min != null) && (e.min != "")) || ((e.max != null) && (e.max != ""))) {
                if ((e.value != null) && (e.value != "")) {
                    var v = parseFloat(e.value);
                    if (isNaN(v) || 
                        ((e.min != null) && (v < e.min)) || 
                        ((e.max != null) && (v > e.max))) {
                        if (e.outputname != null)
                          name = e.outputname;
												else
                          name = e.name;
                                
                        errors += "- The field " + name + " must be a number";
                        errors += " that is between " + e.min + " and " + e.max;
                        errors += ".\n";
                    }    
                }
            }
            
            // Now check for fields that are supposed to be date format.
            if (e.datetime) { 
                if (e.value != "" && !isValidDate(e.value, '/')) {
										if (e.outputname != null)
											name = e.outputname;
										else
											name = e.name;
                      
                    errors += "- The field " + name + " must be a valid date in the format DD/MM/YY";
                    errors += ".\n";
                }
            }

            // Now check for fields that are supposed to be email format.
            if (e.emailaddress) { 
                if (e.value != "" && !isValidEmail(e.value, '/')) {
										if (e.outputname != null)
											name = e.outputname;
										else
											name = e.name;
                      
                    errors += "- The field " + name + " must be a valid email address";
                    errors += ".\n";
                }
            }
        }
    }

    // Now, if there were any errors, display the messages, and
    // return false to prevent the form from being submitted. 
    // Otherwise return true.
    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 mandatory field(s) are empty:" 
                + empty_fields + "\n";
        if (errors) msg += "\n";
    }
    msg += errors;
    alert(msg);
    return false;
}
