// ################################################################################
// Name:         AJAX Library 
// Beschreibung: Bibliothek mit AJAX Funktionen
// Version:      0.1
// Autor:        Sergej Knaub
// Benoetigt:    jslib.js vor dem ajax.js einbinden
// ################################################################################

/* IndexOf funktion fuer IE 6/7 FF kann das von hause aus ab Javascript 1.6 */
/*
if (typeof Array.prototype.indexOf == "undefined") {
    Array.prototype.indexOf = function(item) {
        for (var i = 0; i < this.length; i++) {
            if ((typeof this[i] == typeof item) && (this[i] == item)) {
                return i;
            }
        }
        return -1;
    }
}
*/
//######################################################
// Funktion zum Ausfuehren eines Requests auf eine Seite
// mit URL, Mode und ID uebergabe
//######################################################

    var http_request = false;

    function macheRequest(url, mode, id, funk) {

        http_request = false;
		
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // zu dieser Zeile siehe weiter unten
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
            return false;
        }
		
		var jetzt = new Date();
		var Zeit = jetzt.getTime()

		http_request.onreadystatechange = alertInhalt;
        http_request.open('GET', url+'?mode='+mode+'&id='+id+'&t='+Zeit, true);
        http_request.send(null);

    }

	
//############################################
// Funktion fuer die Ausgabe der Ergebnisse
// oder Fehlermeldung falls
// beim Request Fehler aufgetretten sind
//############################################
	
	
    function alertInhalt() {

        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                document.getElementById('warenkorb').innerHTML = http_request.responseText;
				
				if(http_request.responseText) {
					document.getElementById('wkleeren').style.display = 'block';
				} else {
					document.getElementById('wkleeren').style.display = 'none';
				}
				
            } else {
                alert('Bei dem Request ist ein Problem aufgetreten.');
            }
        }

    }
	
	
//##############################################
// Funktion zum hinzufuegen/enfernen IDs aus
// dem Warenkorb
// Als Parameter ID und Scriptnamen uebergeben
//##############################################
	
	
	function checkWarenkorb(id, boxname,  script) {
		if(document.getElementById(boxname+'_'+id).checked) {
			macheRequest(script,'addkorb', id);
		} else {
			macheRequest(script,'removekorb', id);
		}
		
	}
	
	
//##############################################
// Funktion zum hinzufuegen/enfernen IDs aus
// dem Warenkorb
// Als Parameter Array von IDs und Scriptnamen uebergeben
//##############################################
	
	
	function checkWarenkorbArray(idarray, boxname,  script) {
		
		if(document.getElementById(boxname+'_'+idarray[0]['id']).checked) {
			macheRequest(script,'addkorb', idarray);
		} else {
			macheRequest(script,'removekorb', idarray);
		}
		
	}
	
	
//##############################################
// Funktion zum Pruefen, ob warenkorb
// gezeiogt werden soll (wenn nicht leer)
// Als Parameter Scriptnamen uebergeben
// BEACHTE: Vorher muss jslib.js eingebunden sein
//##############################################
	
	
	function pruefkorb(script) {
		macheRequest(script,'pruefkorb');
	}
	

	
//##############################################
// Funktion zum leeren des Warenkorbes
// Als Parameter Scriptnamen uebergeben
// BEACHTE: Vorher muss jslib.js eingebunden sein
//##############################################
	
	
	function warenkorbleeren(script, formname, boxname) {
		
		anzahl = document.forms[formname].elements.length;
		for(var x=0;x<anzahl;x++) {
			document.forms[''+formname+''].elements[x].checked = false;
		}
		
		macheRequest(script,'delkorb');
	}
	
	
