function sprache_aendern(sprache_alt, sprache_neu) {
	// alle HTML-Elemente in ein Array schreiben, die das lang-Attribut (mit dem Wert der aktuellen Sprache) haben bzw. Formularbuttons:
	var f = $('body').select('[lang="' + sprache_alt + '"]');
	var g = $('body').select('[class="button"]');
	// die IDs dieser Elemente in ein Array schreiben, dass dann dem Ajax-Request übergeben wird
	arr_html_elemente = new Array();
	for(var i=0; i<f.length; i++){
		arr_html_elemente[i] = f[i].id;
	}
	for(var i=f.length; i<f.length+g.length; i++){
		arr_html_elemente[i] = g[i-f.length].id;
	}

	new Ajax.Request(rootDir + "ajax.php", {
		parameters: {funktion: 'sprache_aendern', aendern_zu: sprache_neu, ids: arr_html_elemente.toJSON()},
		method: "post",

		onFailure: function(response) {
			alert("Anfrage ist fehlgeschlagen");
		},

		onException: function(request, ex) {
			alert("»Ausnahmefehler« beim Laden: " + request + " " + ex);
		},

		onSuccess: function(response) {
			var json = response.responseText.evalJSON();
			for(var i=0; i<f.length; i++){
				f[i].innerHTML = json[i];
			}
			for(var i=f.length; i<f.length+g.length; i++){
				g[i-f.length].value = json[i];
			}
			focus_form();
		}
	});

}

function itemSpeichern(verzeichnis, getAktion, fehlerAnzeige, logoutSeconds) {
	if($('formular_item')) {
		var formulardaten = $('formular_item').serialize();
		new Ajax.Request(rootDir + "ajax.php", {
			parameters: {funktion: 'speichern', verzeichnis: verzeichnis, aktion: getAktion, js_formulardaten: formulardaten },
			method: "post",
	
			onFailure: function(response) {
				alert("Anfrage ist fehlgeschlagen");
			},
	
			onException: function(request, ex) {
				alert("»Ausnahmefehler« beim Laden");
			},
	
			onSuccess: function(response) {
				aenderungsmeldung();
				// countdownProceed(logoutSeconds);
				var hinweis_fehler = $('body').select('[class="form_buttons_fehler hinweis"]');
				for(var i=0; i<hinweis_fehler.length; i++){
					if(response.responseText != '') {
						if($(hinweis_fehler[i].id).style.display == 'none') { Effect.BlindDown(hinweis_fehler[i].id, {duration:1.0}); }
					} else {
						Effect.BlindUp(hinweis_fehler[i].id, {duration:1.0});
					}
				}
				if(fehlerAnzeige) {
					if(response.responseText != '') {
						$('echo_fehler_ul').innerHTML = response.responseText;
						setTimeout("Effect.Appear('echo_fehler', {duration:1.0});",1000);
					} else {
						Effect.Fade('echo_fehler', {duration:1.0});
					}
				}
			}
		});
	}
	return true;
}

function itemLoeschen(verzeichnis, recID) {
	new Ajax.Request(rootDir + "ajax.php", {
		parameters: {funktion: 'del', verzeichnis: verzeichnis, id: recID},
		method: "post",

		onLoading: function() {
			showLoading(getHtmlElementID(verzeichnis, recID));
		},

		onFailure: function(response) {
			alert("Anfrage ist fehlgeschlagen (Eintrag mit der ID " + recID+ ")");
		},

		onException: function(request, ex) {
			alert("»Ausnahmefehler« (itemLoeschen) beim Laden von Eintrag mit der ID " + recID);
		},

		onSuccess: function(response) {
//				alert(response.responseText);
			Effect.BlindUp(getHtmlElementID(verzeichnis, recID), {duration:1.0});
			if(verzeichnis == 'bilder' || verzeichnis == 'dokumente') {
				aDatLink2Neu(verzeichnis, 1);
			}
			if(response.responseText != 0) {
				parentEnableDel(response.responseText, verzeichnis);
			}
		}
	});
}

