// if(top!=self) top.location=self.location; // Wenn nicht on top, dann aus Frame befreien
// if(!cms_unlock) top.location.href="/admin/"; // Wenn Frameset nicht geladen, dann auf Startseite Arbeitsplatz verweisen

function markieren() // am Ende jeder zu durchsuchenden Datei in einem Javascript-bereich aufrufen! --> markiert Suchbegriffe
// funktioniert nur ab IE 4 ; für NS 7 gibt es separates script
	{
	if((navigator.appName.lastIndexOf('Mac')!=-1)||(navigator.appName.lastIndexOf('X11')!=-1))
		{
		// alert('Markieren geht nicht bei Mac- oder Unix-Browsern');
		return false;
		}
	else
	
		{
		var r,i,z,pos,f_z,m_url
		var farbe = new Array('#FFFF80','#FEA94E','#CCCD6B','#A6A8FC','#00DEDB','#C1BFBF','#6CC46C','#FF80FF','#FFFFC0'); // Farben für Suchwörter setzen
		m_url=window.location.href; // URI auslesen
		pos=m_url.indexOf("marker")+7; // Position des ersten Suchbegriffes
		var s = m_url.substring(pos,m_url.length).split("|"); // Alle Suchbegriffe aus URI ausschneiden und in Array lesen
		if(s)
			{
			for(z=0;z <  s.length;++z)
				{
				r=document.body.createTextRange();
				for(i=0;r.findText(s[z]);i++) // Text nach Suchbegriff durchsuchen
					{
					(z>farbe.length-1) ? f_z=0 : f_z=z; // immer wieder andere Farbe wählen
					r.execCommand('BackColor','',farbe[f_z]);
					r.collapse(false);
					} // for
				} // for
			} // if
		} // if
	} // function

function setPointer(theRow, thePointerColor)
{
    if (thePointerColor == '' || typeof(theRow.style) == 'undefined') {
        return false;
    }
    if (typeof(document.getElementsByTagName) != 'undefined') {
        var theCells = theRow.getElementsByTagName('td');
    }
    else if (typeof(theRow.cells) != 'undefined') {
        var theCells = theRow.cells;
    }
    else {
        return false;
    }

    var rowCellsCnt  = theCells.length;
    for (var c = 0; c < rowCellsCnt; c++) {
        theCells[c].style.backgroundColor = thePointerColor;
    }

    return true;
}

// Kalender für Datumseingabe öffnen
function OpenKalender(strZiel, strName, intWidth, formular, feld) // Zieldatei, WindowName, Breite, zu überprüfendes Formular/Feld
{	// Wenn feld einen Wert hat, wird der Kalender mit Jahr und Monat gestartet
    
    if (document[formular].elements[feld].value != "")
    {	
		var elemente = document[formular].elements[feld].value.split(".");
		var intMonth = elemente[1];
		var intYear = elemente[2];
		strZiel = strZiel + "/year/" + intYear + "/month/" + intMonth;
    }
    Test = window.open(strZiel + '/ZielFeld/' + formular + '.' + feld, strName, 'width='+intWidth+',height=150,scrollbars=no;resizablel');
    if (document.all)
	{
		var ClickX = window.event.x;
		var ClickY = window.event.y;
		if (navigator.appVersion.indexOf("MSIE 5")>0 )
		{
			Test.moveTo(ClickX+window.screenLeft+5, ClickY+window.screenTop-50);
		}
	}
}

// Leerzeichen am Anfang und Ende von Formulareingabefelder abschneiden (=Trim bei ASP)
function Trim(item)
  {
  var tmp = "";
  var item_length = item.value.length;
  var item_length_minus_1 = item.value.length - 1;
  for (index = 0; index < item_length; index++)
    {
    if (item.value.charAt(index) != ' ')
      {
      tmp += item.value.charAt(index);
      }
    else
      {
      if (tmp.length > 0)
        {
        if (item.value.charAt(index+1) != ' ' && index != item_length_minus_1)
          {
          tmp += item.value.charAt(index);
          }
        }
      }
    }
  item.value = tmp;
  }


// alle Checkboxen zum Setzen eines Rahmens von Bildern markieren/ demarkieren
function selectallbilder(wert, formname, ende)
{
	for (i=0;i<ende;++i)
	{
	feld = 'bilder['+i+'\][2]';
	document[formname].elements[feld].checked = wert;
	}
}

