var defaultEmptyOK = false;
var phoneNumberDelimiters = "()- ";
var digitsInUSPhoneNumber = 10;
var reInteger = /^\d+$/

function validEmail(el) {
    var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
    var i = 1; 
    var sLength = el.length;
    while ((i < sLength) && (el.charAt(i) != ".")) { 
        i++ 
    }
    var regex = new RegExp(emailReg);
    if ((regex.test(el)) && (el.charAt(i) == ".")) {
        return true;
	} else {
		return false;
    }
}

function setColor(el, bg) {
  	if (el.style) el.style.backgroundColor = bg;
}

function isEmpty(s) {   
    return ((s == null) || (s.length == 0))
} 

function isInteger (s) {   
    var i;
    if (isEmpty(s)) {
        if (isInteger.arguments.length == 1) {
            return defaultEmptyOK;
        } else {
            return (isInteger.arguments[1] == true);
        }
    }
    return reInteger.test(s)
}

function stripCharsInBag (s, bag) {   
    var i;
    var returnString = "";
    for (i = 0; i < s.length; i++) {   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkUSPhone(el, emptyOK) {   
    
    if (checkUSPhone.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(el))) {
        return true;
    } else {  
        var normalizedPhone = stripCharsInBag(el, phoneNumberDelimiters);
        if (!isUSPhoneNumber(normalizedPhone, false)) {
            return false;
        } else {  // if you don't want to reformat as (123) 456-789, comment next line out
            el.value = reformatUSPhone(normalizedPhone);
            return true;
        }
    }
}

function reformatUSPhone(USPhone) {   
    return (reformat(USPhone, "(",3,") ",3,"-",4))
}

function isUSPhoneNumber (s)
{   if (isEmpty(s)) 
       if (isUSPhoneNumber.arguments.length == 1) return defaultEmptyOK;
       else return (isUSPhoneNumber.arguments[1] == true);
    return (isInteger(s) && s.length == digitsInUSPhoneNumber)
}

function reformat(s) {   
    var arg; var sPos = 0; var resultString = "";
    for (var i = 1; i < reformat.arguments.length; i++) {
        arg = reformat.arguments[i];
        if (i % 2 == 1) {
            resultString += arg;
        } else {
            resultString += s.substring(sPos, sPos + arg);
            sPos += arg;
        }
    }
    return resultString;
}