// Written by FA, 2011

// **************************************
// *** Formular-Funktionen
// **************************************
function checkField(nameOfField, alertText) {
	// Handelt es sich um...
	if ((document.getElementsByName(nameOfField).length > 1) && (document.getElementsByName(nameOfField)[0].type == 'radio')) {
		// a.) Radioboxen?
		var isAtLeastOneChecked = false;
		for (var i = 0; i < document.getElementsByName(nameOfField).length; i++) {
			if (document.getElementsByName(nameOfField)[i].checked == true) {
				isAtLeastOneChecked = true;
				break;
			}
		}
		if (isAtLeastOneChecked == false) {
			alert(alertText);
			document.getElementsByName(nameOfField)[0].focus();
			return false;
		}
	} else if (document.getElementsByName(nameOfField)[0].type == 'checkbox') {
		// b.) Checkbox(en)?
		var isAtLeastOneChecked = false;
		for (var i = 0; i < document.getElementsByName(nameOfField).length; i++) {
			if (document.getElementsByName(nameOfField)[i].checked == true) {
				isAtLeastOneChecked = true;
				break;
			}
		}
		if (isAtLeastOneChecked == false) {
			alert(alertText);
			document.getElementsByName(nameOfField)[0].focus();
			return false;
		}
	} else if (document.getElementsByName(nameOfField)[0].type == 'select-one') {
		// c.) Einfache Auswahllisten?
		if (document.getElementsByName(nameOfField)[0].selectedIndex == 0) {
			alert(alertText);
			document.getElementsByName(nameOfField)[0].focus();
			return false;
		}
	} else if (document.getElementsByName(nameOfField)[0].type == 'text') {
		if (trim(document.getElementsByName(nameOfField)[0].value) == '') {
			alert(alertText);
			document.getElementsByName(nameOfField)[0].focus();
			document.getElementsByName(nameOfField)[0].select();
			return false;
		}
	}
	return true;
}


// **************************************
// *** Trim-Funktionen
// **************************************
var trimableChars =
		" " + // an ordinary space.
		"\t" + // a tab.
		"\n" + // a new line (line feed).
		"\r" + // a carriage return.
		"\0" + // the NUL-byte.
		"\x0B"; // a vertical tab.

function trim(str) {
	return ltrim(rtrim(str));
}

function ltrim(str) {
	chars = trimableChars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str) {
	chars = trimableChars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

