var MooLayer = new Class({

	

	Implements: [Options, Chain],

	

	options: {		

		zIndex: 99999,

		opacity: 0.4,

		padding: 0

	},

	

	initialize: function(selector){		

		this.selector = $(selector);

		if(!this.selector) return;

		this.initLayer(selector);

	},

	

	initLayer: function(){

		var that = this;

		var selector = this.selector;

		var overlay = new Element('div', {

			'id': 'overlay'+ $random(0, 100),

			'styles':{

				'display': 'block',

				'visibility': 'visible',

				'position': 'absolute',

				'top': 0,

				'left': 0,

				'width': window.getWidth(),

				'height': window.getScrollSize().y,

				'zIndex': that.options.zIndex,

				'backgroundColor': '#000',

				'opacity': 0

			},

			'events': {

				'click': function(e){

					e.stop();

					selector.fx.start(0).chain(function(){

						selector.setStyle('top', -5000);

					});

					overlay.fx.start(0).chain(function(){

						overlay.destroy();

					});

					$clear(galleryTimer);

				}

			}

		}).inject(document.body);	

		selector.inject(document.body);				

		overlay.fx = new Fx.Tween(overlay, {

			property: 'opacity',

			duration: 600			

		}).start(that.options.opacity);

		

		selector.setStyles({

			'opacity': 0,

			'position': Browser.Engine.trident4 ? 'absolute' : 'fixed',

			'top': Math.max(0, (window.getHeight() - selector.getCoordinates().height)/2 + (Browser.Engine.trident4 ? window.getScrollTop() : 0) - that.options.padding),

			'left': (window.getWidth() - selector.getCoordinates().width)/2,

			'zIndex': that.options.zIndex + 1

		});

		selector.fx = new Fx.Tween(selector, {

			property: 'opacity',

			duration: 600			

		}).start(1);		

		var scrollTop = window.getScrollTop();

		window.addEvent('scroll',function(){

			if(window.getHeight() < selector.getCoordinates().height){					

				selector.setStyle('position', 'absolute');

				selector.setStyle('top' , scrollTop);	

				return true;

			}

			else {	

				selector.setStyle('position', (Browser.Engine.trident4 ? 'absolute': 'fixed'));

				if(Browser.Engine.trident4){

					selector.setStyle('top', Math.max(0, (window.getHeight() - selector.getCoordinates().height)/2 + (Browser.Engine.trident4 ? window.getScrollTop() : 0) - that.options.padding));

				}

				else{

					selector.setStyle('top', Math.max(0, (window.getHeight() - selector.getCoordinates().height)/2 + (Browser.Engine.trident4 ? window.getScrollTop() : 0) - that.options.padding));

				}

			}

		});

		

		window.addEvent('resize', function(e){

			

			selector.setStyles({	

				'top': Math.max(0, (window.getHeight() - selector.getCoordinates().height)/2 + (Browser.Engine.trident4 ? window.getScrollTop() : 0) - that.options.padding),

				'left': (window.getWidth() - selector.getCoordinates().width)/2				

			});			

		});

		if(selector.getElement('a')){

			selector.getElement('a').removeEvents('click').addEvent('click', function(e){

				e.stop();

				selector.fx.start(0).chain(function(){

					selector.setStyle('top', -5000);

				});

				overlay.fx.start(0).chain(function(){

					overlay.destroy();

				});

				$clear(galleryTimer);

			});

		}		

	}

});





window.addEvent('load', function(){

	if($('galleryLink'))

		$('galleryLink').addEvent('click', function(e){	

			e.stop(); 

			new MooLayer('galleryPopup'); 

			new MooGallery('galleryPopup'); 

		});

	

});



