// Miscellaneous

function goto() {
	var querystring = '';
	if (arguments.length > 0) querystring = 'fuseaction=' + arguments[0];
	if (arguments.length > 1) for (var i = 1; i < arguments.length; i++) querystring += '&' + arguments[i];
	location.search = querystring;
}

function selectRow(e) {

	var trigger = Event.element(e);
	if (trigger.tagName == 'INPUT') return false;

	var thisrow = Event.element(e);
	while (thisrow.tagName != 'TR') thisrow = thisrow.parentNode;
	$(thisrow).addClassName('TableRow_Selected');

	if (trigger.tagName == 'A') return false;
	else if (trigger.up().select('A').length > 0) {
		if (trigger.up().select('A')[0].onclick) trigger.up().select('A')[0].onclick();
		else window.location.href = trigger.up().select('A')[0].href;
		return false;
	}
}

function documentFormsInit() {

	$A(document.forms).each(function(form) {

		// Browser inconsistency fix

		if (!Prototype.Browser.IE) {

			for (var i = 0; i < form.elements.length; i++) 
				if (form.elements[i].type == 'text') $(form.elements[i]).setStyle({ 'margin': '1px 0px 1px 0px' }); 
				else if (form.elements[i].type == 'password') $(form.elements[i]).setStyle({ 'margin': '1px 0px 1px 0px' }); 
				else if (form.elements[i].type == 'checkbox') $(form.elements[i]).setStyle({ 'margin': '3px 0px 4px 0px' }); 
				else if (form.elements[i].type == 'radio') $(form.elements[i]).setStyle({ 'margin': '3px 0px 4px 0px' }); 
				else if (form.elements[i].type == 'textarea') $(form.elements[i]).rows = $(form.elements[i]).rows - 1; 

		}

		// Form globals

		form.selectToggle = false;

		form.hasChanged = false;

		$A(form.elements).each(function(el) { 
			Event.observe(el, 'change', function() { form.hasChanged = true; });
		});
		
		// Extended functions

		form.cancel = function () {
			if (!this.hasChanged) return true;
			else return confirm('You have made changes to this form, if you proceed you will lose these changes.\nDo you wish to proceed?');
		}

		form.clear = function () {
			this.hasChanged = true;
			for (var i = 0; i < this.elements.length; i++) {
				switch (this.elements[i].type) {
					case 'checkbox':	this.elements[i].checked = false; break;
					case 'radio':		this.elements[i].checked = false; break;
					case 'select-one':	this.elements[i].options[0].selected = true; break;
					case 'submit':		break;
					case 'reset':		break;
					case 'button':		break;
					case 'hidden':		break;
					default:			this.elements[i].value = ''; break;
				}
			}
			if (typeof this.clearExtra != 'undefined') this.clearExtra();
		}

		form.proceed = function () {
			if (this.onsubmit()) this.submit();
		}

		form.revert = function () {
			this.reset();
			this.hasChanged = false;
			if (typeof this.revertExtra != 'undefined') this.revertExtra();
		}

		// Load additional form defaults (if specified)

		if (typeof form.revertExtra != 'undefined') form.revertExtra();

	});

}

// Onload

Event.observe(window, 'load', function() { 

	documentFormsInit();

	if (!Prototype.Browser.IE) {

		$A(document.getElementsByTagName('UL')).each(function (el) {
			$(el).setStyle({ 'margin': '0px 0px 10px 0px' }); 
		});
	
		$A(document.getElementsByTagName('OL')).each(function (el) {
			$(el).setStyle({ 'margin': '0px 0px 10px 0px' }); 
		});

	}

});
