window.onload = prepareForm;


function prepareForm() {
	//object detection.
	if (!document.getElementById)	{
		return;
	}
	if (!document.getElementById("contactform"))	{
		return;
	}
	//anonymous function attatched to submit button. 
	document.getElementById("contactform").onsubmit = function() {
		var data = "";
		for (var i=0; i<this.elements.length; i++){
			data += this.elements[i].name;
			data += "=";
			data += escape(this.elements[i].value);
			data += "&";
		}
		//if sendData returns true, form won't be submitted.
		return !sendData(data);
	};	
}

function sendData(data) {
	var request = getHTTPObject();
	if (request) {
		request.onreadystatechange = function() {
			parseResponse(request);
		};
		request.open("POST", "contactlogic.php", true);
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		request.send(data);
		return true;
	} else {
		return false;
	}
}

function parseResponse(request) {
	if (request.readyState == 4) {
		if (request.status == 200 || request.status == 304)	{
			var container = document.getElementById("fDiv");
			container.innerHTML = request.responseText;
			prepareForm();
			
			//Fader
			var message = document.getElementsByTagName("em");
			for (var i=0; i < message.length; i++ ) {
				fadeUp(message[i],255,128,128);
			}
		}
	}
}


/*
 *	Red fade technique.
 */
function fadeUp(element,red,green,blue) {
	if (element.fade)	{
		clearTimeout(element.fade);
	}
	element.style.backgroundColor = "rgb("+red+","+green+","+blue+")";
	if (red == 255 && green == 255 && blue == 255) {
		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);
	var repeat = function() {
		fadeUp(element,newred,newgreen,newblue)
	};
	element.fade = setTimeout(repeat,100);
}


function getHTTPObject() {
	var xhr = false;
	if (window.XMLHttpRequest) {
		xhr = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		try	{
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {
				xhr = false;
			}
		}
	}
	return xhr;
}
