var VideoLibrary = new Class({
	Implements: [Options, Events],
	options: {
		container: false
	},
	
	videoData: [],
	initialized: false,
	
	initialize: function(options) {
		this.setOptions(options);
		
		this.draw();
	},

	draw: function() {
		var cont = this.options.container;	
		if (cont != null) {
			
			var items = cont.getElements('.item');
			var playerContainer = new Element('div', {'class': 'player-container'});
			cont.grab(playerContainer);
			cont.grab(new Element('div', {'class': 'right'}));
			cont.grab(new Element('div', {'class': 'inspired'}));
			
			cont.grab(new Element('div', {'class': 'video-info', 'html': '<h2 class="title"></h2><div class="text"></div>'}));
			cont.getElement('.right').grab(new Element('div', {'class': 'playlist-top'}));
			var playlist = cont.getElement('.right').grab(new Element('div', {'class': 'playlist'}));
			cont.getElement('.right').grab(new Element('div', {'class': 'playlist-bottom'}));
			cont.getElement('.right').grab(new Element('div', {'class': 'button-top'}));
			cont.getElement('.right').grab(new Element('div', {'class': 'button-bottom'}));
			
			var count = 0;
			items.each(function(el,index) {
			
				var playList = cont.getElement('.playlist');
				var videoItem = new Element('div', {'class': 'item'});
				if(index % 2){
					videoItem.addClass('odd');
				}
				var videoLink = new Element('a', {'html': el.getElement('.title').get('text'), 'rel': count});
	
				videoLink.setStyles({
					'display': 'block',
					'background-image': 'url('+el.getElement('.thumb').get('text')+')'
				});
				
				playList.grab(videoItem);
				videoItem.grab(videoLink);
	
				this.videoData.push({title: el.getElement('.title').get('text'), text: el.getElement('.text').get('text'), video: el.getElement('.video').get('text')});
				el.destroy();
				
				count++;
				
			}.bindWithEvent(this));
			
			var videoItems = playlist.getElements('.item');
			videoItems.getElements('a').each(function(el) {
				
				el.addEvent('click', function(evt) {
					var index = el.get('rel');
					
					this.playVideo(index);
					
				}.bindWithEvent(this));
				
			}.bindWithEvent(this));
			
			this.initialized = true;
			
			this.playVideo(0);
		}
	},
	
	playVideo: function(index) {
		var cont = this.options.container;
		var itemTitle = this.videoData[index].title;
		var itemText = this.videoData[index].text;
		var itemVideo = this.videoData[index].video;
		
		this.elementTransition(cont.getElement('.video-info h2.title'), 'text', itemTitle);
		this.elementTransition(cont.getElement('.video-info div.text'), 'text', itemText);

		var playerContianer = cont.getElement('.player-container .video-player');
		if (playerContianer == null) {
			cont.getElement('.player-container').set('html', '<div class="video-player"><div id="video-player"></div></div>');
			if(!itemVideo.contains('vimeo')){
			swfobject.embedSWF(itemVideo, "video-player", "470", "338", "9.0.0", null, null, {wmode: 'transparent', AllowScriptAccess: 'always'});
			}
			else{
				var vimeo = itemVideo.split('/');
				var vimeoId=vimeo[vimeo.length-1]
				swfobject.embedSWF('http://vimeo.com/moogaloop.swf?clip_id='+vimeoId, "video-player", "470", "338", "9.0.0", null, null, {wmode: 'transparent', AllowScriptAccess: 'always'});
				}
		}
		else {
			
			playerContianer.set('morph', {duration: 300, transition: Fx.Transitions.Sine.easeOut});
//			playerContianer.getElement('#video-player').morph({'opacity': 0});
			
			(function() {
				cont.getElement('.player-container').set('html', '<div class="video-player"><div id="video-player"></div></div>');
				
				var videoPlayer = cont.getElement('.player-container .video-player #video-player');
				videoPlayer.setStyle('opacity', 0);
				
				if(!itemVideo.contains('vimeo')){
				swfobject.embedSWF(itemVideo, "video-player", "470", "338", "9.0.0", null, null, {wmode: 'transparent', AllowScriptAccess: 'always', allowfullscreen: 'true'}, null, function(event) {
					
					(function() {
						videoPlayer.set('morph', {duration: 300, transition: Fx.Transitions.Sine.easeOut});
						videoPlayer.morph({'opacity': 1});
					}).delay(500);
					
				});
				}
				else{
					var vimeo = itemVideo.split('/');
					var vimeoId=vimeo[vimeo.length-1]
					swfobject.embedSWF('http://vimeo.com/moogaloop.swf?clip_id='+vimeoId, "video-player", "470", "338", "9.0.0", null, null, {wmode: 'transparent', AllowScriptAccess: 'always', allowfullscreen: 'true'}, null, function(event) {
					
					(function() {
						videoPlayer.set('morph', {duration: 300, transition: Fx.Transitions.Sine.easeOut});
						videoPlayer.morph({'opacity': 1});
					}).delay(500);
					
				});
				}
				
			}).delay(300);
			
		}
},

	elementTransition: function(element, property, value, type) {
		var funcDelay = 300;
	
		element.set('morph', {duration: 300, transition: Fx.Transitions.Sine.easeOut});
		
		if (type == 'slide') {
			element.morph({'opacity': 0, 'margin-top': 30});
			
			(function() {
				element.setStyle('margin-top', -30);
				element.set(property, value);
				element.morph({'opacity': 1, 'margin-top': 0});
			}).delay(funcDelay);
		}
		else {
			element.morph({'opacity': 0});
			
			(function() {
				element.set(property, value);
				element.morph({'opacity': 1});
			}).delay(funcDelay);
		}
	}
});
