var f, d;
var error = '';
var i;
var _POST;
var req;
var response, result;

// Mail contact form
function contactForm ()
{
	// Check input
	for ( i = 0; i < f.elements.length; i++ )
		if ( f.elements[i].value == '' )
			error = 'Please fill in all text fields';

	if ( error != '' )
	{
		alert ( error );
		return false;
	}

	// Collect the values
	for ( i = 0; i < f.elements.length; i++ )
	{
		// Disable the submit button
		if ( f.elements[i].type == 'submit' )
			f.elements[i].disabled = 'disabled';
		_POST += ( _POST != '' ? '&' : '' ) + f.elements[i].name + '=' + escape ( f.elements[i].value );
	}


	// Open XML connection
	if ( window.ActiveXObject )
	{
		req = new ActiveXObject ( 'Microsoft.XMLHTTP' );
		if ( req )
		{
			req.onreadystatechange = parseResult;

			// Send request
			req.open ( 'POST', 'contact.xml.php', true );
			req.setRequestHeader ( 'Content-Type', 'application/x-www-form-urlencoded' );
			req.send ( _POST );
		}
		else
		{
			alert ( 'Unable to create Active-X object' );
			return false;
		}
	}
	else
	{
		req = new XMLHttpRequest ();
		req.onreadystatechange = parseResult;

		// Send request
		req.open ( 'POST', 'contact.xml.php', true );
		req.setRequestHeader ( 'Content-Type', 'application/x-www-form-urlencoded' );
		req.send ( _POST );
	}

	return false;
}
// Parse result
function parseResult ()
{
	if ( req.readyState != 4 )
		return;

	if ( req.status != 200 )
		return;

	response = req.responseXML;
	result = response.getElementsByTagName ( 'response' )[0];

	for ( i = 0; i < f.elements.length; i++ )
		// Enable the submit button
		if ( f.elements[i].type == 'submit' )
			f.elements[i].disabled = '';


	if ( !result )
	{
		alert ( 'Unable to perform request due to server error' );
		return false;
	}

	// Got a return tag?
	if ( !result.getElementsByTagName ( 'return' )[0] )
	{
		alert ( 'Unable to determine whether the email is sent or not' );
		return false;
	}

	// Check return tag
	if ( result.getElementsByTagName ( 'return' )[0].firstChild.nodeValue == '1' )
	{
		f.innerHTML = '<div>Thank you for your email. You will be contacted as soon as possible.</div>';
		d = f.getElementsByTagName ( 'div' )[0];
		d.style.marginTop = '10px';
		d.style.fontWeight = 'bold';
		return true;
	}
	else
	{
		if ( !result.getElementsByTagName ( 'error' )[0] )
		{
			alert ( 'Your email could not be sent due to an unknown error' );
			return false;
		}

		alert ( 'Your email could not be sent, the server returned the following error:\n\n' + result.getElementsByTagName ( 'error' )[0].firstChild.nodeValue );
		return false;
	}
}

window.onload = function ()
{
	f = document.getElementsByTagName ( 'form' )[0];
	f.elements[0].focus ();
	f.elements[0].select ();
	f.onsubmit = contactForm;
}