/*
 * jQuery tv module v1.0.0 - http://www.onlinetvcast.com/
 *
 */

// FIXME: глобальный рефакторинг
 
 (function($) {
 
 	function Module_SliderPanel(options) {
 		var defaults = {};
        this.options = $.extend(defaults, options);
 		this.construct();
 	}
 	 	
 	Module_SliderPanel.prototype = {
 		construct: function() {
 			this.videoContentId;
 			this.isOpen								= false;
        	this.isLocked							= false;
        	// panel
        	this.$video_panel  						= $('#video_panel');      
			this.video_panel_default_height 		= this.$video_panel.height();
			this.$loading 							= $('.loading', this.$video_panel);
			// video object
			this.$video_object_player_placeholder 	= $('#video_object_player_placeholder');
			this.$video_player 						= $('#video_player', this.$video_object_player_placeholder);
 		},
 		
 		showVideoContent: function(module, videoContentId, url) {
 			var self = this;
        	// Уже выполняется действие
        	if (self.isLocked == true) {
        		return;
        	}        	
        	// Если панель уже открыта, форсированно закрываем ее
        	if (self.isOpen) {
        		self.forcedClose();
        	}
        	// Сохраняем текущее состояние
        	self.isLocked = true;
        	// Показываем панель
        	window.scrollTo(0, 0);
        	// Показуем индикатор загрузки
        	self.$loading.show();
        	$.ajax({
				url : '/ajax/' + module + '/show-video-content/' + videoContentId,
				type : "POST",
				dataType : 'html',
				timeout : 30000,
				error : function() {
					ajaxError();
				},
				success : function(html) {
				
					if ( $('#mediaspace', html).size() > 0) {
						var height = parseInt($('#mediaspace', html).css('height'));
					} else if ( $('object', html).size() > 0 && $('object', html).attr('height')) {
						var height = $('object:first', html).attr('height');
					} else if ( $('embed', html).size() > 0 && $('embed', html).attr('height')) {
						var height = $('embed', html).attr('height');
					} else {
						var height = this.video_panel_default_height;
					}
										
					// Устанавливаем высоту видео панели, равной высоте загружаемого видео объекта
					self.$video_panel.animate({'height' : height}, 700, function() {
						// Устанавливаем видео объект
						self.$video_player.html(html);
						// show facebook like it button
						$('#facebook_like_it_default').hide();
						$('#facebook_like_it').html( $('.facebook_like_button_wrapper').show() ).fadeIn();
						// show broken video button
						$('#broken_video').fadeIn();
						window.scrollTo(0, 0);
						// Прячем индикатор
						self.$loading.hide();
						// Показываем область с видео объектом
						self.$video_object_player_placeholder.show();
						// Сохраняем id текущего видео объекта
						self.videoContentId = videoContentId;
						// Сохраняем текущее состояние
						self.isOpen = true;
						self.isLocked = false;
					});
				},
				data: {
					url: url
				}
			});
		},
        
        setPlayer: function(player) {
        	self.player = player;
        },
        
        hideVideoContent: function() {
        	var self = this;
        	// Уже выполняется действие
        	if (self.isLocked == true) {
        		return;
        	} 
        	// Сохраняем текущее состояние
        	self.isLocked = true;        	       	
        	// Прячем область с видео объектом
        	self.$video_object_player_placeholder.hide();
        	// Уничтожаем видео объект
        	self.$video_player.html('');
        	
        	// FIXME: НО ВИДЕО ОБЬЕКТ ВСЕ РАНО СУЩЕСТВУЕТ, НУЖНО ВЫГРУЖАТЬ ИЗ ПАМЯТИ
        	// FIXME: и как быть не сплейером, а с <object>
        	/*if (self.player != 'undefined') {
        		// Останавливаем плейер
				self.player.sendEvent("STOP");
        	}*/
        	
        	// Показуем индикатор
        	self.$loading.show();
        	// hide facebook like it button
        	$('#facebook_like_it').fadeOut(700, function(){
        		$(this).html('');
        		$('#facebook_like_it_default').show();
        	});
			// hide broken video button
			$('#broken_video').fadeOut();
        	// Устанавливаем "родную" высоту видео панели
			self.$video_panel.animate({'height' : this.video_panel_default_height}, 700, function() {
				// Прячем индикатор
				self.$loading.hide();
				// Сохраняем текущее состояние
				self.isOpen = false;
				self.isLocked = false;
			});
        },
                
        forcedClose: function() {
        	var self = this;
        	// Прячем область с видео объектом
        	self.$video_object_player_placeholder.hide();
        	// hide facebook like it button
			$('#facebook_like_it').fadeOut(700, function(){
        		$(this).html('');
        		$('#facebook_like_it_default').show();
        	});
			// hide broken video button
			$('#broken_video').fadeOut();
			// Уничтожаем видео объект
			self.$video_player.html('');
			
        	// FIXME: НО ВИДЕО ОБЬЕКТ ВСЕ РАНО СУЩЕСТВУЕТ, НУЖНО ВЫГРУЖАТЬ ИЗ ПАМЯТИ
        	// FIXME: и как быть не сплейером, а с <object>
        	/*if (self.player != 'undefined') {
        		// Останавливаем плейер
				self.player.sendEvent("STOP");
        	}*/
        	
        	// Устанавливаем "родную" высоту видео панели
			self.$video_panel.animate({'height' : this.video_panel_default_height});
			// дальнейшие действия выполняем НЕ в callball animate (быстрые клики)
			// Сохраняем текущее состояние
			self.isOpen = false;
        },
                                        
        getVideoContentId: function() {
        	var self = this;
        	return self.videoContentId;
        }
 	}
 	
 	$.Module_SliderPanel = function(options) {
 		return new Module_SliderPanel(options);
 	};
 	
 })(jQuery);
