		/*
		* Formularchecker
		* Copyright (c) 1999-2007 SmartHouse Media GmbH
		* Alle Rechte vorbehalten.
		**/
		
		/*
		* Erkennungsmarker nach dem geschnitten wird
		* * -fs- 16.10.01 erstellt
		**/
			var strMarker = "_rg";
		
		/*
		* Prüft die Elemente des Formularfeldes
		* * -fs- 16.10.01 erstellt
		**/
		function blnTesteEingabe(objName)
		{
			var blnRueckgabe = false;
			var strElementName = "";
			var objFElemente = new objFormular(objName);
			var objNeuesElement;
			with (objName)
			{
				for (var intI = 0 ; intI < elements.length ; intI++)
				{
					/*
					 * types:
					 * - text
					 * - hidden
					 * - radio
					 * - submit
					 * - textarea
					 * - select-one
					 * - select-multiple ???
					**/
					if (elements[intI].type=="hidden")
					{
						if (elements[intI].name.indexOf(strMarker)>-1)
						{
							strElementName = strSchneide(elements[intI].name);
							if (!(!elements[strElementName]))
							{
								// Erzeuge neues ElementenObjekt mit dessen Name, Wert, Regel und Typ(text,select,...)
								objNeuesElement = new objFrmElement(elements[strElementName].value,elements[strElementName].name,elements[intI].value,elements[strElementName].type)
								objFElemente.vdNeu(objNeuesElement);				// Füge das Element dem Formularelement hinzu
							}
						}
						else
						{
							//verwerfen
						}
					}
				}
				blnRueckgabe = objFElemente.blnTesteRegeln();										// Prüfe das Formular auf die Regeln der Elemente
			}
			return blnRueckgabe;
		}

		/*
		 * Schneidet den Marker aus einem Elementennamen ab
		 * und liefert den "gekürzten" Wert
		 * -fs- 16.10.01 erstellt
		**/
		function strSchneide(strElementName)
		{
			var strRueckgabe = strElementName;
			var intPos = strElementName.indexOf(strMarker);
			if (intPos>-1)
			{
				/*
				 * Fehler: mache ich morgen
				**/
				strRueckgabe = strRueckgabe.substring(0,intPos);
			}
			return strRueckgabe;
		}

		/*
		 * FormularObjekt
		 * nimmt die ElementenObjekte auf und erhöht dabei den IntAnzahltElemente-Zähler
		 * -fs- 16.10.01 erstellt
		**/
		function objFormular(objFrmObjekt)
		{
			this.objFrmObjekt = objFrmObjekt;
			this.vdNeu = vdHinzufuegen;
			this.blnTesteRegeln = blnTesteElementRegeln;
			this.intAnzahlElemente = 0;
			return this;

			function blnTesteElementRegeln()
			{
				var blnRueckgabe = false;
				var strElementFehler = "";
				var strMeldeFehler = "";
				var strElementVollName = "";
				var rgAusdruck;
				var blnErsatzFehlerMeldungen;
				var intErsatzFehlerMeldungNr;
				var arrFehlerMeldungen;
				for (var intAnzahl = 0 ; intAnzahl < this.intAnzahlElemente ; intAnzahl++)
				{
					intErsatzFehlerMeldungNr = 0;
					blnErsatzFehlerMeldungen = false;
					with(this[intAnzahl]) // ab jetzt beziehen sich alle Objektanfragen auf diese Element
					{
						strElementFehler = "";
						strElementVollName = "";
						for (var intI = 0 ; intI < objElmRegeln.intAnzahlElemente ; intI++)
						{
							/*
							 * Hier erfolgt die Regelprüfung. Sämtliche Regelerweiterungen sollten NUR
							 * hier eingetragen werden. Prüfung erfolgt NUR auf kleingeschriebene Regelnamen!!!
							 * strFehler sollte von jeder Regel um ihren Text erweitert (+=) werden (\n für Zeilenumbruch).
							 *			 Dieser wird bei NICHTLEEREM String dann ausgegeben
							 * die 'Regel' "vollname" ist von zentraler Bedeutung. Hier wird der Name, welcher in der
							 * Fehlermeldung angezeigt wird eingetragen. Bei den Fehlermeldungen kann dann '#' anstatt dem
							 * Namen eingesetzt werden. '#' wird dann durch den Vollname (alternativ: Elementname) ersetzt.
							 *
							 * -fs- 16.10.01 erstellt
							 * -fs- 16.10.01 Regeln hinzugefügt: minLaenge, maxLaenge,
							 * -fs- 17.10.01 Regeln hinzugefügt: abhaengig, vollname,zeichen
							 * -fs- 17.10.01 Regeln hinzugefügt: zeichen : datum
							 * -fs- 18.09.02 variable Fehlertexte ergänzt (fehlertext)
							**/
							switch(objElmRegeln[intI].strName.toLowerCase())
							{
								case "fehlertext" : strFehlerMeldung = objElmRegeln[intI].strWerte;
													var arrFehlerMeldungen = strFehlerMeldung.split(",");
													if (arrFehlerMeldungen.length>0)
													{
														blnErsatzFehlerMeldungen = true;
													};break;
								case "vollname" : strElementVollName = objElmRegeln[intI].strWerte;break;
								case "minlaenge" : if (strWert.length < objElmRegeln[intI].strWerte){ strElementFehler += (blnErsatzFehlerMeldungen)?arrFehlerMeldungen[intErsatzFehlerMeldungNr]+"\n":"# ist zu kurz / \n";};intErsatzFehlerMeldungNr++;break;
								case "maxlaenge" : if (strWert.length > objElmRegeln[intI].strWerte){ strElementFehler += (blnErsatzFehlerMeldungen)?arrFehlerMeldungen[intErsatzFehlerMeldungNr]+"\n":"# ist zu lang / \n"; };intErsatzFehlerMeldungNr++;break;
								case "abhaengig" :
								 						/*
								 						 * Falls diese Abhängigkeitsregel WAHR ist, verwirft er alle
								 						 * vorherigen Fehlermeldungen ==> Feld wird nicht geprüft
								 						 * in der Regel :
								 						 * - # wird durch das Formularobjekt ersetzt
								 						 * - die Regel wird in JavaScript-Syntax eingegeben
								 						 * - Bsp: (#frmAktienNr.value=='19909')
								 						 *   ==> nur wenn das Feld frmAktieNr den Wert 19909 hat, wird
								 						 *       die Regel ausgeführt
								 						**/
								 						objElmRegeln[intI].strWerte = objElmRegeln[intI].strWerte.replace(/#/gi,"this.objFrmObjekt.");
								 						blnTest = eval(objElmRegeln[intI].strWerte);
								 						if (!blnTest)
								 						{
								 							strElementFehler += (blnErsatzFehlerMeldungen)?arrFehlerMeldungen[intErsatzFehlerMeldungNr]:" ";
								 							intI = objElmRegeln.intAnzahlElemente; // springt aus der for-schleife ==> kein check weiterer Regeln
								 						};intErsatzFehlerMeldungNr++;break;
								case "zeichen" : switch(objElmRegeln[intI].strWerte)
													{
														case "tel" :
																	rgAusdruck = /[^0-9\-\/]/gi;
 																	if (rgAusdruck.test(strWert))
																	{
																		strElementFehler += (blnErsatzFehlerMeldungen)?arrFehlerMeldungen[intErsatzFehlerMeldungNr]+"\n":"# darf nur Zahlen und '/' '-' enthalten\n";intErsatzFehlerMeldungNr++;
																	}
																	break;
														case "email" :
																	if (strWert.length)
																	{
																		var blnFehler = false;
																		if ((strWert.indexOf("@")<2) | (strWert.indexOf(".")==-1) | (strWert.lastIndexOf(".")>strWert.length-3))
																		{
																			blnFehler = true;
																		}
																		rgAusdruck = /[^0-9a-zA-Z\-\.\@\_]/gi;
																		if (rgAusdruck.test(strWert)) blnFehler = true;
 																		if (blnFehler)
																		{
																			strElementFehler += (blnErsatzFehlerMeldungen)?arrFehlerMeldungen[intErsatzFehlerMeldungNr]+"\n":"# enthält fehlende oder falsche Zeichen /\n";intErsatzFehlerMeldungNr++;
																		}
																	}
																	break;
														case "numerisch" :
																	rgAusdruck = /[^0-9]/gi;
 																	if (rgAusdruck.test(strWert))
																	{
																		strElementFehler += (blnErsatzFehlerMeldungen)?arrFehlerMeldungen[intErsatzFehlerMeldungNr]+"\n":"# darf nur Zahlen enthalten\n";intErsatzFehlerMeldungNr++;
																	}
																	break;
														case "datum" :
																	if (strWert.length)
																	{
																		rgAusdruck = /[^0-9\.]/gi;
																		var arrPuffer = strWert.split(".")
																		var blnFehler = false
																		if (arrPuffer.length==3)
																		{
																			if (((arrPuffer[0].length>2) | (arrPuffer[0].length==0) | (arrPuffer[0].isNaN) || ((arrPuffer[0]>31) | (arrPuffer[0]<1))) | ((arrPuffer[1].length>2) | (arrPuffer[1].length==0) | (arrPuffer[1].isNaN) || ((arrPuffer[1]>12) | (arrPuffer[1]<1))) | ((arrPuffer[2].length>4) | (arrPuffer[2].length==0) | (arrPuffer[2].isNaN)))
																			{
																				blnFehler = true;
																			}
																		}
																		else
																		{
																			blnFehler = true;
																		}
																		if ((rgAusdruck.test(strWert)) | (blnFehler))
																		{
																			strElementFehler += (blnErsatzFehlerMeldungen)?arrFehlerMeldungen[intErsatzFehlerMeldungNr]+"\n":"# enthält fehlende oder falsche Zeichen (kein Datum?)\n";intErsatzFehlerMeldungNr++;
																		}
																	}
																	break;
														case "miles" :
																if (!isMilesNumberStatusOK())
																	strElementFehler += (blnErsatzFehlerMeldungen)?arrFehlerMeldungen[intErsatzFehlerMeldungNr]+"\n":"# ist keine gültige Miles&More Nummer\n";intErsatzFehlerMeldungNr++;
													}
													break;
							}
						}
						strElementVollName = (strElementVollName!="")?strElementVollName:strName;
						strElementFehler = strElementFehler.replace(/#/gi, strElementVollName);
						strMeldeFehler += strElementFehler;
					}
				}
				if (strMeldeFehler!="" && strMeldeFehler !=" ")
				{
					blnRueckgabe = false
					alert("Folgende Fehler sind beim Überprüfen Ihrer Eingaben aufgetreten:\nLors de contrôles des saisies, les erreurs suivantes sont survenues:\n\n" + strMeldeFehler );
				}
				else
				{
					blnRueckgabe = true;
				}
				return blnRueckgabe
			}

			/*
			 * Fügt ein Objekt (ElementenObjekt) hinzu
			**/
			function vdHinzufuegen(objElement)
			{
				this[this.intAnzahlElemente] = objElement;
				this.intAnzahlElemente++;
			}
		}

		/*
		 * FormularElementObjekt
		 * -fs- 16.10.01 erstellt
		**/
		function objFrmElement(strWert,strName,strRegeln,strTyp)
		{
			this.strWert = strWert;
			this.strName = strName;
			this.strTyp = strTyp;
			this.strRegeln = strRegeln;
			this.objElmRegeln = new objRegeln;
			this.objElmRegeln.vdNeu(strRegeln);
			return this;
		}

		/*
		 * RegelNObjekt
		 * nimmt alle RegelObjekte eines Elementes auf
		 * -fs- 16.10.01 erstellt
		**/
		function objRegeln()
		{
			this.intAnzahlElemente = 0;
			this.vdNeu = vdRegelHinzufuegen;
			return this;

			function vdRegelHinzufuegen(strElemente)
			{
				var arrElementPuffer;
				var arrRegelPuffer = strElemente.split(";");
				for (var intI = 0 ; intI < arrRegelPuffer.length ; intI++)
				{
					arrElementPuffer = arrRegelPuffer[intI].split(":");
					if (arrElementPuffer.length==2)
					{
						this[this.intAnzahlElemente] = new objRegel(arrElementPuffer[0],arrElementPuffer[1]);
						this.intAnzahlElemente++;
					}
				}
			}
		}

		/*
		 * FormularElementObjekt
		 * jede einzelne Regel mit Name, den Wert(en)
		 * und dem Array aus den einzelnen Werten (sollte es mehrere geben)
		 * -fs- 16.10.01 erstellt
		**/
		function objRegel(strName,strWerte)
		{
			this.strName = strName;
			this.strWerte = strWerte;
			this.arrWerte = strWerte.split(",");
		}

	function sendeFormular(strSeiteNr){
		document.frmPagingFormular.frmSeiteNr.value=strSeiteNr;
		document.frmPagingFormular.submit();
		return true;
	}

	function sendeFormularTop2002(strSeiteNr){
		if (strSeiteNr == "5")
		{
			document.frmPagingFormular.action="top-db_excel.asp";
		}
		else
		{
			document.frmPagingFormular.action="top-db_export.asp";
		}
		document.frmPagingFormular.frmSeiteNr.value=strSeiteNr;
		document.frmPagingFormular.submit();
		return true;
	}

	function moveSkyscraper(id){
		var intPos = 0;
		if ( is.ns ) {
			intPos = ((window.innerWidth - 780) / 2 ) + 780;;
		} else if ( ( document.all | is.ie ) && is.platform == "mac" ) {
			intPos = ((document.body.clientWidth - 780) / 2 ) + 780;
		} else if ( is.ie5 | is.ie55 | is.ie6 | is.ns5 | is.dom ) {
			intPos = ((document.body.clientWidth - 780) / 2 ) + 780;
		} else {
			intPos = ((document.body.clientWidth - 780) / 2 ) + 780;
		}
		var l = document.getElementById(id);
		var left = l.style.left;
		l.style.left = intPos;

		var top = l.style.top;
		l.style.top = 172;
	}

	function uebertrageSelectFelder(intAnzahl, strFeldVon, strFeldNach){
		if (intAnzahl == 1)
		{
			if (strFeldVon == 'frmFilter_0')
			{
				intI = document.frmPagingFormular.frmFilter_0.selectedIndex;
				strWert = document.frmPagingFormular.elements[strFeldVon].options[intI].value+'|'+document.frmPagingFormular.frmFilterTyp.value+'|'+document.frmPagingFormular.frmFilterWert.value;
				objNeuerEintrag = new Option(strWert,strWert,false,true);
				document.frmPagingFormular.elements[strFeldNach].options[document.frmPagingFormular.elements[strFeldNach].length] = objNeuerEintrag;
			}
			else
			{
				if (strFeldVon == 'frmFilter_1')
				{
					intI = document.frmPagingFormular.frmFilter_1.selectedIndex;
					document.frmPagingFormular.elements[strFeldVon].options[intI] = null;
					if (document.frmPagingFormular.elements[strFeldVon].length == 1)
					{
						document.frmPagingFormular.hd_frmFilter_1.value = "";
					}
				}
				else
				{
					for (var intI = document.frmPagingFormular.elements[strFeldVon].length-1; intI >0 ; intI--)
					{
						if ((document.frmPagingFormular.elements[strFeldVon].options[intI].value != "") && (document.frmPagingFormular.elements[strFeldVon].options[intI].selected == true))
						{
							objNeuerEintrag = new Option(document.frmPagingFormular.elements[strFeldVon].options[intI].value,document.frmPagingFormular.elements[strFeldVon].options[intI].text,false,true);
							document.frmPagingFormular.elements[strFeldNach].options[document.frmPagingFormular.elements[strFeldNach].length] = objNeuerEintrag;
							document.frmPagingFormular.elements[strFeldVon].options[intI] = null;
						}
					}
					if (document.frmPagingFormular.elements[strFeldVon].length == 1)
					{
						strFeldVonHidden = 'hd_'+strFeldVon;
						document.frmPagingFormular.elements[strFeldVonHidden].value = "";
					}
				}
			}
		}
		else
		{
			for (var intI = document.frmPagingFormular.elements[strFeldVon].length-1; intI >0 ; intI--)
			{
				if (document.frmPagingFormular.elements[strFeldVon].options[intI].value != "")
				{
					objNeuerEintrag = new Option(document.frmPagingFormular.elements[strFeldVon].options[intI].value,document.frmPagingFormular.elements[strFeldVon].options[intI].text,false,true);
					document.frmPagingFormular.elements[strFeldNach].options[document.frmPagingFormular.elements[strFeldNach].length] = objNeuerEintrag;
					document.frmPagingFormular.elements[strFeldVon].options[intI] = null;
				}
				
			}
		}
	}