// alle Checkboxen zum Setzen eine Tabelle zum Durchsuchen markieren/ demarkieren
function selectalltables(wert, formname, ende)
{
	for (i=0;i<ende;++i)
	{
	feld = 'table['+i+'\]';
	document[formname].elements[feld].checked = wert;
	}
}

// alle Checkboxen zum Setzen einer Checkbox-Liste mit Namen fieldname
function selectallboxes(wert, formname, fieldname, ende)
{
	for (i=0;i<ende;++i)
	{
	feld = fieldname + i;
	document[formname].elements[feld].checked = wert;
	}
}

// alle Checkboxen zum Setzen von rechten für Bereiche markieren/ demarkieren
function selectallbereiche(wert, formname, ende)
{
	for (i=0;i<ende;++i)
	{
		for (z=1;z<=4;++z)
		{
			feld = 'bereich_id['+i+'\]['+z+'\]';
			document[formname].elements[feld].checked = wert;
		}
	}
}

// Sicherheitsabfrage: Bild löschen?
function del_pic(formname, feld)
{	
	if (document[formname].elements[feld].checked == true)
	{
	Check = confirm('Wollen Sie das zugehoerige Bild wirklich loeschen?');
	if (Check==true)
		
		document[formname].elements[feld].checked = true
	else
		document[formname].elements[feld].checked = false;
	}	
}

// Sicherheitsabfrage: Bild löschen?
function del_file(formname, feld)
{	
	if (document[formname].elements[feld].checked == true)
	{
	Check = confirm('Wollen Sie die zugehoerige Datei wirklich loeschen?');
	if (Check==true)
		
		document[formname].elements[feld].checked = true
	else
		document[formname].elements[feld].checked = false;
	}	
}


// Formular-Eingabefeld in Javascript-sicheres Datum überführen: im weiteren können damit Datum-Berechnungen vorgenommen werden
function toDate(datum)
{
	var tmpDatum = datum.split('.'); // Datum bei Punkt trennen und in Array schreiben: Stringkette!
	var myDatum = new Date(parseInt(tmpDatum[2]),parseInt(tmpDatum[1]-1),parseInt(tmpDatum[0])); // parseInt(tmpDatum[1])-1 : minus 1, da Monat Januar bei 0 beginnt! in Zahl konvertieren
	return myDatum;
}

/*
Formularüberprüfungen:

im Head einbinden:
	<script language="JavaScript" src="jstools.js"></script>

im Head Formularfelder angeben, die nach dem jeweiligen Fomrat überprüft werden sollen, Beispiel:
	<script language="JavaScript">
	stringliste = new Array('bezeichnung','beschreibung','preis_hp','preis_vp','preis_nue','preis_uef'); 
	zahlliste = new Array('personen');
	mailliste = new Array('email');
	datumsliste = new Array('startdatum','enddatum')
	</script>

im Formular-Absende-Button:
einen type=button verwenden und dort die notwendigen Überprüfungen notieren, Beispiel:

	<input class="inputedit"  type="button" name="verschicken" value="Neuen Eintrag Speichern" 
		onclick=" 
		if 
		(
		checkstring('kategorie',stringliste) 
		&& checkzahl('kategorie',zahlliste) 
		&& checkpic('kategorie','bild') 
		&& checkdezimal('kategorie',dezimalzahlliste) 
		&& checkmail('kategorie',mailliste)
		&& checkdatum('kategorie',datumsliste)
		) 
		document.kategorie.submit(); return false;">

1. Variable: Formularname
2. Variable: Arrayliste bzw. Feldnamen angeben
	
*/

// Datumsüberprüfung: nur ein Feld
function checkdate(formular, feld)
	{	// fail_date = 0;
		if 
		 (document.forms[formular].elements[feld].value.substring(2,3) != "." ||
		  document.forms[formular].elements[feld].value.substring(5,6) != "." ||
		  document.forms[formular].elements[feld].value.substring(0,2) < "01" ||
		  document.forms[formular].elements[feld].value.substring(0,2) > "31" ||
		  document.forms[formular].elements[feld].value.substring(3,5) < "01" ||
		  document.forms[formular].elements[feld].value.substring(3,5) > "12" ||
		  document.forms[formular].elements[feld].value.substring(6,10) < "1000" ||
		  document.forms[formular].elements[feld].value.substring(6,10) > "2080")
		  {
		    // fail_date=1;
			alert("Ungüliges Datum im aktiven Eingabefeld!\nBitte geben Sie im Format: TT.MM.JJJJ ein!");
			document.forms[formular].elements[feld].focus();
			return false;
		  }
		  else
		  return true;
		
	}
	
