	//----------------------------------------------------------------------------
	// Useful DOM functions
	//----------------------------------------------------------------------------

	// Adds an event listener to target. Ex:
	// addHandler (window, 'load', functionToCall);
	function addHandler (target, event_name, handler_name)
	{
		if (typeof target.attachEvent != 'undefined')
		{
			target.attachEvent ('on' + event_name, handler_name);
		}
		else if (typeof window.addEventListener != 'undefined')
		{
			target.addEventListener (event_name, handler_name, false);
		}
		else if (typeof document.addEventListener != 'undefined')
		{
			document.addEventListener (event, handler_name, false);
		}
	}

	// Returns true if the object is defined, false otherwise
	function isset (obj)
	{
		return typeof (obj) != 'undefined' ? true : false;
	}

	function getCoords (obj)
	{
		var x = 0;
		var y = 0;

		while (obj.offsetParent)
		{
			x  += obj.offsetLeft;
			y  += obj.offsetTop;
			obj = obj.offsetParent;
		}

		// IE's retarded...
		if (document.all)
		{
			var body_element = document.body;
			x += body_element.offsetLeft;
			y += body_element.offsetTop;
		}

		return [x, y];
	}

	function toInt (str)
	{
		var int = parseInt (str);

		if (isNaN (int))
		{
			int = 0;
		}

		return int;
	}

	function getViewportSize ()
	{
		var size = [0, 0];

		if (typeof window.innerWidth != 'undefined')
		{
			size = [window.innerWidth, window.innerHeight];
		}
		else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0)
		{
			size = [document.documentElement.clientWidth, document.documentElement.clientHeight];
		}
		else
		{
			size = [document.getElementsByTagName ('body')[0].clientWidth, document.getElementsByTagName ('body')[0].clientHeight];
		}

		return size;
	}
