	/*
	01.12.2009 16:29:40
	Diese Datei mittels Strg-Shift-C in TotalCommander in folgende Verzeichnisse kopiert:
	anecup bella felix mvs mvz reute sissis
	
	Auch für MVS "duzen" nicht geändert.
	
	Falls Änderungen, dann immer in alle Ordner kopieren!
	*/

	//# Duzen oder Siezen?
	var duzen = 1;

	var js_funct_english = 0;
	if (document.location.href.indexOf("http://bella-band.de/") > -1 || document.location.href.indexOf("localhost/bella/") > -1) {
		js_funct_english = 1;
	}
//	alert(js_funct_english);

	// Form auf richtige Mail-Adressen und ausgefüllte Felder überprüfen
	// benötigte Funktionen: allemail_check (benötigt mail_check) und felder_check
	// Aufruf: form_check("Form_Name", "mailfeldname1|mailfeldname2", "feldname1|feldname2")
	// optional kann nach feldname1 mit "__" getrennt noch ein Default-/Vorgabe-Wert
	// mit uebergeben werden. z.B. bei mvs/info/surftipp.php
	function form_check(fname, mails, felder)
	{
//		return false;	//Testzwecke
		var rreturn = true;
		//E-Mail-Adressen überprüfen
		if (mails)		//nur wenn mails Werte enthält die Fkt. allemail_check aufrufen
			rreturn = allemail_check(fname, mails);
			
		//wenn ok, Felder überprüfen
		if (rreturn == true && felder)
			rreturn = felder_check(fname, felder);
		return rreturn;
	}

	// mehrere Mail-Adressen überprüfen und Focus setzen
	// benötigt von: form_check
	// benötigte Funktion: mail_check (diese überprüft eine einzige Adresse auf Richtigkeit)
	function allemail_check(fname, felements)
	{
		var rreturn = true;
		var arr_felder = felements.split("|");
		for (var i=0; i<arr_felder.length; i++)
		{
			var feld = arr_felder[i];
			var text = trim(eval("document." + fname + "." + feld + ".value"));
			//if (mail_check(arr_mail[i]) == false)
			if (mail_check(text) == false)
			{
				if (js_funct_english)
					alert ("Please fill in a valid email address in field \"" + feld + "\".");
				else if (duzen)
					alert ("Bitte gib eine gültige E-Mail-Adresse im Feld \"" + feld + "\" an.");
				else
					alert ("Bitte geben Sie eine gültige E-Mail-Adresse im Feld \"" + feld + "\" an.");
				eval("document." + fname + "." + feld + ".select()");
				eval("document." + fname + "." + feld + ".focus()");
				rreturn = false;
			}
		}
		//alert("mm: " + rreturn);
		return rreturn;
	}

	// eine einzige Mailadresse überprüfen
	// benötigt von: allemail_check
	// benötigte Funktion: trim
	function mail_check(mail)	//analog erstellt zur eigenen PHP-Funktion gleichen Namens
	{
		var rreturn = false;
		mail = trim(mail);	//mögl. Leerzeichen entfernen

		arr_mail = mail.split("@");
		if (arr_mail.length > 1)	//"@" enthalten
			if (arr_mail[0].length > 1 && arr_mail[1].length > 4)	//Mindestlänge
			{
				arr_punkt = arr_mail[1].split(".");	//Domain aufsplitten (z.B. diff.uni-tuebingen.de)
				var anz = arr_punkt.length;
				var teil1 = "";
				if (anz > 1)	//mindestens ein Punkt (".") enthalten
				{
					for (i=0; i<anz-1; i++)		//teil1: "diff.uni-tuebingen"
						teil1 += arr_punkt[i];
					teil2 = arr_punkt[anz-1];	//teil2: "de"
					if (teil1.length > 1 && teil2.length > 1)		//Mindestlänge
						rreturn = true;
				}
			}
		if (mail == "loc@127.0.0.1" || mail == "localhost2@127.0.0.1" || mail == "loc@localhost" || mail == "loc2@localhost"  || mail == "loc1@localhost")
			rreturn = true;
		return rreturn;
	}


	//Formularfelder überprüfen vor Submit
	//fname: Formular-Name
	//felements: Namen der zu überprüfenden Formelemente durch | getrennt ohne Leerzeichen
	//benötigt von: form_check
	function felder_check(fname, felements)
	{
		var rreturn = true;
		var arr_felder = felements.split("|");
		for (var i=0; i<arr_felder.length; i++)
		{
			var feld = arr_felder[i];
			var arr_feld = feld.split("__");

			vorgabe = "";
			if (arr_feld.length == 2)	//Vorgabe-Wert ist vorhanden
			{
				feld = arr_feld[0];
				var vorgabe = arr_feld[1];
			}
			//alert("feld: " + feld + ", vorgabe: " + vorgabe);

//			alert(eval("document." + fname + "." + feld + ".value"));
			var text = trim(eval("document." + fname + "." + feld + ".value"));
//			alert("|"+text+"|");
			if (text == '' || text.toLowerCase() == vorgabe.toLowerCase())
			{
				//grosser Anfangsbuchstabe fuer Feldbezeichnung (entspricht ucfirst() in PHP)
				var ucfirst = feld.substr(0,1).toUpperCase() + feld.substr(1, feld.length-1);
				if (js_funct_english)
					alert ("Please fill in the field \"" + feld + "\", too.");
				else if (duzen)
					alert ("Bitte fülle auch das Feld \"" + ucfirst + "\" aus.");
				else
					alert ("Bitte füllen Sie auch das Feld \"" + ucfirst + "\" aus.");
				eval("document." + fname + "." + feld + ".select()");
				eval("document." + fname + "." + feld + ".focus()");
				rreturn = false;
				break;	//Schleife beenden
				//return false;
			}
		}
		return rreturn;
	}

	//folgende beiden Funktionen nur in links_edit benutzt
	//modifiziert fuer John durch 2. Parameter (typ=m oder k, Miet- oder Kaufobjekte)
	function auswahl(wert, typ)	//Kategorie aus Auswahlliste in Textfeld einfügen bei Klick oder Tastatur
	{
		//var wert = document.form_link_edit.link_auswahl.value;	//angeklickter Werte aus Listenfeld
		//Aufbau: $id|$datum|$titel|$preis|$prov|$qm|$zimmer|$jahr|$bezug|$lage|$kurz|$lang|$ausst|$sonst
		//z.B. "7|musikbra.jpg|www.musisdfsdf.de|Musibranche für Könner und Könnerinne|Alle möglichen und umölgichen Musiklehrersfd asdf asfd asf"
		var arr_feldwerte = wert.split("|");	//entspricht explode

		if (typ == "g")	//Gesuche
			var arr_felder = "id|datum|links|rechts".split("|");
		else if (typ == "m")	//Mietobjekte (zusaetzlich: neben und kaution und jahres(nettomiete))
			var arr_felder = "id|datum|titel|preis|neben|kaution|jahres|stock|geschoss|garage|stell|prov|qm|zimmer|jahr|bezug|lage|kurz|lang|ausst|sonst|picsbild1|picsbild2|picsbild3|picsbild4|picsbild5".split("|");
		else
			var arr_felder = "id|datum|titel|preis|stock|geschoss|garage|stell|prov|qm|zimmer|jahr|bezug|lage|kurz|lang|ausst|sonst|picsbild1|picsbild2|picsbild3|picsbild4|picsbild5".split("|");

		for (var i=2; i<arr_feldwerte.length; i++)	//jeden Wert in die Formularfelder eintragen
		{
			//alert("Feldname: " + arr_felder[i] + ", Feldwert: " + arr_feldwerte[i]);
			eval("document.form_pics_edit." + arr_felder[i] + ".value = arr_feldwerte[i]");			
		}
	}

	//Bild anzeigen
	function bild(dat, wert)
	{
		//nicht mit Netscape-konform: var wert = document.form_link_edit.link_auswahl.value;	//angeklickter Werte aus Listenfeld
		var arr_feldwerte = wert.split("|");	//entspricht explode
		var bild = arr_feldwerte[1];
		var id = arr_feldwerte[0];

		if (bild == "")
			bild = "ohnebild";
		document.location.href = dat + "?bild=" + bild + "&id=" + id;
	}


