// 2008-05-15 Steffen based on 13.05.2008 Steffen


oe2edit_preloadImages('../oe/images/login/login_20_button_over.gif', '../oe/images/login/login_19_button_over.gif');



function getKeyCode(ev)
{
    if(ev.which != undefined)//Firefox
    {
        if(ev.which>0)
        {
            return ev.which;
        }
        else if(ev.keyCode != undefined)
        {
            return ev.keyCode;
        }
        else if (ev.modifiers != undefined)
        {
            return ev.modifiers;
        }
        else
        {
            return false;
        }
    }
    else //1337 M$ I3xPl0r3r0r, die erste Wahl fuer den anspruchsvollen Surfer
    {
        return ev.keyCode;
    }
}

function KeyEvents(ev)
{    for(var i=0;i<=ACCESSKEYS.length;i++)
    {
        if(ACCESSKEYS[i] == getKeyCode(ev))
        {
 
 		//alert("Array Element: " + String(i));
			wassollgeladenwerden();
        }
    }
}
//------------------------------------------------------------------------

function gallery_action(dowhattodo){
	window.document.oe2edit_form.module_action.value = dowhattodo;
	window.document.oe2edit_form.submit();
	return true;
}
function delete_gallery_images(){
	var Check = confirm("Wollen Sie wirklich alle gewählten Dateien entgültig vom Server löschen?");
	if (Check == true){
		window.document.oe2edit_form.module_action.value = "gallery_delete_files";
		window.document.oe2edit_form.submit();
	}else{
		return false;
	}
	return true;
}
function rueckfrage_link(frage,linkurl){
	var Check = confirm(frage);
	if (Check == true){
		document.location.href = linkurl;
	}else{
		return false;
	}
	
	return true;
}

function delete_selector(dateiname){
	dateiname.toString();
	trashbox_full = new Image ();
	trashbox_empty = new Image ();
	trashbox_full.src = "../oe/images/icons/trashbox-20_full.gif";
	trashbox_empty.src = "../oe/images/icons/trashbox-20.gif";
	//alert(dateiname+": "+document.forms[0]["deletefile_"+dateiname].value);
	if(document.forms[0]["deletefile_"+dateiname].value == 1){
		// Wenn schon selected wieder deselecten
		document["datei_"+dateiname].border = 0;
		document["datei_"+dateiname].style.border = "0px solid red";
		document.forms[0]["deletefile_"+dateiname].value = 0;
		document["datei_"+dateiname].alt = document.images["datei_"+dateiname].title = "Dieses Bild doch nicht vom Server löschen";
		document["datei_"+dateiname].style.filter = false;
		document['deleteicon_'+dateiname].src = trashbox_empty.src;
	}else{
		// Fürs löschen merken
		document["datei_"+dateiname].alt="Dieses Bild wird vom Server gelöscht";
		document["datei_"+dateiname].title="Dieses Bild wird vom Server gelöscht";
		document["datei_"+dateiname].style.border = "thin solid red";
		document["datei_"+dateiname].border = 1;
		document["datei_"+dateiname].style.border = "1px solid red";
		document.forms[0]["deletefile_"+dateiname].value = 1;
		document["datei_"+dateiname].style.filter = "Gray()";
		document['deleteicon_'+dateiname].src = trashbox_full.src;
	}
}


function popup(url,name,xsize,ysize)
{
	var navName = navigator.appName;
	var brVer = navigator.userAgent; var brNum; var reg = new RegExp('/');

	var breite = screen.width;
	var hoehe = screen.height;
	var agt=navigator.userAgent.toLowerCase();

	if (breite < 1024){
		top.location.href = url;
	}else{
		fenster = window.open(url, name, "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width="+xsize+",height="+ysize);
		var xpos=(breite-920)/2;
		var ypos=20;
		fenster.moveTo(xpos,ypos);
                setTimeout('fenster.focus();',200);
	}
}


function cms_save(){
	window.document.oe2edit_form.action.value = "speichern";
	window.document.oe2edit_form.submit();
}

function cms_aufrufen(){
	window.document.oe2edit_form.action.value = "edit";
	window.document.oe2edit_form.submit();
}
function wassollgeladenwerden(){

	if (document.getElementsByName('oe_search_active')[0]) {
		if (document.getElementsByName('oe_search_active')[0].value != "") {
			return false;
		}
	}
	
	if(window.document.oe2edit_form.oe_editable.value == "off"){
		// oe bewirkt nichts
		return false;
	}else if( (window.document.oe2edit_form.oe_editable.value != "") && (window.document.oe2edit_form.oe_editable.value != "true") ){
		
		shake(3);// Fenster zittert
		playSound("../oe/sounds/failure.mp3");
		alert(window.document.oe2edit_form.oe_editable.value);
		return false;
	}
	
	if(window.document.oe2edit_form.action.value == "false"){
		// oe bewirkt nichts
		// Fenster Zittert
		shake(3);
		playSound("../oe/sounds/failure.mp3");
	}else if (window.document.oe2edit_form.action.value == "alert"){ 
		// oe erzeugt Fehlermeldung in Fenster
		playSound("../oe/sounds/failure.mp3");
		shake(3);
		alert("Diese Seite kann leider nicht editiert werden.");
	}else if (window.document.oe2edit_form.action.value == "gallery_edit"){ 
		window.document.oe2edit_form.submit();		
	}else if (window.document.oe2edit_form.action.value == "guestbook_edit"){ 
		window.document.oe2edit_form.submit();		
	}else if (window.document.oe2edit_form.action.value == "vote_edit"){ 
		window.document.oe2edit_form.submit();		
	}else if ( (window.document.oe2edit_form.action.value == "edit") || (window.document.oe2edit_form.action.value == "") ){ 
		if(document.getElementById('oe_login_window').style.visibility != "hidden"){
			// Wenn Login Window gezeigt wird nicht auf oe reagieren!
			return false;
		}else if(window.document.oe2edit_form.writeright.value == "yes"){
			// ist eingeloggt und hat scheinbar schreibrechte
			// eo ruft Editor auf
			cms_aufrufen();
		}else if(window.document.oe2edit_form.writeright.value == "no"){
			window.document.oe2edit_form.action.value = "edit";
			showLogin('visible',window.document.oe2edit_form.loginWindowX.value,window.document.oe2edit_form.loginWindowY.value,'');
			//alert("Sorry, you have no right to change this text.");
		}else{
			// Der Benutzer ist nicht angemeldet, bzw kein Editor
			window.document.oe2edit_form.action.value = "edit";
			showLogin('visible',window.document.oe2edit_form.loginWindowX.value,window.document.oe2edit_form.loginWindowY.value,'Bitte melden Sie sich an.');
		}
	}else{
		shake();
	}
}

