/**
 * LightboxOverlay
 *
 * Legt einen transparenten Layer über die Seite (Ausblendeneffekt)
 *
 * @author HHarting
 * @date 2010-06-22
 *
 * Benötigt
 * - Prototype 1.6 und später
 * - Scriptacoulus 1.8
 *
 * Zum aktivieren einfach LightboxOverlay.activate() aufrufen,
 * zum deaktivieren LightboxOverlay.deactivate()
 *
 * Mit LightboxOverlay.isActive kann abgefragt werden, ob das
 * Overlay gerade angezeigt wird
 */

var LightboxOverlay = {
	// Rausfinden, ob wir auf einem IE6 laufen
	_isIE6:  (!!(window.attachEvent && !window.opera)) && navigator.appVersion.match(/msie 6/gi) && !navigator.appVersion.match(/msie 5/gi),

	// Id für den neuen Container
	_containerId: 'LightboxOverlay',

	// Im IE6 müssen alle selects abgeschaltet werden - die liegen als activex-komponenten ganz oben auf
	_selectsToReactivate: [],

	// Auf wieviel opacity soll gefadet werden
	_to: 0.6,

	// getter für die container-id
	getContainerId: function() {

		return LightboxOverlay._containerId;

	},

	// gibt zurück, ob die lightbox aktiv ist
	isActive: function() {

		return $(LightboxOverlay.getContainerId()) != null ? true : false;

	},

	// zeige die lightbox an
	activate: function() {


		$('BodyOverlayContainer').insert({bottom:'<div id="'+LightboxOverlay.getContainerId()+'"></div>'});

		$(LightboxOverlay.getContainerId())
							.setStyle( LightboxOverlay._getCalcStyle())
							.setStyle( {display: 'none'} )
							.addClassName('lightboxOverlay');


		new Effect.Appear(LightboxOverlay.getContainerId(),{to:LightboxOverlay._to});

		Event.observe(window,'resize', function(){
			$(LightboxOverlay.getContainerId()).setStyle( LightboxOverlay._getCalcStyle() );
		});


		if( LightboxOverlay._isIE6 ) {

			Event.observe(window,'scroll',function() {
				$(LightboxOverlay.getContainerId()).setStyle({
					left: document.viewport.getScrollOffsets().left + 'px',
					top: document.viewport.getScrollOffsets().top + 'px'
				});
			});

			$$('select').each(function(pe) {

				if( pe.style.display != 'none' ) {
					LightboxOverlay._selectsToReactivate.push({
						obj: pe,
						oldState: pe.style.display
					});

					pe.style.display = 'none';
				}

			});

		}

	},

	// gibt die position und dimension des layers zurück, sodass er exakt auf die seite passt
	_getCalcStyle: function() {
		return {
			left: '0px',
			top: '0px',
			width: document.viewport.getWidth() + 'px',
			height: document.viewport.getHeight() + 'px'
		};
	},

	// lightbox abschalten
	deactivate: function() {

		Event.stopObserving(window,'resize');

		$(LightboxOverlay.getContainerId()).remove();

		if( LightboxOverlay._isIE6 ) {

			Event.stopObserving(window,'scroll');

			if( typeof(LightboxOverlay._selectsToReactivate) != 'undefined' && LightboxOverlay._selectsToReactivate.size() > 0 ) {
				LightboxOverlay._selectsToReactivate.each(function(pe) {
					pe.obj.style.display = pe.oldState;
				});
			}

		}

	}

}
