/*
 * Purpose: Provide input validation and phone masking
 * 
 * Created: 2/3/2009
 * Last edited: 2/6/2009
 */
;(function($){
    var message = '', str = '',prettyPhone = '', phoneIndex='';
    var eles = {};
    var regPhone = /^\d{7}$|^\d{10}$/; 
    var regZipcode = /^\d{5}$/;
    var regNumeric = /^\d+$/;
    
    var isNumeric = function(ele){
        ele.value = ele.value.replace(/\D/g,'');
        return regNumeric.test(ele.value);    
    };
    var validPhone = function(ele){
        if(isNumeric(ele)){
            return regPhone.test(ele.value);
        }
        return false;
    };
    var validName = function(ele){
        ele.value = ele.value.replace(/\s/g,''); 
        return (ele.value.length > 0);
    };
    var validZipcode = function(ele){
        if(isNumeric(ele)){
            return regZipcode.test(ele.value);
        }
        return false;
    };

    var validate = function(){
        message = '';
        eles = this.elements;
				btnSubmit = document.getElementById('preOrdSbmt');
				msgProc = document.getElementById('msgProcessing');
				btnSubmit.style.visibility = 'hidden';
				msgProc.style.visibility = 'visible';
        for (var i = 0; eles[i]; i++) {
            switch (eles[i].name) {
                case 'firstname':
                    if (!validName(eles[i])) {
                        message += "Please enter your first name.\n";
                    }
                    break;
                case 'lastname':
                    if (!validName(eles[i])) {
                        message += "Please enter your last name.\n";
                    }
                    break;
								case 'address':
                    if (!validName(eles[i])) {
                        message += "Please enter your address.\n";
                    }
                    break;
                case 'phone':
                    prettyPhone = eles[i].value;
                    phoneIndex = i;
                    if (!validPhone(eles[i])) {
                        message += "Please enter your phone number.\n";
                    }
                    break;
                case 'zipcode':
                    if (!validZipcode(eles[i])) {
                        message += "Please enter your zip code.\n"
                    }
                    break;
							  case 'city':
                    if (!validName(eles[i])) {
                        message += "Please enter your city.\n"
                    }
                    break;								
							  case 'STATECODE':
                    if (!validName(eles[i])) {
                        message += "Please select your state.\n"
                    }
                    break;
								case 'email':
                    if (eles[i].value==='') {
                        message += "Please enter your email address.\n"
                    }
                    break;
								case 'comments':
                    if (eles[i].value==='') {
                        eles[i].value='No Comments Entered'
                    }
                    break;
            }
        };
        if (message.length > 0) {
            eles[phoneIndex].value = prettyPhone; //Validation failed put pretty version back in.
            alert(message);
						btnSubmit.style.visibility = 'visible';
						msgProc.style.visibility = 'hidden';
        }
				//msgProc.style.visibility = 'visible';
        return (message.length === 0);
        
    };
    window.onload = function(){
        //pointer to our form
        var formPtr = document.forms[1]; 
				var formPtr2 = document.forms[0];
        if(typeof formPtr !== 'undefined'){
            formPtr.onsubmit = validate;
        }
        if(typeof formPtr2 !== 'undefined'){
            formPtr2.onsubmit = validate;
        }				
        $("input.phone").mask("(999) 999-9999");
    };
})(jQuery);  