/**
 *	Adding event listeners to the window object, allows multiple onload-events
 *	
 */

function addLoadListener(fn)
{
  if (typeof window.addEventListener != 'undefined')
  {
    window.addEventListener('load', fn, false);
  }
  else if (typeof document.addEventListener != 'undefined')
  {
    document.addEventListener('load', fn, false);
  }
  else if (typeof window.attachEvent != 'undefined')
  {
    window.attachEvent('onload', fn);
  }
  else
  {
    var oldfn = window.onload;
    if (typeof window.onload != 'function')
    {
      window.onload = fn;
    }
    else
    {
      window.onload = function()
      {
        oldfn();
        fn();
      };
    }
  }
}

/**
 * Empty all childnodes of the specified elm.
 * If tag is given, the result of getElementsByTagName(tag) will be used as the node-collection
 * 
 */

function empty_element (elm,tag)
{
	var nodes = (tag) ? elm.getElementsByTagName(tag) : elm.childNodes;
	
	for (var i=nodes.length; i>0; i--)
	{
		var node = nodes[i-1];
		elm.removeChild(node);
	}
}

/**
 * some AJAX functions for easy data-retrieval
 * @author Peter-Paul Koch
 *//*
function sendRequest(url,callback,postData) {
	var req = createXMLHTTPObject();
	if (!req) return;
	var method = (postData) ? "POST" : "GET";
	req.open(method,url,true);
	req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	if (postData)
		req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	req.onreadystatechange = function () {
		if (req.readyState != 4) return;
		if (req.status != 200 && req.status != 304) {
//			alert('HTTP error ' + req.status);
			return;
		}
		callback(req);
	}
	if (req.readyState == 4) return;
	req.send(postData);
}

var XMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function createXMLHTTPObject() {
	var xmlhttp = false;
	for (var i=0;i<XMLHttpFactories.length;i++) {
		try {
			xmlhttp = XMLHttpFactories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}
*/

function sendRequest(url,callback,postData)
{
	var x = new Ajax.Request(url,
	{
		method:'get',
		onSuccess: function(transport){
			callback(transport);
		},
		onFailure: function(){ alert('Something went wrong...') }
	});
}

/**
 * document.getElementById shortcut
 */

function $ (theId)
{
	return document.getElementById(theId);
}

/**
 * document.getElementsByTagName shortcut
 */

function $$ (tag,elm)
{
	var el = (elm)?elm:document;
	return el.getElementsByTagName(tag);
}

/*
	Written by Jonathan Snook, http://www.snook.ca/jonathan
	Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/-/g, "\-");
	var oRegExp = new RegExp("(^|\s)" + strClassName + "(\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

