/*
	date:			2006/07/11
	by:				Felicitas Frost (mail@Felicitas-Frost.de)
	content:	check length/ content of form-fields

	functions:

	(0) check_form			:	main
	(1) check_input			:	check on length of input/textarea-string
	(2) check_email			:	check email-address on guilty value
	(3) check_select		:	check if any choice is taken
	(4) trim						:	cut beginning and ending spaces from string
	(5) changeBgc				:	change background-color of form-fields
*/

// ----------------------
// init
// ----------------------
// Nachrichtentext fuer alert-Anzeige, wenn Felder inkorrekt ausgefuellt sind
var error_message						= "Bitte füllen Sie alle farblich hinterlegten Pflichtfelder\nmit gültigen Werten aus!";
		error_message					 += "\n\n";

// Farbe fuer den Hintergrund der Formfelder, wenn Sie nicht korrekt ausgefuellt sind
var bgc_error = '#d6e2d9';

// Default-Farbe fuer den Hintergrund fuer Formfelder, die korrekt ausgefuellt sind
var bgc_default = 'WHITE';

var formname								= '';
var error										= false;
var	incorrect_fields_names	=	'';			// takes names of incorrect fields

// -----------------------------
// (0) check_form
// -----------------------------
function check_form(form_name) {

	incorrect_fields_names	=	'';
  error										= false;
  formname								= form_name;

  check_input('vorname', 2);
  check_input('name', 2);
  check_email('email');
  check_input('nachricht', 10);

  if (error == true) {
  	changeBgc(incorrect_fields_names);
		alert(error_message);
		return false;
	}
	else return true;
}


// -------------------------------------------
// (1) check_input
// -------------------------------------------

function check_input(field_name, field_size) {

	var field_value	= trim(formname.elements[field_name].value);

  if (field_value.length < field_size) {
  	error = true;
  	incorrect_fields_names += '##' + field_name + '##';
  }
}


// -------------------------------
// (2) check_email
// -------------------------------

function check_email(field_name) {

	var field_value	= formname.elements[field_name].value;
	var pattern			= "^[0-9a-zA-ZäöüÄÖÜß]([-_.]?[0-9a-zA-ZäöüÄÖÜß])*@[0-9a-zA-ZäöüÄÖÜß]([-_.]?[0-9a-zA-ZäöüÄÖÜß])*\\.[a-z]{2,3}$";

	var result		= field_value.search(pattern);

	if(result == -1) {
		error = true;
		incorrect_fields_names += '##' + field_name + '##';
	}
}


// -----------------------------------------------
// (3) check_select
// -----------------------------------------------

function check_select(field_name, field_default) {

	var field_value	= formname.elements[field_name].value;

	if (field_value == field_default) {
		error = true;
		incorrect_fields_names += '##' + field_name + '##';
	}
}


// ------------------
// (4) trim
// ------------------

function trim(text) {
	return text.replace(/^\s*|\s*$/g,"");
}


// ----------------------
// (5) changeBgc
// ----------------------

function changeBgc(incorrect_fields_names) {

	var numFormElements	= formname.elements.length;	// number of fields in form

	// traverse from-elements
	for(var s=1; s < numFormElements; s++) {

		var pattern = "##"+formname.elements[s].name+"(##){1,}";

		if (incorrect_fields_names.search(pattern) != -1) formname.elements[s].style.backgroundColor = bgc_error;
		else  formname.elements[s].style.backgroundColor = bgc_default;
	}

	return true;
}
