function createMessage(form_id, messageText)
{
	var message_id = form_id + '_message';
	var message = $(message_id);

	if (!messageText)
	{
		if (!document.messageText)
		{
			messageText = 'Done.';
		}
		else
		{
			messageText = document.messageText;
		}
	}
	
	if (!message)
	{
		message = new Element('div', {
			'events': {
				'click': function() {
					this.destroy();
				}
			},
			'class': 'alert',
			'id': message_id,
			'title': 'Click to close this box'
		});
				
		message.injectBefore($(form_id));
	}
	
	message.set('text', messageText);
	
	var messageCoordinates = message.getCoordinates();

	if (window.getScrollTop() > messageCoordinates.top)
	{
		window.scrollTo(0, messageCoordinates.top - 10);
	}
}

var currentForm = null;

function submitForm(form, container)
{
	document.messageText = '';
	
	currentForm = form;
	
	form.id = form.action + '_form';

	createMessage(form.id, 'Processing...');

	var options = {
		evalScripts: true,
		onFailure: function(request) 
		{
			createMessage(form.id, 'Request failed.');
		},
		onSuccess: function(result) 
		{
			if (container)
			{
				$(container).set('text', result);
			}
			
			(function(){createMessage(form.id);}).delay(50); // need to set a delay - FF bug
		}
	};

	$(form.id).set('send', options);
	$(form.id).send();

	return false;
}

function clearForm(form)
{
	if (form)
	{
		targetForm = form;
	}
	else if (currentForm)
	{
		targetForm = currentForm;
	}
	
	if (targetForm)
	{
		var elements = getFormElements($(targetForm));
		
		elements.each(function(element)
		{
			switch(element.get('tag'))
			{
				case 'select':
					if (element.multiple)
					{
						element.value = null;
					}
					else
					{
						element.value = '';
					}
					element.fireEvent('change');
					break;
					
				case 'textarea': 
					element.value = '';
					element.fireEvent('change');
					break;
					
				case 'input': 
					if (element.readOnly)
					{
						break;
					}
					
					if (['checkbox', 'radio'].contains(element.type))
					{
						element.checked = false; 
						element.fireEvent('click');
					}
					else if (['text', 'password'].contains(element.type))
					{
						element.value = '';
						element.fireEvent('change');
					}
					break;
			}
		});
	}

	return false;
}

function confirmAction(selector, message)
{
	var selected = false;
	
	$$(selector).each(function(element)
	{
		if (element.checked)
		{
			selected = true;
		}
	});
	
	if (selected)
	{
		if (!window.confirm(message))
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	else
	{
		alert('Make a selection first.');

		return false;
	}
}

function selectAll(selector, state)
{
	$$(selector).each(function(element)
	{
		if (!element.disabled)
		{
			element.checked = state
		}
	});
}

function checkAll(formName, boxName, checkval)
{
	for (i = 0; i < formName.elements.length; i++)
	{
		var formElement = formName.elements[i];

		if (formElement.type == 'checkbox' && formElement.name == boxName && formElement.disabled == false)
		{
			formElement.checked = checkval.checked;
		}
	}
}

function popupWindow(image) {
  window.open('popupimage.php?image='+image,'popupWindow','resizable=1,HEIGHT=200,WIDTH=200')
}

function UpdateContent(container, url)
{
	$(container).load(url);
}

function getFormElements(form)
{
	return $$(form.getElements("input"), form.getElements("select"), form.getElements("textarea"));
}

/*
// IE7 bugfix

XHR.prototype.setTransport = function(){
	if (window.ie7)
	{
		this.transport = (window.XMLHTTPRequest) ? new XMLHTTPRequest() : (window.ie ? new ActiveXObject('Microsoft.XMLHTTP') : false);
	}
	else
	{
		this.transport = (window.XMLHttpRequest) ? new XMLHttpRequest() : (window.ie ? new ActiveXObject('Microsoft.XMLHTTP') : false);
	}
	return this;
}
*/