/*
function oe2editInit() {
	aler("hier!");
	return 1;
    /*var formObj = document.getElementByName("oe2edit_form");
    for (var i = 0; i<formObj.childNodes.length; i++) {
        if( (formObj.childNodes[i].nodeType == 1) && (formObj.childNodes[i].type == "text") ){
            XBrowserAddHandler(formObj.childNodes[i], "focus", HandlerFoc);
            XBrowserAddHandler(formObj.childNodes[i], "blur", HandlerBlu);
            XBrowserAddHandler(formObj.childNodes[i], "mouseover", HandlerOver);
            XBrowserAddHandler(formObj.childNodes[i], "mouseout", HandlerOut);
		document.getElementById("debugText").innerHTML += "T: ";
        }else{
		document.getElementById("debugText").innerHTML += "- ";
        }
    	document.getElementById("debugText").innerHTML += formObj.childNodes[i].name + "/" + formObj.childNodes[i].id + ": "+ formObj.childNodes[i].type + "<br>";
    }
    window.status += i+" Objekte durchlaufen";
    alert("Init beendet");
    *//*
}
function HandlerFoc() {
	window.status = "oe2edit off";
	document.textFieldInFocus = true;
}
function HandlerBlu() {
	window.status = "oe2edit on";
	document.textFieldInFocus = false;
}
function HandlerOver() {
    this.style.backgroundColor = "#FF0000";
}
function HandlerOut() {
    this.style.backgroundColor = "#FFFFFF";
}

//---------------------------------------------------------------------------
function XBrowserAddHandler(target, eventName, fnHandler) {
    var originalHandler = target["on"+eventName];
    if (originalHandler) {
        target["on"+eventName] = function (e) {
            XBrowserApplyHandler(this, originalHandler, e);
            XBrowserApplyHandler(this, fnHandler, e);
        };
    } else {
        target["on"+eventName] = function (e) {
            XBrowserApplyHandler(this, fnHandler, e);
        };
    }
}
function XBrowserApplyHandler(target, fn, e) {
    if (!e) {
        e = window.event;
    }
    if (!e) {
        alert("Problem mit XBrowserApplyHandler: Objekt nicht gefunden!");
    }
    if (Function.prototype.call) {
        fn.call(target, e);
    } else {
        target.__XBrowserElementApply = fn;
        target.__XBrowserElementApply(e);
    }
}
*/

// Fürs Voting
function vote(zeile,nummer){
	var voteimage = "voteimage"+zeile+""+nummer;
	var votevalue = "votevalue"+zeile+""+nummer;
	if(window.document.oe2edit_form[votevalue].value == 0){
		window.document.oe2edit_form[votevalue].value = 1;
		window.document.images[voteimage].src = voteimage_aktiv.src;
	}else{
		window.document.oe2edit_form[votevalue].value = 0;
		window.document.images[voteimage].src = voteimage_deaktiv.src;
	}
}


// Für das Formularsenden
function formularsenden() {
	window.document.oe2edit_form.module_action.value = "formular_senden";
	window.document.oe2edit_form.submit();

}


function oe2edit_set_login_window_position (x, y) {

	// Aus den x und y Werten die "px" Angaben rausholen
	var new_x = x.replace(/px/, "");
	var new_y = y.replace(/px/, "");
	
	// Schauen, dass die Werte nicht zu klein werden
	if (new_x < 0) {
		new_x = 0;
	}
	
	if (new_y < 0) {
		new_y = 0;
	}

	
	// Werte in die Hiddenfields übernehmen
	window.document.oe2edit_form.loginWindowX.value = new_x;
	window.document.oe2edit_form.loginWindowY.value = new_y;

}



// JPG Check ####################################################################################
function jpgcheck()
{
	var filename, flag, extensionA=".jpg", extensionB=".JPG";
	filename=window.document.oe2edit_form.file.value;
	flag=window.document.oe2edit_form.flag.value;
	if (flag==1){
		playSound("../oe/sounds/failure.mp3");
		shake(3);
		alert("Der Uploadvorgang läuft.\nJe nach Leitungskapazität kann dieser Vorgang sehr lange dauern!");
		window.document.oe2edit_form.flag.value='1';
		return false;
	}
	if ( (filename.indexOf(extensionA)==-1) && (filename.indexOf(extensionB)==-1)) {
		playSound("../oe/sounds/failure.mp3");
		window.document.oe2edit_form.file.focus();
		window.document.oe2edit_form.flag.value='0';
		window.document.oe2edit_form.upload_button.disabled=false;
		//Fenster soll sich bei einem Fehler Schütteln!
		shake(3);
		alert("Bitte vergewissern Sie sich, dass Sie nur ein JPG-Datei oder ein ZIP-Archive mit JPG-Dateien ausgewählt haben.");
		return false;
	}else{
		window.document.oe2edit_form.flag.value='1';
		window.document.oe2edit_form.upload_button.disabled=true;
		window.document.oe2edit_form.submit();
		return true;
	}
}

