/*************************************************************************************
** This file contains custom element functions, they are mostly because IE and FF	**
** use different names for functions, so that we can call a single function and		**
** that function choses the correct way to call it, based on what browser			**
** the user us using.																**
**************************************************************************************/
var cEmptyClick = "javascript:void(0)";

function attachEvt(pvEl, pvEvent, pvFunc)
{
	if (isIE) { pvEl.attachEvent("on" + pvEvent, pvFunc); }
	else { pvEl.addEventListener(pvEvent, pvFunc, false); }
}

function detachEvt(pvEl, pvEvent, pvFunc)
{
	if (isIE) { pvEl.detachEvent("on" + pvEvent, pvFunc); }
	else { pvEl.removeEventListener(pvEvent, pvFunc, false); }
}

function getTargetEl(evt)
{
	if (isIE) { return evt.srcElement; }
	else { return evt.target; }
}

function getKeyCode(evt)
{
	if (isIE) { return evt.keyCode; }
	else { return evt.which; }
}

function mouseLeft(evt)
{
	return (isIE && (evt.button == 1)) || (!isIE && (evt.button == 0));
}

function mouseOver()
{
	return (isIE) ? "mouseenter" : "mouseover";
}

function mouseOut()
{
	return (isIE) ? "mouseleave" : "mouseout";
}

function preventDefault(evt)
{
	if (!evt) { evt = event; }
	if (isIE) { evt.keyCode = 0; }
	else { evt.preventDefault(); }
	evt.returnValue = false;
	evt.cancelBubble = true;
	return false;
}

function disableFunctionKey(evt)
{
	var lvKeyCode = getKeyCode(evt);
	if ((lvKeyCode > 111) && (lvKeyCode < 124)) { return preventDefault(evt); }
	else { return true; }
}

function fireEvent(pvElement, pvEventName)
{
	if (document.createEventObject)
	{
		// dispatch for IE
		var evt = document.createEventObject();
		return pvElement.fireEvent("on" + pvEventName, evt);
	}
	else
	{
		// dispatch for firefox + others
		var evt = document.createEvent("HTMLEvents");
		evt.initEvent(pvEventName, true, true); // event type,bubbling,cancelable
		return !pvElement.dispatchEvent(evt);
	}
}