/****************************** siemens' new web appearance script *****/
/****************************** Copyright (c) 2007-2009 Siemens AG *****/
/***********************************************************************/
/******************************************** module LightboxLayer *****/
/***********************************************************************/
/* $LastChangedDate: 2009-05-05 15:35:37 +0200 (Di, 05 Mai 2009) $ *****/


var EnergRaterDelegate = null;
var EnergRaterTrigger  = "lightbox-layer-energy-layer";
var EnergRaterIsBigHeader  = false;
var EnergRaterHeaderState  = false;

var LightboxLayer = Class.create();

LightboxLayer.prototype = Object.extend(new Layer, {

	initialize: function(node, trigger) {

		this.node = node;
				
		this.initSuper(node, trigger);
		
		var closeButton = Helper.getCloseButton(this.node);

			closeButton.observe("click", function(){
		
			this.close();
			
			EnergRaterSiteExplorerAnimateLocker = false;
			
			if(EnergRaterHeaderState)
			{
				ToolbarOption.Down();	
			}
			
		
			EnergRaterSiteExplorerLocker = false;
		
		;}.bindAsEventListener(this));
		
	
		if(typeof(trigger.href) != 'undefined') {
			trigger.href="javascript:void(0)";		
		}	
		//create the curtain
		
		if(!IsOtherLayout){
			new Insertion.Before($('header-zone'), "<div id='lightbox-curtain'>&nbsp;</div>");
		
		}
		else
		{
			new Insertion.Before($('page-type-homeapp'), "<div id='lightbox-curtain'>&nbsp;</div>");
		}
		
		this.curtain = $('lightbox-curtain');
		this.resizeCurtain();

		if (Info.browser.isIEpre7) {
			this.iframeLining = new IframeLining(this.curtain);
		}
		
		//store the listener so it can be accessed by functions add and remove
		this.listener = {'augmentDone' : this.handleOpen.bind(this) };

		//add an event handler to resize the curtain when window is resized
		Event.observe(window, "resize", function(){this.resizeCurtain();}.bindAsEventListener(this));
		
		EnergRaterIsBigHeader = Injection.IsBigHeader();
	},

	open: function() {
		//DEV NOTE: will not be true in pagetypes 1 and 2 but was implemented for 
		//future use of lightbox layers in these pagetypes
		
		
		if(this.curtain.style.display == 'block') return;

		
		if(HeaderAnimation.diminishable && !HeaderAnimation.augmented) {
			HeaderAnimation.listenerQueue.add(this.listener);
			HeaderAnimation.augment();
			
	
		} else {
			Layer.prototype.open.call(this);
		}
		
		try {
		
		if(typeof(FeatureLabel_keywordArray) !== 'undefined') {
			
			tt_Hide();
		}
		
		}
		catch(ex){}
		
	},

	show: function() {
		this.node.setStyle({'display': 'block'});
	
		if(EnergRaterTrigger == this.node.id)
		{
				if(typeof EnergRaterDelegate == 'function'){
					EnergRaterDelegate();
				}
		}
	
	},

	hide: function() {
	
		EnergRaterSiteExplorerAnimateLocker = false;
	
		if(EnergRaterTrigger == this.node.id && EnergRaterSiteExplorerLocker)
			return true;
	
		this.node.setStyle({'display': 'none'});
	},

	beforeOpen: function() {

		// skip lightbox 
		if(LIGHTBOXLOCKOBJECT)
				return false;

		if(EnergRaterTrigger == this.node.id)
		{
		
				if (Injection.IsBigHeader()) {
					ToolbarOption.Up();	
					EnergRaterHeaderState = true;
				}else
				{
					EnergRaterHeaderState = false;
				}			
				
				PageHelper.ScrollTopAndLeft();		
		}

		if(!IsOtherLayout){
		if(!this.headerHeight) this.headerHeight = $('header-zone').getDimensions().height + $('toolbar-zone').getDimensions().height;
		}

		//position the curtain
		
		if(Injection.IsBigHeader()) {
		
				if(EnergRaterTrigger == this.node.id){
					this.curtain.setStyle({'top': '166px'});
				}else{
					this.curtain.setStyle({'top': '415px'});	
				}	
				
		}else {
			this.curtain.setStyle({'top': '166px'});
		}
		
		//calculate layer position
		this.node.setStyle({'display': 'block'});
		if(!this.nodeTop) this.nodeTop = parseInt(this.node.getStyle('top'));
		if(!this.nodeLeft) this.nodeLeft = parseInt(this.node.getStyle('left'));
		if(!this.nodeHeight) this.nodeHeight = this.node.getDimensions().height;
		this.node.setStyle({'display': 'none'});
		
		
		if(!IsOtherLayout){
			//check whether layer is higher than current page
			var wrapper = $('footer-position-wrapper');
		}
		else
		{
			var wrapper = $('page-type-homeapp');
		}
		
		
		this.diff = parseInt(wrapper.getDimensions().height) - this.nodeTop - this.nodeHeight;
		
		if(this.diff < 0) {
			//resize the content zone
			var layerOccupation = this.nodeHeight + this.nodeTop;
			layerOccupation = layerOccupation - this.headerHeight;

			//difference between layer height and content height
			var diff2 = $('content-zone').getDimensions().height - layerOccupation;
			$('content-zone').setStyle({'height': $('content-zone').getDimensions().height - diff2 + 'px'});
		}
		this.resizeCurtain();

		//this.node.setStyle({'top': this.nodeTop+'px'});
		
		if(Injection.IsBigHeader()) {
				if(EnergRaterTrigger == this.node.id){
					this.node.setStyle({'top': '200px'});
				}else{
					this.node.setStyle({'top': '490px'});
				}	
		} else {		    
		    	if(EnergRaterTrigger == this.node.id){
					this.node.setStyle({'top': '200px'});
				}else{
					this.node.setStyle({'top': '230px'});
				}
		}
				
		if(this.iframeLining)
			this.iframeLining.show();
		this.curtain.setStyle({'display': 'block'});
		
		return true;
	},

	beforeClose: function() {
	
	
			EnergRaterHeaderState = false; 
	
		if(EnergRaterTrigger == this.node.id && EnergRaterSiteExplorerLocker)
				return true;
	
	
	HeaderAnimation.augment();
	
		if(EnergRaterTrigger == this.node.id)
		{
				if (Injection.IsBigHeader()) {
					ToolbarOption.Down();	
				}					
		}	
	
		this.curtain.setStyle({'display': 'none'});
		if(this.iframeLining)
			this.iframeLining.hide();
		if(this.diff < 0) {
			if(Info.browser.isIE) {
				$('content-zone').setStyle({'height':'1%'});
			} else {
				$('content-zone').setStyle({'height':'auto'});
			}
		}
		return true;
	},

	handleOpen: function() {
		HeaderAnimation.listenerQueue.remove(this.listener);
		Layer.prototype.open.call(this);
		
			if (Injection.IsBigHeader()) {
					ToolbarOption.Up();	
					EnergRaterHeaderState = true;
				}else
				{
					EnergRaterHeaderState = false;
				}	

	},
	resizeCurtain: function() {
		if(this.curtain) {
		
			var wrapper = 0;
		
			if(!IsOtherLayout){
				wrapper = $('footer-position-wrapper').getDimensions();
			}
			else
			{
				wrapper = $('page-type-homeapp').getDimensions();
			}
			
			this.contentHeight = parseInt(wrapper.height);
			

			if(!IsOtherLayout){
				this.contentWidth = $('content-zone').getDimensions().width;
			}
			else
			{
				this.contentWidth = WINDOW_SIZE ==0 ?  982 : WINDOW_SIZE;
			}

			
			//982px is toolbar min-width (926px) plus its margins (34px left + 22px right)
			if(this.contentWidth < 982) {
				this.contentWidth = 982;
			}
			
			if(Injection.GetHeaderSize() > 0){

				this.contentHeight =this.contentHeight - Injection.GetHeaderSize() + 25;
			}
			
			
			if(Injection.GetResizedHeight(this.node.id) > 0) {
				this.contentHeight = Injection.GetResizedHeight(this.node.id);
			}
			
			this.curtain.setStyle({'height': this.contentHeight+'px','width': this.contentWidth+'px'});
						
			if(this.iframeLining) {
				this.iframeLining.refresh();
			}
		}
	}
});

