// With thanks to http://www.captain.at/howto-ajax-form-post-request.php

function asyncPost(url, data, callback)
{
	request = false;
	if( window.XMLHttpRequest )
	{
		request = new XMLHttpRequest();
        	if( request.overrideMimeType )
        	{
        		request.overrideMimeType("text/html");
		}
	}
    	else if( window.ActiveXObject )
	{
		try
		{
			request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch( ex ) { }
	}

	if( !request )
	{
		return false;
	}

	request.onreadystatechange = callback;
	request.open('POST', url, true);
	request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	request.setRequestHeader("Content-length", data.length);
	request.setRequestHeader("Connection", "close");
	request.send(data);

	return true;
}

function manualPost()
{
	document.getElementById("registerform").submit();
}

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); }

function sendForm()
{
	var name = document.getElementById("inputname").value;
	if( !name.trim() )
	{
		alert("Please enter your name to register for news & information updates.");
		document.getElementById("inputname").focus();
		return false;
	}

	var email = document.getElementById("inputemail").value;
	if( !email.trim() )
	{
		alert("Please enter your email address to register for news & information updates.");
		document.getElementById("inputemail").focus();
		return false;
	}

	var filter  = /^\s*[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+([a-zA-Z]{2,4})\s*$/;
	if( !filter.test(email) )
	{
		alert("Please check your email address is correct.");
		document.getElementById("inputemail").focus();
		return false;
	}

	var post = "register=register&name=" + encodeURIComponent(name) +
			"&email=" + encodeURIComponent(email);

	if( !asyncPost(document.getElementById("registerform").action, post, checkForm) )
	{
		manualPost();
	}

	return false;
}

function checkForm()
{
	if( 4 == request.readyState )
	{
		if( 200 != request.status )
		{
			manualPost();
		}
		else
		{
			if( 'OK' == request.getResponseHeader('X-Solar-Registered') )
			{
				document.getElementById("registerform").style.display = "none";
				document.getElementById("registerform").nextSibling.style.display = "block";
			}
			else
			{
				alert("Sorry, a problem occurred during registration. Please call us to register.");
			}
		}
	}
}
