var iframeLayer = {
	
	// globale Eigenschaften
	layerID: "iframe_layer",
	darkLayerID: "dark",
	paddingX: 200,
	paddingY: 50,
	paddingLayer: 10, // diese Angabe überschreibt eine allfällige padding-Angabe im CSS-File. Rand zwischen iframe und layer.
	
	
	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)
	{
		if (src) this.setLayerSrc(src);
		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 = (wsize.width-2*(this.paddingX-this.paddingLayer)) + "px";
			height = (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()});