String.prototype.trim = function () { return this.replace(/^\s*|\s*$/g,''); }
function setupRollOver(imgOffSrc, imgOnSrc, container, img)
{
	if (!container) return;
	if (!img) img = container.getElementsByTagName("img")[0];
	if (!img)
	{
		if (container.src)
			img = container;
		else
			return;
	}
	img.imgOff = new Image();
	img.imgOff.src = imgOffSrc;
	img.imgOn = new Image();
	img.imgOn.src = imgOnSrc;
	addToEvent(container, "mouseover", function () { img.src = img.imgOn.src } );
	addToEvent(container, "mouseout", function () { img.src = img.imgOff.src } );
}

function GetButtonOverStateUrl( src )
{
	var arrSrc = src.split(".");
	var oversrc = "";
	for (var i = 0, j = arrSrc.length-1; i<j; i++)
	{
		oversrc += arrSrc[i];
		//	Do not add . after the last item
		if(i < (j - 1))	oversrc += ".";
	}
	
	oversrc += "_over" + "." + arrSrc[arrSrc.length-1];
	return oversrc;
}

function addToEvent(element, evType, fn) 
{
	if (element.addEventListener) {
		element.addEventListener(evType, fn, false);
		return true;
	}
	else if (element.attachEvent) {
		var r = element.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		element['on' + evType] = fn;
	}
}

function createCookie(name,value)
{
	document.cookie = name + "=" + value + "; path=/";
}

function readCookie(name)
{
	name = name + "=";
	var cookiePairs = document.cookie.split(';');
	var cookie;
	for(var i=0;i < cookiePairs.length;i++)
	{
		cookie = cookiePairs[i];
		while (cookie.charAt(0)==' ') cookie = cookie.substring(1,cookie.length);
		if (cookie.indexOf(name) == 0) return cookie.substring(name.length,cookie.length);
	}
	return null;
}
function eraseCookie(name)
{
	document.cookie = name + "=;expires=-1; path=/";
}

function getAbsolutePosition(element, direction, stopAtElement)
{
	var position = 0;
	while (element != null)
	{
		position += parseInt(eval("element.offset" + direction));
		element = element.offsetParent;
		if (element == stopAtElement)
			break;
	}
	return position;
}

function getStyle(element, property)
{
	var propertyValue;
	if (element.currentStyle)
		propertyValue = element.currentStyle[property];
	else if (window.getComputedStyle)
		propertyValue = document.defaultView.getComputedStyle(element,null).getPropertyValue(property);
	return propertyValue;
}

function isInCssClass(obj, className)
{
	if (!obj.className) return false;
	return (obj.className.indexOf(className) >=0);
}
function addToClassName(obj, className)
{
	if (obj.className == null) return;
	if (obj.className.indexOf(className) >= 0) return;
	obj.className += " " + className.trim();
}
function delFromClassName(obj, className)
{
	if (obj.className == null) return;
	var newClassName = "";
	var classes = obj.className.split(" ");
	for (var i = classes.length-1; i>=0; i--)
	{
		if (classes[i] == className) continue;
		newClassName += " " + classes[i].trim();
	}
	obj.className = newClassName.trim();
}



function getParentNode(node, parentTag)
{
	//traverse up DOM tree to find parent node with specified tag name
	if (node == null) return null;
	var parent = node;
	while (parent.parentNode)
	{
		parent = parent.parentNode;
		if (parent.nodeType != 1) continue;
		if (parent.tagName.toLowerCase() == parentTag.toLowerCase())
			return parent;
	}
	return null;
}

function getParentByProperty(element, property, value)
{
	var propertyValue = null;
	element = element.parentNode;
	while (element != null)
	{
		if (getStyle(element, property) == value)
			break;
		element = element.parentNode;
	}
	return element;
}

function getChildElementsByTagNameClass( parentElement, elementTag, cssClass )
{
	var childElements = new Array();
	var elements = parentElement.getElementsByTagName( elementTag );
	for (var i = 0, j = elements.length; i<j; i++)
	{
		if (isInCssClass(elements[i], cssClass) || cssClass == "" || cssClass == null)
			childElements.push(elements[i]);
	}
	return childElements;
}
function getElementsByTagNames(list,obj) 
{
	if (!obj) var obj = document;
	var tagNames = list.split(',');
	var resultArray = new Array();
	for (var i=0;i<tagNames.length;i++)
	{
		var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j=0;j<tags.length;j++)
			resultArray.push(tags[j]);
	}
	return resultArray;
}

function stopDefault( e ) {
	if ( e && e.preventDefault ) 
		e.preventDefault(); 
	else 
		window.event.returnValue = false; 
	return false; 
} 