function getHtmlElementID(verzeichnis, recId) {
	// ermittelt die HTML-ID eines Elementes anhand des Verzeichnisses/Moduls und der ID des DB-Eintrags
	if(verzeichnis == 'bilder') { var htmlElementID = 'bild_'+recId; }
	else if(verzeichnis == 'dokumente') { var htmlElementID = 'dokument_'+recId; }
	else if(verzeichnis == 'kommentare') { var htmlElementID = 'cmt_'+recId; }
	else { var htmlElementID = 'item_'+recId; }
	return htmlElementID;
}

function parentEnableDel(IDParent, verzeichnis) {
	new Ajax.Request(rootDir + "ajax.php", {
		parameters: {funktion: 'parent_enable_del', verzeichnis: verzeichnis, id: IDParent },
		method: "post",

		onFailure: function(response) {
			alert("Anfrage ist fehlgeschlagen (parentEnableDel())");
		},

		onException: function(request, ex) {
			alert("»Ausnahmefehler« beim Laden (parentEnableDel())");
		},

		onSuccess: function(response) {
			var json = response.responseText.evalJSON();
			if($('item_del_'+IDParent) != null) {
				$('item_del_'+IDParent).innerHTML = json[0];
				$('item_confirm_'+IDParent).innerHTML = json[1];
			}
		}
	});
}

function itemFreigabe(verzeichnis, recID, prefixRecID) {
	// prefixRecID: zusätzliches Präfix für die HTML-ID (muss bereits den Unterstrich enthalten, der in der HTML-ID vor der recID steht)
	new Ajax.Request(rootDir + "ajax.php", {
		parameters: {funktion: 'chg_freigabe', verzeichnis: verzeichnis, id: recID},
		method: "post",

		onFailure: function(response) {
			alert("Anfrage ist fehlgeschlagen (Eintrag mit der ID " + recID + ")");
		},

		onException: function(request, ex) {
			alert("»Ausnahmefehler« beim Laden von Eintrag mit der ID " + recID + " (itemFreigabe())");
		},

		onSuccess: function(response) {
			var json = response.responseText.evalJSON()
			if(verzeichnis == 'kommentare') {
				cssClassFreigabe(recID, json, 'h4_cmt_show_');
			} else {
				nameHTML = (undefined === prefixRecID) ? 'item_name_' : 'item_name_'+prefixRecID;
				cssClassFreigabe(recID, json, nameHTML);
			}
		}
	});
}

function cssClassFreigabe(id, wert, nameHTML) {
	idHTML = (undefined === nameHTML) ? 'item_name_'+id : nameHTML+id;
	if(wert == 1) {
		aenderungsmeldung();
		$(idHTML).removeClassName('freigabe_gesperrt');
	} else if(wert == 0) {
		aenderungsmeldung();
		$(idHTML).addClassName('freigabe_gesperrt');
	}
}

function dbEintragPosition(verzeichnis, listeString) {
	new Ajax.Request(rootDir + "ajax.php", {
		parameters: {funktion: 'liste_sortieren', verzeichnis: verzeichnis, liste_string: listeString},
		method: "post",

		onFailure: function(response) {
			alert("Anfrage ist fehlgeschlagen");
		},

		onException: function(request, ex) {
			alert("»Ausnahmefehler« beim Laden" + verzeichnis + listeString);
		},

		onSuccess: function(response) {
			aenderungsmeldung();
		}
	});
}

function showConfigForm(verzeichnis, idDomain, idSprache, formAction) {
	divID = 'popup_konfiguration';
	new Ajax.Request(rootDir + "ajax.php", {
		parameters: {funktion: 'show_config_form', verzeichnis: verzeichnis, id_domain: idDomain, id_sprache: idSprache, form_action: formAction },
		method: "post",

		onLoading: function() {
			showLoading(divID);
		},

		onFailure: function(response) {
			alert("Anfrage ist fehlgeschlagen (Aufruf des Konfigurationsformulars)");
		},

		onException: function(request, ex) {
			alert("»Ausnahmefehler« beim Laden (showConfigForm())");
		},

		onSuccess: function(response) {
			$(divID).innerHTML = response.responseText;
			Effect.Appear(divID, {duration:0.8});
		}
	});
}