//##############################################
// Alle checkboxen selektieren / deselektieren
//##############################################
	
	
	function checkall(id, bildarray, boxname) {
		
		script='warenkorb.php';
		zustand = document.getElementById(id).checked;
		
		for(var key in bildarray) {
			
			//alert(document.getElementById(boxname+'_'+bildarray[key]['id']).checked != zustand);
			if(document.getElementById(boxname+'_'+bildarray[key]['id']).checked != zustand) {
				//window.setTimeout(checkWarenkorb(bildarray[key]['id'], boxname,  script), 1000);
				document.getElementById(boxname+'_'+bildarray[key]['id']).checked = zustand;

				checkWarenkorb(bildarray[key]['id'], boxname,  script);	
			}
		}
		
		//checkWarenkorbArray(bildarray, boxname,  script);	
	}
	
// ##################################################
// Funktion:     setze_entferne_auswahl()
// Beschreibung: Setzt oder entfernt die Auswahl bei den Checkboxen
// Autor:        Sergej Knaub
// Parameter:    keine
// Rueckgabe:    keine 
//				 (setzt oder entfernt markierung bei den checkboxen 
// 				 mit der classe:'formdata_commid' , 
//				 mastercheckbox sollte id:'setze_entferne_auswahl_box' sein)
// Aufruf:       setze_entferne_auswahl();
// ##################################################
function setze_entferne_auswahl() {
	check_auswahl = $("#setze_entferne_auswahl_box").attr('checked');
	if(check_auswahl) {
		$("input.formdata_commid").attr('checked','checked');
	} else {
		$("input.formdata_commid").attr('checked','');
	}
}

// ##################################################
// Funktion:     setze_entferne_auswahl_wk()
// Beschreibung: Setzt oder entfernt die Auswahl bei den Checkboxen im Warenkorb
// Autor:        Sergej Knaub
// Parameter:    Objekt
// Rueckgabe:    keine 
//				 (setzt oder entfernt markierung bei den checkboxen 
// 				 mit der classe:'formdata_commid' , 
//				 mastercheckbox sollte id:'setze_entferne_auswahl_box' sein)
// Aufruf:       setze_entferne_auswahl();;
// ##################################################
function setze_entferne_auswahl_wk(objekt) {
	checkbox_alle = $(objekt);
	idtypname = checkbox_alle.parent().parent().parent().parent().attr('id');
	
	check_auswahl = checkbox_alle.attr('checked');
	classvar = $("#"+idtypname).children().children().next().children().children().attr('class');
	
	if(check_auswahl) {
		$("input."+classvar).attr('checked','checked');
	} else {
		$("input."+classvar).attr('checked','');
	}
}

//##############################################
// Funktion zum Pruefen, ob warenkorb
// gezeigt werden soll (wenn nicht leer)
// Als Parameter Scriptnamen uebergeben
// BEACHTE: Vorher muss jslib.js eingebunden sein
//##############################################
	
	
function wk_pruefen() {
	link_url = 'index.php';
	
	$.ajax({
		type: "GET",
		url: link_url,
		data: 'inhalt=wk_pruefen',
		async: false,
		success: function(msg){
			/*
			var tmp = "wkdata = "+msg;
			eval(tmp);
			*/
			if(msg != 'fehler') {
				$("#warenkorb_ausgabe").show();
				$("#warenkorb_ausgabe_links").show();
				$("#warenkorb_ausgabe_links").children('div.wk_inhalt').html(msg);
			} else {
				$("#warenkorb_ausgabe").hide();
				$("#warenkorb_ausgabe_links").hide();
			}
			return false;
		},
		error: function(msg) {
			alert('Es konnten keine Daten im Warenkorb gefunden werden.');
			return false;
		}
	});
}
	
function wk_pruefen_admin() {
	link_url = 'index.php';
	
	$.ajax({
		type: "GET",
		url: link_url,
		data: 'inhalt=wk_pruefen',
		async: false,
		success: function(msg){
			/*
			var tmp = "wkdata = "+msg;
			eval(tmp);
			*/
			if(msg != 'fehler') {
				$("#warenkorb_ausgabe").show();
				$("#warenkorb_ausgabe").children('div.wk_inhalt').html(msg);
			} else {
				$("#warenkorb_ausgabe").hide();
			}
			return false;
		},
		error: function(msg) {
			alert('Es konnten keine Daten im Warenkorb gefunden werden.');
			return false;
		}
	});
}

