/*******************************\
| Table Of Contents:		|
|	addOnLoadHandler	|
|	addEventHandler		|
|	coord			|
|	findHTMLScreenLocation	|
|	generateRandomInteger	|
|	preloadImage		|
|	resolveId		|
|	string class extensions	|
|				|
\*******************************/

//---------------------------
// a simple coordinates class
//---------------------------
function coord (x,y)
	{
	this.x = x;
	this.y = y;
	}

//========================================================
// Find HTML Screen Location
// -------------------------
// determines the x,y coordinated (i.e. top and left)
// if an HTML object (relative to the beginning of the page)
//
//	Example:
//	var someItem = document.all(“someID”);
//	var pos = ueFindHTMLScreenLocation(someItem);
//	LogMsg(“myItemsID starts at (” + pos.y + “,” + pos.x + “)”);
//========================================================

function findHTMLScreenLocation(tag)
	{
	tag = resolveId(tag);
	var pos = new coord;
	pos.y = tag.offsetTop;
	pos.x = tag.offsetLeft;
	for	(	var Parent = tag.offsetParent;
			Parent != null;
			Parent = Parent.offsetParent
		)
		{
		pos.y += Parent.offsetTop;
		pos.x += Parent.offsetLeft;
		}
	return pos;
	}
//======================================
function generateRandomInteger(min, max)
//======================================
	{
	return (min + Math.floor(((max + 1) - min) * Math.random()));
	}

var imageCache = new Array();
//========================
function preloadImage(src)
//========================
	{
	imageObject = new Image();
	imageObject.src = src;
	imageCache[imageCache.length] = imageObject;
	}

/***********************************************\
| Name: resolveId				|
| Args: tag - a string or an object		|
| Desc: allows a function to accept an HTML	|
|       object or it's id as an	argument.	|
| Xmpl: function yourFunction(tag)		|
|	    {					|
|	    tag = resolveId(tag);		|
|	    ...					|
|	    }					|
\***********************************************/
function resolveId(tag)
	{
	if (typeof tag == "string")
		tag = document.getElementById(tag);
	return tag;
	}

/*******************************************************\
| Name: addOnLoadHandler				|
| Args: eventHandler - function to be run		|
| Desc: Adds a function to be called once the document	|
|	had been loaded.				|
|	Can be called more than once.			|
| Xmpl: addOnLoadHandler(function (){alert("rnt1");});	|
|	addOnLoadHandler(function (){alert("rnt2");});	|
|	addOnLoadHandler(function (){alert("rnt3");});	|
\*******************************************************/
function addOnLoadHandler(eventHandler)
	{
	addEventHandler(window, "onload", eventHandler);
	}

/*******************************************************\
| Name: addEventHandler					|
| Args: tag - HTML object or it's Id			|
|	eventName - name of an event			|
|	eventHandler - function to be called		|
| Desc: Adds an event handler to the specified tag for	|
|	the specified event.				|
|	Can be called more than once.			|
| Xmpl: addEventHandler					|
|		(					|
|		"item1",				|
|		"onclick",				|
|		funtion(){alert("I've been clicked!");}	|
|		);					|
\*******************************************************/
function addEventHandler(tag, eventName, eventHandler)
	{
	tag = resolveId(tag);
	var oldHandler = tag[eventName];
	if (typeof oldHandler == "function")
		{
		tag[eventName] = function()
			{
			if (oldHandler.call(tag) == false) return false;
			return (eventHandler.call(tag));
			};
		}
	else
		tag[eventName] = eventHandler;
	}
/*=====================================*\
| The following adds three new methods	|
| to the basic JavaScrip "String" class.|
\*=====================================*/
String.prototype.trimL = function() {return this.replace( /^\s+/g, "" );}
String.prototype.trimR = function() {return this.replace( /\s+$/g, "" );}
String.prototype.trim  = function() {tmp=this.trimR();return tmp.trimL();}