function hideConfigForm() {
	divID = 'popup_konfiguration';
	Effect.Fade(divID, {duration:0.8});
	setTimeout("$(divID).innerHTML = '';",1000);
}

function setConfig() {
	// Verarbeitung der Angaben im Konfigurationsformular
	formID = 'formular_konfiguration';

	var formulardaten = $(formID).serialize();

	new Ajax.Request(rootDir + "ajax.php", {
		parameters: {funktion: 'set_config', js_formulardaten: formulardaten },
		method: "post",

		onFailure: function(response) {
			alert("Anfrage ist fehlgeschlagen (setTranslation())");
		},

		onException: function(request, ex) {
			alert("»Ausnahmefehler« beim Laden (setTranslation())");
		},

		onSuccess: function(response) {
			aenderungsmeldung();
//			alert(response.responseText.evalJSON());
 		}
	});
}

function showTranslationForm(idDomain, idSprache) {
	divID = 'popup_uebersetzungen';
	new Ajax.Request(rootDir + "ajax.php", {
		parameters: {funktion: 'show_translation_form', id_domain: idDomain, id_sprache: idSprache },
		method: "post",

		onLoading: function() {
			showLoading(divID);
		},

		onFailure: function(response) {
			alert("Anfrage ist fehlgeschlagen (Aufruf des Übersetzungsformulars)");
		},

		onException: function(request, ex) {
			alert("»Ausnahmefehler« beim Laden (showTranslationForm())");
		},

		onSuccess: function(response) {
			$(divID).innerHTML = response.responseText;
			Effect.Appear(divID, {duration:0.8});
		}
	});
}

function hideTranslationForm() {
	divID = 'popup_uebersetzungen';
	Effect.Fade(divID, {duration:0.8});
	setTimeout("$(divID).innerHTML = '';",1000);
}

function setTranslation(herkunftSeiteID, herkunftSeiteSprache, linkSprache) {
	// Verarbeitung der Verknüpfungs-Auswahl im Seiten-Übersetzungsformular
	// »herkunft...« meint die Seite, zu welcher die Verknüpfung ausgewählt wurde
	// »link...« meint die Seite, die mit Hilfe einer Select-Liste ausgewählt wurde
	divContainer = 'popup_uebersetzungen_seitenliste';
	auswahllisteID = 'ff_'+herkunftSeiteID+'_'+linkSprache;
	linkSeiteID = $(auswahllisteID).value;

	var alleAuswahllisten = $(divContainer).select('select');

	new Ajax.Request(rootDir + "ajax.php", {
		parameters: {funktion: 'set_translation', herkunftseite_id: herkunftSeiteID, herkunftseite_sprache: herkunftSeiteSprache, link_id: linkSeiteID, link_sprache: linkSprache },
		method: "post",

		onLoading: function() {
			for(var i=0; i<alleAuswahllisten.length; i++){
				$(alleAuswahllisten[i].id).setAttribute('disabled', 'disabled');
			}
		},

		onFailure: function(response) {
			alert("Anfrage ist fehlgeschlagen (setTranslation())");
		},

		onException: function(request, ex) {
			alert("»Ausnahmefehler« beim Laden (setTranslation())");
		},

		onSuccess: function(response) {
			$(divContainer).innerHTML = response.responseText;
 		}
	});
}

