format ssn

tweaks and fixes for formatting ssn

by Terrance Smith

HTML

<input type="text" id="ssnfield"value="157845645"/>
<input type="button" id="tester" value="Format SSN" onclick="formatThis('ssnfield');" />

<input type="button" id="testerlegacybtn" value="Format SSN Legacy Behavior" onclick="formatThisLegacy('ssnfield');" />
<input type="button" id="validatebtn" value="Validate SSN" onclick="ValidateSSN(document.getElementById('ssnfield').value);" />

JavaScript

function isNumber(value) {
    value = value.toString().replace(/\$|\(|\)|,/g, "");
    return !isNaN(parseFloat(value)) && isFinite(value);
}

var formatSSN = function(tempSSN) {
    var retval = tempSSN.value;
    if (tempSSN.UseLegacyBehavior) {
        if (retval.length === 9 && isNumber(retval)) {
            retval = retval.substr(0, 3) + "-" + retval.substr(3, 2) + "-" + retval.substr(5, 4);
        }
    } else {
        if (retval.length === 9 && isNumber(retval)) {
            retval = retval.substr(0, 3) + "-" + retval.substr(3, 2) + "-" + retval.substr(5, 4);
        }
    }
    return retval;
};

function ValidateSSN(SSN) {
    //returns "" or error message
    var i, x, y, msg;
    SSN = SSN.toString();

    //remove common spacers
    SSN = SSN.replace("-", "");
    SSN = SSN.replace(" ", "");
    SSN = SSN.replace(".", "");

    if (SSN.length !== 9) {
        return "Social Security Number must be 9 digits (excluding hyphens or spaces).";
    }

    msg = "Invalid Social Security Number.";
    var re = /^[0-9]+$/;
    if (!(SSN.match(re))) {
        return msg;
    }

    //check for 8 repeating numbers
    y = 11111111;
    for (i = 1; i <= 9; i++) {
        if (SSN.indexOf(y.toString()) > -1) {
            return msg;
        }
        y += 11111111;
    }

    if (SSN == "123456789" || SSN == "987654321") {
        return msg;
    }

    // http://www.usrecordsearch.com/ssn.htm
    // http://www.socialsecurity.gov/employer/stateweb.htm
    if (SSN.substr(0, 3) === "000" || SSN.substr(0, 3) === "666" || SSN.substr(3, 2) === "00" || SSN.substr(5, 4) === "0000") {
        return msg;
    }

    return "";
}

function isValidSSN(value) {
    var temp = value;

    if (isNumber(value) === false && value.toString().length != 9) {
        var re = /^([0-6]\d{2}|7[0-6]\d|77[0-2])([ \-]?)(\d{2})\2(\d{4})$/;
        if (!re.test(value)) {
            return false;
        }
        if (value.indexOf("-") != -1) {
            temp =...