//folgende Ftk. in links_mail.php

	//Leerzeichen und Leerzeilen entfernen (entspricht trim in PHP) -> Leerzeichen NEU in mvs (05.09.2007 21:03:12)
	function trim(wert)
	{
		//Bsp: "   test "
		//führende Leerzeichen entfernen:
		var j = 0;
		for (var i=0; i<wert.length; i++)
			if (wert.charAt(i) == " " || wert.charCodeAt(i) == "10")
		 		j++;
		 	else
		 		i = wert.length;	//Abbruch der Bedingung
	 	wert = wert.substr(j, wert.length);
	  	//wert: "test "

		//schließende Leerzeichen entfernen:
		var j = wert.length;
		for (i=j-1; i>0; i--)
			if (wert.charAt(i) == " " || wert.charCodeAt(i) == "10")
				j--;
			else
				i = 0;	//Abbruch der Bedingung
		wert = wert.substr(0, j);
		//wert: "test"
		return wert;
	}


	// im onload-Tag: Überprüfen, ob Datei außerhalb von Frameset aufgerufen wird
	function onloadnav(bild, dat)
	{
		//alert("ONLOADNAV bild: " + bild + " dat: " + dat + " title: " + parent.frames[0].document.title);
		var nachladen = false;
		if (parent.frames.length == 2)
		{
			//if (parent.frames[0].document.title == "www.felixgroteloh.de -- Navigationsframe")
			var navhost = top.location.host;
			if (navhost == "127.0.0.1" || navhost == "www.felixgroteloh.de" || navhost == "localhost" || navhost == "felixgroteloh.de")
			{
				var dat = self.location.href;	//z.B. "http://.../news.php?frame=1"
				if (dat.indexOf("frame=1") == -1)	//"frame=1" nicht enthalten
				{
					eval("parent.oben.navbild('" + bild + "', 'o')");
					eval("parent.oben.navclick('" + bild + "')");
				}
			}
			else
			{
//				alert("falscher title: " + parent.frames[0].document.title);
				nachladen = true;
			}
}
		else
		{
//			alert("nicht als frames ober mehrere frames (>2)" + parent.frames.length);
			nachladen = true;
		}

//////////////////////
//nachladen = false;
//////////////////////

		if (nachladen == true)
		{
			antwort = confirm("Diese Seite ist Teil eines Framesets von www.felixgroteloh.de. \nSoll dieses nun nachgeladen werden (Klick auf OK)?");
			if (antwort == true)
			{
				if (window.location.host == "127.0.0.1")
					top.location.href="http://127.0.0.1/indexjs.php?bild=" + bild + "&u=" + dat;
				else
					top.location.href="http://www.felixgroteloh.de/_test/indexjs.php?bild=" + bild + "&u=" + dat;
			}
		}
	}


	//Bilder vorausladen (http://www.webreference.com/js/tips/990927.html)
	//Aufruf: <BODY onLoad="preload('first.gif', 'second.gif', 'third.gif')">
	//NEU: Aufruf: <BODY onLoad="preload('first.gif second.gif third.gif)">
	function preload()
	{
		if (!document.images) return;
//		var arr_preload = new Array();
		var arr_para = preload.arguments;
		var arr_grafiken = arr_para[0].split(" ");
		//alert("funktion preload aufgerufen");
		for (var i=0; i<arr_grafiken.length; i++)
		{
//			arr_preload[i] = new Image();
//			arr_preload[i].src = arr_grafiken[i];
			dummy = new Image();
			dummy.src = arr_grafiken[i];
			//alert("preload: " + arr_grafiken[i]);
		}
	}



	//gepunkteten Rahmen entfernen
	function ierahmen(obj)
	{
		if (document.all) obj.blur();
	}


	//neues Fenster oeffnen (in gb:index.php und termine:index.php
	function openReal(theURL,winName,features)
	{
		var neufenster = window.open(theURL,winName,features);
		//http://www.galileocomputing.de/openbook/javascript/javascript10.htm ::
		if (neufenster.opener == null)
			neufenster.opener = self;
	}

	//http://faq.united-web.at/javascript/popup/popup_aufloesungsunabhaengig_zentrieren
	//Orig: function openmitte(url, winName, breite, hoehe)
	function openmitte(url, winName)
	{  /* Orig:
		var width=breite;
		var height=hoehe;
		var l = (screen.availWidth - width) / 2;
		var t = (screen.availHeight - height) / 2;
		//newwindow = window.open(url,winName,"width="+breite+",height=" +hoehe+",screenX="+l+",screenY="+t+",left=" +l+",top="+t+",scrollbars=0,resizable=0,menubar=no");
		*/
		newwindow = window.open(url,winName,"width=1, height=1, screenX=-500,screenY=-500,left=-500,top=-500, scrollbars=0, resizable=1, menubar=no");
		newwindow.focus();
	}
	function show_hide(obj) {
		//# per jQuery, 06.01.2008 16:54:11
		//# s. auch Beispiel unter http://www.steintafel.ch/blog/2006-10/jquery-fuer-anfaenger-von-einem-anfaenger/
		showhide = document.getElementById(obj);
		$('#' + obj).slideToggle('fast', function() {
//			alert(showhide.style.display);
			
		});
//		if (showhide.style.display == "none") {
//			showhide.style.display = "block";
//		}
//		else {
//			showhide.style.display = "none";
//		}
	}
	
	
	function getBrowser() {
		/* http://www.lipfert-malik.de/webdesign/tutorial/bsp/browser_js_test.html?alph#Detail */
	 /*  Autor, Entwicklung 8/2002 Kristof Lipfert Duesseldorf    */
 /*  Version 2005-12-09                                  */
	
	if(document.ids)x='nc4';
	else if( document.all && !document.getElementById )x='ie4';
	else if( window.opera && !document.createElement )x='op5';
	else if( window.opera && window.getComputedStyle )  {
	          if(document.createRange)x='op8';
	            else if(window.navigate)x='op7.5';
	                             else x='op7.2';                   }
	else if( window.opera && document.compatMode )x='op7';
	else if( window.opera && document.releaseEvents )x='op6';
	else if( document.contains && !window.opera )x='kq3';
	else if(window.pkcs11&&window.XML)x='f15';
	else if( window.getSelection && window.atob )x='nn7';
	else if( window.getSelection && !document.compatMode )x='nn6';
	else if( window.clipboardData && document.compatMode )
	  x=window.XMLHttpRequest? 'IE7' : 'IE6';
	else if( window.clipboardData ){x='ie5';
	     if( !document.createDocumentFragment ) x+='.5';
	     if( document.doctype && !window.print ) x+='m';}
	else if( document.getElementById && !document.all ) x='op4';
	else if( document.images && !document.all ) x='nn3';
	else if(document.clientWidth&&!window.RegExp)x='kq2';
	else x='???';
		if (x.substr(0, 2) == "IE")
			x = "ie";
		return x;
	}


	//# analog zur PHP-Funktion: ueberpruefen, ob Wort eine Zahl ist
	function zahlen(wort) {
		for (j=0; j<wort.length; j++) {
			ret = false;	//Initialisierung
			zeichen = wort.substr(j, 1);
			for (i=0; i<10; i++) {	//jede Zahl von 0 bis 9 untersuchen
				if (zeichen == i)	//bei Übereinstimmung (zeichen = zahl):
					ret = true;		//return auf true setzen
			}
			if (!ret)
				return ret;
		}
		return true;
	}


	//# Objekt-Werte auslesen (JSON-Objekt)
	function showObject(obj) {
		str="";
		for(prop in obj) {
			var wert = obj[prop];
//			if (wert == "[object Object]")
//				wert = "===[OBJECT] " + showObject(wert) + "===";
			str += "." + prop + ": " + wert + "\n";
		}
		return(str);
	}
	
	//# http://hendi.name/2006/04/08/str_replace-fur-javascript/
	function str_replace(search, replace, subject) {
		return subject.split(search).join(replace);
	}
	

	//# UniqueID erzeugen
	function S4() {
	   return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
	}
	function guid() {
	   return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
	}


	//# Innerhalb textarea markierten Text ersetzen und optional mit einem Tag bzw. beliebigen Code wrappen/umgeben
	//# Falls kein Text markiert: ans Ende einfügen
	//# jQuery benötigt!
	//# http://sissis.de/seblog/?go=606
	$.fn.insertAtCaret = function (myValue, davor, danach) {
		return this.each(function(){
			if (davor == undefined)
				davor = "";
			if (danach == undefined)
				danach = "";
			
			//IE support (Opera kennt beide)
			if (document.selection && !jQuery.browser.opera) {
				this.focus();
				sel = document.selection.createRange();
				if (!sel.text) {	//# Text würde ansonsten an den Anfang eingefügt werden
					myValue = davor + myValue + danach;
					this.value += myValue;
				}
				else {
					if (!myValue)
						myValue = sel.text
					myValue = davor + myValue + danach;
					sel.text = myValue;
				}
			}
			//MOZILLA/NETSCAPE support
			else if (this.selectionStart || this.selectionStart == '0') {
				var startPos = this.selectionStart;
				var endPos = this.selectionEnd;
				var scrollTop = this.scrollTop;

				if (!myValue)
					myValue = this.value.substring(startPos, endPos);
				myValue = davor + myValue + danach;
			
				this.value = this.value.substring(0, startPos)
				+ myValue
				+ this.value.substring(endPos, this.value.length);
				this.focus();
				this.selectionStart = startPos;
				this.selectionEnd = startPos + myValue.length;
				this.scrollTop = scrollTop;
			} else {
				this.value += myValue;
				this.focus();
			}
		});
	};