// ##################################################
// Funktion:     wk_aktualisieren(data)
// Beschreibung: aktuealisiert den Warenkorb, als Parameter werden
//				 Formular-Daten uebergeben, die IDs beinhalten die 
// 				 im Warenkorb gespeichert oder aus dem WK entfernet werden
// Autor:        Sergej Knaub
// Parameter:    form_data
// Rueckgabe:    false
// Aufruf:       wk_aktualisieren();
// ##################################################
function wk_aktualisieren(form_data) {
	$.ajax({
		type: "POST",
		url: "index.php",
		data: form_data,
		async: false,
		success: function(msg){
			wk_pruefen();
		},
		error: function(msg) {
			alert('Es konnten keine Daten im Warenkorb aktualisiert werden.');
			return false;
		}
	});
}
	
// ##################################################
// Funktion:     wk_loeschen(url)
// Beschreibung: ruft per Ajax-Request eine als Parameter uebergebene Seite oder
//				 eine vordifinierte Seite: index.php auf.
//				 Und uebergibt per Get alle Formular-Variablen.
//				 Das Formular muss id:"wk_loeschen" haben
// Autor:        Sergej Knaub
// Parameter:    url
// Rueckgabe:    false
// Aufruf:       wk_loeschen();;
// ##################################################
function wk_loeschen() {
	link_url = 'index.php';
	
	var form_data=$("#wk_loeschen").serialize();

	var background = $('<div/>');
	$(background).animate({'opacity' : 'show'});
	$(background).attr('id', 'wkSpeichernBackground').css({
		'background-color'	: '#ffffff',
		'width' 			: $(document).width(),
		'height' 			: $(document).height(),
		'position' 			: 'absolute',
		'left' 				: '0',
		'top' 				: '0',
		'z-index' 			: 3,
		'opacity' 			: '.8',
		'filter'			: 'alpha(opacity=80)'
	});
	
	$("body").append(background);
	var interaktionBox = $('<div/>');
	var width = $('body').width();
	
	abstand_oben = $(document).scrollTop()+250;
	abstand_links = $(document).scrollLeft()+500;
	
	var boxinhalt = '<p>Daten werden aus dem Warenkorb geloescht...</p>';

	$(interaktionBox).html(boxinhalt).css(
		{
			'background-color'	: '#fff',
			'color'		: '#d10',
			'font-weight' : 'bold',
			'padding'	: '10px',
			'border'	: '5px solid #d10',
			'position'	: 'absolute',
			'z-index'	: 4,
			'top'		: abstand_oben,
			'left'		: abstand_links
		});
		
	$('body').append(interaktionBox);
	
	$.ajax({
		type: "GET",
		url: link_url,
		data: form_data,
		async: false,
		success: function(msg){
			$(interaktionBox).remove();
			$(background).remove();
			
			var tmp = "ergebnis = "+msg;
			eval(tmp);
			for (var item in ergebnis){
				for (var itemvalue in ergebnis[item]){
					
					classvar = '.datenforeach'+ergebnis[item];
					// TR entfernen wenn aus dem Wk geloescht
					var test = $("#table_"+item).children().children(classvar).remove();
					// Anzahl im Tab anpassen
					classvar = 'li.'+item;
					var tmp_anzahl = $("ul.ulregisterkarten").children(classvar).children().children().html();
					var neue_anzahl = tmp_anzahl - 1;
					if(neue_anzahl < 1) {
						var tabid = $("ul.ulregisterkarten").children(classvar).children().attr('href').substr(1);
						// pruefen ob weitere Tabs vorhanden
						var prevtab = $("ul.ulregisterkarten").children(classvar).prev().html();
						var nexttab = $("ul.ulregisterkarten").children(classvar).next().html();
						if(prevtab) {
							$("#"+tabid).prev().removeClass('ui-tabs-hide');
							$("ul.ulregisterkarten").children(classvar).prev().addClass('ui-tabs-selected');
						} else if(nexttab) {
							$("#"+tabid).next().removeClass('ui-tabs-hide');
							$("ul.ulregisterkarten").children(classvar).next().addClass('ui-tabs-selected');
						} else {
							$("#registerkarten").html('<h4>Es sind keine Daten im Warenkorb vorhanden!</h4>');
						}
						$("ul.ulregisterkarten").children(classvar).remove();
						$("#"+tabid).remove();
						
					} else {
						$("ul.ulregisterkarten").children(classvar).children().children().html(''+neue_anzahl+'');
					}
					
				};
			};
			
			wk_pruefen();
			
			return false;
		},
		error: function(msg) {
			alert('Es konnten keine Daten im Warenkorb gespeichert werden. Bitte pruefen Sie ob alle nötigen Daten im Formular uebergeben wurden. Ganz wichtig: inhalt!');
		}
	});
}