function upload_button_click(extensionchain)
{
	extensions = new Array();
	extensions = extensionchain.split(',');
	var check = false;
	var file=window.document.oe2edit_form.file.value.toLowerCase();
	
	// Wenn kein gültiger File übergeben wurde:
	if(file.length < 5){
			playSound("../oe/sounds/failure.mp3");
			shake(3);
			alert("Die Datei "+file+" ist leider nicht erlaubt. Bitte wählen Sie eine Datei folgenden Typs "+extensionchain);
			window.document.oe2edit_form.flag.value='0';
			window.document.oe2edit_form.file.focus();
			return false;		
	}
	
	for(i=0;i<extensions.length;i++){
		if(file.indexOf( extensions[i].toLowerCase() ) > -1){
			check = true;
		}
	}
	// Wenn gar keine extension übergeben wurden alle Files akzeptieren
	if(extensions.length == 0){
		check = true;
	}
	
	flag=window.document.oe2edit_form.flag.value;
	if (flag==1){
		playSound("../oe/sounds/failure.mp3");
		shake(3);
		alert("Der Uploadvorgang läuft.\nJe nach Leitungskapazität kann dieser Vorgang sehr lange dauern!");
		window.document.oe2edit_form.flag.value='1';
		return false;
	}
	if (check == true) {
		window.document.oe2edit_form.flag.value='1';
		window.document.oe2edit_form.upload_button.disabled=true;
		window.document.oe2edit_form.submit();
		return true;
	}else{
		playSound("../oe/sounds/failure.mp3");
		window.document.oe2edit_form.file.focus();
		window.document.oe2edit_form.flag.value='0';
		window.document.oe2edit_form.upload_button.disabled=false;
		//Fenster soll sich bei einem Fehler Schütteln!
		shake(3);
		alert("Die Datei "+file+" ist leider nicht erlaubt. Bitte wählen Sie eine Datei folgenden Typs "+extensionchain);
		return false;
	}
}

function shake(n) { 
	var i;
	// n ist Bebenstärke je größer die Zahl um so stärker das Beben
	if (self.moveBy){ 
		for (i = 10; i > 0; i--) { 
			for (j = n; j > 0; j--) { 
				self.moveBy(0,i); 
				self.moveBy(i,0); 
				self.moveBy(0,-i); 
				self.moveBy(-i,0); 
			} 
		} 
	} 
}

function playSound(soundfile) {
	//if (document.getElementById('oe2edit_sounds_div')) {
	// 	var new_sound = document.createElement("bgsound");
	//	new_sound.setAttribute("id", 'oe2edit_sounds');
	//	new_sound.setAttribute("name", 'oe2edit_sounds');
	//	document.getElementById('oe2edit_sounds_div').appendChild(new_sound);
	//	
	//	document.getElementById('oe2edit_sounds').src=soundfile;
	//}
 
}

function oe_winresize (xspace,yspace){
	// Ließt höhe und Breite des Images aus und passt die Fenstergröße dem Bild an.
	var scrW = window.document.images[0].width+30+xspace;
	var scrH = window.document.images[0].height+30+yspace;
	var breite = screen.width;
	var hoehe = screen.height;
	if(breite < scrW){
		// Wenn die Bildschimauflösung kleiner ist als die Breite des Bildes,
		// dann soll die Popupbriete etwas kleiner als die Bildschirmauflösung sein.
		scrW = breite - breite/10;
	}
	if(hoehe < scrH){
		// das gleiche für die Höhe
		scrH = hoehe - hoehe/10;
	}
	resizeTo(scrW, scrH);
	//alert("resizeTo "+scrW+"x"+scrH);
}

//-----------------------------------------------------------------------------
var ACCESSKEYS= new Array(101,65);
//var textFieldInFocus = false;
//oe2editInit;// Dient zum inistialiesieren von Textfeldern
//-----------------------------------------------------------------------------



// Beginn Scripts fuer Login-Fenster
//var load_action = document.getElementsByName('action')[0].value;
var load_action = "";

function Tastendruck () {
    if (window.event.keyCode == 13) {								
		if (!(window.document.getElementById("user").value == "" && window.document.getElementById("password").value == "")) 
		{
			window.document.getElementsByName("ok")[0].focus();
			oe2edit_swapImage('ok','','../oe/images/login/login_19_button_over.gif',1); 
			cms_aufrufen();
		}
	}
    if (window.event.keyCode == 27) {
			window.document.getElementsByName("abbrechen")[0].focus();
			oe2edit_swapImage('abbrechen','','../oe/images/login/login_20_button_over.gif',1); 
			showLogin('hidden');
		}
}
function showLogin(eigenschaft,x_pos,y_pos,message){

	load_action = window.document.getElementsByName('action')[0].value;

	if(eigenschaft == 'hidden'){
		document.getElementById('oe_login_window').style.left = '-500px';
		document.getElementById('oe_login_window').style.top = '-500px';
		document.getElementById('password').className = "oe_login_textboxes";
		document.getElementById('password').disabled = false;
		document.getElementById('pwf_chk').checked = false;
		document.getElementById('pw_text').className = "oe_login_beschreibung";
		document.getElementsByName('action')[0].value = "" ;
		oe2edit_swapImage('abbrechen','','../oe/images/login/login_20_button.gif',1); 
	}else{
		document.getElementById('oe_login_window').style.left = x_pos+"px";
		document.getElementById('oe_login_window').style.top = y_pos+"px";
		if(message){
			document.getElementById('login_message').innerHTML = message;
		}
	}

	document.getElementById('oe_login_window').style.visibility = eigenschaft;

	// Objekt erst anzeigen, dann weiter machen 
	if(!(eigenschaft == 'hidden')){
		window.document.getElementById('user').focus();
		window.document.getElementById('password').value = '' ;
		window.setTimeout("window.document.getElementById('user').value=''",10);
		//window.document.getElementsByName('action')[0].value = "show_editor" ;

	}
}