var LIGHTBOX_REL_REGEX = /^lightbox-(.+)$/;

function init_lightboxLayers() {
	if(IsOtherLayout)
	{
	  $("tools-recommend").onclick = function()
		  {
				trigger = $($("tools-recommend"));
				
		  		if (LIGHTBOX_REL_REGEX.test(trigger.rel)) { // layer link
					var id = trigger.rel.replace(LIGHTBOX_REL_REGEX, "$1");
					var node = $("lightbox-layer-" + id);
					if(node == null) return;
					new LightboxLayer(node, trigger);
				}
		  }

	};
	
		
	if ($("content-zone")) {
		$A($("content-zone").getElementsByTagName("a")).each(
			function(trigger) {
				trigger = $(trigger);
				if (LIGHTBOX_REL_REGEX.test(trigger.rel)) { // layer link
					var id = trigger.rel.replace(LIGHTBOX_REL_REGEX, "$1");
					var node = $("lightbox-layer-" + id);
					if(node == null) return;
					new LightboxLayer(node, trigger);
				}
				
			}.bind(this)
		);	
	}
	
	if ($("footer-zone")) {

	
		$A($("footer-zone").getElementsByTagName("a")).each(
			function(trigger) {
				trigger = $(trigger);
				if (LIGHTBOX_REL_REGEX.test(trigger.rel)) { // layer link
					
					var id = trigger.rel.replace(LIGHTBOX_REL_REGEX, "$1");
					var node = $("lightbox-layer-" + id);
					if(node == null) return;
					new LightboxLayer(node, trigger);
				}
			}.bind(this)
		);	
	}
	

	
	if ($("generic-nav-zone")) {

	
		$A($("generic-nav-zone").getElementsByTagName("a")).each(
			function(trigger) {
				trigger = $(trigger);
				if (LIGHTBOX_REL_REGEX.test(trigger.rel)) { // layer link
					
					var id = trigger.rel.replace(LIGHTBOX_REL_REGEX, "$1");
					var node = $("lightbox-layer-" + id);
					if(node == null) return;
					new LightboxLayer(node, trigger);
				}
			}.bind(this)
		);	
	}	


	if ($("hidden-trigger-energy-layer") != null) {
		
		$("hidden-trigger-energy-layer").onclick = function()
		  {

				trigger = $('hidden-trigger-energy-layer')

				if (trigger != null) {
							var node = $(EnergRaterTrigger);
							if(node == null) return;
					new LightboxLayer(node, trigger);	
				}
			}
	}

}

