﻿String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };
var StrShiftPressed = false;
var NumShiftPressed = false;
var keycodes = new Array();
function get_keyboard_codes() {
    keycodes = {
        8: "backspace",
        9: "tab",
        13: "enter",
        16: "shift",
        17: "ctrl",
        18: "alt",
        19: "pause/break",
        20: "caps lock",
        27: "escape",
        33: "page up",
        34: "page down",
        35: "end",
        36: "home",
        37: "left arrow",
        38: "up arrow",
        39: "right arrow",
        40: "down arrow",
        45: "insert",
        46: "delete",
        48: "0",
        49: "1",
        50: "2",
        51: "3",
        52: "4",
        53: "5",
        54: "6",
        55: "7",
        56: "8",
        57: "9",
        91: "left window",
        92: "right window",
        93: "select key",
        96: "0",
        97: "1",
        98: "2",
        99: "3",
        100: "4",
        101: "5",
        102: "6",
        103: "7",
        104: "8",
        105: "9",
        106: "multiply",
        107: "add",
        109: "subtract",
        110: ".",
        111: "divide",
        112: "F1",
        113: "F2",
        114: "F3",
        115: "F4",
        116: "F5",
        117: "F6",
        118: "F7",
        119: "F8",
        120: "F9",
        121: "F10",
        122: "F11",
        123: "F12",
        144: "num lock",
        145: "scroll lock",
        186: ";",
        187: "=",
        188: ",",
        189: "-",
        190: ".",
        191: "/",
        192: "`",
        219: "[",
        220: "\\",
        221: "]",
        222: "'"
    };
    return keycodes;
}
function AddNumericValidations(obj, enableDecimal, maxDecPoint, maxLength, minValue, maxValue, errMsg) {    
    if (obj != null) {
        obj.ondrop = function() {            
            return false;
        }
        obj.onkeydown = function(evt) {               
            code = evt?evt.keyCode:event.keyCode;                       
            return NumericValidations(code, obj, enableDecimal, maxDecPoint, maxLength, minValue, maxValue, errMsg);
        }
        obj.onkeyup = function(evt){
            code = evt?evt.keyCode:event.keyCode;
            if(code==16) NumShiftPressed = false;
        }
        obj.onpaste = function() {
            return NumericValidation_OnPaste(obj, enableDecimal, maxDecPoint, maxLength, minValue, maxValue, errMsg);
        }        
    }
}
function NumericValidations(code, obj, enableDecimal, maxDecPoint, maxLength, minValue, maxValue, errMsg) {        
    value = obj.value;        
    if (code == 16 ) { NumShiftPressed = true; }
    if(NumShiftPressed == true) return false;
    
    if (code == 8 || code == 46) { return true; }    
    if ((code >= 48 && code <= 57) || (code >= 96 && code <= 105) || code == 8 || code == 9 || code == 17 || code == 18 || code == 35 || code == 36 || code == 37 || code == 39 || code == 46 || code == 116 || (enableDecimal == 1 && (code == 110 || code == 190))) {
        keycodes = get_keyboard_codes();        
        var sCharacter;                
        for (key in keycodes) {            
            if (code == key) {                
                sCharacter = keycodes[key];
                if (sCharacter == ".") {
                    for (i = 0; i < value.length; i++) {
                        c = value.substring(i, i + 1);
                        if (c == ".") { return false; }
                    }
                }                                  
                value = ConcatenateValues(value, sCharacter, code);                
                if ((value.split(".").length == 2) && (maxDecPoint > 0)) {
                    if (value.split(".")[1].length > maxDecPoint) return false;
                }
                if (value > maxValue && maxValue != 0) {
                    value = value.substring(0, value.length - 1);
                    if(errMsg != "") alert(errMsg);
                    return false;
                }
                
                if (value.length > maxLength && maxLength != 0) {
                    value = value.substring(0, value.length - 1);
                    if(errMsg != "") alert(errMsg);
                    return false;
                }               
                break;
            }
        }
        //if ((event.shiftKey == 1) && ((code >= 48 && code <= 57) || (code >= 96 && code <= 105) || (code == 110 || code == 190))) return false;
        return true;
    }
    else {       
        return false;
    }
}
function MyNumericValidation555(event, obj, enableDecimal, maxDecPoint, maxLength, minValue, maxValue, errMsg) {    
    value = obj.value;    
    if (!e) var e = event;
    if (e.keyCode) code = e.keyCode; else if (e.which) code = e.which;
    
    if (code == 16 ) { return false; }
    if (code == 8 || code == 46) { return true; }    
    if ((code >= 48 && code <= 57) || (code >= 96 && code <= 105) || code == 8 || code == 9 || code == 17 || code == 18 || code == 35 || code == 36 || code == 37 || code == 39 || code == 46 || code == 116 || (enableDecimal == 1 && (code == 110 || code == 190))) {
        keycodes = get_keyboard_codes();        
        var sCharacter;
        for (key in keycodes) {
            if (code == key) {
                sCharacter = keycodes[key];                
                if (sCharacter == ".") {
                    for (i = 0; i < value.length; i++) {
                        c = value.substring(i, i + 1);
                        if (c == ".") { return false; }
                    }
                }
                value = ConcatenateValues(value, sCharacter, code);                
                if ((value.split(".").length == 2) && (maxDecPoint > 0)) {
                    if (value.split(".")[1].length > maxDecPoint) return false;
                }
                if (value > maxValue && maxValue != 0) {
                    value = value.substring(0, value.length - 1);
                    if(errMsg != "") alert(errMsg);
                    return false;
                }
                if (value.length > maxLength && maxLength != 0) {
                    value = value.substring(0, value.length - 1);
                    if(errMsg != "") alert(errMsg);
                    return false;
                }               
                break;
            }
        }
        if ((event.shiftKey == 1) && ((code >= 48 && code <= 57) || (code >= 96 && code <= 105) || (code == 110 || code == 190))) return false;
        return true;
    }
    else {
        return false;
    }
}
function NumericValidation_OnPaste(obj, enableDecimal, maxDecPoint, maxLength, minValue, maxValue, errMsg){   
    return false;
    var val = window.clipboardData.getData("Text");    
    if(enableDecimal==0 && !isNaN(val))
    {        
        obj.value = parseInt(val);
        return false;
    }
    if(enableDecimal==1 && !isNaN(val))
    {
        if(maxDecPoint > 0) obj.value = parseFloat(val).toFixed(maxDecPoint);        
        else obj.value = parseFloat(val); 
        return false;     
    }
    return false;
}
function ConcatenateValues(value, character, code) {
    if ((code >= 48 && code <= 57) || (code >= 96 && code <= 105) || (code == 110 || code == 190))
        value = value + character;
    return value;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function AddStringValidations(obj,maxLength,errMsg)
{
    if (obj != null) {
        obj.ondrop = function() {            
            return false;
        }
        obj.onkeydown = function(evt) {               
            code = evt?evt.keyCode:event.keyCode;                     
            return StringCheck(code,obj,maxLength,errMsg);
        }
        obj.onkeyup = function(evt){
            code = evt?evt.keyCode:event.keyCode;
            if(code==16) { StrShiftPressed = false; }
        }
        obj.onpaste = function() {
            return false;
        }        
    }
}
function StringCheck(code,obj,maxLength,errMsg)
{ 
    if(code==16) { StrShiftPressed = true; }
    if(StrShiftPressed == true) return false;
    if( (code==32) || (code >= 48 && code <= 57) || (code >= 65 && code <= 90) || (code >= 96 && code <= 105) )
    {        
        var val = obj.value;
        var char1 = String.fromCharCode(code);
        var value = val + char1;
        if (value.length > maxLength && maxLength != 0) {
            value = value.substring(0, value.length - 1);
            if(errMsg != "") alert(errMsg);
            return false;
        }                    
        return true;
    }
    else
    {
        var Arr = new Array(8, 9, 13, 17, 18, 33, 34, 35, 36, 37, 38, 39, 40, 46, 144);
        return CheckArray(Arr,code);
    }
    return false;
}
function MyStringCheck(event,obj,maxLength,errMsg)
{   
    if (!e) var e = event;
    if (e.keyCode) code = e.keyCode; else if (e.which) code = e.which;     
    
    if( (code >= 48 && code <= 57) || (code >= 65 && code <= 90) || (code >= 96 && code <= 105) )
    {        
        var val = obj.value;
        var char1 = String.fromCharCode(code);
        var value = val + char1;
        if (value.length > maxLength && maxLength != 0) {
            value = value.substring(0, value.length - 1);
            if(errMsg != "") alert(errMsg);
            return false;
        }                    
        return true;
    }
    else
    {
        var Arr = new Array(8, 9, 13, 17, 18, 33, 34, 35, 36, 37, 38, 39, 40, 46, 144);
        return CheckArray(Arr,code);
    }
    return false;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Limit text area length - Start
function LimitTextLength(obj, maxLength) {        
    obj.onpaste = function() {
        return LimitTextLength_OnPaste(obj, maxLength);
    }
    obj.ondrop = function() {
        return LimitTextLength_OnDrop(obj, maxLength);
    }   
    obj.onkeydown = function(evt) {                  
        code = evt?evt.keyCode:event.keyCode;         
        return LimitTextLength_OnKeyDown(code, obj, maxLength);    
    }
}

function LimitTextLength_OnKeyDown(code, obj, maxLength) {     
    value = obj.value;    
    if (parseInt(obj.value.length) >= parseInt(maxLength)) {        
        var Arr = new Array(8, 9, 13, 17, 18, 33, 34, 35, 36, 37, 38, 39, 40, 46, 144);
        return CheckArray(Arr,code);
    }
}
function CheckArray(Arr,code) 
{
    for (var a in Arr) {
        if(Arr[a] == code)
            return true;
    }
    return false;
}
function LimitTextLength_OnPaste(obj, maxLength) {     
    if(navigator.appName == "Microsoft Internet Explorer")
    {
        var val = window.clipboardData.getData("Text");       
        if (val.length > maxLength) {
            val = val.substring(maxLength, 0);
            obj.value = val;
            return false;
        }
        else {
            return true;
        }    
    }
    else
        return false;
}
function LimitTextLength_OnDrop(obj, maxLength) {
    return false;
}
// Limit text area length - End







