﻿function numbersOnly(evt) {
    //re = /\D/g; // remove any characters that are not numbers
    //tbx.value = tbx.value.replace(re, "")

    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;

    return true;

    
}


function formatPhone(tbx) 
{
    re = /\D/g; // remove any characters that are not numbers
    socnum = tbx.value.replace(re, "")
    sslen = socnum.length
    if (sslen > 3 && sslen < 7) {
        ssa = socnum.slice(0, 3)
        ssb = socnum.slice(3, 6)
        tbx.value = ssa + "-" + ssb
    }
    else {
        if (sslen > 6) {
            ssa = socnum.slice(0, 3)
            ssb = socnum.slice(3, 6)
            ssc = socnum.slice(6, 10)
            tbx.value = ssa + "-" + ssb + "-" + ssc
        }
        else
        { tbx.value = socnum }
    }
}

function formatState(tbx) 
{
    var a = tbx.value.toUpperCase();
    tbx.value = a;
}

function LettersOnlyUpperCase(evt) 
{
    var charCode = (evt.which) ? evt.which : event.keyCode
    if ( (charCode < 91 && charCode > 64) || (charCode < 122 && charCode > 97))
        return true;

    return false;
     
}

function numbersOnlyMoney(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode != 46 && (charCode < 48 || charCode > 57))
        return false;
    
    return true;
}

function fixMoney(amount) {
    s = amount.value;
    if (s.indexOf('.') < 0) { s += '.00'; }
    if (s.indexOf('.') == (s.length - 2)) { s += '0'; }
    if (s.indexOf('.') == (s.length - 1)) { s += '00'; }
    amount.value = s;
}


////////////////////////////////////////////DATE///////////////////////////////////////////////////////////////
function isDate(sender, args) {
    var myDate = new String(args.value);
    var delimiterFirstInstance;
    var delimiterSecondInstance;
    var delimiterType;
    var monthPart;
    var dayPart;
    var yearPart;

    //accepts delimiting characters of either "/" or "-"
    delimiterFirstInstance = myDate.indexOf("/");
    if (delimiterFirstInstance == -1) {
        //check for the other allowed delimiter
        delimiterFirstInstance = myDate.indexOf("-");
        //if it is still not found, return false
        if (delimiterFirstInstance == -1) {
            args.IsValid = false;
            return false;
        }
        delimiterType = "-";
    }
    else {
        delimiterType = "/";
    }

    delimiterSecondInstance = myDate.indexOf(delimiterType, (delimiterFirstInstance + 1));
    if (delimiterSecondInstance == -1) {
        args.IsValid = false;
        return false;
    }

    monthPart = myDate.substring(0, delimiterFirstInstance);
    if (validateMonth(monthPart) == false) {
        args.IsValid = false;
        return false;
    }

    yearPart = myDate.substring((delimiterSecondInstance + 1), (myDate.length));

    if (validateYear(yearPart) == false) {
        args.IsValid = false;
        return false;
    }

    dayPart = myDate.substring((delimiterFirstInstance + 1), (delimiterSecondInstance));
    if (validateDay(monthPart, dayPart, yearPart) == false) {
        args.IsValid = false;
        return false;
    }
    
    args.IsValid = true;
    return true;
    
}

function validateDay(m, d, y) {
    if ((isNaN(d)) || d == "") {
        return false;
    }

    var mo = parseInt(m, 10);
    var da = parseInt(d, 10);
    var ye = parseInt(y, 10);

    if (da < 1) {
        return false;
    }

    if ((mo == 4) || (mo == 6) || (mo == 9) || (mo == 11)) {
        //it is a 30 day month
        if (da > 30) {
            return false;
        }
    }
    else if (mo == 2) {
        // it is february (either 28 or 29 depending on leap year)
        if (isLeapYear(ye) == true) {
            if (da > 29) {
                //leap years have 29 days in february
                return false;
            }
        }
        else {
            if (da > 28) {
                //non leap years have 28 days in february
                return false;
            }
        }
    }
    else {
        // it is a 31 day month
        if (da > 31) {
            return false;
        }
    }
    //if we made it through all of the above without falling out,
    //it must be a valid day for the given month and year
    return true;
}

function validateMonth(mnth) {
    if ((isNaN(mnth)) || mnth == "") {
        return false;
    }

    var intMonth = parseInt(mnth, 10);
    if ((intMonth < 1) || (intMonth > 12)) {
        return false; //month must be between 1 and 12 (inclusive)
    }
    else {
        return true;
    }
}

function fixYear(yr) {
    if (yr.length == 2) {
        if (yr >= 25) {
            yr = '19' + yr
        }
        else {
            yr = '20' + yr
        }
    }
    return yr
}

function validateYear(yr) {
    if ((isNaN(yr)) || yr == "") {
        return false;
    }

    if (yr.length == 2) {
        yr = fixYear(yr);
    }

    var intYear = parseInt(yr, 10);

    if ((intYear < 1800) || (intYear > 9999)) {
        return false; //year must be between 1800 and 9999 (inclusive)
    }
    else {
        return true;
    }
}

function isLeapYear(yr) {
    if (((yr % 4 == 0) && (yr % 100 != 0)) || (yr % 400 == 0)) {
        return true;
    }
    else {
        return false;
    }
}

function fixDate(field) {
    if (!isDate(field) && field.value != '') {
        var dt = field.value;
        var m, d, y;

        m = dt.substring(0, 2);
        d = dt.substring(2, 4);

        if (dt.length == 6) {
            y = dt.substring(4, 6);
            y = fixYear(y)
        }
        else if (dt.length == 8) {
            y = dt.substring(4, 8);
        }
        else {
            alert('Invalid date');
            return;
        }

        field.value = m + '/' + d + '/' + y;
        return;
    }
    else {
        return;
    }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



