var pageSize;
var pageWidth;
var pageHeight;
var overlayDiv;
var outerdiv;

// sets the layer with the given id visible
function showVamLayer(id) {
	if (layerInfo[id]){
		generateLayer(id, null, null);
	}
}

//sets the layer with the given id, name and title visible
function showVamLayer(id,name,titel) {
	if (layerInfo[id]){
		generateLayer(id, name, titel);
	}
}

//generates the div and iframe for the layer
function generateLayer(id,name,titel){
	$('outerLayerDiv').hide();

	// safety: delete all child elements of the outer div to prevent more than one layer.
	hideVamLayer();

	var hoehe = layerInfo[id]["height"]+60;
	var breite = layerInfo[id]["width"]+36;
	outerdiv = new Element('div', {id: 'vamLayer', 'class': 'vamLayer', style: 'height:'+hoehe+'px;width:'+breite+'px'});
	var linkerRandDiv = new Element('div',{'class':'oben links ecke xVamLayerObenLinks'}).update('&nbsp;');
	var obererRandDiv = new Element('div',{'class':'oben xVamLayerOben',style:'width: '+(layerInfo[id]["width"]-20)+'px;'});
	var schliessenButtonDiv = new Element('div',{'class': 'schlieszen xVamLayerSchlieszen'}).update('&nbsp;');
	schliessenButtonDiv.observe('click', hideVamLayer);

	// If the Title is set, use it.
	var title = new Element('p',{'class':'Content_Layer_Titel'});
	if (titel == null) {
		title.update(layerInfo[id]["title"]);
	} else {
		title.update(titel);
	}

	var rechterRandDiv = new Element('div',{'class' :'oben rechts ecke xVamLayerObenRechts'}).update('&nbsp;');
	var linksDiv = new Element('div', {'class':'links xVamLayerLinks', style:'height: '+layerInfo[id]["height"]+'px;'}).update('&nbsp;');
	var layerDiv = new Element('div',{'class': 'mitte Content_Layer_Hintergrund', style:'height: '+layerInfo[id]["height"]+'px; width: '+layerInfo[id]["width"]+'px;'});
	var rechtsDiv = new Element('div',{'class':'rechts xVamLayerRechts', style:'height: '+layerInfo[id]["height"]+'px;'}).update('&nbsp;');
	var linksUntenDiv = new Element('div',{'class': 'unten links ecke xVamLayerUntenLinks'}).update('&nbsp;');
	var mitteUntenDiv = new Element('div',{'class': 'unten xVamLayerUnten', style:'width: '+(layerInfo[id]["width"]-20)+'px;'}).update('&nbsp;');
	if (layerInfo[id]["printable"] == true) {
		var druckenLink = new Element('a',{href:'#', 'class':'Dokument_Link xLink_Weiter_Klein_Links'}).update("Drucken").observe('click', printIFrame);
		mitteUntenDiv.appendChild(druckenLink);
	}
	if (layerInfo[id]["closeBottom"] == true) {
		var schliessenLink = new Element('a',{href:'#', 'class':'Dokument_Link xLink_Weiter_Klein_Links', 'style':'margin-left:5px;'}).update("Schliessen").observe('click', hideVamLayer);
		mitteUntenDiv.appendChild(schliessenLink);
	}

	var rechtUntenDiv = new Element('div',{'class': 'unten rechts ecke xVamLayerUntenRechts'}).update('&nbsp;');

	var addlinkparams = '';
	if (name) {
		if (layerInfo[id]['link'].indexOf('?') < 0) {
			addlinkparams = '?news='+name;
		} else {
			addlinkparams = '&news='+name;
		}
	}

	var iframe = new Element('iframe', { name:'vamIFrame', 'class': 'vamIFrame', src: layerInfo[id]['link']+addlinkparams, width: layerInfo[id]['width'], height: layerInfo[id]['height'], frameborder: 'no', scrolling: 'auto'});


	overlayDiv = new Element('div',{id:'vamOverlay','class': 'vamOverlay',style:'background-color: '+layerInfo[id]["color"]+'; opacity: '+layerInfo[id]["transparency"]+'; filter: alpha(opacity = '+(layerInfo[id]["transparency"] * 100)+');'});
	overlayDiv.observe('click', hideVamLayer);

	// IE6 Hack to prevent dropdown boxes from showing up
	var ieiframe = new Element('iframe').observe('click', hideVamLayer);
	if (parseFloat(navigator.appVersion.split("MSIE")[1]) < 7) overlayDiv.appendChild(ieiframe);


	obererRandDiv.appendChild(schliessenButtonDiv);
	obererRandDiv.appendChild(title);
	layerDiv.appendChild(iframe);
	outerdiv.appendChild(linkerRandDiv);
	outerdiv.appendChild(obererRandDiv);
	outerdiv.appendChild(rechterRandDiv);
	outerdiv.appendChild(linksDiv);
	outerdiv.appendChild(layerDiv);
	outerdiv.appendChild(rechtsDiv);
	outerdiv.appendChild(linksUntenDiv);
	outerdiv.appendChild(mitteUntenDiv);
	outerdiv.appendChild(rechtUntenDiv);

	$('outerLayerDiv').appendChild(overlayDiv);
	$('outerLayerDiv').appendChild(outerdiv);

	this.setVamOverlaySize();
	this.setVamLayerSize();
	$('vamOverlay').show();
	$('vamLayer').show();
	$('outerLayerDiv').show();
}

// removes all existing vamlayer elements
function hideVamLayer() {
	$('outerLayerDiv').descendants().each(function(e){e.remove()});
}

// sets the size of the layer
// width and height of the current viewport
function setVamLayerSize(){
	if (!$('vamLayer') || !$('vamOverlay')) {
		return false;
	}

	pageWidth = document.viewport.getWidth();
	pageHeight = document.viewport.getHeight();
	// the overlay has the same size as the current viewport
	$('vamOverlay').style.width=pageWidth + 'px';
	$('vamOverlay').style.height=pageHeight + 'px';

	// width and height of the layered element
	var layerWidth = $('vamLayer').offsetWidth;
	var layerHeight = $('vamLayer').offsetHeight;
	if (!layerWidth) layerWidth = parseInt($('vamLayer').style.width);
	if (!layerHeight) layerHeight = parseInt($('vamLayer').style.height);

	// set the layer's location to the center of the viewport
	$('vamLayer').style.top = document.viewport.getScrollOffsets()[1] + 20 + 'px';
	$('vamLayer').style.left = (pageWidth - layerWidth) / 2 + 'px';
}

function setVamOverlaySize(){
	if (!$('vamOverlay')) {
		return false;
	}

	$('vamOverlay').style.top = document.viewport.getScrollOffsets()[1] + 'px';
}

function printIFrame(evt){
	// window.frames['vamIFrame'] does not work in firefox when frame was hidden
	// therefore we need to find the frame manually
	var vamIFrame;
	for (i=0; i < window.frames.length; i++) {
		if (window.frames[i].name == 'vamIFrame') vamIFrame=window.frames[i];
	}
	vamIFrame.focus();
	vamIFrame.print();
	Event.stop(evt);
}

addOnScrollFunction(this.setVamOverlaySize);
addOnResizeFunction(this.setVamLayerSize);
