function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}
	else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}


var $xmlHttp;
function createXMLHttpRequest() {
	if (window.ActiveXObject) {
		$xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else if (window.XMLHttpRequest) {
		$xmlHttp = new XMLHttpRequest();
	}
}


function insertAfter($new_element, $target_element) {
	var $parent = $target_element.parentNode;
	
	if ($parent.lastChild == $target_element) {
		$parent.appendChild($new_element);
	}
	else {
		$parent.insertBefore($new_element,$target_element.nextSibling);
	}
}


function removeNode($node) {
	var $parent_node = $node.parentNode;
	var $handle = $parent_node.removeChild($node);
	return $handle;
}


document.getElementsByClassName = function($name) {
	var $results = new Array();
	var $elements = document.getElementsByTagName("*");
	for (var $i=0; $i<$elements.length; $i++) {
		var $classes = $elements[$i].className.split(" ");
		for (var $j=0; $j<$classes.length; $j++) {
			if ($classes[$j] == $name) {
				$results[$results.length] = $elements[$i];
			}
		}
	}
	return $results;
};


function fade($element_id,$opacity,$final_opacity,$completion_statement,$speed) {
	// Written by Steve Tucker (http://www.stevetucker.co.uk) 2007
	if (!document.getElementById) return;
	if (!document.getElementById($element_id)) return;
	if (!$speed) $speed = 20;
	
	var $element = document.getElementById($element_id);
	$element.style.opacity = $opacity/10;
	$element.style.filter = 'alpha(opacity:'+($opacity*10)+')';
	
	if ($opacity == $final_opacity) {
		clearTimeout($element.opacity_timer);
		if ($completion_statement) eval($completion_statement);
		return;
	}
	
	if ($opacity > $final_opacity) $opacity -= Math.ceil(($opacity-$final_opacity)/2);
	else $opacity += Math.ceil(($final_opacity-$opacity)/2);
	if (typeof($completion_statement) == 'string') $completion_statement = $completion_statement.replace(/'/g,"\\\'");
	
	$element.opacity_timer = setTimeout("fade('"+$element_id+"',"+$opacity+","+$final_opacity+",'"+$completion_statement+"',"+$speed+")",$speed);
	return;
}