function pwf(){
	if(window.document.getElementById('pwf_chk').checked == true){
		window.document.getElementById('pwf_chk').checked = false;
	}else{
		window.document.getElementById('pwf_chk').checked = true;
	}
	return pwf_field();
	if(window.document.getElementById('user').value.length > 3){
		window.document.forms['oe2edit_form'].submit();
	}
	return true;
}
function pwf_field(){
	if(window.document.getElementById('pwf_chk').checked == true){
		window.document.getElementById('password').className = "oe_login_textboxes_disabled";
		window.document.getElementById('pw_text').className = "oe_login_text_disabled";
		window.document.getElementById('password').disabled = true;
		window.document.getElementById('password').value = "";
		window.document.forms['oe2edit_form'].action.value = "sendpw";
	}else{
		window.document.getElementById('password').className = "oe_login_textboxes";
		window.document.getElementById('password').disabled = false;
		window.document.getElementById('pw_text').className = "oe_login_beschreibung";
		window.document.forms['oe2edit_form'].action.value = load_action;
	}
	return true;
}

// Ende Scripts Login - Fenster

function oe2edit_generate_new_file_property() {
	window.document.getElementsByName('act')[0].value = "content_prop_generatefileproperty";
	window.document.oe2edit_form.submit();
}

function oe2edit_properties_for () {
	window.document.getElementsByName('act')[0].value = "content_prop_mask";
	window.document.oe2edit_form.submit();
}

function oe2edit_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}


function initiate_security_logout() {
	window.document.getElementsByName('action')[0].value = "security_logout";
	window.document.oe2edit_form.submit();
}



function oe2edit_swapImgRestore() { //v3.0
  var i,x,a=document.oe2edit_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function oe2edit_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.oe2edit_p) d.oe2edit_p=new Array();
    var i,j=d.oe2edit_p.length,a=oe2edit_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.oe2edit_p[j]=new Image; d.oe2edit_p[j++].src=a[i];}}
}

function oe2edit_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=oe2edit_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function oe2edit_swapImage() { //v3.0
  var i,j=0,x,a=oe2edit_swapImage.arguments; document.oe2edit_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=oe2edit_findObj(a[i]))!=null){document.oe2edit_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}



function oe2edit_unix_timestamp(years, months, days, hours, minutes, seconds){
	
	// Aktuelles Datum setzen
	var requested_time = new Date();
	
	// Wenn was übergeben wurde, dieses nun überscheiben
	if ((years) && (months) && (days) && (hours) && (minutes ) && (seconds)) {
		
		// Monat beginnt bei 0 zu zählen
		months--;

		// Übergebenes Datum prüfen
		if ((years.length > 4) || (years.length == 0)) {
			years= "1970";
		}


		if ((months.length > 2) || (months.length == 0) || 
		    (months > 11) || (months < 0)) {
			months= "0";
		}

		if ((days.length > 2) || (days.length == 0) || 
		    (days > 31) || (days < 1)) {
			days= "1";
		}

		if ((hours.length > 2) || (hours.length == 0) || 
		    (hours > 23) || (hours < 0)) {
			hours = "0";
		}	

		if ((minutes.length > 2) || (minutes.length == 0) || 
		    (minutes > 59) || (minutes < 0)) {
			minutes = "0";
		}

		if ((seconds.length > 2) || (seconds.length == 0) || 
		    (seconds > 59) || (seconds < 0)) {
			seconds = "0";
		}	

		requested_time = new Date(years,months,days,hours,minutes,seconds).getTime();
	}
	var unix_timestamp = Math.round(requested_time/1000);

	return unix_timestamp;
}


// Behebt das Problem mit den Rahmen um Objekte im IE

function oe2edit_object_fix () {

return 0;
	// Objekte zählen
	var objects_array = document.getElementsByTagName('object');
	
	// Schleife über alle Objekte
	for (var i=0; i < objects_array.length; i++) {
	
		var div_id = 'oe2edit_object_fix_div_'+i;
		
		if (document.getElementById(div_id)) {
			// Content auslesen
			var content_of_div = document.getElementById(div_id).innerHTML;

			// Content wieder einsetzen
			document.getElementById(div_id).innerHTML = content_of_div;
			
			// Element anzeigen
			document.getElementById(div_id).style.visibility = 'visible';

		}			
	
	}

}

//---------------------------------------------------------------------------
// Javascript für JS-Pulldown- Menü 

function oe2edit_dropdown_menu_visibility (id, new_class_name) {


	if (document.getElementById(id)) {
	
	
		document.getElementById(id).className= new_class_name;
	
	
		return true;
		//=====
	}
	
	return false;
	//====
}