function showCopyMoveList(wasTun, verzeichnis, modulMenu, idItem) {
	divID = 'item_'+wasTun+'_'+idItem;
	new Ajax.Request(rootDir + "ajax.php", {
		parameters: {funktion: 'show_copy_move_list', was: wasTun, verzeichnis: verzeichnis, modul_menu: modulMenu, id_item: idItem },
		method: "post",

		onLoading: function() {
			showLoading(divID);
		},

		onFailure: function(response) {
			alert("Anfrage ist fehlgeschlagen (showCopyMoveList)");
		},

		onException: function(request, ex) {
			alert("»Ausnahmefehler« beim Laden (showCopyMoveList)");
		},

		onSuccess: function(response) {
			$(divID).innerHTML = response.responseText;
			Effect.Appear(divID, {duration:0.8});
		}
	});
}

function hideCopyMoveList(wasTun, idItem) {
	divID = 'item_'+wasTun+'_'+idItem;
	Effect.Fade(divID, {duration:0.8});
	setTimeout("$(divID).innerHTML = '';",1000);
}

function itemMove(verzeichnis, idItem, idDomain, idSprache, idParent) {
	new Ajax.Request(rootDir + "ajax.php", {
		parameters: {funktion: 'item_move', verzeichnis: verzeichnis, id_item: idItem, id_domain: idDomain, id_sprache: idSprache, id_parent: idParent },
		method: "post",

		onLoading: function() {
			displayOverlay('Appear');
		},

		onFailure: function(response) {
			alert("Anfrage ist fehlgeschlagen (itemMove)");
		},

		onException: function(request, ex) {
			alert("»Ausnahmefehler« (itemMove)");
		},

		onSuccess: function(response) {
//			alert(response.responseText);
			window.location.reload();
		}
	});
}


// Alternativ-Funktion zum neu laden der Datei-Liste: es wird ein neues LI angehängt
/*
function ulDatAddLi(verzeichnis, idItem, cssClass, datWas, schliessen, neu_erlaubt) {
	new Ajax.Request(rootDir + "ajax.php", {
		parameters: {funktion: 'ul_dat_add_li', verzeichnis: verzeichnis, was: datWas, id: idItem},
		method: "post",

		onFailure: function(response) {
			alert("Anfrage ist fehlgeschlagen");
		},

		onException: function(request, ex) {
			alert("»Ausnahmefehler« beim Laden (ulDatAddLi)");
		},

		onSuccess: function(response) {
			var idUL = 'ul_items_'+datWas;
			opener.Sortable.destroy(idUL);

			var neuesElement = document.createElement('li');
			neuesElement.setAttribute('class', cssClass);
			idHTML = (datWas == 'bilder') ? 'bild_'+idItem : 'dokument_'+idItem;
			neuesElement.setAttribute('id', idHTML);
			neuesElement.style.display = 'none';
			neuesElement.innerHTML = response.responseText;
			opener.$(idUL).appendChild(neuesElement);
			opener.Effect.BlindDown(idHTML, {duration:1.0});

			opener.Sortable.create(idUL, {
				scroll: window, 
				onUpdate: function() {
					dbEintragPosition(datWas,opener.Sortable.serialize(idUL));
				}
			});
			if(!neu_erlaubt) { aDatLink2Neu(datWas, 0); }
			if(schliessen) setTimeout("self.close()",2000); // nach 1 Sekunde Fenster schließen
		}
	});
}
*/

function ulDatReload(modul, idItem, datWas, schliessen, neu_erlaubt) {
	new Ajax.Request(rootDir + "ajax.php", {
		parameters: {funktion: 'reload_ul_dat', verzeichnis: modul, id: idItem, was: datWas },
		method: "post",

		onFailure: function(response) {
			alert("Anfrage ist fehlgeschlagen");
		},

		onException: function(request, ex) {
			alert("»Ausnahmefehler« beim Laden (ulDatReload)");
		},

		onSuccess: function(response) {
			var idUL = 'ul_items_'+datWas;
			var idTxtStatus = 'status_'+datWas+'_'+idItem;
			opener.Sortable.destroy(idUL);

			var json = response.responseText.evalJSON();
			opener.$(idUL).innerHTML = json[0];
			opener.$(idTxtStatus).innerHTML = json[1];
			/*
			opener.Sortable.create(idUL, {
				scroll: window, 
				onUpdate: function() {
					dbEintragPosition(datWas,opener.Sortable.serialize(idUL));
				}
			});
			*/
			if(!neu_erlaubt) { aDatLink2Neu(datWas, 0); }
			if(schliessen) { self.close(); }
		}
	});
}

