var xmlHttp;

function emailCheck (emailStr) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
		document.getElementById("alert").innerHTML="<div class='alert'>now that's just not right - please type a valid e-mail address.</div>";
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	if (user.match(userPat)==null) {
	    document.getElementById("alert").innerHTML="<div class='alert'>there's something wrong with that e-mail address</div>";
	    return false
	}
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		  for (var i=1;i<=4;i++) {
		    if (IPArray[i]>255) {
		        document.getElementById("alert").innerHTML="<div class='alert'>destination IP address is invalid!</div>";
			return false
		    }
	    }
	    return true
	}
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		document.getElementById("alert").innerHTML="<div class='alert'>the domain name doesn't seem to be right.</div>";
	    return false
	}
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || 
	    domArr[domArr.length-1].length>3) {
	   document.getElementById("alert").innerHTML="<div class='alert'>your email must end in a 3 letter domain, or 2 letter country.</div>";
	   return false
	}
	if (len<2) {
	   var errStr="This address is missing a hostname!"
	   document.getElementById("alert").innerHTML=errStr;
	   return false
	}

	return true;
}

function stateChanged() 
{ 
	if (xmlHttp.readyState==4)
	{ 
		switch(xmlHttp.responseText) {
		case '1':
			document.getElementById("alert").innerHTML="<img src='images/thanks.png' />";
			document.getElementById("form").style.display="none";
			break;
		case '2':
			document.getElementById("alert").innerHTML="<div class='alert'>Email already entered.</div>";
			break;
		case '3':
			document.getElementById("alert").innerHTML="<div class='alert'>DB didn't connect!</div>";
			break;
		default:
			document.getElementById("alert").innerHTML=xmlHttp.responseText;
		}
	}
}

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 submit(str)
{
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null)
	{
		document.getElementById("alert").innerHTML="<div class='alert'>Your browser does not support AJAX!</div>";
		return;
	} 
	var url="src/addToList.php";
	url=url+"?e="+str;
	url=url+"&sid="+Math.random();
	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
} 

function ajaxSubmit () {
	var emailStr = document.getElementById("email").value;
	if (emailCheck(emailStr)) {
		submit(emailStr);
	}
}

function setFocus (id) {
	if (document.getElementById(id).value == "please enter your email") {
		document.getElementById(id).value = "";
		document.getElementById(id).style.color = "#000000";
	}
}
function setBlur (id) {
	if (document.getElementById(id).value == "") {
		document.getElementById(id).value = "please enter your email";
		document.getElementById(id).style.color = "#777777";
	}
}

function setRollOver () {
	document.getElementById('submit').style.backgroundImage="url(images/submitR.png)";
}
function setRollOut () {
	document.getElementById('submit').style.backgroundImage="url(images/submit.png)";
}

function keyCheck (e) {
	var keynum;
if(window.event) // IE
	{
	keynum = e.keyCode;
	}
else if(e.which) // Netscape/Firefox/Opera
	{
	keynum = e.which;
	}
if(keynum==13)
	{
	ajaxSubmit();
	}
}
