/**
***********************************
* Eine Art Popup für Bildanzeigen 
***********************************
*
*Diese Bibliothek erzeugt ein Javascript-Objekt (js_popup), das sich im HTML-Code ein DIV-
*Element erzeugt, dessen ID "js-popup" heißt und welches für die Anzeige einer Vollansicht zu
*einem Thubnail-Bild verwendet wird.
*
*Die Benutzung des js_popup-Objektes ist sehr einfach. Da sich das Script basierend auf einer
*hier einzustellenden CSS-Klasse die Link-Elemente dynamisch aus einem beliebigen Eltern-
*Element holt und ihnen ein onClick-Event zuweist, braucht es im HTML- Quelltext lediglich
*folgende Struktur (<element> steht stellvertretend für Elemente wie <p>, <div>, <span> usw.):
*
*<element class="gallerie">
*<a href="pfad/img.jpg"><img src="pfad/tn_img.jpg" alt="Beschreibung" /></a>
*</element>
*
*Die Vollansicht wird als Bildunterschrift den Wert aus dem ohnehin zwingend erforderlichen
*alt-Attribut verwenden. 
*
*
*erstellt von Felix Riesterer (Felix.Riesterer@gmx.net)
*/

// js_popup-Objekt definieren
var js_popup = {
  settings : {
		// CSS-ID für das Popup-Eltern-Element (DIV)
		parentDiv : {
			cssID : "js-popup"
    },
		popupBox : {
			cssID : "js-popup-box"
		},
		// Bilddatei für den Overlay-Hintergrund (teiltransparente PNG-Grafik)
		overlayBackground : {
			src_png : "/_images/overlay.png",
			src_blank_gif : "/_images/blank.gif"
		}
  },

	controls : {
		oversize : "resize",
		boxWidth : 90,
		boxHeight : 90,
		boxMaxWidth : 100,
		boxMaxHeight : 100,
		winInnerWidth : 100,
		winInnerHeight : 100
	},

	htmlElements : { },

	functions :
		{
		// Popup wieder ausschalten (verbergen)
		hide : function () {
			js_popup.htmlElements.div.style.display = "none";
			return false;
		},

		// Funktion zum Ermitteln der maximalen Fensterfläche
		getBrowserDimensions : function () {
			if(window.innerWidth)	{
				js_popup.controls.winInnerWidth = window.innerWidth;
				js_popup.controls.winInnerHeight = window.innerHeight;
			}
			else {
				js_popup.controls.winInnerWidth = js_popup.IE.offsetWidth;
				js_popup.controls.winInnerHeight = js_popup.IE.offsetHeight;
			}

			// Maximal-Größe für die Popup-Box abzüglich eines Rahmens
			js_popup.controls.boxMaxWidth = js_popup.controls.winInnerWidth - 50;
			js_popup.controls.boxMaxHeight = js_popup.controls.winInnerHeight - 50;

			return false;
		},


		// Funktion zum Setzen eines Eventhandlers
		addEvent : function (ev, obj, handle) {
			if(navigator.userAgent.toLowerCase().lastIndexOf("msie") < 0) {
				obj.addEventListener(ev, handle, false);
				obj.addEventListener(ev, handle, false);
			}
			else {
				obj.attachEvent("on" + ev, handle);
				obj.attachEvent("on" + ev, handle);
			}
		},


		// Funktion zum Löschen eines Eventhandlers
		removeEvent : function (ev, obj, handle) {
			if(navigator.userAgent.toLowerCase().lastIndexOf("msie") < 0) {
				obj.removeEventListener(ev, handle, false);
				obj.removeEventListener(ev, handle, false);
			}
			else {
				obj.detachEvent("on" + ev, handle);
				obj.detachEvent("on" + ev, handle);
			}
		},

		// Initialisierung des kompletten Popup-Objektes
		init : function () {
			// Quirksmode des IE berücksichtigen
			js_popup.IE = (document.compatMode) ? (document.body ? document.body : document.documentElement ) : null;

			// Fenstermaße ermitteln
			js_popup.functions.getBrowserDimensions();

			// Falls noch kein DIV-Element mit der ID "js-popup" existiert, ein solches erzeugen und am Ende des body-Dokuments hinzufügen
			js_popup.htmlElements.div = document.getElementById(js_popup.settings.parentDiv.cssID);
			if(!js_popup.htmlElements.div) {
				js_popup.htmlElements.div = document.createElement("div");
				js_popup.htmlElements.div.id = js_popup.settings.parentDiv.cssID;
				document.body.appendChild(js_popup.htmlElements.div);

				// Style-Angaben zum vorläufigen Verstecken des DIVs
				js_popup.htmlElements.div.style.display = "none";
				js_popup.htmlElements.div.style.position = "absolute";
//				js_popup.htmlElements.div.style.backgroundImage = "url(" + js_popup.settings.overlayBackground.src_png + ")";
				js_popup.htmlElements.div.style.width = js_popup.controls.winInnerWidth;
				js_popup.htmlElements.div.style.height = js_popup.controls.winInnerHeight;

				// Dieses DIV-Element ist die eigentliche Box mit der Vollansicht
				js_popup.htmlElements.box = document.createElement("div");
				js_popup.htmlElements.box.id = js_popup.settings.popupBox.cssID;
				js_popup.htmlElements.box.style.position = "absolute";

				// Die eigentliche Box mit der Vollansicht in das Popup-Eltern-DIV einhängen und click-Ereignis zuweisen
				js_popup.functions.addEvent("click", js_popup.htmlElements.div, js_popup.functions.hide);
				js_popup.functions.addEvent("click", js_popup.htmlElements.box, js_popup.functions.hide);

				if(typeof(js_popup.htmlElements.div.style.filter) != "undefined") {
					// AlpgaImageLoader für echte Transparenz auf das Hintergrundbild des "js-popup"-DIVs anwenden
					js_popup.htmlElements.div.style.backgroundImage = "url(" + js_popup.settings.overlayBackground.src_blank_gif + ")";
//					js_popup.htmlElements.div.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'
//																+ js_popup.settings.overlayBackground.src_png + '", sizingMethod="scale")';
				}
			}
		}
	}
}

// Die Popup-Funktionalität initialisieren
js_popup.functions.oldOnLoad = window.onload;
js_popup.functions.oldResize = window.onresize;
window.onload = function () { if(js_popup.functions.oldOnLoad) js_popup.functions.oldOnLoad(); js_popup.functions.init(); }
window.onresize = function () { if(js_popup.functions.oldResize) js_popup.functions.oldResize(); js_popup.functions.init(); }

