/*	JavaScript Library (4) "AutoFormCheck"
		Developed for forms to be automatically checked on right input.
		Copyright (c) 2003 Realize99
		written by Joachim Maderer
		Dependences: basic/frmcheck.js; basic/format.js
		See readme.txt file for correct use!
*/

/* default error messages: */

var s_err_required = "Das Feld '$0' erfordert eine Eingabe!";
var s_err_mail = "Ihre E-Mail Adresse im Feld '$0' ist ungültig!";
var s_err_char = "Der Wert im Feld '$0' ist zu kurz, min. Länge $1 Zeichen!";
var s_err_badchar = "Zügeln Sie bitte Ihre Ausdrucksweise im Feld '$0'!";
var s_err_date = "Das Datum im Feld '$0' ist ungültig!";
var s_err_time = "Die Zeitangabe im Feld '$0' ist ungültig! (Format: hh:mm:ss)";
var s_err_numerical = "Der Wert im Feld '$0' ist nicht numerisch (Komma- od. Ganzzahl)! Bitte überprüfen Sie Ihre Eingabe!";
var s_err_integer = "Der Wert im Feld '$0' ist keine ganze Zahl! Bitte überprüfen Sie Ihre Eingabe!";
var s_err_selection = "Bitte treffen Sie eine Auswahl in der Liste '$0'!";
var s_err_checkbox = "Bitte wählen Sie mindestens $1 Checkbox(en) aus! (Liste: '$0')";

/* language function ($0 = fieldname, $1 = length/further params */

function writeMessage(s_msg)
{
 		var s_text = s_msg;
		for(var i = 1; i < writeMessage.arguments.length; i++)
		{
		 		s_text = s_text.replace("$" + (i-1), writeMessage.arguments[i]);
		}
		alert(s_text);
}

function checkForms(strForm) { // this function reads all dependence-fields in all forms
		var regTest = /_dep$/; // ending _dep for hidden dependence-fields
		var conditions = new Array(); var ii=0;
		for(ii=0;ii<document.forms[strForm].elements.length;ii++) {
				if(regTest.test(document.forms[strForm].elements[ii].name)) {
					objCurrent = eval("document.forms[\""+strForm+"\"]."+
								document.forms[strForm].elements[ii].name.substring(0,
								document.forms[strForm].elements[ii].name.length-4));
					conditions = document.forms[strForm].elements[ii].value.split('\\');
					c=runCheck(objCurrent.value,conditions[0],conditions[1],conditions[2],conditions[3], objCurrent);
					if(c==false) {
						try
						{
						 	 objCurrent.focus();
						}
						catch(e) {}
					  return(false);
					}
				}
		}
		return(true);
}
function runCheck(pValue,pCtrlType,pFieldName,pChecktype,pParameter, pElement) {
		if(pCtrlType=='opt'&&pValue=='') {
			 return(true);
		}
		else if(pCtrlType=='req'&&pValue=='') {
			 writeMessage(s_err_required, pFieldName);
			 return(false);
		}
		else {
		switch(pChecktype) {
			 case 'mail':
			 			if(!(c=checkMail(trimSpaces(pValue)))) writeMessage(s_err_mail, pFieldName);
						return(c);
			 break;
			 case 'char':
			 			if(pParameter>0) {
			 				 if(pValue.length<pParameter) {
							 		writeMessage(s_err_char, pFieldName, pParameter);
									return(false);
							 }
							 else return(true);
						}
						else return(true);
			 break;
			 case 'badchar':
			 			if(pParameter>0) {
			 				 if(pValue.length<pParameter) {
							 		writeMessage(s_err_char, pFieldName, pParameter);
									return(false);
							 }
							 else {
							 		if(!(c=checkBadWords(pValue))) writeMessage(s_err_badchar, pFieldName);
									return(c);
							 }
						}
						else {
							 if(!(c=checkBadWords(pValue))) writeMessage(s_err_badchar, pFieldName);
							 return(c);
						}		 					 
			 break;
			 case 'date':
			 		  if(!(c=checkDate(pValue))) writeMessage(s_err_date, pFieldName);
						return(c);
			 break;
			 case 'time':
			 			if(!(c=checkTime(pValue))) writeMessage(s_err_time, pFieldName);
			 			return(c);
			 break;
			 case 'numerical':
			 var regTest0 = /[^0-9\.,]/;
			 if(regTest0.test(trimSpaces(pValue))) {
			 			writeMessage(s_err_numerical, pFieldName);
						return(false);
			 } else return(true);
			 break;
			 case 'integer':
			 var regTest1 = /[^0-9]/;
			 if(regTest1.test(trimSpaces(pValue))) {
			 			writeMessage(s_err_integer, pFieldName);
						return(false);
			 } else return(true);
			 break;
			 case 'selection':
			 for(i = 0; i < pElement.length; i++)
			 {
			 		 if(pElement[i].checked==true) return(true);
			 }
			 writeMessage(s_err_selection, pFieldName);
			 return(false);
		}
		}
}

function checkboxSelection(s_form, a_fields, s_title, n_min)
{
 		var n_checked = 0;
 		for(i = 0; i < a_fields.length; i++)
		{
 		 		if(document.forms[s_form].elements[a_fields[i]].checked == true) n_checked++;
		}
		if(n_checked < n_min) 
		{
		 		writeMessage(s_err_checkbox, s_title, n_min);
				return(false);
		}
		else return(true);
}

