var Mylightvideo = Class.create(
{
	overlayElement: null,
	overlayPopup: null,
	
	initialize: function() {
		
		this.effecting = false;
		this.showing = false;
		
		// build elements
		this.overlayElement = Builder.node('div', { id:'mylightvideo_overlay'});
		this.overlayPopup = Builder.node('div', { id:'mylightvideo_popup', style:'overflow:hidden; width:690px; height:475px; background:#2a2a22;' }, [
			Builder.node('div', { id:'mylightvideo_closebtn', style:'text-align:right; padding:15px; cursor:pointer;', className:'text07'}, 'x'),
			Builder.node('div', { id:'mylightvideo_content', style:'overflow:hidden; width:500px; _width:494px; margin:0px 95px 0px 95px;' }, [
				Builder.node('div', { id:'mylightvideo_media', style:'overflow:hidden; margin-bottom:10px; width:500px; height:350px;' })
			])
		]); 
		
		$$('body').first().appendChild(this.overlayElement);
		$$('body').first().appendChild(this.overlayPopup);
		
		$('mylightvideo_overlay').hide();
		$('mylightvideo_popup').hide();
		
		// active links
		this.addClickEvent();
	},
	
	addClickEvent: function() {
		
		var thisObj = this;
		
		$$('a.mylightvideo').each(function(e) { 
			Event.observe(e, 'click', function() { thisObj.onClickOpen(e); });
		}.bind(this));
		
		[$('mylightvideo_overlay'), $('mylightvideo_closebtn')].each(function(e) {
			Event.observe(e, 'click', function() { thisObj.onClickClose(e); });
		}.bind(this));
		
	},
	
	onClickOpen: function(path) {
		
		if (this.effecting) return;
		
		var thisObj = this;
		
		this.path = path;
		this.effecting = true;
		this.target = path.down();
		
		this.showOverlay();
		this.showPopup();
		
	},
		
	showOverlay: function() {
		
		$('mylightvideo_overlay').setStyle({	width: '100%', 
									 	height: this.getPageDimensions().height+'px', 
									 	top: '0px',
									 	left: '0px',
									 	background: '#333329',
										position:	'absolute',
										zIndex:		'1000'		 });
		
		new Effect.Appear($('mylightvideo_overlay'),{duration: .8, to:.75});
		
	},
	
	showPopup: function() {
		
		var thisObj = this;
		
		this.getBroswerDimensions();
		this.w = this.target.getDimensions().width;
		this.h = this.target.getDimensions().height;
		this.x = this.target.cumulativeOffset().left;
		this.y = this.target.cumulativeOffset().top;
		this.ow = 690;
		this.oh = 475;
		this.ox = (this.broswerWidth-this.ow)/2;
		this.oy = (this.broswerHeight-this.oh)/2;
		
		$('mylightvideo_popup').setStyle({	width:		this.w+'px',
										height:		this.h+'px',
										top:		this.y+'px',
										left:		this.x+'px',
										position:	'absolute',
										zIndex:		'1100'		});
		
		this.hideElements();
		$('mylightvideo_popup').show();
		
		new Effect.Transform([
			{ '#mylightvideo_popup' : 
				'width: 690px;' +
				'height: 475px;' +
				'left:'+this.getScrollOffsets()[0]+'px;' +
				'top:'+this.getScrollOffsets()[1]+'px;' }
		], { duration: .8 , afterFinish:this.loadPopup.bind(this) }).play();
		
	},
	
	hideElements: function() {
		
		$('mylightvideo_content').hide();
		$('mylightvideo_media').hide();
		
	},
	
	loadPopup: function() {
		
		if (this.path=='') return;
		
		$('mylightvideo_media').innerHTML = '<img src="images/loading.gif" style="margin-top:150px" />';
		$('mylightvideo_media').show();
		$('mylightvideo_content').show();
		
		var so = new SWFObject('swf/flvplayer_lightwindow.swf?a='+this.path.readAttribute('href'), 'mylightvideo_flash', '500', '350', '7.0.29', '#FFFFFF', true);
		so.addParam("allowScriptAccess", "sameDomain");
		so.addParam("allowFullScreen", "true");
		so.addParam("quality", "high");
		so.addParam("scale", "noscale");
		so.addParam("menu", "false");
		so.addParam("wmode", "transparent");
		var flash = so.write('mylightvideo_media');
		if (!flash) {
			var mplayer = '<object id="MPlayer_mylightvideo" classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" width="500" height="350">'+
							'	<param name="FileName" value="'+this.path.readAttribute('rel')+'" />'+
							'	<param name="showControls" value="false">'+
							'	<param name="autoStart" value="true">'+
							'</object>';
			$('mylightvideo_media').innerHTML = mplayer;
		}
		
		this.afterPop();
		
	},
	
	onClickClose: function() {
		
		if (this.effecting) return;
		
		this.effecting = true;
		this.showing = false;
		
		this.hidePopup();
		this.hideOverlay();
		document.fire("mylightvideo:closed");
		
	},
	
	afterPop: function() {
		
		var thisObj = this;
		this.effecting = false;
		this.showing = true;
		
		this.PE = new PeriodicalExecuter(function() {
			var x = thisObj.getScrollOffsets()[0];
			var y = thisObj.getScrollOffsets()[1];
			$('mylightvideo_popup').setStyle({left:x+'px',top:y+'px'});
		}.bind(this), .1);
		
	},
	
	hideOverlay: function() {
		
		new Effect.Fade($('mylightvideo_overlay'))
		
	},
	
	hidePopup: function() {
		
		this.PE.stop();
		
		this.hideElements();
		if ($('mylightvideo_flash')) $('mylightvideo_flash').remove();
		if ($('MPlayer_mylightvideo')) $('MPlayer_mylightvideo').stop();
				
		new Effect.Transform([
			{ '#mylightvideo_popup' : 
				'width:'+this.w+'px;' +
				'height:'+this.h+'px;' +
				'left:'+this.x+'px;' +
				'top:'+this.y+'px;' }
		], { duration: .8 , afterFinish:this.afterClose.bind(this) }).play();
		
	},
		
	afterClose: function() {
		
		this.effecting = false;
		$('mylightvideo_overlay').hide();
		$('mylightvideo_popup').hide();
		
	},
	
	// tools function
	
	getStyle: function(obj, styleProp) {
		
		if (obj.currentStyle) return obj.currentStyle[styleProp];
		else if (window.getComputedStyle) return document.defaultView.getComputedStyle(obj,null).getPropertyValue(styleProp);
		
	},
	
	getScrollOffsets: function() {
		
		this.getBroswerDimensions();
		var ox = document.viewport.getScrollOffsets()[0]+((this.broswerWidth-this.ow)/2);
		var oy = document.viewport.getScrollOffsets()[1]+((this.broswerHeight-this.oh)/2);
		return [ox, oy];
		
	},

	getBroswerDimensions: function() {
		var broswerWidth = 0, broswerHeight = 0;
		if( typeof( window.innerWidth ) == 'number' ) {
			//Non-IE
			broswerWidth = window.innerWidth;
			broswerHeight = window.innerHeight;
		} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
			//IE 6+ in 'standards compliant mode'
			broswerWidth = document.documentElement.clientWidth;
			broswerHeight = document.documentElement.clientHeight;
		} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
			//IE 4 compatible
			broswerWidth = document.body.clientWidth;
			broswerHeight = document.body.clientHeight;
		}
		this.broswerWidth = broswerWidth;
		this.broswerHeight = broswerHeight;
	},
	
	getPageDimensions: function() {
		var xScroll, yScroll;
	
		if (window.innerHeight && window.scrollMaxY) {	
			xScroll = document.body.scrollWidth;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { 
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}
	
		var windowWidth, windowHeight;
		if (self.innerHeight) {
			windowWidth = self.innerWidth;
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) {
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { 
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	
	
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else { 
			pageHeight = yScroll;
		}
	
		if(xScroll < windowWidth){	
			pageWidth = windowWidth;
		} else {
			pageWidth = xScroll;
		}
	
		pageDimensions = { height:pageHeight };
		return pageDimensions;	
	}
	
}
);

function initMylightvideo() { mylightvideo = new Mylightvideo(); }
Event.observe(window, 'load', initMylightvideo, false);
//Component.init('.mylightvideo','Mylightvideo');