// Datumsüberprüfung nach Format t(t).m(m).jj(jj):
function checkdatum(formular, datumsliste, pflicht)
	{
		fehlermeldung = "Bitte im aktiven Eingabefeld ein Datum nach Muster:\ntt.mm.jjjj  -  etwa 24.12.2001\neingeben!";
		fehlermeldung1 = "Es handelt sich um kein Datum nach Muster:\ntt.mm.jjjj  -  etwa 24.12.2001\nEs wird daher kein Datums-Eintrag vorgenommen!!";
		for(var i = 0; i <= datumsliste.length-1; i++)
			{
				var datum = /\b(0?[1-9]|[12][0-9]|3[01])\.(0?[1-9]|1[0-2])\.(\d?\d?\d\d)\b/ // regulärer Ausdruck, der auf Datum überprüfen soll
				var isdate = datum.test(document.forms[formular].elements[datumsliste[i]].value) // gibt true zurück, wenn Datum
				if (isdate == false)
					{
					if (pflicht == "false")
					{
						alert(fehlermeldung1);
						document.forms[formular].elements[datumsliste[i]].value = "";
						return true;
					}
					else
					{
						alert(fehlermeldung);
						document.forms[formular].elements[datumsliste[i]].value = "";
						document.forms[formular].elements[datumsliste[i]].focus();
						return false;
					}
					}
				else
					{
					if (i == datumsliste.length-1)
					return true;
					}
					
			}

	}
	
	
// Bildüberprüfung: nur ein Feld	
function checkpic(formular, feld)
	{
	if (document.forms[formular].elements[feld].value != "") 
		{
		if	
			(
			document.forms[formular].elements[feld].value.substring(document.forms[formular].elements[feld].value.length-3,document.forms[formular].elements[feld].value.length).toLowerCase() != "jpg"
			)
			
			{
			alert("Bitte Bilddateien des Formates JPG verwenden!");
			document.forms[formular].elements[feld].value = "";
			document.forms[formular].elements[feld].focus();
			return false;
				
			}
		else
			return true;
		}
	else
		return true;
	}

// Leerstring-Überprüfung		
function checkstring(formular, stringliste)
	{
	fehlermeldung = "Bitte im aktiven Eingabefeld Daten eingeben!";
	for(var i = 0; i <= stringliste.length-1; i++)
		{
		fail_string = 0;
		feldinhalt = document.forms[formular].elements[stringliste[i]].value;
		if (feldinhalt.replace(/\s+/,"")=="")
			{
			fail_string = 1;
			}
		if (fail_string == 1 && document.forms[formular].elements[stringliste[i]].disabled==false)
			{
			alert(fehlermeldung);
			document.forms[formular].elements[stringliste[i]].value = "";
			document.forms[formular].elements[stringliste[i]].focus();
			return false;
			}
		else
			{
			if (i == stringliste.length-1)
			return true;
			}
		}
	}
// Zahlüberprüfung: natürliche Zahlen (positiv)
function checkzahl(formular, zahlliste)	
	{
	fehlermeldung = "Bitte im aktiven Eingabefeld eine natürliche Zahl eingeben!";
	for(var i = 0; i <= zahlliste.length-1; i++)
		{
		fail_zahl = 0;
		var s = "" + document.forms[formular].elements[zahlliste[i]].value //Umwandlung in eine Zeichenkette
		var ziffern = "0123456789" //Gültige Zeichen
		if (s=="0") //Bei "0"
			fail_zahl = 0;
		if (s.charAt(0)=="0") //Bei 0 am Anfang
			fail_zahl = 1;
		for (var z=0; z<s.length; z++)
			{
			if (ziffern.indexOf(s.charAt(z))==-1) //keine Ziffer
				fail_zahl = 1;
			}
		// keine Zahl oder keine Eingabe oder nur Leerzeichen?
		if (fail_zahl == 1 || document.forms[formular].elements[zahlliste[i]].value.replace(/\s+/,"")=="")
			{
			alert(fehlermeldung);
			document.forms[formular].elements[zahlliste[i]].value = "";
			document.forms[formular].elements[zahlliste[i]].focus();
			return false;
			}
		else
			{
			if (i == zahlliste.length-1)
			return true;
			}

		}
	}
	
