			var oActiveMenu = null;
			var menuActive = true; 
			var searchActive = true; 
			var hideTimer = 0; 
			var timeBeforeAutoHide = 2500;

			var XMLHTTP = null;

			if (window.XMLHttpRequest) {
				XMLHTTP = new XMLHttpRequest();
				XMLHTTP1 = new XMLHttpRequest();
			} else if (window.ActiveXObject) {
				try {
					XMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
				} catch (ex) {
					try {
						XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
					} catch (ex) {
					}
				}
			}

			function app_setLangIdResult()
			{
				if (4 == XMLHTTP.readyState) location.href = XMLHTTP.responseText;
			}

			function app_setLangId(langId)
			{
				XMLHTTP.open('POST', '/php/setLangId.php');
				XMLHTTP.onreadystatechange = app_setLangIdResult;
				XMLHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

				param = 'langId=' + encodeURIComponent(langId);

				XMLHTTP.send(param);				
			}

			function app_mouseOutMenu() 
			{ 
				menuActive = false; 
				app_menuTimerAutoHide();    
			} 

			function app_menuTimerAutoHide() 
			{ 
				if (menuActive)
				{ 
					hideTimer = 0; 
					return; 
				} 

				if (hideTimer < timeBeforeAutoHide)
				{ 
					hideTimer += 100; 
					setTimeout('app_menuTimerAutoHide()', 99); 
				} else { 
					hideTimer = 0; 
					oActiveMenu.style.visibility = 'hidden';  

					oLyrNav2 = document.getElementById('lyrNav2');
					
					if (('hidden' == oLyrNav2.style.visibility) && ("" != oLyrNav2.innerHTML)) oLyrNav2.style.visibility = 'visible';
				} 
			} 

			function app_setMenuBehavier(NewMenId)
			{
				oLyrNav2 = document.getElementById('lyrNav2');			
				
				if ('visible' == oLyrNav2.style.visibility) oLyrNav2.style.visibility = 'hidden';

				oNewMen = document.getElementById(NewMenId);

				if (null != oActiveMenu) oActiveMenu.style.visibility = 'hidden'; 
				oActiveMenu = oNewMen;
				oActiveMenu.style.visibility = 'visible'; 
				menuActive = true;
			}

			function trim(s) {
				// Erst führende, dann Abschließende Whitespaces entfernen
				// und das Ergebnis dieser Operationen zurückliefern
				
				return s.replace (/^\s+/, '').replace (/\s+$/, '');
			}

			function app_saveData_Response() {
				if (4 == XMLHTTP.readyState) {
					var xmlDoc = XMLHTTP.responseXML;
					var data = xmlDoc.documentElement.getElementsByTagName('Data');

					d = document.getElementById('lyrContent');
					if ('ok' == data[0].getAttribute('message')) {
						d.innerHTML = data[0].getAttribute('response');
					} else {
						d.innerHTML = 'Sorry, an error occured. Please try again.';
					}
				}
			}

			function app_saveData(name) {
				// name ist die id eines Formulars

				XMLHTTP.open('POST', '/php/saveData.php');
				XMLHTTP.onreadystatechange = app_saveData_Response;
				XMLHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

				error = false;
				var param = 'form=' + name;

				if ('dummy' != name) {
					for (i = 0; i < document.forms[name].length; i++) {
						elem = document.forms[name].elements[i];

						if (('true' == elem.getAttribute('required')) && ('' == elem.value)) {
							//if (true == confirm('Bitte ergänzen Sie die Pflichtfelder.')) {
								alert('Bitte ergänzen Sie die Pflichtfelder.');
								elem.focus();
								error = true;
								break;
							//} else {
							//	error = false;
							//	break;
							//}
						} else {
							if (('select-multiple' == elem.type) && ('true' == elem.getAttribute('useallvalues'))) {
								for (j = 0; j < elem.length; j++) 
									param += '&' + elem.name + '=' + encodeURIComponent(elem.options[j].value);
							} 

							if (('select-multiple' == elem.type) && ('true' != elem.getAttribute('useallvalues'))) {
								for (j = 0; j < elem.length; j++) {
									if (elem.options[j].selected)
										param += '&' + elem.name + '=' + encodeURIComponent(elem.options[j].value);
								}
							} 

							if (('' != elem.name) && ('undefined' != elem.name)) {
								if ('checkbox' == elem.type) {
									if (elem.checked) param += '&' + elem.name + '=' + encodeURIComponent(elem.value); 
								}

								if (('radio' == elem.type) && (elem.checked))
									param += '&' + elem.name + '=' + encodeURIComponent(elem.value);

								if (('txtPWD' == elem.name) && (!error)) {			
									app_checkPassword(); 
									param += '&' + elem.name + '=' + elem.value;
								}

								if (('checkbox' != elem.type) && ('radio' != elem.type) && ('select-multiple' != elem.type) && ('undefined' != elem.name) && ('password' != elem.type))
									param += '&' + elem.name + '=' + encodeURIComponent(elem.value);
							}
						}
					}
				}

				if ("frm_setTab" == name){
					app_DeletefromSet();
				} 

				if (("frm_clientofferTab" == name) && (!error)){
					document.getElementById("li_offer").style.visibility = "visible";
				}

				if (!error) {
					XMLHTTP.send(param);
				}

				if (error) return false;
				else return true;
			}

			function app_typecheck(obj) { 
				var parsed = obj.value; 
				var required = false;
				var failureid = document.getElementById('lastfailure').getAttribute('failureid');

				if (('null' != failureid) && (failureid != obj.id)) {
					// Es liegt ein Fehler bei einem Eingabefeld vor.
					// Dieses Feld hat die ID == failureid. Auf dieses Feld soll der Fokus gesetzt werden.

					// Diese Behandlung ist so notwendig, um zu vermeiden, daß zwei Felder mit required == true sich
					// wechselseitig endlos aufrufen.

					document.getElementById(failureid).focus();
				} else {
					// Entweder ist kein alter Fehler zu behandeln oder das fehlerhafte Eingabefeld wurde zur
					// erneuten Prüfung übergeben.

					// Ist das Feld ein Mußfeld?
					required = 'true' == obj.getAttribute('required');

					// Hintergrund zunächst auf weiß setzen
					obj.style.backgroundColor = '#FFFFFF'; 

					// Falls ein fehlerhaftes Feld behandelt wird, den Fehler zunächst zurücksetzen
					document.getElementById('lastfailure').setAttribute('failureid', 'null', 1);

					if (required && ('' == obj.value)) { 
						// Ein Mußfeld und es wurde nichts eingegeben
						if (true == confirm('Bitte ergÃ¤nzen Sie die Pflichtfelder.')) {
							obj.style.backgroundColor = '#FFCCCC'; 
							document.getElementById('lastfailure').setAttribute('failureid', obj.id, 1);
							obj.focus(); 

							return false;
						} else {
							// Der Benutzer hat sich für Abbruch entschieden
							return false;
						}
					} 
					
					message = 'Fehler: ';
					if ('' != obj.value) { 
						// Typenprüfung der Eingabe

						switch (obj.getAttribute('datatype')) {
							case 'integer' : parsed = parseInt(obj.value).toString(10);
								break;
							case 'float' : parsed = parseFloat(obj.value.replace(/,/, '.')).toString(10);
								break;
							case 'date' : parsed = app_checkDate(obj.value);
								break;
							case 'datetime' : parsed = app_checkDateTime(obj.value);
								break;
							case 'mail' : app_mxCheckMail(obj.value);
								break;
							case 'uid' : app_checkClientUID(obj.value);
								break;
							case 'password' : parsed = app_checkPassword(frm_UserData);
								if ('NaN' == parsed) {
									message = 'Die beiden KennwÃ¶rter stimmen nicht Ã¼berein.\n';
									obj = document.getElementById('txtPWD');
									obj.value = '';
									document.getElementById('txtPWD1').value = '';
								}
								else parsed = obj.value;
								break;
						}

						if ('NaN' == parsed) { 
							// Fehler entdeckt
							alert(message + 'Bitte korrigieren Sie die Eingabe.');

							obj.style.backgroundColor = '#FFCCCC'; 
							document.getElementById('lastfailure').setAttribute('failureid', obj.id, 1);
							obj.focus(); 

							return false;
						} else {
							obj.value = parsed; 
							
							return true;
						}
					}
				}
			} 