/*
 *  Ajax Mail To A Friend Script
 *  By Ben Griffiths
 *  06/09/2006
 */

// tracker variables needed to keep track of elements style information
var mailFormVisible = false;
var responseContainerVisible = false;
var numberRecipients = 1;

// page based script

function rolloverImage(element_ID, replacementImage) {
	document.getElementById(element_ID).src = replacementImage;
}

function rolloverImageBackground(element_ID, replacementImage) {
	document.getElementById(element_ID).style.backgroundImage = 'url(' + replacementImage + ')';
}

function toggleMailForm(element_ID) {
	
	var form = document.getElementById(element_ID);
	
		// ensure response isn't visible, reset the number of recipients to one and clear the form
	
	if(responseContainerVisible) {
		toggleResponseContainer();
	}
	for(i=2; i<=numberRecipients; i++) {
		document.getElementById("recipient" + i).style.display = "none";
	}
	numberRecipients = 1;
	clearForm(form);
	
	if (mailFormVisible) {
		form.style.display = "none";
		document.getElementById("mailtofriendboxtop").style.display = "none";
		document.getElementById("mailtofriendboxbottom").style.display = "none";
		mailFormVisible = false;
	}
	else {
		form.style.display = "block";
		document.getElementById("mailtofriendboxtop").style.display = "block";
		document.getElementById("mailtofriendboxbottom").style.display = "block";
		mailFormVisible = true;
	}
}

function toggleResponseContainer() {
	responseContainer = document.getElementById("responseContainer");
	
	if (responseContainerVisible) {
		responseContainer.style.display = "none";
		responseContainerVisible = false;
	}
	else {
		responseContainer.style.display = "block";
		responseContainer.innerHTML = "";
		responseContainerVisible = true;
	}
}

function clearForm(form) { 

	var elm;
	elements = form.getElementsByTagName('input');
	for( i=0, elm; elm=elements.item(i++); )
	{
		if (elm.getAttribute('clear') == "true")
		{
			elm.value = '';
		}
	}
}

function addRecipient () {
	if (numberRecipients < 5) {
		numberRecipients++;
		document.getElementById("recipient" + numberRecipients).style.display = "block";
	}
}

function removeRecipient () {
	if (numberRecipients > 1) {
		document.getElementById("recipient" + numberRecipients).style.display = "none";
		numberRecipients--;
	}
}

// ajax based script for submitting form

var http_request = false;
var submit_OK = true;
var error_string = "";

function makePOSTRequest(url, parameters) {
	http_request = false;
	if (window.XMLHttpRequest) {									// dom complient browsers
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/html');				// assume no valid xml
		}
	} else if (window.ActiveXObject) {								// IE - uses ActiveX approximation
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	http_request.onreadystatechange = processRequest;
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}

function processRequest() {
		
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			toggleMailForm("mailFriendContainer");
			toggleResponseContainer();
			responseContainer.innerHTML = http_request.responseText;
		} else {
			toggleMailForm("mailFriendContainer");
			toggleResponseContainer();
			responseContainer.innerHTML = "<h3 class='mailFriendBlack'>We are sorry but there was an error sending you email. Please try again later.</h3>"
		}
	}
}

function sendRequest() {
	var poststring =
		"$receiverName$=" + encodeURI(recieverNameArray) + "&" +
		"$receiverAddress$=" + encodeURI(recieverEmailArray) + "&" +
		"error=" + encodeURI(errorAddress) + "&" +
		"success=" + encodeURI(successAddress) + "&" +
		"$subject$=" + encodeURI(emailSubject) + "&" +
		"body=" + encodeURI(emailBody) + "&" +
		"$senderName$=" + encodeURI(senderName) + "&" +
		"$senderAddress$=" + encodeURI(senderEmail);
		
	makePOSTRequest('/email/prepareMailServlet', poststring);
}


// email validation script

var recieverNameArray = "";
var recieverEmailArray = "";
var senderName = "";
var senderEmail = "";
var senderMessage = "";

// error and success response pages

var errorAddress = "/futureweapons/mailtofriend/error.html";
var successAddress = "/futureweapons/mailtofriend/success.html";

// Email subject and body text can be changed here

var emailSubject = "";
var emailBody = "";

function sendEmails() {
	
	submit_OK = true;
	error_string = "";
	recieverNameArray = "";
	recieverEmailArray = "";
	
	validateAddresses();
	
	if(submit_OK) {
		buildEmailStrings();
		sendRequest();
	} else {
		alert(error_string);
	}
		
	return false;
}

function validateAddresses() {
	
	if (document.getElementById("senderName").value == "") {
		submit_OK = false;
		error_string += "You must include your name\n";
	}
	
	if (!validEmailAddress(document.getElementById("senderEmail").value)) {
		submit_OK = false;
		error_string += "Your email address must be valid\n";
	}
	
	for (i=1; i<=numberRecipients; i++) {
		if (document.getElementById("recipientName_" + i).value == "") {
			submit_OK = false;
			error_string += "You must include a name for recipient " + i + "\n";
		}
		if (!validEmailAddress(document.getElementById("recipientEmail_" + i).value)) {
			submit_OK = false;
			error_string += "You must include a valid email address for recipient " + i + "\n";
		}
	}
	
}

	// valid and invalid regular expressions for validating email addresses

var invalid = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
var valid = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;

function validEmailAddress(emailAddress) {
  if (!invalid.test(emailAddress) && valid.test(emailAddress)) {
    return true;
  }
  else {
  	return false;
  }
}

function buildEmailStrings() {
	
	/*
	 * Translations
	 */
	
	var tableTitle = document.title;
	var mainPageHref = window.location;
	var mythSubject = " sent you this page from " + document.title;
	//var transSays = " says:";
	
	/*
	 * End Translation
	 */
	
	for (i=1; i<=numberRecipients; i++) {
		recieverNameArray += document.getElementById("recipientName_" + i).value + "||||";
		recieverEmailArray += document.getElementById("recipientEmail_" + i).value + "||||";
	}
	
	senderName = document.getElementById("senderName").value;
	senderEmail = document.getElementById("senderEmail").value;
	senderMessage = document.getElementById("senderMessage").value;
	
	emailSubject = senderName + mythSubject;
	
	emailBody = "";
	emailBody += "<span style='font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; color: #082F57; font-size: 12px; text-decoration: none;'>";
	emailBody += "<p>" + "$receiverName$" + ",</p>";
	emailBody += "<p>" + senderName + "";
	emailBody += " sent you this email</p>";
	emailBody += "<p>Please <a href='";
	emailBody += mainPageHref;
	emailBody += "' target='_blank'>CLICK HERE</a> to see the page that was sent to you.</p>";
	if (senderMessage != "") {
		emailBody += "<p>Message: " + senderMessage + "</p>";
	}
	emailBody += "</span>";

	
}