function init_lightboxLayer_explorer() {
	
	return;
	
	if(!Injection.IsBigHeader())	 return;
	
	EnergRaterSiteExplorerLocker = true;
	
		if ($("site-explorer-layer-list")) {
	
		$A($("site-explorer-layer-list").getElementsByTagName("a")).each(	
			function(trigger) {
		
				trigger = $(trigger);
				
				trigger.onclick = null;
				
				if (LIGHTBOX_REL_REGEX.test(trigger.rel)) { // layer link
					
					var id = trigger.rel.replace(LIGHTBOX_REL_REGEX, "$1");
					var node = $("lightbox-layer-" + id);
					if(node == null) return;
					new LightboxLayer(node, trigger);
					
				}
			}.bind(this)
		);	
	}

}

function open_energy_rater_layer() {	

		EnergRaterSiteExplorerAnimateLocker = true;
		EnergRaterSiteExplorerLocker = true;
		
		var _eTrigger = 	document.getElementById("hidden-trigger-energy-layer");
		
		if(_eTrigger != null)
		{
			document.getElementById("hidden-trigger-energy-layer").click()
		
			if (Info.browser.isFirefox)
			{
				document.getElementById("hidden-trigger-energy-layer").click();
			}
			
		}
		return true;		

}

function open_energy_rater_layer_opener() {	

		if(Injection.IsBigHeader())
		{
			setTimeout("open_energy_rater_layer()",1500);
		}else
		{
			open_energy_rater_layer();
		}	

}



