function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		};
	}
}

function getElementsByClassName(name) {
	var results = new Array();
	var elems = document.getElementsByTagName("*");
	for (var i=0; i<elems.length; i++) {
		if (elems[i].className.indexOf(name) != -1) {
			results[results.length] = elems[i];
		}
	}
	return results;
}

function fadeUp(element,red,green,blue) {
	if (element.fade) clearTimeout(element.fade);
	if (red == 255 && green == 255 && blue == 255) {
		element.style.backgroundColor = "transparent";
		return;
	}
	var newred = red + Math.ceil((255 - red)/10);
	var newgreen = green + Math.ceil((255 - green)/10);
	var newblue = blue + Math.ceil((255 - blue)/10);
	element.style.backgroundColor = "rgb("+newred+","+newgreen+","+newblue+")";
	element.fade = setTimeout(function() { fadeUp(element,newred,newgreen,newblue) },100);
}

function fadeUpErrors() {
	var errors = getElementsByClassName("error");
	for (var i=0 ; i<errors.length; i++) {
		fadeUp(errors[i],221,136,0);
	}
}

addLoadEvent(fadeUpErrors);

function fadeUpFeedback() {
	var feedback = getElementsByClassName("feedback");
	for (var i=0 ; i<feedback.length; i++) {
		fadeUp(feedback[i],136,170,17);
	}
}

addLoadEvent(fadeUpFeedback);

//	Ajax functions

function prepareLinks(containerId,canvasId,ajaxFile) {
	if (!document.getElementById) return false;
	if (!document.getElementById(canvasId)) return false;
	if (!document.getElementById(containerId)) return false;
	var lnks = document.getElementById(containerId).getElementsByTagName("a");
	for (var i=0; i< lnks.length; i++) {
		lnks[i].url = ajaxFile;
		if (lnks[i].getAttribute("href").indexOf("?") > -1 ) {
			lnks[i].url+= "?";
			lnks[i].url+= lnks[i].getAttribute("href").match(/\?(\w.+)/)[1];
		}
		lnks[i].canvasId = canvasId;
		lnks[i].onclick = function() {
			ajax = getHTTPObject();
			if (!ajax) return true;
			loadXMLDoc(this.url,this.canvasId);
			return false;
		};
	}
}

function prepareForm(formId,canvasId,ajaxFile) {
	if (!document.getElementById) return false;
	if (!document.getElementById(canvasId)) return false;
	if (!document.getElementById(formId)) return false;
	var theform = document.getElementById(formId);
	theform.url = ajaxFile+"?";
	theform.canvasId = canvasId;
	theform.onsubmit = function() {
		ajax = getHTTPObject();
		if (!ajax) return true;
		for (var i=0; i< this.elements.length; i++) {
			this.url+= "&";
			this.url+= this.elements[i].name;
			this.url+= "=";
			this.url+= this.elements[i].value;
		}
		loadXMLDoc(this.url,this.canvasId);
		return false;
	}
}

function loadXMLDoc(url,canvasId) {
	ajax.onreadystatechange = function() {
		doAction(canvasId);
	};
	ajax.open("POST", url, true);
	ajax.send(null);
}

function doAction(canvasId) {
	if (ajax.readyState != 4) return;
	if (ajax.status ==200) document.getElementById(canvasId).innerHTML = ajax.responseText;
	fadeUpErrors();
	fadeUpFeedback();
	doAjax();
}

function getHTTPObject() {
	try {
		var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {
			try {
				var xmlhttp = new XMLHttpRequest();
			} catch (e) {
				var xmlhttp = false;
			}
		}
	}
	return xmlhttp;
}