/* 
	Wrappers for handling IE events
*/
var sUserAgent = navigator.userAgent;
var isIE = sUserAgent.indexOf("compatible") > -1
		   && sUserAgent.indexOf("MSIE") > -1;
var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");

var EventUtil = new Object;

EventUtil.addEventHandler = 
function (oTarget, sEventType, fnHandler) 
{
	if (oTarget.addEventListener) 
	{
	oTarget.addEventListener(sEventType, fnHandler, false);
	}
	else if (oTarget.attachEvent) 
	{
		oTarget.attachEvent("on"+sEventType, fnHandler);
	}
	else
	{
		oTarget["on" + sEventType] = fnHandler;
	}
};

EventUtil.removeEventHandler = 
function (oTarget, sEventType, fnHandler) 
{
	if (oTarget.removeEventListener) 
	{
	oTarget.removeEventListener(sEventType, fnHandler, false);
	}
	else if (oTarget.detachEvent) 
	{
		oTarget.detachEvent("on"+sEventType, fnHandler);
	}
	else
	{
		oTarget["on" + sEventType] = fnHandler;
	}
};

EventUtil.formatEvent = 
function (oEvent)
{
	if (isIE && isWin) 
	{
		oEvent.charCode = (oEvent.type == "keypress") ? oEvent.keyCode : 0;
		oEvent.eventPhase = 2;
		oEvent.isChar = (oEvent.charCode > 0);
		oEvent.pageX = oEvent.clientX + document.body.scrollLeft;
		oEvent.pageY = oEvent.clientY + document.body.scrollTop;
		oEvent.preventDefault = function () {
			this.returnValue = false;
		}
		if (oEvent.type == "mouseout") {
			oEvent.relatedTarget = oEvent.toElement;
		} else if (oEvent.type == "mouseover") {
			oEvent.relatedTarget = oEvent.fromElement;
		}
		oEvent.stopPropagation = function () {
			this.cancelBubble = true;
		}
		oEvent.target = oEvent.srcElement;
		oEvent.time = (new Date).getTime();
	}
	return oEvent;
};

EventUtil.getEvent =
function ()
{
	if (window.event) 
	{
		return this.formatEvent(window.event);
	} 
	else 
	{
		return EventUtil.getEvent.caller.arguments[0];
	}
};

var TextUtil = new Object();

TextUtil.isNotMax = function(oTextArea) {
	return oTextArea.value.length != oTextArea.getAttribute("maxlength");
}

TextUtil.validDate = function(oInput, oEvent) {
	oEvent = EventUtil.formatEvent(oEvent);
	
	var charCode = oEvent.charCode || oEvent.keyCode; // Depends on browser IE uses keyCode
   if (charCode == 13) {	// RETURN - do a submit
      oInput.parentNode().submit();
      return 1;
	}
	if (oEvent.ctrlKey || oEvent.charCode == 0 || oEvent.charCode == oEvent.DOM_VK_RETURN || oEvent.charCode == oEvent.DOM_VK_TAB || oEvent.charCode == oEvent.DOM_VK_DELETE || oEvent.charCode == oEvent.DOM_VK_BACK_SPACE) {return 1;};
	var nums = "0123456789";
	var sChar = String.fromCharCode(oEvent.charCode);
	var val = oInput.value;
	var len = oInput.value.length;
	if (len == 4 || len == 7) {
		oInput.value = val + "-";
	} else if (len == 13 || len == 16) {
		oInput.value = val + ":";
	} else if (len == 10) {
		oInput.value = val + "T";
	}
	return ((nums.indexOf(sChar) > -1));
}

TextUtil.submitOnReturn = function(oInput, oEvent) {
        oEvent = EventUtil.formatEvent(oEvent);

   if (oEvent.charCode == oEvent.DOM_VK_RETURN) {
      oInput.parentNode().submit();
	}
	return 1;
}
