// 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 = "";
    var strName = "";
    var strEmail = "";
    
    // 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];
        
        switch(e.name){
			case 'prodname':
				strError = "- Please select product to register.\n";
				break;
			case 'ecom_billto_postal_name_first':
			case 'first_name':
				strName = "First Name";
				break;
			case 'ecom_billto_postal_name_last':
			case 'last_name':
				strName = "Last Name";
				break;			
			case 'ecom_billto_postal_street_line1':
				strName = "Address1";
				break;			
			case 'ecom_billto_postal_city':
				strName = "City";
				break;			
			case 'ecom_billto_postal_stateprov':
				strName = "State";
				break;			
			case 'ecom_billto_postal_postalcode':
				strName = "Zip or Postal Code";
				break;				
			case 'ecom_billto_telecom_phone_number':
				strName = "Phone";
				break;			
			case 'ecom_billto_online_email':
			case 'email':
				strName = "Email Address";
				strEmail = e.value;
				break;
			case 'ioc_billto_business_name':
				strName = "Company";
				break;
			case 'COUNTRY':
				strName = "Country";
				break;	
			case 'system_id':
				strName = "AFax System ID";
				break;		
			default:
				strName = "Unknown";
				break;
			}
       
        // if (((e.type == "text") || (e.type == "textarea")) && !e.optional) {
        if(!e.optional){
            // first check if the field is empty
            if ((e.value == null) || (e.value == "") || isblank(e.value)) {
				if (e.name == "prodtype")
					errors = "- Please select product to register.\n";
				else 
					empty_fields += "\n          " + strName;
				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))) {
                    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(!check_email(strEmail))
		errors += "- Please enter valid email address.\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 (errors)
		msg += errors; 
	if (empty_fields){
        msg += "- The following required field(s) are empty:" 
                + empty_fields + "\n";
    }
    alert(msg);
    return false;
}


// Email Validation. Written by PerlScriptsJavaScripts.com

function check_email(e) {
	ok = "1234567890qwertyuiop[]asdfghjklzxcvbnm.@-_QWERTYUIOPASDFGHJKLZXCVBNM";

	for(i=0; i < e.length ;i++){
		if(ok.indexOf(e.charAt(i))<0){ 
			return (false);
		}	
	} 

	if (document.images) {
		re = /(@.*@)|(\.\.)|(^\.)|(^@)|(@$)|(\.$)|(@\.)/;
		re_two = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
		if (!e.match(re) && e.match(re_two)) {
			return (-1);		
		} 
	}
}