Event.observe(window, 'load', init, false);

// Initialize Variables
var targetId = 'lc_preview';
var disableForm = false;
var sendMessage = false;
var displayPreview = false;

// Initialize the AJAX stuff
function init () {
	// Disable submit button
	if ($('lc_form')) {
		$('btnSubmit').disabled = true;

		// Setup the text field AJAX functions
		Event.observe('txtName', 'keyup', function (event) { if (nameValidate($F('txtName'))) { setCSSClass($('txtName'), 'validText'); swapImage($('imgNameInvalid'),$('imgNameValid')); } else { setCSSClass($('txtName'), 'invalidText'); swapImage($('imgNameValid'),$('imgNameInvalid')); } updatePreview(); }, false);
		Event.observe('txtEmail', 'keyup', function (event) { if (emailValidate($F('txtEmail'))) { setCSSClass($('txtEmail'), 'validText'); swapImage($('imgEmailInvalid'),$('imgEmailValid')); } else { setCSSClass($('txtEmail'), 'invalidText'); swapImage($('imgEmailValid'),$('imgEmailInvalid')); } updatePreview(); }, false );
		Event.observe('txtURL', 'keyup', function (event) { if (urlValidate($F('txtURL'))) { setCSSClass($('txtURL'), 'validText'); swapImage($('imgURLInvalid'),$('imgURLValid')); } else { setCSSClass($('txtURL'), 'invalidText'); swapImage($('imgURLValid'),$('imgURLInvalid')); } updatePreview(); }, false);
		Event.observe('txtMessage', 'keyup', function (event) { if (messageValidate($('txtMessage').value)) { setCSSClass($('txtMessage'), 'validText'); swapImage($('imgMessageInvalid'),$('imgMessageValid')); } else { setCSSClass($('txtMessage'), 'invalidText'); swapImage($('imgMessageValid'),$('imgMessageInvalid')); } updatePreview(); }, false);

		// Setup the submit button AJAX functions
		Event.observe('btnSubmit', 'click', function (event) { hideId(); sendMessage = true; displayPreview = false; $('btnSubmit').disabled = true; $('imgWait').style.display = ""; window.setTimeout('sendEmailMessage()', 3000);}, false);
	}
}

// AJAX updater functions for updating the Message Preview
function updatePreview() {

	// Show wait image
	$('imgWait').style.display = "";
	
	// Disable/Enable Submit button
	if ( (messageValidate($('txtMessage').value) && emailValidate($F('txtEmail')) && nameValidate($F('txtName'))) && (disableForm != true) ) {
		$('btnSubmit').disabled = false;
	} else {
		$('btnSubmit').disabled = true;
	}

	var url = 'index.php';
	var pars = 'sendMessage='+sendMessage+'&txtEmail='+escape($F('txtEmail'))+'&txtName='+escape($F('txtName'))+'&txtURL='+escape($F('txtURL'))+'&txtMessage='+escape($('txtMessage').value);
	var myAjax = new Ajax.Updater(targetId, url, {
		asynchronous: true,
		onComplete: function() {
			$('imgWait').style.display = "none";
			if ( !displayPreview && ($F('txtName') || $F('txtMessage')) ) {
				showId();
			} else if ( displayPreview && !($F('txtName') || $F('txtMessage')) ) {
				hideId();
			}
		},
		method: 'get',
		parameters: pars
	});
}

// Helper function to shortcut actions when sending a message
function sendEmailMessage() {
	updatePreview();
	sendMessage = false;
	disableForm = true;
	$('btnSubmit').disabled = true;
}

// Helper function to show the targetId
function showId () {
	displayPreview = true;
	Effect.BlindDown(targetId);
}

// Helper function to hide the targetId
function hideId () {
	displayPreview = false;
	Effect.BlindUp(targetId);
}

// Helper function for colorizing the text fields
function setCSSClass (field, className) {
	field.className = className;
}

// Helper function for swapping out images
function swapImage (replaceeImage, replacerImage) {
	replaceeImage.style.display = "none";
	replacerImage.style.display = "";
}

// Validation function for the name field
function nameValidate (name) {
	return (name.length >= 2);
}

// Validation function for the email field
function emailValidate (email) {
	var regExpr = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	return regExpr.test(email);
}

// Validation function for the url field
function urlValidate (url) {
	var regExpr = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/i;
	return regExpr.test(url) && url.length >= 10;
}

// Validation function for the message field
function messageValidate (message) {
	return (message.length >= 4);
}

