function IsEmail(str) {
    supported = 0;

    if(window.RegExp) {
        tempStr = "a";
        tempReg = new RegExp(tempStr);
        if(tempReg.test(tempStr))
            supported = 1;
    }

    if(!supported)
        return(str.indexOf(".") > 2) && (str.indexOf("@") > 0);

    r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
    r2 = new RegExp("^.+\\@[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,4})([ ]*)$");
    return(!r1.test(str) && r2.test(str));
}

function IsName(str) {
    r1 = new RegExp("^[a-zA-Z]+[-a-zA-Z' ]+[ ]*$");
    //r2 = new RegExp("[AaEeIiOoUuYy]+");
    return(r1.test(str));
}

function IsAddress(str) {
    r1 = new RegExp("[a-zA-Z]+"); 
    r2 = new RegExp("[0-9]+");
    return(r1.test(str) && r2.test(str));
}

function IsZipcode(str) {
    r1 = new RegExp("^([ ]*)([0-9]{5})([ ]*)$");
    r2 = new RegExp("^([ ]*)([A-Za-z][0-9][A-Za-z][ ]?([0-9][A-Za-z][0-9])?)([ ]*)$");

    if(str.indexOf("-") == 5) 
        str = str.substring(0,5);

    return(r1.test(str) || r2.test(str));
}

function IsPhoneAreaCode(str) {
    with(new RegExp("[2-9][0-9]{2}"))
        return(test(str));
}

function IsPhonePrefix(str) { 
    r1 = new RegExp("[0-9]{3}");
    r2 = new RegExp("000|555");
    return(r1.test(str) && !r2.test(str));
}

function IsPhoneSuffix(str) {
    with(new RegExp("[0-9]{4}"))
        return(test(str));
}

function IsPhoneExtension(str) {
    with(new RegExp("^[0-9]*$"))
        return(test(str));
}

function IsValidPhone(str) { 
    r = new RegExp("[1]{7}|[2]{7}|[3]{7}|[4]{7}|[5]{7}|[6]{7}|[7]{7}|[8]{7}|[9]{7}");
    return(!r.test(str));
}

function IsValidPhoneSingle(str) {
    a = p = s = e = ""; 
    idx = 0;
    
    for (var i = 0; i < str.length; i++) { 
        n = str.substr(i, 1); 
        if ((new RegExp("[0-9]")).test(n)) {
            if (idx < 3)
                a += n;
            else if (idx < 6)
                p += n;
            else if (idx < 10)
                s += n;
            else
                e += n;
            idx++;
        }
    }
    res = IsPhoneAreaCode(a) && IsPhonePrefix(p) && IsPhoneSuffix(s);
    return res && (e.length == 0 || (e.length > 0 && IsPhoneExtension(e))) && IsValidPhone(p + s);
}

function IsSSN(str) {
    r1 = new RegExp("^([0-7]{1}[0-9]{8})$");
    r2 = new RegExp("[0]{9}|[1]{9}|[2]{9}|[3]{9}|[4]{9}|[5]{9}|[6]{9}|[7]{9}|123456789|111223333|123121234");
    return(r1.test(str) && !r2.test(str));
}

function IsDate(y,m,d) {
    with(new Date(y,m-1,d))
        return((getDate() == d) && (getMonth() == m - 1));
}

function IsEmpty(str) {
    strObj = new String(str);
    r = /(\s+)/g;
    strObj = strObj.replace(r, "");
    if(strObj.length == 0)
        return true;
    else 
        return false;
}

function IsNumeric(str) {
    r1 = new RegExp("^[$]?[0-9]+([.]{1}[0-9]{2})?$"); 
    r2 = new RegExp("^[$]?[0-9]+([,][0-9]{3})+([.]{1}[0-9]{2})?$"); 
    return(r1.test(str) || r2.test(str));
}

function IsFloat(str) {
    r1 = new RegExp("^[0-9]+([.]{1}([0-9]*))?$"); 
    r2 = new RegExp("^[0-9]+([,][0-9]{3})+([.]{1}([0-9]*))?$"); 
    return(r1.test(str) || r2.test(str));
}
