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 ($('roi_form')) {
		// Setup the text field AJAX functions
		Event.observe('numTechs', 'keyup', function (event) { if (nonblankValidate($F('numTechs'))) { setCSSClass($('numTechs'), 'validText'); swapImage($('imgTechInvalid'),$('imgTechValid')); } else { setCSSClass($('numTechs'), 'invalidText'); swapImage($('imgTechValid'),$('imgTechInvalid')); } roiUpdatePreview(); }, false);
		Event.observe('numTechHours', 'keyup', function (event) { if (nonblankValidate($F('numTechHours'))) { setCSSClass($('numTechHours'), 'validText'); swapImage($('imgHoursInvalid'),$('imgHoursValid')); } else { setCSSClass($('numTechHours'), 'invalidText'); swapImage($('imgHoursValid'),$('imgHoursInvalid')); } roiUpdatePreview(); }, false );
		Event.observe('shopRate', 'keyup', function (event) { if (nonblankValidate($F('shopRate'))) { setCSSClass($('shopRate'), 'validText'); swapImage($('imgShopInvalid'),$('imgShopValid')); } else { setCSSClass($('shopRate'), 'invalidText'); swapImage($('imgShopValid'),$('imgShopInvalid')); } roiUpdatePreview(); }, false);
		Event.observe('avgDaysPerMonth', 'keyup', function (event) { if (nonblankValidate($F('avgDaysPerMonth'))) { setCSSClass($('avgDaysPerMonth'), 'validText'); swapImage($('imgDaysInvalid'),$('imgDaysValid')); } else { setCSSClass($('avgDaysPerMonth'), 'invalidText'); swapImage($('imgDaysValid'),$('imgDaysInvalid')); } roiUpdatePreview(); }, false);
		Event.observe('solvTankCost', 'keyup', function (event) { if (nonblankValidate($F('solvTankCost'))) { setCSSClass($('solvTankCost'), 'validText'); swapImage($('imgSolventInvalid'),$('imgSolventValid')); } else { setCSSClass($('solvTankCost'), 'invalidText'); swapImage($('imgSolventValid'),$('imgSolventInvalid')); } roiUpdatePreview(); }, false);
	}
}

// AJAX updater functions for updating the Message Preview
function roiUpdatePreview() {
	// Show wait image
	$('imgWait').style.display = "";
	var url = '/includes/calcFunctions.cfm';
	var pars = 'numTechHours='+escape($F('numTechHours'))+'&numTechs='+escape($F('numTechs'))+'&shopRate='+escape($F('shopRate'))+'&avgDaysPerMonth='+escape($F('avgDaysPerMonth'))+'&solvTankCost='+escape($F('solvTankCost'));
	var myAjax = new Ajax.Updater(targetId, url, {
		asynchronous: true,
		onSuccess: function(req) {
					$(targetId).innerHTML = req.responseText;
					},
		onComplete: function() {
			$('imgWait').style.display = "none";
			if ( !displayPreview && ($F('numTechs') || $F('shopRate')) ) {
				showId();
			} else if ( displayPreview && !($F('numTechs') || $F('shopRate')) ) {
				hideId();
			}
		},
		method: 'get',
		parameters: pars
	});
}

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

// Helper function to hide the targetId
function hideId () {
	displayPreview = false;
	$(targetId).innerHTML = "";
	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 non-blank
function nonblankValidate (name) {
	return (name.length >= 1);
}

// 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);
}

