﻿function addEvent(el, evname, func) 
{
	if (el.attachEvent) { // IE
		el.attachEvent("on" + evname, func);
	} else if (el.addEventListener) { // Gecko / W3C
		el.addEventListener(evname, func, true);
	} else {
		el["on" + evname] = func;
	}
};

var is_ie = ( /msie/i.test(navigator.userAgent) &&
		   !/opera/i.test(navigator.userAgent) );
		   
function StopEvent(event) 
{
    if (event.preventDefault) 
    { 
      event.preventDefault(); 
      event.stopPropagation(); 
    } 
    else 
    {
      event.returnValue = false;
    }
  }

// Keep user from entering more than maxLength characters
function doKeypress(ev)
{
  var element = (is_ie) ? window.event.srcElement : ev.currentTarget;
  var maxLength = element.attributes.getNamedItem("maxLength").value;
  if(!isNaN(maxLength))
	{
		maxLength = parseInt(maxLength);
		var selectionLength = (is_ie) ? document.selection.createRange().text.length
		    : (element.selectionEnd - element.selectionStart);
		// Allow user to type character if at least one character is selected
		if (selectionLength < 1 && element.value.length > maxLength-1 
		    && (is_ie || ev.charCode))
			StopEvent(ev);
	}
}
// Cancel default behavior
function doBeforePaste(ev)
{
    var element = (is_ie) ? window.event.srcElement : ev.currentTarget;
    var maxLength = element.attributes.getNamedItem("maxLength").value;
	  if(!isNaN(maxLength))
	    StopEvent(ev);
}
// Cancel default behavior and create a new paste routine
function doPaste(ev)
{
	if (window.clipboardData == null || document.selection == null)
	  return;

  var element = (is_ie) ? window.event.srcElement : ev.currentTarget;
  var maxLength = element.attributes.getNamedItem("maxLength").value;
	if(!isNaN(maxLength))
	{
		ev.returnValue = false;
		var maxLength = parseInt(maxLength);
		var selectionLength = (is_ie) ? document.selection.createRange().text.length
		    : (element.selectionEnd - element.selectionStart);
		var iInsertLength = maxLength - element.value.length + selectionLength;
    var sData = window.clipboardData.getData("Text").substr(0,iInsertLength);
    document.selection.createRange().text = sData;
//		    element.value = element.value.substring(0, selectionStart) 
//		        + sData 
//		        + element.value.substring(element.selectionEnd, element.value.length);
	}
}

