function addEvent(element_ptr, event_type, event_func)
{
	if (element_ptr.addEventListener)
	{
		element_ptr.addEventListener(event_type, event_func, false);
	}
	else if (element_ptr.attachEvent)
	{
		element_ptr.attachEvent('on' + event_type, event_func);
	}
}

function getE(element_id)
{
	return document.getElementById(element_id);
}

function getDocumentRoot()
{
	return window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null;
}

function addQueryString(url, str)
{
	return url + (/\?/.test(url) ? '&' : '?') + str;
}
/*
// swapNode method for Mozilla
if (typeof(Node) != 'undefined' && Node.prototype.swapNode == null)
{
	Node.prototype.swapNode = function (node)
	{
		var self = this;
		n = self.cloneNode(true);
		nt = node.cloneNode(true);
		self.parentNode.insertBefore(nt, self);
		self.removeNode(true);
		node.parentNode.insertBefore(n, node);
		node.removeNode(true);

/*
	  var nextSibling = this.nextSibling;
	  var parentNode = this.parentNode;
alert([this, nextSibling, parentNode]);
	  node.parentNode.replaceChild(this, node);
	  parentNode.insertBefore(node, nextSibling);
*
	}
}*/