var MediaPopup = new Class({

	Implements: Options,
	
	options: {
		popup_title: 'Video',
		width: 600,
		height: 400
	},
	
	initialize: function(options)	{
		this.setOptions(options || {});
		this.ie6 = Browser.Engine.trident4;
		this.image_exts = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;
		this.audio_exts = /\.wav$|\.mp3$|\.wma$|\.ac3$|\.vqf$/;
		this.buildOverlay();
		this.buildPopup();
		this.centerPopup();
		this.in_view = false;
		
		this.overlay_fadey = new Fx.Tween(this.overlay, {duration:200});
		this.popup_fadey = new Fx.Tween(this.popup_wrapper, {
			duration:200,
			onComplete:function(){
				if(this.in_view){
					// Display the overlay and box
					$$('html, body').setStyles({
						width: '',
						height: '',
						overflow: ''
					});
					this.in_view = false;
				}else{				
					// Display the overlay and box
					$$('html', 'body').setStyles({
						width:'100%',
						height:'100%'
					});
					this.in_view = true;
				}
				this.fading = false;
			}.bind(this)
		});
		
		var self = this;
		if (!this.ie6)	{
			window.addEvent('resize', function()	{
				self.centerPopup();
			});
		}
		this.popup_wrapper.fade('hide');//.removeClass('loaded').setStyle('display', 'none');	
		this.overlay.fade('hide');//.setStyle('display', 'none');
		//this.popup_fadey.start('opacity', 0);
		
		$$('html, body').setStyles({
			width: '',
			height: '',
			overflow: ''
		});
	},
	
	buildPopup: function()	{
		if(!$('media_popup')){
			this.popup_wrapper = new Element('div', {'id':'media_popup', 'class':'popup_contents'}).inject(document.body);
			this.popup = new Element('div', {'class':'popup_contents_sleeve'}).inject(this.popup_wrapper);
			this.popup_main = new Element('div', {'class':'popup_main'}).inject(this.popup);
			this.popup_title_div = new Element('div', {'class':'popup_title'}).inject(this.popup_main);
			this.popup_title_h2 = new Element('h2').set('text', this.options.popup_title).inject(this.popup_title_div);
			//this.popup_title_p = new Element('p').inject(this.popup_title_div);
			this.popup_body_div = new Element('div', {'class':'popup_body'}).inject(this.popup_main);
			this.buttons_p = new Element('p', {'class':'buttons'}).inject(this.popup_title_div);
			this.btn_close = new Element('a', {'href':'#', 'class':'btn_close'}).addClass('sprite_button').set('text', 'Close').inject(this.buttons_p).addEvent('click', function(){ this.hide(); return false; }.bind(this));
			
		}
	},
	
	buildOverlay: function()	{
		this.overlay = new Element('div', {'class':'popup_overlay'}).inject(document.body);
	},
	
	centerPopup: function()	{
		this.viewport = {
			width: Window.getWidth(),
			height: Window.getHeight()
		}
		this.popup_wrapper.setStyles({
			'top': (this.viewport.height - this.options.height) / 2,
			'left': (this.viewport.width - this.options.width) / 2,
			'width': this.options.width,
			'height': this.options.height
		});
	},
	
	show: function()	{		
		if(!this.fading){
			this.fading = true;
			this.overlay.setStyles({
				display: 'block',
				height: document.body.getScrollSize().y
			});
			//this.popup_wrapper.addClass('loaded').setStyles({'display': 'block', 'opacity':0});
			
			this.overlay_fadey.start('opacity', 0.7);
			this.popup_fadey.start('opacity', 1);
			
			// Get IE6 to behave
			if (this.ie6)	{
				$$('html').setStyle('overflow', 'hidden');
				this.popup_wrapper.setStyle('top', document.body.getScroll().y + 50);
			}
			this.popup_title_h2.set('text', this.options.popup_title);
			if(this.popup_body_div_sleeve)
				this.popup_body_div_sleeve.destroy();
			this.popup_body_div_sleeve = new Element('div', {'class':'popup_body_sleeve'}).inject(this.popup_body_div);
				
			this.is_image = this.options.file_name.toLowerCase().match(this.image_exts);
			
			if (this.options.inject_html)
				this.is_html = true;
			
			if(this.options.is_audio){ //audio
				this.popup_image_container = new Element('div', {'class':'popup_image_container'}).inject(this.popup_body_div_sleeve);
				this.popup_image = new Element('img', {'src':this.options.file_name, 'alt':''}).inject(this.popup_image_container);
				
				this.popup_body_div_sleeve.setStyle('overflow', 'hidden');
				//this.popup_title_p.set('text', '');
				this.popup_flash = new Element('div', {'id':'flashcontent', 'class':'flashcontent'}).inject(this.popup_body_div_sleeve);
				var swiff_obj = new Swiff('/flash/video_player.swf', {
					width: 700, 
					height: 380,
					container: this.popup_flash,
					params: { quality:'best', scale:'exactfit', allowFullScreen:'true', salign:'TL', wmode:'transparent' }
				});
			}
			else if(this.is_image){ //image
				this.popup_image = new Element('img', {'src':this.options.file_name, 'alt':''}).inject(this.popup_body_div_sleeve);
			} 
			else if(this.is_html){ //html
				this.popup_html = this.popup_body_div_sleeve.set('html', this.options.inject_html);
			} 
			else { //video
				this.popup_body_div_sleeve.setStyle('overflow', 'hidden');
				//this.popup_title_p.set('text', '');
				this.popup_flash = new Element('div', {'id':'flashcontent', 'class':'flashcontent'}).inject(this.popup_body_div_sleeve);
				var swiff_obj = new Swiff('/flash/video_player.swf', {
					width: 700, 
					height: 380,
					container: this.popup_flash,
					params: { quality:'best', scale:'exactfit', allowFullScreen:'true', salign:'TL' },
					vars: {
						video_file: this.options.file_name
					}
				});			
			}
		}
	},
	
	hide: function()	{	
		if(!this.fading){
			this.fading = true;
			this.overlay_fadey.start('opacity', 0);
			this.popup_fadey.start('opacity', 0);
		}
	}
});