// Dezimalzahlüberprüfung

function checkdezimal(formular, dezimalzahlliste)
	{
	fehlermeldung = "Bitte im aktiven Eingabefeld eine gültige Dezimalzahl eingeben.\nBeispiel: 123,45";
	// fail_dezimalzahl = 0;
	for(var z = 0; z <= dezimalzahlliste.length-1; z++)
		{
		fail_dezimalzahl = 0;
		var s = "" + document.forms[formular].elements[dezimalzahlliste[z]].value //Umwandlung in String
		while (s.indexOf(".")>-1)
			{//Kommata durch Punkte ersetzen
			s=s.substring(0,s.indexOf(".")) + "," 
			+ s.substring(s.indexOf(".")+1 ,s.length)
			}
		var anzahl_punkt=0//Variable zum Zählen der Dezimalpunkte
		for (var i=0; i<s.length; i++)
			if (s.charAt(i)==",")
		    	anzahl_punkt++
			if (anzahl_punkt>1) //Mehr als ein Dezimalpunkt?
				fail_dezimalzahl = 1;
		// *** Eigentliche Überprüfung nach obigem Muster
		// *** Neu: Der Dezimalpunkt ist ein erlaubtes Zeichen
		var ziffern = ",0123456789" //Gültige Zeichen
		if (s.charAt(0)=="-")  //Führendes Minus entfernen
			s = s.substring(1, s.length)
		if (s=="0") //Bei "0"
			fail_dezimalzahl = 0;
		if (s.charAt(0)=="0" &&s.charAt(1)!=",")
			//Bei 0 am Anfang ohne folgenden Punkt
			fail_dezimalzahl = 1;
		for (var i=0; i<s.length; i++)
			if (ziffern.indexOf(s.charAt(i))==-1) //Keine Ziffer
				fail_dezimalzahl = 1;
		if (fail_dezimalzahl == 1 || document.forms[formular].elements[dezimalzahlliste[z]].value.replace(/\s+/,"")=="")
			{
			alert(fehlermeldung);
			document.forms[formular].elements[dezimalzahlliste[z]].value = "";
			document.forms[formular].elements[dezimalzahlliste[z]].focus();
			return false;
			}
		else
			{
			if (z == dezimalzahlliste.length-1)
			return true;
			}
		}
	}


	
// Email-Adresse-Überprüfung	
function checkmail(formular, mailliste)
	{
	fehlermeldung = "Bitte im aktiven Eingabefeld eine gültige E-Mail-Adresse eingeben!";
	for(var i = 0; i <= mailliste.length-1; i++)
		{
		fail_mail = 0;
		if(document.forms[formular].elements[mailliste[i]].value.indexOf('@') == -1)
			{
			fail_mail = 1;
			}
		if (fail_mail == 1 || document.forms[formular].elements[mailliste[i]].value.replace(/\s+/,"")=="")
			{
			alert(fehlermeldung);
			document.forms[formular].elements[mailliste[i]].value = "";
			document.forms[formular].elements[mailliste[i]].focus();
			return false;
			}
		else
			{
			if (i == mailliste.length-1)
			return true;
			}
			
		}
	}
	
function showds(file, table, id, marker) // allg. um kompletten DS im Rohformat zu zeigen
{
	ds_anzeige = window.open(file + "/table/" + table + "/id/" + id + "/marker/" + marker + "","_blank","height=400,width=500,menubar=no,locationbar=no,status=yes,scrollbars=yes");
	ds_anzeige.focus();
}

function showinfo(file) // DS formatiert über eigenes php-file anzeigen
{
	ds_anzeige = window.open("" + file + "","_blank","height=400,width=500,menubar=no,locationbar=no,status=yes,scrollbars=yes");
	ds_anzeige.focus();
}

function showpic(file, table, id, height, width, headline, bildpfad) // allg. Bild anzeigen
{
	pic_anzeige = window.open(file + "?table=" + table + "&id=" + id + "&headline=" + headline +"&bildpfad=" + bildpfad +"","_blank","height=" + height + ",width=" + width + ",menubar=no,locationbar=no,status=no,scrollbars=no");
	pic_anzeige.focus();
}

