// JavaScript Document
var request;
window.onload = initPage;

function initPage() {
	document.getElementById("signupButton").onclick = checkForm;
	document.getElementById("emailAddress").onkeypress = pressEnter;
}

function pressEnter(e) {
	var keyPressed;
	if (!e) var e = window.event;
	if (e.which) keyPressed = e.which;
	else if (e.keyCode) keyPressed = e.keyCode;
	
	if (keyPressed == 13) {
		checkForm();
	}
}

function checkForm() {
	var email = document.getElementById("emailAddress");
	if (email.value == "") {
		alert ("Please enter your email address.");
		email.focus();
		return false;
	}
	else if (/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(email.value) == false){
		alert ("The email is invalid.");   
		email.focus();
		return false;
	}
	document.getElementById("signupButton").disabled = true;
	sendRequest();
}

function createRequest() {
  var request;
  try {
    request = new XMLHttpRequest();
  } catch (tryMS) {
    try {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (otherMS) {
      try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (failed) {
        request = null;
      }
    }
  }	
  return request;
}

function sendRequest() {
//        alert ("Received through document.form1.emailAddress:" + document.form1.emailAddress.value);
 //       alert ("Received through getElementById(emailAddress):" + escape(document.getElementById("emailAddress").value));

	request = createRequest();
	if (request == null) {
		var errormsg;
		errormsg = "Error: Unable to create request";
		alert (errormsg);
	}
	else {
		var url = "/cgi/email.php?emailAddress=" + escape(document.getElementById("emailAddress").value);
//alert (url);
		request.open("POST", url, true);
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//alert ("Got past Content-Type");
                requestData = "emailAddress=" + escape(document.getElementById("emailAddress").value);
request.setRequestHeader("Content-Length", requestData.length);
//alert ("Got past Content-Length with value of " + requestData.length);
		request.setRequestHeader("Connection", "close");
		request.onreadystatechange = submitProcessed;
		request.send(null);
//alert ("Request.send invoked");
	}
}

function submitProcessed() {
     if (request.readyState == 4) {
    	if (request.status == 200) {//get data response from the server.
//alert (request.responseText);
			//handling JSON data
			//var responseDetail = eval('(' + request.responseText + ')');
			if (request.responseText == "done") {
				//var emailaddress = document.getElementById("emailAddress").value;
				//var emailaddress = document.form1.emailAddress.value;
				document.getElementById("emailAddress").value = "";
				alert ("Thank you for signing up for our e-newsletters.");
			}
			else {
				alert (request.responseText + "Error1: Something is wrong with the submission at server side.");
			}
				
		}
		else {//error handling.
			var errormsg;
			errormsg = "Error:: Something is wrong with the submission. (" + request.status + ")";
			alert (errormsg);
		}
		document.getElementById("signupButton").disabled = false;
	}
}
