var enableDebug = false;
var debugOut = new String();

function isInstance(obj)
{
	return String(typeof(obj)) != "undefined" && String(obj) != "null";
}

function toStringPx(val)
{
	return String(val) + "px";
}

function Write(htmlToWrite)
{
	document.write(htmlToWrite);
	if(enableDebug)
		debugOut += htmlToWrite;
}

function WriteDebugData()
{
	document.write("<textarea cols='70' rows='15'><![CDATA[" + debugOut + "]]></textarea>")
}

function DebugShowProps(ob)
{
	if((new String(typeof(ob))).toLowerCase() == "string")
	{
		alert(ob);
		return;
	}
	
	var output = new Array();
	var linesCount = 0;
	var currentBlock = new String();
	for(prop in ob)
	{
		if(ob[prop] == null || String(ob[prop]) == "" || String(ob[prop]).indexOf(["native code"]) != -1 || prop == "innerHTML"  || prop == "outerHTML")
			continue;
		
		if(linesCount > 25)
		{
			output[output.length] = currentBlock;
			currentBlock = new String();
			linesCount = 0;
		}
		currentBlock += prop + " =" + ob[prop] + "\n";
		linesCount ++;
	}
	output[output.length] = currentBlock;
	
	for(block in output)
		alert(output[block]);
}

function calcOffsetsRecursive(ob, result)
{
	if(!isInstance(ob))
		return result;

	if(result == null) 
	{
		result = new Object();
		if(!isInstance(ob.offsetLeft))
		{
			result.offsetLeft = 0;
			result.offsetTop = 0;
		}
		else
		{
			result.offsetLeft = ob.offsetLeft;
			result.offsetTop = ob.offsetTop;
		}
	}
	else if(isInstance(ob.offsetLeft))
	{
		result.offsetLeft += ob.offsetLeft;
		result.offsetTop += ob.offsetTop;
	}

	return calcOffsetsRecursive(ob.offsetParent, result);
}

function getOffsetFromEvent(eventObject, eventTarget)
{
	var result = new Object();
	result.offsetLeft = 0;
	result.offsetTop = 0;

	if(!isInstance(eventObject))
		return result;

	if(isInstance(eventObject.pageX))
	{
		result.offsetLeft = eventObject.pageX;
		result.offsetTop = eventObject.pageY;
	}
	else if(isInstance(eventObject.offsetX))
	{
		result.offsetLeft = eventObject.offsetX;
		result.offsetTop = eventObject.offsetY;

		result = calcOffsetsRecursive(eventTarget, result);
	}
	else if(isInstance(eventObject.x))
	{
		result.offsetLeft = eventObject.x;
		result.offsetTop = eventObject.y;
	}
	
	return result;
}
