var xmlHttp;
var running = false;
var g_errFill;

function sendContact(errBusy, errFill)
{
	var frm = document.getElementById("formContact");
	//alert(frm);
	var name = frm.name.value;
	var email = frm.email.value;
	var subject = frm.subject.value;
	var description = frm.description.value;
	var validate = frm.validate.value;
	var mailinglist = frm.mailinglist.checked;

	if(running == true)
	{
		document.getElementById("info").innerHTML=errBusy;
		return;
	}
	//alert("2");
	running = true;
	document.getElementById("info").innerHTML="";
	
	//fields validation
	if(name=='' || email=='' || echeck(email) == false)
	{
		//alert("3");
		document.getElementById("info").innerHTML=errFill;
		running = false;
		return;
	}
	
	//Get http object
	xmlHttp=GetXmlHttpObject();
	//alert("4")
	if (xmlHttp==null)
	{
		alert ("Browser does not support HTTP Request");
		running = false;
		return;
	}
	
	g_errFill = errFill;
	
	//alert("5")
	//Create the request line
	var url="contactProcess.php";
	url=url+"?name="+encodeURIComponent(name);
	url=url+"&email="+encodeURIComponent(email);
	url=url+"&subject="+encodeURIComponent(subject);
	url=url+"&description="+encodeURIComponent(description);
	url=url+"&validate="+encodeURIComponent(validate);
	url=url+"&mailinglist="+encodeURIComponent(mailinglist);
	xmlHttp.onreadystatechange=stateChanged_contact;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
	
}

function stateChanged_contact()
{
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{
		//alert(xmlHttp.responseText);
		running = false;
		
		if(xmlHttp.responseText == "Error:param")
			document.getElementById("info").innerHTML=g_errFill;
		//incase that the message implies that human validation failed, load new validation image
		else if(xmlHttp.responseText == "Error:humanValidation")
		{
			document.getElementById("info").innerHTML=g_errFill;
			document.getElementById("humanvalidate").src="humanvalidate.php" + '?' + (new Date()).getTime();			
		}
		else
		{
			window.location = "./contactThanks.php";
		}

	}
}

function GetXmlHttpObject()
{
	var xmlHttp=null;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		// Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function echeck(str) 
{

		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		if (str.indexOf(at)==-1)
		{
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr-1)
		{
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr-1)
		{
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1)
		 {
		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
		 {
		    return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1)
		 {
		    return false;
		 }
		
		 if (str.indexOf(" ")!=-1)
		 {
		    return false;
		 }

 		 return true;			
}