//---------------------------------------------------------------------------
// 2007-06-10 Sönke
// Sorgt dafür, dass wenn ein Textfeld den Focus hat oe_editable=off ist, verliert es den Focus wird oe_editable wieder zurückgesetzt.
var oe_editable_default = "";
function einit_oe_forms_events() {
	alert("OK");
}
function init_oe_forms_events() {
	if(document.getElementsByName("oe_editable")[0].value == undefined){
		oe_editable_default = "";
	}else{
		oe_editable_default = document.getElementsByName("oe_editable")[0].value;
	}
	//var report = "\nTextboxes:\n=================";
    var formObj = document.getElementsByTagName("input");
    for (var i = 0; i<formObj.length; i++) {
        if( (formObj[i].nodeType == 1) && (formObj[i].type == "text") ){
            XBrowserAddHandler(formObj[i], "focus", HandlerFocus);
            XBrowserAddHandler(formObj[i], "blur", HandlerBlur);
			//report = report + "\n" + formObj[i].type +": " + formObj[i].name;
        }
    }
	//report = report + "\n\nTextareas:\n=================";
    formObj = document.getElementsByTagName("textarea");
    for (var i = 0; i<formObj.length; i++) {
            XBrowserAddHandler(formObj[i], "focus", HandlerFocus);
            XBrowserAddHandler(formObj[i], "blur", HandlerBlur);
			//report = report + "\n" + formObj[i].type +": " + formObj[i].name;
    }
	//alert("Report\n"+report);
}
function HandlerFocus() {
	document.getElementsByName("oe_editable")[0].value = "off";
}
function HandlerBlur() {
	document.getElementsByName("oe_editable")[0].value = oe_editable_default;
}

//---------------------------------------------------------------------------
function XBrowserAddHandler(target, eventName, fnHandler) {
    var originalHandler = target["on"+eventName];
    if (originalHandler) {
        target["on"+eventName] = function (e) {
            XBrowserApplyHandler(this, originalHandler, e);
            XBrowserApplyHandler(this, fnHandler, e);
        };
    } else {
        target["on"+eventName] = function (e) {
            XBrowserApplyHandler(this, fnHandler, e);
        };
    }
}
function XBrowserApplyHandler(target, fn, e) {
    if (!e) {
        e = window.event;
    }
    if (!e) {
        alert("Problem mit XBrowserApplyHandler: Objekt nicht gefunden!");
    }
    if (Function.prototype.call) {
        fn.call(target, e);
    } else {
        target.__XBrowserElementApply = fn;
        target.__XBrowserElementApply(e);
    }
}






// Lesen und Schreiben des Cookies via JavaScript
//---------------------------------------------------------------------------


function oe2edit_write_cookie(name, attribute, value) {

    // Erst mal checken, ob Cookie vorhanden ist
    var content = document.cookie;
    if (content.length > 0) {
    
        var cookie_position = content.search(name+'=');
        
        // Ist es der gewünschte Cookie?
        if(cookie_position > -1) {
            
            // Von der Startpositon bis zum Ende erst mal alles mitnehmen 
            var cookie_value_temp = content.substring(cookie_position+name.length+1,content.length);

            var end_search = cookie_value_temp.search(';');
            if (end_search < 0) {
                end_search = content.length;
            }
            
            // JEtzt schauen, das wir tatsächlich auch nur bis zum Ende des einen Cookies alles mitnehmen
            var cookie_value =  cookie_value_temp.substring(0,end_search);
                        
            // Jetzt haben wir den Wert --> Trennen am Kaufmanns-Und (&) 
            // Erstes = Variable
            // Zweites = Wert
            var keys_and_values = cookie_value.split("&");        
            
            // JEtzt den Array durchgehen in Zweierschritten
            for (var i = 0; i <=  keys_and_values.length; i=i+2) {
                
                // Wenn gewünschtes Attribut erreicht wurde --> Wert neu setzen und Schleife beenden
                if (attribute == keys_and_values[i]) {
                     keys_and_values[i+1] = value;
                     
                    // Jetzt den Value des Cookies neu zusammensetzen
                    var new_cookie_value = keys_and_values.join("&");
                    
                    // Cookie jetzt neu zusammensetzen
                    document.cookie = name+'='+new_cookie_value+'; expires=+3M;';  
                   
                    // Schleife & Script beenden
                    return 1; 
                    //===
                }
            }
            
            // Vielleicht ist der Wert neu und muss angehängt werden
            document.cookie = name+'='+cookie_value+'&'+attribute+'&'+value+'; expires=+3M;';  
            
            return 1; 
            //===
        }
    }
    
    document.cookie = name+'='+attribute+'&'+value+'; expires=+3M;'; 
    
    return 1;
    //===   

}


function oe2edit_read_cookie (name, attribute) {
     var content = document.cookie;
     var result = '';

     if (content.length > 0) {

        var cookie_position = content.search(name+'=');
        
        // Ist es der gewünschte Cookie?
        if(cookie_position > -1) {
            
            // Von der Startpositon bis zum Ende erst mal alles mitnehmen 
            var cookie_value_temp = content.substring(cookie_position+name.length+1,content.length);

            var end_search = cookie_value_temp.search(';');
            if (end_search < 0) {
                end_search = content.length;
            }
            
            // JEtzt schauen, das wir tatsächlich auch nur bis zum Ende des einen Cookies alles mitnehmen
            var cookie_value =  cookie_value_temp.substring(0,end_search);
            // Jetzt haben wir den Wert --> Trennen am Kaufmanns-Und (&) 
            // Erstes = Variable
            // Zweites = Wert
            var keys_and_values = cookie_value.split("&");        
            
            // Jetzt den Array durchgehen in Zweierschritten
            for (var i = 0; i <=  keys_and_values.length; i=i+2) {

                // Wenn gewünschtes Attribut erreicht wurde --> Ausgabe des Wertes
                if (attribute == keys_and_values[i]) {
                    return keys_and_values[i+1];
                    //====
                }
            }     
        }
    }
     
     return '';
     //====
}



// Slide- Effekt zum Ein und Ausblenden von Div-Elementen
//---------------------------------------------------------------------------


