//global Variable for remote connection
var http_request = false;

//Run on page load
function autoexec()
{
	http_request = getRequestObject();
}

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

//HTTP Connection functions

//Return true if successful
function asyncSubmit()
{
	
	if (http_request)
	{
		//create connection
		http_request.overrideMimeType('text/xml');
		http_request.open("POST", url, "false");
		
		//prepare to submit form data
		var parameters = "from=" + window.document.contactForm.from.value;
		parameters += "&subject=" + window.document.contactForm.subject.value;
		parameters += "&message=" + window.document.contactForm.message.value;
		
		//connect
		http_request.send(parameters);
		
		//If an error code is returned
		var errorCheck = /^-\d$/;
		//if (errorCheck.test(http_request.responseText))
		if (errorCheck.test("-2"))
		{
			//alert("Error code: " + http_request.responseText);
			return http_request.responseText;
		} else { // if mail successfull sent
			alert("Receipt: " + http_request.responseText);
			//display receipt
			return "1";

		}

	} else { //failed to create XMLHTTP object
		return "-4";
	}
}

function getRequestObject()
{
	var returnObject = false;
	if (window.XMLHttpRequest)  // Mozilla, Safari, ...
		returnObject = new XMLHttpRequest();
	 else if (window.ActiveXObject)  // IE
		returnObject = new ActiveXObject("Microsoft.XMLHTTP");
	 return returnObject;
}


//Dynamic form functions
function fromUpCheck(sender)
{
	if (isEmail(sender.value)) hideFromError();
}

function subjectUpCheck(sender)
{
	if (sender.value != "") hideSubjectError();
}

function messageUpCheck(sender)
{
	if (sender.value != "") hideMessageError();
}

function isEmail(str)
{
   var regex = /^(?:[a-zA-Z0-9_'^&amp;/+-])+(?:\.(?:[a-zA-Z0-9_'^&amp;/+-])+)*@(?:(?:\[?(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))\.){3}(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\]?)|(?:[a-zA-Z0-9-]+\.)+(?:[a-zA-Z]){2,}\.?)$/;
   return regex.test(str);
}

function proofFrom()
{
	if (isEmail(trim(window.document.contactForm.from.value)))
	{
		hideFromError();
		return true;
	}
		else
		{
			showFromError();
			return false;
		}		
}

function proofSubject()
{
	if (!trim(window.document.contactForm.subject.value) == '')
	{
		hideSubjectError();
		return true;
	}
		else
		{
			showSubjectError();
			return false;
		}
}

function proofMessage()
{
	if (!trim(window.document.contactForm.message.value) == '')
	{
		hideMessageError();
		return true;
	}
		else
		{
			showMessageError();
			return false;
		}
}

function formSubmit()
{
	var fromOK = proofFrom();
	var subjectOK = proofSubject();
	var messageOK = proofMessage();
	
	if (fromOK && subjectOK && messageOK)
	{
		/*
		var syncStatus = asyncSubmit();
		if (syncStatus == '1')
		{
			//successfully sent via ajax script
			return false;
			//hide form
		} else {
			//async connection attempted but failed
			//attempt by submitting the form normally
			alert("Error code: " + syncStatus);
			return true;
		}
		*/
		return true;
	}
	else return false;
	
}

//Dynamic Form display updaters

function isEmail(str)
{
   var regex = /^(?:[a-zA-Z0-9_'^&amp;/+-])+(?:\.(?:[a-zA-Z0-9_'^&amp;/+-])+)*@(?:(?:\[?(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))\.){3}(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\]?)|(?:[a-zA-Z0-9-]+\.)+(?:[a-zA-Z]){2,}\.?)$/;
   return regex.test(str);
}

function proofFrom()
{
	if (isEmail(trim(window.document.contactForm.from.value)))
	{
		hideFromError();
		return true;
	}
		else
		{
			showFromError();
			return false;
		}		
}

function proofSubject()
{
	if (!trim(window.document.contactForm.subject.value) == '')
	{
		hideSubjectError();
		return true;
	}
		else
		{
			showSubjectError();
			return false;
		}
}

function proofMessage()
{
	if (!trim(window.document.contactForm.message.value) == '')
	{
		hideMessageError();
		return true;
	}
		else
		{
			showMessageError();
			return false;
		}
}

function checkForm()
{
	var fromOK = proofFrom();
	var subjectOK = proofSubject();
	var messageOK = proofMessage();
	if (fromOK && subjectOK && messageOK)
		return true;
		else return false;
}

function showFromError()
{
	document.getElementById("fromError").innerHTML = "Please enter a valid email address.";
	window.document.contactForm.from.style.backgroundColor = "#FFE9E9";
}

function hideFromError()
{
	document.getElementById("fromError").innerHTML = "";
	window.document.contactForm.from.style.backgroundColor = "#FFFFFF";
}

function showSubjectError()
{
	document.getElementById("subjectError").innerHTML = "Please enter a subject.";
	window.document.contactForm.subject.style.backgroundColor = "#FFE9E9";
}

function hideSubjectError()
{
	document.getElementById("subjectError").innerHTML = "";
	window.document.contactForm.subject.style.backgroundColor = "#FFFFFF";
}

function showMessageError()
{
	document.getElementById("messageError").innerHTML = "Please enter some text in the message body before submitting.";
	window.document.contactForm.message.style.backgroundColor = "#FFE9E9";
}

function hideMessageError()
{
	document.getElementById("messageError").innerHTML = "";
	window.document.contactForm.message.style.backgroundColor = "#FFFFFF";
}

function whiteOnFocus(sender)
{
	sender.style.backgroundColor = "#FFFFFF";
}