function aDatLink2Neu(was, neu_erlaubt) {
	// blendet den Button für eine neue Datei ein oder aus (bei Begrenzung der Datei-Anzahl)
	if(neu_erlaubt) { Effect.Appear(was+'_link2neu'); }
	if(!neu_erlaubt) { opener.Effect.Fade(was+'_link2neu'); }
}

function itemShowOption(id) {
	idHTML = 'item_confirm_' + id;
	if($(idHTML).style.display == 'none') {
		Effect.BlindDown(idHTML, {duration:0.5});
	} else {
		Effect.BlindUp(idHTML, {duration:0.5});
	}
}

function datShowFormAdd(id) {
	if($('form_add_'+id).style.display == 'none') {
		Effect.BlindDown('form_add_'+id, {duration:0.6});
		Effect.Fade('form_add_link2open_'+id, {duration:0.3});
 		setTimeout("Effect.Appear($('form_add_link2close_"+id+"'), {duration:0.3});",300);
	} else {
		Effect.BlindUp('form_add_'+id, {duration:0.6});
		Effect.Fade('form_add_link2close_'+id, {duration:0.3});
 		setTimeout("Effect.Appear($('form_add_link2open_"+id+"'), {duration:0.3});",300);
	}
}

function cmtSave(idCmt) {
	// speichert einen einzelnen Kommentar
	idShow = 'cmt_show_'+idCmt;
	var ffFreigabe = ($('ff_freigabe_cmt_'+idCmt).checked) ? 1 : 0;
	var ffName = $('ff_name_cmt_'+idCmt).value;
	var ffURL = $('ff_url_cmt_'+idCmt).value;
	var ffTxt = $('ff_txt_cmt_'+idCmt).value;
	new Ajax.Request(rootDir + "ajax.php", {
		parameters: {funktion: 'cmt_speichern', id: idCmt, freigabe: ffFreigabe, name: ffName, url: ffURL, txt: ffTxt },
		method: "post",

		onFailure: function(response) {
			alert("Anfrage ist fehlgeschlagen: cmtSave()");
		},

		onException: function(request, ex) {
			alert("»Ausnahmefehler« beim Laden: cmtSave()");
		},

		onSuccess: function(response) {
			aenderungsmeldung();
			showEditCmt(idCmt);
			$(idShow).innerHTML = response.responseText;
		}
	});
}

function showLoading(htmlElementID) {
	// Warte-Symbol anzeigen
	$(htmlElementID).innerHTML = '<img class="loading_gif" src="'+rootDir+'__graphix/loading_black_16px.gif" alt="in Verarbeitung …" title="in Verarbeitung …" />';
}

function aenderungsmeldung() {
	Effect.Appear('chg_succeed'); // Erfolg melden
	Effect.Fade('chg_succeed', {delay: 3}); // wieder verschwinden
}

function writeHash2Session(modulName, altHash) {
	curHash = (altHash) ? altHash : '';
	curHash = (window.location.hash != '' && curHash == '') ? window.location.hash : curHash;
	new Ajax.Request(rootDir + "ajax.php", {
		parameters: {funktion: 'write_hash_to_session', verzeichnis: modulName, cur_hash: curHash },
		method: "post",

		onFailure: function(response) {
			alert("Anfrage ist fehlgeschlagen (writeHash2Session())");
		},

		onException: function(request, ex) {
			alert("»Ausnahmefehler« beim Laden (writeHash2Session())");
		}
	});
}



