function getAbsoluteLeft(o) {
	// Get an object left position from the upper left viewport corner
	// Tested with relative and nested objects
	//o = document.getElementById(objectId)
	oLeft = o.offsetLeft            // Get left position from the parent object
	while(o.offsetParent!=null) {   // Parse the parent hierarchy up to the document element
		oParent = o.offsetParent    // Get parent object reference
		oLeft += oParent.offsetLeft // Add parent left position
		o = oParent
	}
	// Return left postion
	return oLeft
}

function getAbsoluteTop(o) {
	// Get an object top position from the upper left viewport corner
	// Tested with relative and nested objects
	//o = document.getElementById(objectId)
	oTop = o.offsetTop            // Get top position from the parent object
	while(o.offsetParent!=null) { // Parse the parent hierarchy up to the document element
		oParent = o.offsetParent  // Get parent object reference
		oTop += oParent.offsetTop // Add parent top position
		o = oParent
	}
	// Return top position
	return oTop
}
function selectAll(control)
{
	var inputs= control.parentNode.parentNode.parentNode.getElementsByTagName('input');
	for(var i=0;i<inputs.length;i++)
	{
		if(inputs[i].type=='checkbox')
		{
			inputs[i].checked = control.checked;
		}
	}
}
function getInnerText(node)
{
	var sGetInnerText = new String('');
	switch(node.nodeType)
	{
		case 1://elementNode
		if(node.nodeName!='SELECT')
		{
			var childNodes = node.childNodes;
			for(var i=0;i<childNodes.length;i++)
			{
				sGetInnerText+=getInnerText(childNodes[i]);
			}
		}
		break;

		default:
		try{
			sGetInnerText+=node.nodeValue;
		}catch(e){}
		break;
	}

	return sGetInnerText;
}
function LTrim(str)
{
	var whitespace = new String(" \t\n\r");

	var s = new String(str);

	if (whitespace.indexOf(s.charAt(0)) != -1)
	{
		var j=0, i = s.length;
		while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
		{
			j++;
		}
		s = s.substring(j, i);
	}

	return s;
}
function RTrim(str,needle)
{
	if(needle==null)
	{
		needle = " \t\n\r";
	}
	var whitespace = new String(needle);

	var s = new String(str);

	if (whitespace.indexOf(s.charAt(s.length-1)) != -1)
	{
		var i = s.length - 1;       // Get length of string
		while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
		i--;
		s = s.substring(0, i+1);
	}

	return s;
}