// BEGIN GENERAL VALIDATE

// Define regular expression objects

// one or more non-zero digits
var digits_re = /[1-9]+/;

// money
var money_re = /^[1-9]+[.]+([0-9]{2})$/;

// one or more digits
var non_digits_global_re = /\D+/g;

// one or more letters
var letter_re = /^[A-Za-z]+/;

// one or more letters or numbers
var alpha_re = /^[A-Za-z0-9]+/;

// one or more letters or numbers
var non_alpha_re = /\W+/g;







// Zip code [USA]
var reZIP = /^\d{5}([\-\+])*(\d{4})?$/

// Zip code [CANADA]
var reZIPc = /^([a-zA-Z][0-9][a-zA-Z])\s*([0-9][a-zA-Z][0-9])$/








function isLetter(sElement, sErrorText){
    if(!sElement){
        alert("This field is undefined. It's errortext is: " + sErrorText);
        return false;
    }
    var ltrVal = sElement.value.search(letter_re);
	if(ltrVal == -1){
		sElement.focus();
		if(arguments.length > 1){
		    alert("You must enter " + sErrorText + ".");
		}
		return false;
	} else {
	    return true;
	}
}

function isMoney(sElement, sErrorText){
    if(!sElement){
        alert("This field is undefined. It's errortext is: " + sErrorText);
        return false;
    }
    var MnyVal = sElement.value.search(money_re);
	if(MnyVal == -1){
		sElement.focus();
		if(arguments.length > 1){
		    alert("You must enter " + sErrorText + ".");
		}
		return false;
	} else {
	    return true;
	}
}

function isDigit(sElement, sErrorText){
    if(!sElement){
        alert("This field is undefined. It's errortext is: " + sErrorText);
        return false;
    }
    var DgtVal = sElement.value.search(digits_re);
	if(DgtVal == -1){
		sElement.focus();
		if(arguments.length > 1){
		    alert("You must enter " + sErrorText + ".");
		}
		return false;
	} else {
	    return true;
	}
}

function isAlpha(sElement, sErrorText){
    if(!sElement){
        alert("This field is undefined. It's errortext is: " + sErrorText);
        return false;
    }
    var ltrVal = sElement.value.search(alpha_re);
	if(ltrVal == -1){
		sElement.focus();
		if(arguments.length > 1){
		    alert("You must enter " + sErrorText + ".");
		}
	} else {
	    return true;
	}
}

function isPhone(sAreaCode, sPrefix, sSuffix, sPhoneOut, ErrorText){
    
    if((!isDigit(sAreaCode)) || (sAreaCode.value.length < 3)){
        sAreaCode.focus();
		alert("You must enter " + ErrorText +".");
		return false;
    }
    if((!isDigit(sPrefix, ErrorText)) || (sPrefix.value.length < 3)){
        sPrefix.focus();
		alert("You must enter " + ErrorText +".");
		return false;
	}
    if((!isDigit(sSuffix, ErrorText)) || (sSuffix.value.length < 4)){
        sSuffix.focus();
		alert("You must enter " + ErrorText +".");
		return false;
	}
    sPhoneOut.value = "(" + sAreaCode.value + ") " + sPrefix.value + "-" + sSuffix.value;
    return true;
}

function isZipCode(sElement, ErrorText){
    var zipVal = sElement.value.search(reZIP);
	if(zipVal == -1){
		// IF FAILS, CHECK IF IT'S CANADIAN
		zipVal = sElement.value.search(reZIPc);
	}
	if(zipVal == -1){
//    if((sElement.length < 5) || !(isDigit(sElement, ErrorText))){
        sElement.focus();
		alert("You must enter " + ErrorText +".");
		return false;
	} else {
	    return true;
	}
}








function isStrPhone(sElement){
    var phone_re = (/^\(?[0-9]{3}\)?|[0-9]{3}[- ]?[0-9]{3}[- ]?[0-9]{4}$/);
    if(!sElement){
        alert("This field is undefined. It's errortext is: " + sErrorText);
        return false;
    }
    var PhoneVal = sElement.value.search(phone_re);
	if(sElement.value == ""){
		sElement.focus();
	    alert("Please enter a valid phone number.\nFormat: (111) 111-1111 or 1111111111 or similar to these formats.\n");
	    return false;
	}
	if(PhoneVal == -1){
		sElement.focus();
	    alert(sElement.value + " is an invalid entry.\nThe valid format is: (111) 111-1111 or 1111111111 or similar to these formats.\nPlease correct your entry.\n");
	} else {
	    return true;
	}
}

function miUp(sElement){
    if(sElement){
        sElement.value = sElement.value.toUpperCase();
    }
    return true;
}
// END GENERAL VALIDATE
