////////////////////////////////////////////////////////////////////////////////////////////////////////////
// STANDARD VALIDATION FUNCTIONS                                                                          //
////////////////////////////////////////////////////////////////////////////////////////////////////////////

// GLOBALS //
var DELIMITER = ',';
var OTHER = 'other';            // other company type field
var LOGIN = 'lognames';         // login names hidden field
var COMBO = 'phone';

// LOGIN CREDENTIALS ///////////////////////////////////////////////////////////////////////////////////////

function _check_loginname(field) {
    var f = field.value;
    
    if (f.length == 0 || f == " ") {      
        alert("\nThe Login name field is blank.\n\nPlease enter your choice.")      
        return false;
    }   
	// no case sensitivity with login names desired, 
    // e.g. 'PETER' and 'pEteR' login names are not allowed to co-exist 
    var lnames = field.form.elements[LOGIN].value.split(DELIMITER);
    for (var i=0; i<lnames.length; i++) {
        if (lnames[i].toLowerCase() == f.toLowerCase()) { 
            alert("The specified login name is already in use. Please choose a different name.");      
            return false;
        }
    }

    // OK
    return true;
}

function _check_password(field) {
    var f = field.value;
    
    if (f.length == 0 || f == " ") {
        alert("\nPlease enter a password.");
        return false;    
    }
    if (f.length < 6) {
        alert("\nPlease enter a password of at least six characters.");
        return false;    
    }

    // OK
    return true;
}

// NAME /////////////////////////////////////////////////////////////////////////////////////////////////////////

function _check_firstname(field) {
    var f = field.value;
    
    if (f.length == 0 || f == " ") {      
        alert("\nPlease enter your Firstname.")      
        return false;       
    }      
    // OK
    return true;
}

function _check_lastname(field) {
    var f = field.value;
    
    if (f.length == 0 || f == " ") {      
        alert("\nPlease enter your Lastname.")      
        return false;       
    } 
    // OK
    return true;
}

// ADDRESS //////////////////////////////////////////////////////////////////////////////////////////////////

function _check_address(field) {
    var f = field.value;
    if (f.length == 0 || f == " ") {      
        alert("\nPlease enter your address.")      
        return false;       
    }
    // OK  
    return true;
}

function _check_address1(field) {
    return _check_address(field);
}

function _check_address2(field) {
    var f = field.value;
    if (f.length == 0 || f == " ") {      
        alert("\nPlease fill out all of the address fields.")      
        return false;       
    }
    // OK  
    return true;
}

function _check_city(field) {
    var f = field.value;  
    if (f.length == 0 || f == " ") {      
        alert("\nPlease enter a city.")      
        return false;       
    }
    // OK   	
    return true;
}

function old_check_zip(field) {
     var f = field.value;
     
     if (f.length == 0 || f == " ") {      
        alert("\nPlease enter a zip code.");
        return false;       
    }
    if (!isnum(f)) {
        alert("\nThe postal code field only accepts digits '0-9'.\n\nPlease re-enter your postal code.");         
        return false;       
    
    }
    // OK   		
    return true;
}

// 24/07/2000
// modified to accept zip + 4 format (if the version of Javascript support res
// 25/07/2000
// modified to include Canadian zip codes
// 19/11/2001
// set international format
function _check_zip(field) {
     var f = field.value;
     
    if (f.length == 0 || f == " ") {      
        alert("\nPlease enter a zip code.");
        return false;       
    }
//    if (window.RegExp) {
//        //var reg1str = "^[0-9]+(\\-[0-9]+)?$"; old code
//        var reg1str = "^(([0-9]{5}(\\-[0-9]+)?)|([A-Za-z][0-9][A-Za-z]\\s[0-9][A-Za-z][0-9]))$"; // all digits or digits with a - in the middle
//        var re1 = new RegExp(reg1str);
//        if (!re1.test(f)) {
//            alert("\nThe postal code field only accepts digits '0-9' and a dash if using the zip+4 format.\n\nPlease re-enter your postal code.");         
//            return false;
//        }
//    } else if (!isnum(f)) {
//        alert("\nThe postal code field only accepts digits '0-9'.\n\nPlease re-enter your postal code.");         
//        return false;       
//    }
    // OK   		
    return true;
}

function _check_email(field) {
    var f = field.value;
    var valid = false;
    
    if (f.length == 0 || f == " ") {      
        alert("\nThe E-Mail field is blank.\n\nPlease enter your e-mail address.")      
        return false;       
    }
	
    if (window.RegExp) {
        var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)"; // don't match these
        var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$"; // match these
        var re1 = new RegExp(reg1str);
        var re2 = new RegExp(reg2str);
        if (!re1.test(f) && re2.test(f)) 
            valid = true;
    } else { 
        if (f.indexOf('@',0) != -1 || 
            f.indexOf('.',0) != -1 || 
            f.substring(f.indexOf('.'), f.length).length > 2) {  
            valid = true;      
        }
    }
    if (!valid) {
        alert("\nThe E-Mail address syntax is incorrect.\n\nPlease re-enter your e-mail address.")      
	    field.select();      
	    return false;      
    }

    // OK
    return true; 	
}

function _check_state(field) {
    var f = field.options[field.selectedIndex].value;
    if (f.length == 0 || f == " ") {      
		alert("\nPlease select a state (or Province for Canada).")      
		return false;       
    }
    // OK
    return true;   		 	
}

// PHONE/FAX ///////////////////////////////////////////////////////////////////////////////////////////////////

/* PHONE */