// ##################################################
// Funktionen JQuery zur Darstellung des Infotextes
// und Interaktion verhindern
// ##################################################

function generiere_lade_anzeige(aktion, text) {

    if(aktion == 'on') {
        var background = $('<div/>');
    	$(background).animate({'opacity' : 'show'});
    	$(background).attr('id', 'ladeAnzeigeBackground').css({
    		'background-color'	: '#ffffff',
    		'width' 			: $(document).width(),
    		'height' 			: $(document).height(),
    		'position' 			: 'absolute',
    		'left' 				: '0',
    		'top' 				: '0',
    		'z-index' 			: 3,
    		'opacity' 			: '.8',
    		'filter'			: 'alpha(opacity=80)'
    	});

    	$("body").append(background);
    	var interaktionBox = $('<div/>');

    	abstand_oben = $(document).scrollTop()+250;
    	abstand_links = $(document).scrollLeft()+500;

    	var boxinhalt = '<p style="text-align:center;">'+text+'<br /><br /><img src="/common/images/ajax-loader.gif" /></p>';

    	$(interaktionBox).attr('id', 'ladeAnzeigetext').html(boxinhalt).css(
    		{
    			'background-color'	: '#fff',
    			'color'		: '#d10',
    			'font-weight' : 'bold',
    			'padding'	: '10px',
    			'border'	: '5px solid #d10',
    			'position'	: 'absolute',
    			'z-index'	: 4,
    			'top'		: abstand_oben,
    			'left'		: abstand_links
    		});

    	$('body').append(interaktionBox);
    } else if(aktion == 'off') {
        $("#ladeAnzeigetext").remove();
        $("#ladeAnzeigeBackground").remove();
    }
}


// ##################################################
// Funktionen JQuery zur bearbeitung der Mediadaten
// Dazu gehoeren auch funktionen zur Generierung der 
// Dialogen : JA / Nein / Ok
// ##################################################

function generiere_dialogfeld_ok(background) {
	
	var abfrageBox = $('<div/>');
	var width = $('body').width();
	
	abstand_oben = $(document).scrollTop()+250;
	abstand_links = $(document).scrollLeft()+500;
	
	var boxinhalt = '<p>Möchten Sie wirklich die Media-Datei unwiderruflich löschen?<br /><br /></p>';

	$(abfrageBox).html(boxinhalt).css(
		{
			'background-color'	: '#fff',
			'color'		: '#d10',
			'font-weight' : 'bold',
			'padding'	: '10px',
			'border'	: '5px solid #d10',
			'position'	: 'absolute',
			'z-index'	: 4,
			'top'		: abstand_oben,
			'left'		: abstand_links
		});
	$('body').append(abfrageBox);
	
	var abfragebox_oktaste = $('<span/>');
	$(abfrageBox).append(abfragebox_oktaste);
	
	$(abfragebox_oktaste).html('OK').css(
		{
			'border'	: '1px solid #ccc',
			'margin'	: '10px 10px 10px 100px',
			'padding'	: '3px',
			'cursor'	: 'pointer'
		});
	
	$(abfragebox_oktaste).bind('click', function() {
			$(abfrageBox).remove();
			$(background).remove();
	});
}


