var recommendToggle = true;
var senderText = 'Your name:';
var senderEmailText = 'Your email address:';
var recipientEmailText = 'Friend\'s email address:';
var commentsText = 'Comments:';

function ShowRecommendForm(forceCopy) {
	var formObj = document.recommend;

	if (recommendToggle && !forceCopy) {
		//hide copy
		new Effect.SlideUp('recommend-copy', {duration: 0.5});
		
		//reset copy after it is hidden
		//the text should match the default copy in the web page
		window.setTimeout("document.getElementById('recommend-copy-copy').innerHTML = \"Click above to recommend this site to a friend.\"", 550);
		
		//set default form values
		formObj.senderName.value = senderText;
		formObj.senderEmail.value = senderEmailText;
		formObj.recipientEmail.value = recipientEmailText;
		formObj.comments.value = commentsText;
		
		//display form
		new Effect.SlideDown('recommend-form-container');
	} else {
		//hide form
		new Effect.SlideUp('recommend-form-container');
		//display copy after effect finishes
		window.setTimeout("new Effect.SlideDown('recommend-copy', {duration: 0.25})", 750)
	}
	recommendToggle = !recommendToggle;
	return false;
}

function ValidateRecommendForm(formObj) {
	var pulsateMinOpacity = 0.1;
	
	//required fields
	if (StripWhitespace(formObj.senderName.value) == "" || formObj.senderName.value == senderText) {
		formObj.senderName.value = senderText;
		new Effect.Pulsate('sender-name', {from: pulsateMinOpacity});
		return false;
	}
	
	if (StripWhitespace(formObj.senderEmail.value) == "" || formObj.senderEmail.value == senderEmailText) {
		formObj.senderEmail.value = senderEmailText;
		new Effect.Pulsate('sender-email', {from: pulsateMinOpacity});
		return false;
	} else if (!isValidEmail(formObj.senderEmail.value)) {
		new Effect.Pulsate('sender-email', {from: pulsateMinOpacity});
		return false;
	}
	
	if (StripWhitespace(formObj.recipientEmail.value) == "" || formObj.recipientEmail.value == recipientEmailText) {
		formObj.recipientEmail.value = recipientEmailText;
		new Effect.Pulsate('recipient-email', {from: pulsateMinOpacity});
		return false;
	} else if (!isValidEmail(formObj.recipientEmail.value)) {
		new Effect.Pulsate('recipient-email', {from: pulsateMinOpacity});
		return false;
	}
	
	//if we got here, form data is valid
	
	//clear comments of default text
	if (formObj.comments.value == commentsText) {
		formObj.comments.value = "";
	}
	
	//submit form
	formObj.submit();
	return true;
}

var http_request = false;
function MakePostRequest(url, parameters) {
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			// set type accordingly to anticipated content type
			http_request.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		document.getElementById('recommend-copy-copy').innerHTML = "This functionality is not supported by your browser&nbsp;&#8212; your recommendation could not be sent.";
		ShowRecommendForm(true);
		return false;
	}

	http_request.onreadystatechange = RequestResult;
	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 RequestResult() {
	if (http_request.readyState == 4) {

		if (http_request.status == 200 && http_request.responseText == "success") {
			//success
			document.getElementById('recommend-copy-copy').innerHTML = "Thank you for recommending this site. Click above to send another email.";            
		} else {
			//problem with the request
			document.getElementById('recommend-copy-copy').innerHTML = "Your recommendation could not be sent.  Please try again later.";
		}
		//hide form and display copy
		ShowRecommendForm(true);
	}
}

function SubmitRecommendation(formObj) {
	var poststr = 'senderName=' + encodeURIComponent(formObj.senderName.value) + '&senderEmail=' + encodeURIComponent(formObj.senderEmail.value) + '&recipientEmail=' + encodeURIComponent(formObj.recipientEmail.value) + '&comments=' + encodeURIComponent(formObj.comments.value);
	MakePostRequest('/actions/send_to_friend.php', poststr);
}
