function GetXmlHttpObject()
{
	if (window.XMLHttpRequest)
	{
		// code for IE7+, Firefox, Chrome, Opera, Safari
		return new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		// code for IE6, IE5
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	else
	{
		alert("Your browser does not support AJAX. Parts of this page will not function.");
		return null;
	}
}

function showError(msg)
{
	document.getElementById("servermsg").innerHTML = msg;
	document.getElementById("servermsg").style.color = "red";
	document.getElementById("btnsend").disabled=false;
}

function validateMail()
{	
	document.getElementById("btnsend").disabled=true;
	
	if(document.getElementById("name").value==''){
		showError("Enter a name");
		return false;
	}
	var pattern = new RegExp("^[\_]*([a-z0-9]+(\.|\_*)?)+@([a-z][a-z0-9\-]+(\.|\-*\.))+[a-z]{2,6}$");
	if(document.getElementById("replyto").value=='' || !pattern.test(document.getElementById("replyto").value)){
		showError("Enter a working email address so we can respond to you");
		return false;
	}
	if(document.getElementById("msg").value==''){
		showError("Message cannot be blank");
		return false;
	}
	
	if(document.getElementById("ccode").value==''){
		showError("Enter the code in the image at the end of the form");
		return false;
	}
	//verify captcha through Ajax
	xmlhttp=GetXmlHttpObject();
	if (xmlhttp==null)
	{
		return;
	}
	
	var verifythis = encodeURIComponent(document.getElementById('ccode').value);
	var id = encodeURIComponent(document.getElementById('cid').value);
	xmlhttp.onreadystatechange=sendMail;
	xmlhttp.open("POST", "/lib/verifycaptcha.php", true);
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.send("id="+id+"&verifythis="+verifythis);
}

//handle first response from server (verify Captcha code)
function sendMail()
{
	//if response is completed
	if (xmlhttp.readyState==4 && xmlhttp.responseText != '')
	{
		if(xmlhttp.responseText == "GREEN"){ //verified
			//send mail through AJAX
			xmlhttp=GetXmlHttpObject();
			if (xmlhttp==null)
			{
				return;
			}
	
			//prepare to submit the email
			var name = encodeURIComponent(document.getElementById('name').value);
			var replyto = encodeURIComponent(document.getElementById('replyto').value);
			var subj = encodeURIComponent(document.getElementById('subject').value);
			var msg = encodeURIComponent(document.getElementById('msg').value);
			xmlhttp.onreadystatechange=mailOK;
			xmlhttp.open("POST", "/lib/sendinquiry.php", true);
			xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			
			document.getElementById('btnsend').value= "Sending...";
			
			//submit
			xmlhttp.send("name="+name+"&replyto="+replyto+"&subject="+subj+"&msg="+msg);
			
		}else{ //not verified			
			//change the image
			var num = Math.ceil(Math.random()*18).toString();
			document.getElementById('cimg').src="/images/codes/"+num+".gif";
			document.getElementById('cid').value=num;
			document.getElementById('ccode').value="";
			document.getElementById('ccode').focus();
			
			showError("Incorrect verification code. Please<br />enter the characters you see in the image.");
		}
	}
}

//handle second response from server (Captcha is OK, mail sent)
function mailOK()
{
	if (xmlhttp.readyState==4 && xmlhttp.responseText != '')
	{
		document.getElementById('servermsg').innerHTML = xmlhttp.responseText;
		document.getElementById('servermsg').style.color = "#303030";
		document.getElementById('btnsend').disabled=false;
		document.getElementById('btnsend').value="Send";
		
		//clear fields
		document.getElementById('name').value = '';
		document.getElementById('replyto').value = '';
		document.getElementById('subject').value = '';
		document.getElementById('msg').value = '';
		
		//change the image
		var num = Math.ceil(Math.random()*18).toString();
		document.getElementById('cimg').src="/images/codes/"+num+".gif";
		document.getElementById('cid').value=num;
		document.getElementById('ccode').value="";
	}
}
