﻿function AllowChars(evt, sChars, AllowEnterKey) {
    // Allow only the characters specified, empty string allows all characters
    evt = (evt) ? evt : event;
    var eCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : (evt.which) ? evt.which : 0);
    if (eCode == 0) return false;
    if ((eCode == 13) || (eCode == 10)) {
        return AllowEnterKey;
    }  else if ((eCode <= 31) || (eCode == 46) || (eCode == 127)) {
        return true;    // backspace, tab, delete, iPhone backspace
    } else if (sChars.length == 0) {
        return true;
    } else if (eCode < 128) {
        return (sChars.indexOf(String.fromCharCode(eCode)) != -1);
    } else {
        // This will fall to this in the case of special characters (outside of ASCII)
        return false;
    }
}


function AllowNumeric(evt) {
    // Allow only numeric characters (use AllowNumber to allow dashes and decimals)
    evt = (evt) ? evt : event;
    var eCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : (evt.which) ? evt.which : 0);
    if ((eCode == 0) || (eCode == 10) || (eCode == 13)) return false;

    if ((eCode <= 31) || (eCode == 46) || (eCode == 127)) {
        return true;    // enter key, backspace, tab, delete, iPhone backspace
    } else if ((eCode >= 48) && (eCode <= 57)) {
        return (evt.shiftKey == false);
    } else if ((eCode >= 96) && (eCode <= 105)) {
        return (evt.shiftKey == false);     // Numeric keypad
    } else {
        return false;
    }
}

function AllowNumber(evt) {
    // Allow numbers including dashes and decmial points
    evt = (evt) ? evt : event;
    var eCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : (evt.which) ? evt.which : 0);
    if ((eCode == 0) || (eCode == 10) || (eCode == 13)) return false;

    if ((eCode <= 31) || (eCode == 46) || (eCode == 127)) {
        return true;    // enter key, backspace, tab, delete, iPhone backspace
    } else if ((eCode >= 48) && (eCode <= 57)) {
        return (evt.shiftKey == false);
    } else if ((eCode >= 96) && (eCode <= 105)) {
        return (evt.shiftKey == false);     // Numeric keypad
    } else if ((eCode == 110) || (eCode == 111) || (eCode == 190) || (eCode == 191)) {    
        return true;        // dash or decimal points      
    } else {
        return false;
    }
}


function AllowDate(evt) {
    // Allow only numeric and dashes or slashes
    evt = (evt) ? evt : event;
    var eCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : (evt.which) ? evt.which : 0);
    if ((eCode == 0) || (eCode == 10) || (eCode == 13)) return false;

    if ((eCode <= 46) || (eCode == 127)) {
        return true;    // enter key, backspace, tab, delete, iPhone backspace
    } else if ((eCode >= 48) && (eCode <= 57)) {
        return (evt.shiftKey == false);
    } else if ((eCode >= 96) && (eCode <= 105)) {
        return (evt.shiftKey == false);     // Numeric keypad
    } else if ((eCode == 109) || (eCode == 111) || (eCode == 189) || (eCode == 191)) {    
        return true;        // dash or slash
    } else {
        return false;
    }
}

function CodeFinder(evt, sChars) {
    // Allow only the characters specified, empty string allows all characters
    evt = (evt) ? evt : event;
    var eCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : (evt.which) ? evt.which : 0);
    if (eCode == 0) return false;
    return eCode;
}
