
function toggleButtons(state, formName) {
	if (formName) var inputs = document.forms[formName].getElementsByTagName('input');
	else var inputs = document.getElementsByTagName('input');
	for (i = 0; i < inputs.length; i++) {
		if (inputs[i].type == 'button' || inputs[i].type == 'submit') inputs[i].disabled = state;
	}
}

var formSuccess = function(t) {
	toggleButtons(0);
	kill();
	eval(t.responseText);
}

var formError = function(t) {
	toggleButtons(0);
	kill();
	alert('Error ' + t.status + ' -- ' + t.statusText);
}

function ajaxSubmit(formName, url) {
	toggleButtons(1, formName);
	startActivity();
	var request = new Ajax.Request(url, {method:'post', postBody:Form.serialize(formName), onSuccess:formSuccess, onFailure:formError});
}

function ajaxRequest(url, queryStr) {
	startActivity();
	var request = new Ajax.Request(url, {method:'post', postBody:queryStr, onSuccess:formSuccess, onFailure:formError});	
}

function showAndTell(box, boxClass, txtContainer, txt, scrollToElem) {

	var displayFunc = function(box, boxClass, txtContainer, txt) {
		if ($(box).style.display == 'none') {
			$(txtContainer).innerHTML = txt;
			$(box).className = boxClass;
			new Effect.Appear(box, {duration:0.3});
		} else {
			new Effect.Opacity(box, {from:1.0, to:0.1, duration:0.3, afterFinish:function(){
				$(txtContainer).innerHTML = txt;
				$(box).className = boxClass;
				new Effect.Opacity(box, {from:0.1, to:1.0, duration:0.2});
			} });
		}
	}

	if (scrollToElem) {
		new Effect.ScrollTo(scrollToElem, {duration:0.1, afterFinish:displayFunc(box, boxClass, txtContainer, txt)});
	} else {
		displayFunc(box, boxClass, txtContainer, txt);
	}

}

function toggleChecks (formId, state, prefix) {
	var elems = $(formId).getElementsByTagName('input');
	for (var i = 0; i < elems.length; i++) {
		if (prefix) {
			if (elems[i].type == 'checkbox' && elems[i].id.substr(0, prefix.length) == prefix) eval("elems[i].checked = "+state+";");
		} else {
			if (elems[i].type == 'checkbox') eval("elems[i].checked = "+state+";");
		}
	}
}

function selectAll (unselect) {
	elements = document.getElementsByTagName('input');
	for (i = 0; i < elements.length; i++) {
		if (elements[i].type == 'checkbox' && !unselect) {
			elements[i].checked = true;
		} else if (elements[i].type == 'checkbox' && unselect) {
			elements[i].checked = false;
		}
	}
}