var oe2edit_slide_effect = {


	//===================================
	// Slide Geschwinigkeit in ms

	"slide_speed" : 10,


	//===================================
	// Abstände für Slide ms

	"slide_timer" : 10,


	//===================================
	// Läuft Slide gerade?

	"slide_in_progress" : false,


	//===================================
	// Welcher Slide-Effekt ist gewünscht

	"slide_effect" : 'right_bottom' ,



	//===================================
	// Dürfen mehrere Divs geöffnet sein?

	"multiple_open" : true ,



	//===================================
	// Speichert das geöffnete Element

	"active_object_id" : undefined,



	//===================================
	// Speichert den Eval-String für einen Recall
	"recall_eval" : undefined,


	//===================================
	// Mindesthöhe des Slide- Objekts

	"min_height" : undefined,


	//===================================
	// Alte Left-Position des Slide- Objekts

	"min_width" : undefined,



	//===================================
	// Alte Left-Position des Slide- Objekts

	"orignial_object_left" : 0,


	//===================================
	// Alte Top-Position des Slide- Objekts

	"orignial_object_top" : 0,



	//===================================
	// Alte Breite des Slide- Objekts

	"orignial_object_width" : 0,



	//===================================
	// Alte Höhe des Slide- Objekts

	"orignial_object_height" : 0,


	//===================================
	// Initiierung für eine Menge von Elementen
	auto_init : function (slide_effect, multiple_open, slide_speed, min_width, min_height) {

		// Schauen, welcher Slide-effekt gesetzt wurde
		// Gültige Werte: left_bottom, right_bottom, left_top, left_bottom
		if ((slide_effect) &&
		    ((slide_effect == 'left_bottom') ||
		     (slide_effect == 'right_bottom') ||
		     (slide_effect == 'left_top') ||
		     (slide_effect == 'left_bottom')) ) {

		    oe2edit_slide_effect.slide_effect =  slide_effect;

		}

		// Dürfen mehrere geöffnet sein?
		if ((multiple_open == true) ||
		    (multiple_open == false)){
			oe2edit_slide_effect.multiple_open = multiple_open;
		}


		// Mindesthöhe gesetzt?
		if (min_height) {
			oe2edit_slide_effect.min_height = min_height;
		}
		
		if (oe2edit_slide_effect.min_height < 1) {
			oe2edit_slide_effect.min_height = 1;
		}
		

		// Mindestbreite gesetzt?
		if (min_width) {
			oe2edit_slide_effect.min_width = min_width;
		}
		
		if (oe2edit_slide_effect.min_width < 1) {
			oe2edit_slide_effect.min_width = 1;
		}



		// Speed gesetzt?
		if (slide_speed) {
			oe2edit_slide_effect.slide_speed = slide_speed;
		}


		// Alle Divs mit entsprechendem Klassennamen mit ID
		// und Funktionen versorgen
		var divs = document.getElementsByTagName('DIV');
		var divCounter = 1;

		for (var i=0; i < divs.length; i++){

			// Erst mal schauen, ob es ein Parent-Div gibt und dessen ID sichern
			var reg_expression = new RegExp('^oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_parent_([0-9]+)', "i");
 			var result = reg_expression.exec(divs[i].id);

			// Wenn was gefunden wurde...
			if (result){

				var div_id_nr = result[1];

				// Kind-Element suchen
				if (document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr)) {

					// Alle Kind-Elemente ausblenden
					if (! document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr).style.display) {
						document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr).style.display = 'none';
					}

					// Eltern-Element Funktion zuweisen
					if (!document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_parent_'+div_id_nr).onmousedown) {
						document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_parent_'+div_id_nr).onmousedown = oe2edit_slide_effect.show_hide_content;
					}


					// Hat Kind-Element ein Div in sich?
					// Dann positionieren wir das in Abhängigkeit vom Slide-Effect
					if (document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr).firstChild.nodeName == 'DIV') {

						// Wenn rahmendenes Kind-Element nicht schon positioniert ist
						// wird es relativ positioniert
						if (! document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr).style.position) {
							document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr).style.position = 'relative';
						}

						// Inneren Div absolut zum rahmenden Kind-Element positionieren
						document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr).firstChild.style.position = 'absolute';

					}

				}

			}
		}


		return 1;
		//====


	},

	
	
	//===================================
	// Initiierung für nur ein Element
	manual_init : function (div_id_nr, slide_effect, multiple_open, slide_speed, min_width, min_height) {

		// Schauen, welcher Slide-effekt gesetzt wurde
		// Gültige Werte: left_bottom, right_bottom, left_top, left_bottom
		if ((slide_effect) &&
		    ((slide_effect == 'left_bottom') ||
		     (slide_effect == 'right_bottom') ||
		     (slide_effect == 'left_top') ||
		     (slide_effect == 'right_top')) ) {

		    oe2edit_slide_effect.slide_effect =  slide_effect;

		}

		// Dürfen mehrere geöffnet sein?
		if ((multiple_open == true) ||
		    (multiple_open == false)){
			oe2edit_slide_effect.multiple_open = multiple_open;
		}


		// Mindesthöhe gesetzt?
		if (min_height) {
			oe2edit_slide_effect.min_height = min_height;
		}
		
		if (oe2edit_slide_effect.min_height < 1) {
			oe2edit_slide_effect.min_height = 1;
		}
		

		// Mindestbreite gesetzt?
		if (min_width) {
			oe2edit_slide_effect.min_width = min_width;
		}
		
		if (oe2edit_slide_effect.min_width < 1) {
			oe2edit_slide_effect.min_width = 1;
		}



		// Speed gesetzt?
		if (slide_speed) {
			oe2edit_slide_effect.slide_speed = slide_speed;

		}


		// Alle Divs mit entsprechendem Klassennamen mit ID
		// und Funktionen versorgen
		// Kind-Element suchen
		if (document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr)) {

			// Kind-Element ausblenden, wenn es keine Angaben zum display hat
			if (! document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr).style.display) {
				document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr).style.display = 'none';
			}
			
			// Eltern-Element Funktion zuweisen
			if (!document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_parent_'+div_id_nr).onmousedown) {
				document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_parent_'+div_id_nr).onmousedown= oe2edit_slide_effect.show_hide_content;
			}


			// Hat Kind-Element ein Div in sich?
			// Dann positionieren wir das in Abhängigkeit vom Slide-Effect
			if (document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr).firstChild.nodeName == 'DIV') {

				// Wenn rahmendenes Kind-Element nicht schon positioniert ist
				// wird es relativ positioniert
				if (! document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr).style.position) {
					document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr).style.position = 'relative';
				}

				// Inneren Div absolut zum rahmenden Kind-Element positionieren
				document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr).firstChild.style.position = 'absolute';

			}
		}

		return 1;
		//====

	},



	

	//===================================
	// Funktion zum Ein- und Ausblenden der Objekte
	show_hide_content : function (parent_id) {

		if ((this.id) && (!parent_id)){
		      parent_id = this.id;
		}

		// Wurde eine ID erhalten?
		if (parent_id) {


			// ID Nr. sichern
			var reg_expression = new RegExp('^oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_parent_([0-9]+)', "i");
			var result = reg_expression.exec(parent_id);

			if (result) {
			
				var div_id_nr = result[1];

				// Schauen, ob es das passende Kind-Element dazu gibt
				if (document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr)) {

					// Wenn Kind-Element ausgeblendet ist --> einblenden
					if ((!document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr).style.display) ||
					    (document.getElementById('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr).style.display == 'none')){

						// Falls noch ein anderes Div offen ist, wird das erst mal ausgeblendet
						// Aber nur, wenn das so eingestellt ist
						if ((oe2edit_slide_effect.active_object_id) &&
						    (oe2edit_slide_effect.multiple_open == false)) {
						    oe2edit_slide_effect.slide_content ('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_parent_'+oe2edit_slide_effect.active_object_id, 'oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+oe2edit_slide_effect.active_object_id, oe2edit_slide_effect.slide_speed*-1, oe2edit_slide_effect.slide_speed*-1);
							oe2edit_slide_effect.recall_eval = "oe2edit_slide_effect.slide_content ('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_parent_"+div_id_nr+"', 'oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_"+div_id_nr+"', "+oe2edit_slide_effect.slide_speed*1+", "+oe2edit_slide_effect.slide_speed*1+");";

						} else {
							oe2edit_slide_effect.slide_content ('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_parent_'+div_id_nr, 'oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr, oe2edit_slide_effect.slide_speed*1, oe2edit_slide_effect.slide_speed*1);
						}

						oe2edit_slide_effect.active_object_id = div_id_nr;


					// sonst: ausblenden
					} else {

						// ausblenden
						oe2edit_slide_effect.slide_content ('oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_parent_'+div_id_nr, 'oe2edit_slide_effect_'+oe2edit_slide_effect.slide_effect+'_child_'+div_id_nr, oe2edit_slide_effect.slide_speed*-1, oe2edit_slide_effect.slide_speed*-1);
						oe2edit_slide_effect.active_object_id = undefined;
					}

				}
			}

		}


		return 1;
		//====

	},


	//===================================
	// Tatsächliches Aus- und Einblenden der Objekte
	slide_content : function (parent_object_id, child_object_id, direction_x, direction_y) {

		// Schauen, welcher Effekt gewünscht ist. Danach richtet sich
		// Mindesthöhe und -breite
 		if ((oe2edit_slide_effect.slide_effect == 'right_bottom') ||
 		    (oe2edit_slide_effect.slide_effect == 'left_bottom') ||
 		    (oe2edit_slide_effect.slide_effect == 'right_top') ||
 		    (oe2edit_slide_effect.slide_effect == 'left_top')) {

 			// Mindestangaben sind Elternbreite / -höhe
 			if (!oe2edit_slide_effect.min_width) {
 				oe2edit_slide_effect.min_width = document.getElementById(parent_object_id).offsetWidth;
 			}

 			// Mindestangaben sind Elternbreite / -höhe
 			if (!oe2edit_slide_effect.min_height) {

 				oe2edit_slide_effect.min_height = 1;
 			}

 		}

		// Gewünschte Höhe und Breite des Objektes auf Basis des CSS
		// in Variablen speichern --> aber nur, wenn es der erste Aufruf ist
		// und es zudem das Einblenden ist
		// Zudem Originale Positionierung merken
		if (oe2edit_slide_effect.slide_in_progress == false) {

			document.getElementById(child_object_id).style.visibility = 'hidden';
			document.getElementById(child_object_id).style.display = 'block';

			oe2edit_slide_effect.orignial_object_width = document.getElementById(child_object_id).offsetWidth;
			oe2edit_slide_effect.orignial_object_height = document.getElementById(child_object_id).offsetHeight;

			var left_position_child_temp = document.getElementById(child_object_id).style.left;
			oe2edit_slide_effect.orignial_object_left = parseInt(left_position_child_temp.replace(/[^0-9]/g, ""));

			var top_position_child_temp = document.getElementById(child_object_id).style.top;
			oe2edit_slide_effect.orignial_object_top = parseInt(top_position_child_temp.replace(/[^0-9]/g, ""));

			if (! oe2edit_slide_effect.orignial_object_left) {
				oe2edit_slide_effect.orignial_object_left = 0;
			}

			if (! oe2edit_slide_effect.orignial_object_top) {
				oe2edit_slide_effect.orignial_object_top = 0;
			}

			//alert("Speichere alte Groesse: "+ oe2edit_slide_effect.orignial_object_width +"x"+oe2edit_slide_effect.orignial_object_height);

			if ((direction_y > 0) && 
			    (direction_x > 0)) {
				// Kind-Element ausblenden und Größe auf 0 setzen
				document.getElementById(child_object_id).style.height = oe2edit_slide_effect.min_height + 'px';
				document.getElementById(child_object_id).style.width = oe2edit_slide_effect.min_width + 'px';
			}

			document.getElementById(child_object_id).style.visibility = 'visible';

		}


		// Slide geht jetzt los
		oe2edit_slide_effect.slide_in_progress = true;

		// Aktuelle innere Höhe und Breite des Objektes bestimmen
		height = document.getElementById(child_object_id).offsetHeight;
		width = document.getElementById(child_object_id).offsetWidth;

		// Höhe und Breite um gewünschten Wert erhöhen
		height = height + direction_y;
		width = width + direction_x;

		// Festlegen, ob die Funktion sich noch mal selbst aufruft oder nicht
		var recall_this_function = true;


		// Wenn wir über das Ziel hinausgeschossen sind, Abbruch
		// Gilt für beide Richtungen
		
		    
		if (height > oe2edit_slide_effect.orignial_object_height){
			height = oe2edit_slide_effect.orignial_object_height;
			direction_y = 0;
		}

		if (width > oe2edit_slide_effect.orignial_object_width){
			width = oe2edit_slide_effect.orignial_object_width;
			direction_x = 0;

		}

		if ((height >= oe2edit_slide_effect.orignial_object_height) &&
			(width >= oe2edit_slide_effect.orignial_object_width)) {
			height = oe2edit_slide_effect.orignial_object_height;
			width = oe2edit_slide_effect.orignial_object_width;
			recall_this_function = false;
		}

		if (height < oe2edit_slide_effect.min_height){
			height = oe2edit_slide_effect.min_height;
			direction_y = 0;
		}

		if (width < oe2edit_slide_effect.min_width){
			width = oe2edit_slide_effect.min_width;
			direction_x = 0;
		}

		if ((height <= oe2edit_slide_effect.min_height) &&
			(width <= oe2edit_slide_effect.min_width)) {
			height = oe2edit_slide_effect.min_height;
			width = oe2edit_slide_effect.min_width;
			recall_this_function = false;
		}
	
		
		// Groesse neu setzen
		document.getElementById(child_object_id).style.height = height + 'px';
		document.getElementById(child_object_id).style.width = width + 'px';

		// Abhängig vom Slide- Effect müssen wir das Div noch
		// positionieren
		if (oe2edit_slide_effect.slide_effect == 'left_bottom') {

			var new_left_position_child = oe2edit_slide_effect.orignial_object_left + (document.getElementById(parent_object_id).offsetWidth - width);
			document.getElementById(child_object_id).style.left =   new_left_position_child+'px';

		} else if (oe2edit_slide_effect.slide_effect == 'left_top') {

			var new_left_position_child = oe2edit_slide_effect.orignial_object_left + (document.getElementById(parent_object_id).offsetWidth - width);
			document.getElementById(child_object_id).style.left =  new_left_position_child+'px';

			var new_top_position_child = (oe2edit_slide_effect.orignial_object_top - document.getElementById(parent_object_id).offsetHeight) - height;
			document.getElementById(child_object_id).style.top =  new_top_position_child+'px';

		} else if (oe2edit_slide_effect.slide_effect == 'right_top') {

			var new_top_position_child = (oe2edit_slide_effect.orignial_object_top - document.getElementById(parent_object_id).offsetHeight) - height;
			document.getElementById(child_object_id).style.top =  new_top_position_child+'px';
		}



		// Abhängig vom Slide-Effekt positionieren wir das innere DIV,
		// wenn es eines gibt
		var inner_div = document.getElementById(child_object_id).firstChild;
		if (inner_div.nodeName == 'DIV') {

			if ((oe2edit_slide_effect.slide_effect == 'right_bottom') ||
			    (oe2edit_slide_effect.slide_effect == 'left_bottom')) {
					inner_div.style.top = ((oe2edit_slide_effect.orignial_object_height-height)*-1) + 'px';
					inner_div.style.left = ((oe2edit_slide_effect.orignial_object_width-width)*-1) + 'px';

			}
		}



		// Wenn Recall noch erlaubt
		if (recall_this_function){
			setTimeout('oe2edit_slide_effect.slide_content("' + parent_object_id+'","'+ child_object_id + '",' + direction_x + ',' + direction_y  +')', oe2edit_slide_effect.slide_timer);

		} else {

			if (height <= oe2edit_slide_effect.min_height) {
				document.getElementById(child_object_id).style.display='none';

				// Groesse zurücksetzen
				document.getElementById(child_object_id).style.height = oe2edit_slide_effect.orignial_object_height + 'px';
				document.getElementById(child_object_id).style.width = oe2edit_slide_effect.orignial_object_width + 'px';
				document.getElementById(child_object_id).style.top = oe2edit_slide_effect.orignial_object_top + 'px';
				document.getElementById(child_object_id).style.left = oe2edit_slide_effect.orignial_object_left + 'px';
			}
			
			
			// Slide beenden
			oe2edit_slide_effect.slide_in_progress = false;

			// Wenn gleich danach noch was ausgeführt werden soll, dies jetzt tun
			if (oe2edit_slide_effect.recall_eval) {
				var temp = oe2edit_slide_effect.recall_eval;
				oe2edit_slide_effect.recall_eval = undefined;
				eval(temp);

			}

		}

		return 1;
		//====

	}



}



