var display = function(obj_id)
{
	var obj = document.getElementById(obj_id);
	
	if (obj.style.display == "none")
	{
		for (var i = 1; i < arguments.length; i++)
		{
			document.getElementById(arguments[i]).style.display = "none";
		}
		obj.style.display = "block";
	}
	else
		obj.style.display = "none";		
}

var create_node = function(child_nodeName, parent_node)
{
	var node = document.createElement(child_nodeName);
	parent_node.appendChild(node);

	return node;
}

var fill = function(target_id, val)
{
	var target_obj = document.getElementById(target_id);
	target_obj.value = unescape(val);
}

var GetXmlHttpObject = function()
{
	var objXMLHttp = null;
	if (window.XMLHttpRequest)
	{
		objXMLHttp = new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
		if (objXMLHttp == null) { objXMLHttp = new ActiveXObject("Msxml2.XMLHTTP"); };
	}
	return objXMLHttp;
}

var add_class = function(elem, cls) {
	elem.className += " " + cls;
};
	
var remove_class = function(elem, cls) {
	var cls_match = new RegExp("\\b" + cls + "\\b", "g");
	if (cls_match.test(elem.className))
	elem.className = elem.className.replace(cls, " ");
};

function get_left(o) {
	// Get an object left position from the upper left viewport corner
	// Tested with relative and nested objects
	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 get_top(o) {
	// Get an object top position from the upper left viewport corner
	// Tested with relative and nested objects
	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
}

var changeClass = function(elementObj, toChangeClass, changeWithClass) {
	if (arguments.length < 3) {
		changeWithClass = '';
	}
	
	remove_class(elementObj, toChangeClass);
	add_class(elementObj, changeWithClass);
}