function addFormEvent(formID, formDivID, responseID, responseDivID, submitID)
{
	try
	{
		$(formID).addEvent('submit', function(e) {
			new Event(e).stop();

			var failedItems = validateForm(formID);

			if (failedItems.length == 0)
			{
			
				$(submitID).setProperties({disabled: 'disabled'});
				
				var response = $(responseID);
				
				hide(formDivID);
				
				response.empty().appendText('Processing request...');
				
				show(responseDivID, 1);
				
				$(formID).send({
							update: response,
							onComplete: function() {
								
								$(formID).reset();
								setTimeout(function() {
											$(submitID).removeProperty('disabled');
											hide(responseDivID);
											}, 
								4000);
							}
				});
			}
			else
			{
				failedItems.forEach(function(itemName)
				{
					var input = $(formID).getElements('[name=' + itemName + ']');
					
					var warningColour = '#FF7777';
					
					if (input != null & input.length > 0)
					{
						var originalColour = input[0].getStyle('background-color');
												
						var effect = new Fx.Style(input[0], 'background-color', {duration:100});
						effect.start(warningColour ).chain(function() { 
							effect.start(originalColour); 
						}).chain(function() {
							effect.start(warningColour);
						}).chain(function() {
							effect.start(originalColour);
						}).chain(function() {
							effect.start(warningColour);
						}).chain(function() {
							effect.start(originalColour);
						});
					}
				});
			}
		});
	}
	catch (err)
	{
		alert(err);
	}
}

function validateForm(formID)
{
	var inputArray = $(formID).getElements('input');
	var failedValidation = [];
	
	var emailRegEx = new RegExp('[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}');
	var notEmptyRegEx = new RegExp('^.+$');
	var optionChosen = false;
	
	inputArray.forEach(function(input) 
	{
		if (input.name == 'Email')
		{
			if (!emailRegEx.test(input.value))
			{
				failedValidation[failedValidation.length] = input.name;
			}
		}
		else if (input.name == 'options')
		{}
		else
		{
			if (!notEmptyRegEx.test(input.value))
			{
				failedValidation[failedValidation.length] = input.name;
			}
		}	
	});
	
	var textArea = $(formID).getElements('textarea');
	
	if (textArea != null & textArea.length > 0)
	{
		var input = textArea[0];
		if (input.value == '' || input.value == input.defaultValue)
		{
			failedValidation[failedValidation.length] = input.name;
		}
	}
	
	var options = $(formID).getElements('input[name=options]');
	var optionChosen = false;
	
	options.forEach(function(option)
	{
		if (option.checked)
		{
			optionChosen = true;
		}
	});
			
	if (!optionChosen)
	{
		//failedValidation[failedValidation.length] = $(formID).getElements('input[name=options]');
	}
	
	return failedValidation;
}

function show(elementID, opacity)
{
	var div = $(elementID);
	if (div.getStyle('opacity') != 0)
	{
		div.setStyle('opacity', 0);
	}
	div.setStyle('visibility', 'visible');
	new Fx.Style(div, 'opacity', {duration:500} ).start(opacity);
}

function hide(elementID)
{
	var div = $(elementID);
	new Fx.Style(div, 'opacity', {duration:500} ).start(0);	
}

function centerElement(elementID)
{
	var div = $(elementID);
	var browserWidth = window.getWidth();
	var browserHeight = window.getHeight();
	var elementWidth = parseInt(div.getStyle('width'));
	var elementHeight = parseInt(div.getStyle('height'));
	var elementVertPos = ((browserHeight/2) - (elementHeight/2));
	var elementHoriPos = ((browserWidth/2) - (elementWidth/2));
	div.setStyles({left: elementHoriPos});
}

function toggleContactBox()
{
	try
	{
		if ($('contactBox').getStyle('visibility') == 'visible')
		{		
			hide('contactBox');
		}
		else
		{
			centerElement('contactBox');
			centerElement('responseContainer');
			show('contactBox', 1);
		}
	}
	catch (err)
	{
		alert(err);
	}
}

function resizeHeader(elementID)
{
	try 
	{
		var contentWidth = 706;
		var filler = $(elementID);
		var browserWidth = window.getWidth();
		var newFillerWidth = (browserWidth - contentWidth);
		filler.setStyles({width: newFillerWidth});
	}
	catch (err)
	{
		alert(err);
	}
}

function relocateMainText(elementID)
{
	try
	{
		var mainText = $(elementID);
		var browserWidth = window.getWidth();
		var newLeft = (browserWidth / 2)
		mainText.setStyles({left: newLeft});
	}
	catch (err)
	{
		alert(err);
	}
}

function setActiveTab(elementID, mapX, mapY)
{
	alert(elementID + mapX + mapY);
	try
	{
		var anchor = $E('a', elementID);
		alert(anchor.getStyle('background-position'));
		anchor.setStyle('background-position', mapX + ' ' + mapY);
	}
	catch (err)
	{
		alert(err);
	}			
}

function setSpacerHeight(heightIn)
{
	try
	{			
		var spacer = $('gallerySpacer');
		spacer.setStyles({ height: heightIn });
	}
	catch (err)
	{
		alert(err);
	}
}

function setBackground(backgroundImageIn)
{
	try
	{
		if (document.body)
		{
			document.body.background = backgroundImageIn;
		}
	}
	catch (err)
	{
		alert(err);
	}
}