var iframeLayer = {
	
	// globale Eigenschaften
	layerID: "iframe_layer",
	darkLayerID: "dark",
	// gibt an, ob eine fixe Höhe und Breite verwendet werden soll, oder nicht
	fixedDimensions: true,
	
	// Folgende Eigenschaften werden nur berücksichtigt, falls fixedDimensions == true
	layerWidth: 400,
	layerHeight: 400,
	
	// Folgende zwei Eigenschaften werden nur berücksichtigt, falls fixedDimensions == false
	paddingX: 100,
	paddingY: 50,
	
	// diese Angabe überschreibt eine allfällige padding-Angabe im CSS-File. Rand zwischen iframe und layer.
	paddingLayer: 10, 
	
	init: function()
	{
		this.createLayer();
		this.layer = document.getElementById(this.layerID);
		this.darkLayer = document.getElementById(this.darkLayerID);
		this.layerVisible = false;
		
		// registriere Event-Listeners
		addEvent(window, "resize", this.onWindowResize.bind(this));
		addEvent(document, "click", this.onDocumentClick.bind(this));
	},
	
	openLayer: function(src, elm)
	{
		if (src) this.setLayerSrc(src);
		// Finde heraus, ob die Attribute datawidth und dataheight vorhanden sind.
		if (elm.datawidth && elm.dataheight) {
			this.layerWidth = elm.datawidth;
			this.layerWidth = elm.dataheight;
		}
		this.showLayer();
	},

	createLayer: function()
	{
		// erstelle das Layer, welches ein iFrame beinhaltet
		var node = document.createElement("div");
		node.id = this.layerID;
		node.style.display = "none";
		node.style.padding = this.paddingLayer + "px";
		node.innerHTML = "<iframe></iframe>";
		document.body.appendChild(node);
		
		// erstelle Hintergrund-Layer, zum Abdunkeln der Seite
		node = document.createElement("div");
		node.id = this.darkLayerID;
		document.body.appendChild(node);
	},
	
	getWindowSize: function()
	{
		// aktuell verfügbarer Platz im Browserfenster ermitteln (IE muss im Standard-Mode sein)
		var windowWidth = window.innerWidth || document.documentElement.clientWidth;
		var windowHeight = window.innerHeight || document.documentElement.clientHeight;
		return {
			width: windowWidth,
			height: windowHeight
		};
	},
	
	showLayer: function()
	{
		this.darkLayer.style.display = "block";
		var wsize = this.getWindowSize();
		// ermittle, wie weit der User das Fenster bereits gescrollt hat (IE muss im Standard-Mode sein)
		var scrollOffset = window.pageYOffset || document.documentElement.scrollTop;
		
		// positioniere Layer
		with (this.layer.style)
		{
			display = "block";
			width = this.fixedDimensions ? this.layerWidth : (wsize.width-2*(this.paddingX-this.paddingLayer)) + "px";
			height = this.fixedDimensions ? this.layerHeight :(wsize.height-2*(this.paddingY-this.paddingLayer)) + "px";
			marginLeft = "-" + Math.round(this.layer.offsetWidth/2) + "px";
		}
		this.layerVisible = true;
	},
	
	setLayerSrc: function(src)
	{
		this.layer.getElementsByTagName("iframe")[0].src = src;
	},
	
	hideLayer: function()
	{
		this.setLayerSrc(""); // vorhandener Inhalt im iFrame wieder ausblenden
		this.darkLayer.style.display = "none";
		this.layer.style.display = "none";
		this.layerVisible = false;
	},
	
	onDocumentClick: function(e)
	{
		var target = e.target || e.srcElement; // IE-Anpassung
		if (this.layerVisible && target == this.darkLayer)
		{
			this.hideLayer();
		}
	},
	
	onWindowResize: function()
	{
		// positioniere den Layer erneut
		if (this.layerVisible) this.showLayer();
	}
}

// Objekt initialisieren
onDomLoaded(function(){iframeLayer.init()});
