/** +----------------------------------------------------------------+
*   | Author: www.program-ace.com                                    |
*   | 2005 Copyright (c) Program-Ace.Inc                             |
*   | All rights reserved                                            |
*   +----------------------------------------------------------------+
*/
function in_array(sValue, aArray) 
{
	for (var counter = 0; counter < aArray.length; counter++) 
	{
		if (aArray[counter] == sValue) 
		{
			return true;
		}
	}
	
	return false;
}

function array_search(sValue, aArray) 
{
	for (var counter = 0; counter < aArray.length; counter++) 
	{
		if (aArray[counter] == sValue) 
		{
			return counter;
		}
	}
	
	return false;
}

function array_walk(aArray, oFunction) 
{
	for (var counter = 0; counter < aArray.length; counter++) 
	{
		oFunction(counter, aArray[counter]);
	}
	
	return true;
}


function catchMyEvent(oEvent)
{
    var oEvent           = (document.all) ? window.event : oEvent;
    var oEventTarget     = (document.all) ? oEvent.srcElement : oEvent.target;

	oEvent.correspondentTarget = oMyUtils.isMozilla() ? oEvent.relatedTarget : oEvent.fromElement;

	document.myEvent     = {_event: oEvent, _target: oEventTarget};
}

function addToEventHandler(sEventName, oFunction) 
{
	//redefine build-in event handler
	if (typeof document[sEventName] != 'function') 
	{
		document[sEventName] = function(oEvent)
		{
			catchMyEvent(oEvent);
			
			for (var handlersCounter in aHandlers[sEventName]) 
			{
				aHandlers[sEventName][handlersCounter](document.myEvent._event, document.myEvent._target);
			}
		};
	}
	//instantiate event handler storage
	if (typeof aHandlers == 'undefined') 
	{
		aHandlers = new Array;
	}
	if (typeof aHandlers[sEventName] == 'undefined') 
	{
		aHandlers[sEventName] = new Array;
	}
	//store event handler
	aHandlers[sEventName][aHandlers[sEventName].length] = oFunction;
}

var oMyUtils = new Object;

oMyUtils.iterateElements = function(oParentElement, oFunction) 
{
	var i;
	
	for (i in oParentElement) 
	{
		oFunction(i, oParentElement[i]);
	}
};

oMyUtils.getTargetX = function(oMyTarget) 
{
	var x = 0;
	
	while (oMyTarget.offsetParent != null) 
	{
		x        += parseInt(oMyTarget.offsetLeft);
		oMyTarget = oMyTarget.offsetParent;
	}
	
	x += oMyTarget.offsetLeft;
	
	return x;
};

oMyUtils.getTargetY = function(oMyTarget) 
{
	var y = 0;
	
	while (oMyTarget.offsetParent != null) 
	{
		y        += parseInt(oMyTarget.offsetTop);
		oMyTarget = oMyTarget.offsetParent;
	}
	
	y += oMyTarget.offsetTop;

	return y;
};

oMyUtils.isIe = function() 
{
	return document.all && !oMyUtils.isOpera();
};

oMyUtils.isMozilla = function() 
{
	return window.sidebar;
};

oMyUtils.isOpera = function() 
{
	return window.opera;
};

 		
oMyUtils.getMouseX = function() 
{
	var x = 0;
	
	if (oMyUtils.isIe()) 
	{
		x = oMyUtils.getTargetX(oMyTarget);

		x += oMyEvent.offsetX;
	} 
	else 
	{
		x = oMyEvent.pageX;
	}
}
 		
oMyUtils.getMouseY = function() 
{
	var y = 0;
	
	if (oMyUtils.isIe()) 
	{
		y = oMyUtils.getTargetY(oMyTarget);

		y += oMyEvent.offsetY;
	} 
	else 
	{
		y = oMyEvent.pageY;
	}
}