function generiere_dialogfeld_janein(background) {
	
	var abfrageBox = $('<div/>');
	var width = $('body').width();
	
	abstand_oben = $(document).scrollTop()+250;
	abstand_links = $(document).scrollLeft()+500;
	
	var boxinhalt = '<p>Möchten Sie wirklich die Media-Datei <br /> unwiderruflich löschen?<br /><br /></p>';
	
	$(abfrageBox).html(boxinhalt).css(
		{
			'background-color'	: '#fff',
			'color'		: '#d10',
			'font-weight' : 'bold',
			'padding'	: '10px',
			'border'	: '2px solid #d10',
			'position'	: 'absolute',
			'z-index'	: 4,
			'top'		: abstand_oben,
			'left'		: abstand_links
		});
		
	$('body').append(abfrageBox);
	
	var abfragebox_neintaste = $('<span/>');
	var abfragebox_jataste = $('<span/>');
	$(abfrageBox).append(abfragebox_jataste);
	$(abfrageBox).append(abfragebox_neintaste);
	
	$(abfragebox_neintaste).html('Nein').css(
		{
			'border'	: '1px solid #ccc',
			'margin'	: '10px',
			'padding'	: '3px',
			'cursor'	: 'pointer'
		});
	
	$(abfragebox_neintaste).bind('click', function() {
			$(abfrageBox).remove();
			$(background).remove();
	});
	$(abfragebox_jataste).html('Ja').css(
		{
			'border'		: '1px solid #ccc',
			'margin'		: '10px 10px 10px 60px',
			'padding'		: '3px',
			'cursor'		: 'pointer'
		});
	
	$(abfragebox_jataste).bind('click', function() {
			bild_loeschen_bestatigt(bild_id);
			$(abfrageBox).remove();
			$(background).remove();
	});
}


function bild_loeschen(bild_id) {
	$.ajax({
		type: "POST",
		url: "index.php",
		data: "inhalt=bild_daten_ermitteln&id="+bild_id,
		async: false,
		success: function(msg){
			//console.info(msg[0]["daten"]);
			
			var background = $('<div/>');
			$(background).animate({'opacity' : 'show'});
			$(background).attr('id', 'abfrageBackground').css({
				'background-color'	: '#ffffff',
				'width' 			: $(document).width(),
				'height' 			: $(document).height(),
				'position' 			: 'absolute',
				'left' 				: '0',
				'top' 				: '0',
				'z-index' 			: 3,
				'opacity' 			: '.8'
			});
			
			var tmp = "bilddata = "+msg;
			
			eval(tmp);
			
			$("body").append(background);
			
			
			if(bilddata.fehler) {
				generiere_dialogfeld_ok(background);
			} else {
				generiere_dialogfeld_janein(background)
			}
		},
		error: function(msg) {
			$("#"+divname).html("<strong style=\"color:#red\">Fehler beim Ladevorgang.</strong>");
		}
	 });
}

function bild_loeschen_bestatigt(bild_id) {
	
	var url_request = document.URL;
	
	$.ajax({
		type: "POST",
		url: "index.php",
		data: "inhalt=bild_loeschen&id="+bild_id,
		async: false,
		success: function(msg){
			location = url_request;
		},
		error: function(msg) {
			$("#"+divname).html("<strong style=\"color:#red\">Fehler beim Ladevorgang.</strong>");
		}
	 });
}