function showstaticpic(bildpfad, bild, width, height, beschreibung) // statisch erzeugtes Bild anzeigen
{
	pic_anzeige = window.open("/bildanzeige_sonst/bildpfad/" + bildpfad + "/bild/" + bild + "/beschreibung/" + beschreibung + "/","_blank","height=" + height + ",width=" + width + ",menubar=no,locationbar=no,status=no,scrollbars=no");
	pic_anzeige.focus();
}

function button(name) {
        this.up = new Image(); this.up.src=imgPath + "link_" + name + "_up.gif";
        this.down = new Image(); this.down.src=imgPath + "link_" + name + ".gif";
}


function drop(name) {
		if (imgSwitch) document.images[name].src=buttons[name].down.src
}

function lift(name) {
		if (imgSwitch) document.images[name].src=buttons[name].up.src
}

function print_email(mail_name,mail_domain) // Formatiert Email-Adressen zur Ausgabe: Javascript wird kaum von Spidern durchsucht!
{
	document.write('\<a href=\"mailto:' + mail_name + '@' + mail_domain + '">');
	document.write(mail_name + '@' + mail_domain + '</a>');
}

function print_email(mail_name,mail_domain,link_name,mail_params) // Formatiert Email-Adressen zur Ausgabe: Javascript wird kaum von Spidern durchsucht!
{
	document.write('\<a href=\"mailto:' + mail_name + '@' + mail_domain + mail_params + '" class=\"textlink\">');
	document.write(link_name + '</a>');
}

function delete_ds(my_uri, my_text) // Datensatz löschen ; my_uri=kompletter Pfad inkl. Parametern zum löschen , my_text=Datensatzheadline o.a.
{
	Check = confirm('Damit wird der Datensatz\n' + my_text +  '\nunwiderruflich geloescht!');
	if (Check==true) 
	location.href=my_uri;
}

function change_form_ability(this_checkbox,this_form_1,this_form_2)
{
	if(this_checkbox[0].checked) {
		this_form_1.disabled=false
		this_form_2.disabled=false
	}
	if(this_checkbox[1].checked) {
		this_form_1.disabled=true
		this_form_2.disabled=true
	}
}

// Text UTF-8 encodieren
function encode_utf8(rohtext) {
	// dient der Normalisierung des Zeilenumbruchs
	rohtext = rohtext.replace(/\r\n/g,"\n");
	var utftext = "";
	for(var n=0; n<rohtext.length; n++)
		{
		// ermitteln des Unicodes des  aktuellen Zeichens
		var c=rohtext.charCodeAt(n);
		// alle Zeichen von 0-127 => 1byte
		if (c<128)
		utftext += String.fromCharCode(c);
		// alle Zeichen von 127 bis 2047 => 2byte
		else if((c>127) && (c<2048)) {
			utftext += String.fromCharCode((c>>6)|192);
			utftext += String.fromCharCode((c&63)|128);}
			// alle Zeichen von 2048 bis 66536 => 3byte
		else {
			utftext += String.fromCharCode((c>>12)|224);
			utftext += String.fromCharCode(((c>>6)&63)|128);
			utftext += String.fromCharCode((c&63)|128);}
			}
		return utftext;
	}

	// Text UTF-8 decodieren
function decode_utf8(utftext) {
	var plaintext = ""; var i=0; var c=c1=c2=0;
	// while-Schleife, weil einige Zeichen uebersprungen werden
	while(i<utftext.length)
		{
		c = utftext.charCodeAt(i);
		if (c<128) {
			plaintext += String.fromCharCode(c);
			i++;}
		else if((c>191) && (c<224)) {
			c2 = utftext.charCodeAt(i+1);
			plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
			i+=2;}
		else {
			c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
			plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
			i+=3;}
		}
	return plaintext;
	}

function rs_unlock(uri) // In Frame DS entsperren
{
	parent.frames[1].location.href=uri;
}


// Versteckt Layer
function changevis(layID) {
  var myLayer = document.getElementById(layID);

  if (myLayer.style.display=="none") {
   myLayer.style.display="";
  } else {
   myLayer.style.display="none";
  }
}

function in_array(eintrag,myarr) // Funktion zum Überprüfen, ob der Variablenwert eintrag im Array myarr vorkommt
{
	var is_in_array = false;
	for(var i = 0; i < myarr.length; i++)
	{
		if(myarr[i] == eintrag) is_in_array = true;
	}
	return is_in_array;
}


