var args = [];
var form;

function requireFields() {
	form = countForms();	// form position

	if (arguments.length) {
		args = arguments;
		document.onkeyup = function (e) { allowSubmit() }
		document.onclick = function (e) { allowSubmit() }
		allowSubmit();
	}

	eventFieldError();
}

function allowSubmit() {
	if (fieldCheck()) {
		document.getElementById('allow').disabled = false;
	}
	else {
		document.getElementById('allow').disabled = true;
	}
}

function fieldCheck() {
	for ( var i = 0; i < args.length; i++ ) {

		var elm = document.forms[form].elements[args[i]];

		if (!elm.value) { return false }

		if (elm.type == 'checkbox' || elm.type == 'radio') {
			if (!elm.checked) {
				return false;
			}
		}
	}
	return true;
}

function countForms() {
	var total = 0;
	for ( var i = 0; i < document.forms.length; i++ ) {
		total++;
	}

	if (total > 0) {
		return total - 1;	// array always begins with a 0
	}
	else {
		return 0;
	}
}

function eventFieldError() {
	var elm = document.getElementsByTagName('*');

	var obj = document.getElementById('alert')

	var error;

	for ( var i = 0; i < elm.length; i++ ) {
		if (elm[i].className.match(/error/)) {
			elm[i].onmouseover = function (e) {
				error         = obj.innerHTML;
				obj.innerHTML = this.title;
				this.style.backgroundColor = "#FF0000";
				this.style.color           = "#FFFFFF";
			}

			elm[i].onmouseout = function (e) {
				obj.innerHTML = error;
				this.style.backgroundColor = "#FFFFFF";
				this.style.color           = "#FF0000";
			}
		}
	}
}

function eventSubmit() {
	document.getElementById('allow').onclick = function (e) {
		disableSubmit()
	};
}

function disableSubmit() {
	document.getElementById('allow').disabled = true;
	document.forms[form].submit();	// i.e. is lame, fix
}

function focusFirstField(name) {
	if (!name) { name = 0 }

	for( var i = 0; i < document.forms[name].length; i++ ) {
		if (document.forms[name][i].type == 'text' || document.forms[name][i].type == 'password' || document.forms[name][i].type == 'textarea') {
			if (document.forms[name][i].disabled != true) {
				document.forms[name][i].focus();
				break;
			}
		}
	}
}

function limitText( field, count_id, char_limit ) {
	var new_field = field.value.replace(/(|\n)/g, '');		// don't count white spaces or newlines

	if (new_field.length >= char_limit) {
		field.value = field.value.substring( 0, 255 );

		alert('You have reached the limit of ' + char_limit + ' characters');
	}
	else {
		document.getElementById(count_id).innerHTML = 'Characters remaining: ' + (char_limit - new_field.length);
	}
}

function highlightCheckedRow(id) {
	var d = document.getElementById(id);

	if (d.checked) {
		color = "#FFFF00";
		document.getElementById('allow0').disabled = false;
		document.getElementById('allow1').disabled = false;
	}
	else {
		color = "#FFFFFF";
		document.getElementById('allow0').disabled = true;
		document.getElementById('allow1').disabled = true;
	}

	var elm = d.parentNode;

	while ( elm.tagName.toLowerCase() != "tr" ) {
		elm = elm.parentNode;
	}

	elm.bgColor = color;
}

function checkAll(result_total) {
	for ( var i = 1; i <= result_total; i++ ) {

		var d = document.getElementById("check_" + i);

		if (d.checked == true) {
			d.checked = false;
			highlightCheckedRow("check_" + i);
		}
		else {
			d.checked = true;
			highlightCheckedRow("check_" + i);
		}
	}
}