function _check_p_area(field) {
    var f = field.value;
  	if (f.length == 0 || f == " ") {      
		alert("The area code field of your phone number is blank.\n\nPlease enter your area code.");      
        return false;      
	}   
    if (!isnum(f)) {
        alert("\nThe area code field only accepts digits '0-9'.\n\nPlease re-enter your area code.");         
        field.select();
        return false;         
    }      
    if (f.length != 3) {      
		alert("\nThe area code requires three digits.\n\nPlease re-enter your area code.")      
        return false;      
	}
	
    // OK
    return true;
}

function _check_p_prefix(field) {
	var f = field.value;
    if (f.length == 0 || f == " ") {      
		alert("\nThe prefix field of your phone number is blank.\n\nPlease enter your phone prefix.")      
        return false;      
	}   
	if (!isnum(f)) {
        alert("\nThe prefix field only accepts digits '0-9'.\n\nPlease re-enter your phone prefix.");         
        field.select();
        return false;         
	}
    if (f.length != 3) {      
		alert("\nThe prefix field of your phone number requires three digits.\n\nPlease re-enter your phone prefix.")      
		return false;      
	}   
	
    // OK
    return true;
}

function _check_p_number(field) {
    var f = field.value;
	
    if (f.length == 0 || f == " ") {      
		alert("\nThe phone number field of your phone number is blank.\n\nPlease enter your phone number.")
        return false;      
	}   
	if (!isnum(f)) {
        alert("\nThe phone number field only accepts digits '0-9'.\n\nPlease re-enter your phone prefix.");         
        field.select();
        return false;         
	}
    if (f.length != 4) {      
		alert("\nThe phone number field requires four digits.\n\nPlease re-enter your phone number.")      
        return false;      
	}
    
    // OK
    return true;
}

function _check_p_ext(field) {
    var f = field.value;
	
    if (!isnum(f)) {
        alert("\nThe phone extension field only accepts digits '0-9'.\n\nPlease re-enter your phone extension.");         
        field.select();
        return false;         
	}

    // OK
    return true;
}

/* FAX */

function _check_f_area(field) {
    var f = field.value;
  	if (f.length == 0 || f == " ") {      
		alert("The area code field of your fax number is blank.\n\nPlease enter your area code.");      
        return false;      
	}   
    if (!isnum(f)) {
        alert("\nThe area code field only accepts digits '0-9'.\n\nPlease re-enter your area code.");         
        field.select();
        return false;         
    }      
    if (f.length != 3) {      
		alert("\nThe area code requires three digits.\n\nPlease re-enter your area code.")      
        return false;      
	}
	
    // OK
    return true;
}

function _check_f_prefix(field) {
	var f = field.value;
    
    if (f.length == 0 || f == " ") {      
		alert("\nThe prefix field of your fax number is blank.\n\nPlease enter your fax prefix.")      
        return false;      
	}   
	if (!isnum(f)) {
        alert("\nThe prefix field only accepts digits '0-9'.\n\nPlease re-enter your fax prefix.");         
        field.select();
        return false;         
	}
    if (f.length != 3) {      
		alert("\nThe prefix field of your fax number requires three digits.\n\nPlease re-enter your fax prefix.")      
		return false;      
	}   
	
    // OK
    return true;
}

function _check_f_number(field) {
    var f = field.value;
	
    if (f.length == 0 || f == " ") {      
		alert("\nThe fax number field of your fax number is blank.\n\nPlease enter your fax number.")
        return false;      
	}   
	if (!isnum(f)) {
        alert("\nThe fax number field only accepts digits '0-9'.\n\nPlease re-enter your fax prefix.");         
        field.select();
        return false;         
	}
    if (f.length != 4) {      
		alert("\nThe fax number field requires four digits.\n\nPlease re-enter your fax number.")      
        return false;      
	}
    
    // OK
    return true;
}

function _check_f_ext(field) {
    var f = field.value;
	
    if (f.length == 0 || f == " ") {      
		alert("\nThe fax extension field of your fax number is blank.\n\nPlease enter your fax extension.")
        return false;      
	}   
    if (!isnum(f)) {
        alert("\nThe fax extension field only accepts digits '0-9'.\n\nPlease re-enter your fax extension.");         
        field.select();
        return false;         
	}

    // OK
    return true;
}

// COMPANY //////////////////////////////////////////////////////////////////////////////////////////////////////

function _check_company(field) {
    var f = field.value;
    
    if (f.length == 0 || f == " ") {      
		alert("\nPlease enter your company name.")      
		return false;       
	}
    
    // OK
    return true;
}

function _check_company_type(field) { // is of type select 
   var f = field.options[field.selectedIndex].value;
   // field.form.other -> name of alternative company field 
   if (f == "0") {
        alert("\nPlease select a company type.")      
        return false;       
   }
   if (f.toLowerCase() == "other" && field.form.elements[OTHER].value == "" ) {      
        alert("\nPlease enter a company description.")      
        return false;       
   }
    
    // OK
    return true;
}

// BL 1/23/06
// Question /////////////////////////////////////////
function _check_question(field) {
    var f = field.value;
    
    if (f.length == 0 || f == " ") {      
		alert("\nPlease enter your question.")      
		return false;       
	}
    
    // OK
    return true;
}



// COMBINATION FUNCTIONS /////////////////////////////////////////////////////////////////////////////////////////

/* Phone Fields - check all fields composing a phone number */
function _check_phone(form) {
    if (!_chk_p_area(form.p_area))      return false;
    if (!_chk_p_prefix(form.p_prefix))  return false;
    if (!_chk_p_number(field))          return false;
    
    // OK
    return true;
}
   
function _check_fax(form) {
    if (!_chk_f_area(form.p_area))      return false;
    if (!_chk_f_prefix(form.p_prefix))  return false;
    if (!_chk_f_number(field))          return false;
    
    // OK
    return true;
}

   
// HELPER FUNCTIONS /////////////////////////////////////////////////////////////////////////////////////////////

