// Utils

var debugPrintElem = null;
var debugPrintIteration = 0;

function DebugPrint (value, keepOldValue, printIteration)
{
	if (debugPrintElem == null) {
		// Insert the debugPrint element after the BODY element
		// <span id='debugElem'> ... </span>
		debugPrintElem = document.getElementById ('debugElem');
	}		
	if (debugPrintElem != null) {
		if (keepOldValue)
			value = debugPrintElem.innerHTML + " " + value;
		if (printIteration)
			value += " [" + debugPrintIteration++ + "]";
		debugPrintElem.innerHTML = value;
	}
};

function fetch_object(idname)
{
	if (document.getElementById)
	{
		return document.getElementById(idname);
	}
	else if (document.all)
	{
		return document.all[idname];
	}
	else if (document.layers)
	{
		return document.layers[idname];
	}
	else
		return null;
};

function get_elem_position ( elem )
{
	if (elem)
	{
		pos_x = elem.offsetLeft;
		pos_y = elem.offsetTop;
	}
	else
	{
		pos_x = 0;
		pos_y = 0;
	}
	return { 'left' : pos_x, 'top' : pos_y };
};

function get_elem_position2 ( elem )
{
	if (elem)
	{
		pos_x = elem.offsetLeft;
		pos_y = elem.offsetTop;

		var sAgent = navigator.userAgent.toLowerCase() ;
		var is_ie = ( sAgent.indexOf("msie") != -1 && sAgent.indexOf("mac") == -1 && sAgent.indexOf("opera") == -1 );
		if (!is_ie)
		{
			while (elem.offsetParent != null)
			{
				elem = elem.offsetParent;
				pos_x += elem.offsetLeft;
				pos_y += elem.offsetTop;
			}
		}
	}
	else
	{
		pos_x = 0;
		pos_y = 0;
	}
	return { 'left' : pos_x, 'top' : pos_y };
};

function getSize() {
	var myWidth = 0, myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	return [ myWidth, myHeight ];
};

function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
};

function getSize2 () 
{ 
	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;
};

function getScrollXY2()
{ 
	var position = [0, 0];
	
	if (typeof window.pageYOffset != 'undefined') {
		position = [ window.pageXOffset, window.pageYOffset ];
	} 
	else if (typeof document.documentElement.scrollTop != 'undefined' && document.documentElement.scrollTop > 0) {
		position = [ document.documentElement.scrollLeft, document.documentElement.scrollTop];
	}
	else if (typeof document.body.scrollTop != 'undefined') {
		position = [ document.body.scrollLeft, document.body.scrollTop ];
	}
	return position;
};