﻿
// below function is a slightly modified form of the function found in the below url
// http://weblogs.asp.net/mhildreth/archive/2007/12/03/enforcing-textbox-maxlength-with-ms-ajax.aspx 
// [aa, 6/27/2008] 

function handleKeyPress(e) {
//debugger;
    var domEvent = new Sys.UI.DomEvent(e);
    // Hack to accomodate Firefox inconsistencies with the keyCode
    if (Sys.Browser.agent == Sys.Browser.Firefox && e.keyCode && (e.keyCode === 46)) {
        domEvent.keyCode = 127;
    } else {
        domEvent.keyCode = e.keyCode;
    }
    
    var textarea = domEvent.target;
    var maxlength = parseInt(textarea.getAttribute("maxlength"));
    var charCode = domEvent.charCode;
    var textareaValue = textarea.value;		
    // Hack to accomodate IE inconsistencies with whitespace
    textareaValue = textareaValue.replace(/\r\n/g, '\n');
    var actualLength = textareaValue.length;

    if (actualLength >= maxlength) {
        switch(domEvent.keyCode) {
            case Sys.UI.Key.backspace:
            case Sys.UI.Key.tab:
            case Sys.UI.Key.esc:
            case Sys.UI.Key.end:
            case Sys.UI.Key.home:
            case Sys.UI.Key.left:
            case Sys.UI.Key.up:
            case Sys.UI.Key.right:
            case Sys.UI.Key.down:
            case Sys.UI.Key.del:
                return true;
            case Sys.UI.Key.enter:
            case Sys.UI.Key.space:
                e.returnValue = false ;
                return false;
            default: {
                // Handle highlight/replace operations
                if (document.selection) {
                    var range = document.selection.createRange();
                    var rangeElement = range.parentElement();
                    if (rangeElement == textarea) {
                        if (range.text.length > 0) {
                            return true;
                        }
                    }
                } else if (textarea.selectionStart < textarea.selectionEnd) {
                    return true;
                }
            }
        }
        // Hack to accomodate Safari inconsistencies with the keyCode
        if (domEvent.keyCode == 0 && domEvent.charCode == 0) {
            return true;
        }
        e.returnValue = false ;
        return false;
    }
    return true;
}

  //case Sys.UI.Key.pageUp:
  //case Sys.UI.Key.pageDown: