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

// FIXME: глобальный рефакторинг

  (function($) {
 	function Module_MyQueuePage(options) {
 		var defaults = {
 			// для подгрузки видео, для работы с myQueue
	       	_type: 'myQueue'        	        	
	    };
        this.options = $.extend(defaults, options);
        
        // Переопределяем метод (до вызова construct)
 		this.construct = function() {
	 		this.setCustomZone();
			this.setMyQueue();
        	this.setAutoQueue();
			this.setSliderCarousel();
			this.activateDecorateSourcePanel();
			// addithional
			this.activateShowAddEpisode();
			this.activateMovieAddSource();
			this.activateOpenEpisodePanel();
			this.activateOpenSourcePanel();
			
        	var self = this;
			self.bindCustomZoneActions();
			self.bindRegistrationForm();
			self.bindLoginForm();
        	self.bindSendToFriends();
        	self.bindMyQueueAction();
        	self.bindAutoQueueAction();
        	self.bindCarouselSlider();
        	self.bindSampleForm();
        	self.bindShowProfile();
        	self.bindForgotPassword();
 		}
 	}
 	
 	Module_MyQueuePage.prototype = {
 	
 		// Добавление контента
 		
 		activateShowAddEpisode: function() {
			var self = this;
			// live - что бы контент можно было добавлять и через addithional_video_wrapper
			$('.show_add_episode').live('click', function() {
				// Закрываем видео панель (видео+карусель)
				self.closeVideoPanel();
				window.scrollTo(0, 0);
				var url = $(this).attr('rel');
				// Выносим в callback (можно и так)
				self.customzone.setContentByRequestInCustomzone(url, 'customzone_addcontent', function() {
					// снимаем обработчик, который был навешан предидущими нажатиями show_add_episode
					// это важно, так формы будут отправлятся на разные url
					$("#addShowEpisodeForm").die('submit');
					// вещаем новый
					self.activateAddVideoFormSubmit('addShowEpisodeForm', url);
				});
				return false;
			});
		},
				
		activateMovieAddSource: function () {
			var self = this;
			// live - что бы контент можно было добавлять и через addithional_video_wrapper
			$('.movies_add_source').live('click', function() {
				// Закрываем видео панель (видео+карусель)
				self.closeVideoPanel();
				window.scrollTo(0, 0);
				var url = $(this).attr('rel');
				// Выносим в callback (можно и так)
				self.customzone.setContentByRequestInCustomzone(url, 'customzone_addcontent', function() {
					// снимаем обработчик, который был навешан предидущими нажатиями movies_add_source
					// это важно, так формы будут отправлятся на разные url
					$("#addMovieSourceForm").die('submit');
					// вещаем новый
					self.activateAddVideoFormSubmit('addMovieSourceForm', url);
				});
				return false;
			});
		},
		
		// Панели с сурсами
 	
 		activateOpenEpisodePanel: function() {
 			var self = this;
			var $current_source_panel = false;
			$('.show_episode_panel').bind('click', function() {
				var $video_content_object = $(this).parents('.video_content_object');
				var $source_panel = $('.source_panel', $video_content_object);
				var $source_panel_loading = $('.source_panel_loading', $video_content_object);
				
				if ($source_panel.hasClass('open')) {
					$source_panel.slideUp().removeClass('open');
				} else {
					
					// Close open panel
					if ($current_source_panel)
						$current_source_panel.slideUp().removeClass('open');
					
					$source_panel_loading.show();
					if (! $source_panel.hasClass('loaded')) {
						var id = $video_content_object.attr('id').split('_');
						$.ajax({
							url : '/ajax/myqueue/shows/get-episode-panel-content/' + id[2],
							type : "POST",
							dataType : 'html',
							timeout : 30000,
							error : function() {
								ajaxError();
							},
							success : function(html) {
								var $video_source = $('.video_source:first', html);
								$source_panel_loading.hide();
								$('.source_panel_content', $source_panel).html(html);
								$(".show_source_for_episode:even", $source_panel).addClass('alt');
								$source_panel.slideDown().addClass('open').addClass('loaded');
								$current_source_panel = $source_panel;
								// следование экарана за раскрытым списком
							    $("html").animate({ scrollTop: $('.show_source_for_episode:first', $source_panel).offset().top - 350}, 1100);
							}
						});
					} else {
						$source_panel_loading.hide();
						$source_panel.slideDown().addClass('open');
						$current_source_panel = $source_panel;
					}
				}
				return false;
			});		
			$('.show_source_for_episode').live('click', function() {
				var $table_episode_sources = $(this).next().find('.episode_sources_wrapper');
				if ($table_episode_sources.hasClass('open')) {
					$table_episode_sources.slideUp().removeClass('open');
				} else {
					$('.episode_sources_wrapper.open').removeClass('open').hide();
					$table_episode_sources.slideDown().addClass('open');
				}
			});			
			$(".show_source_for_episode").live('mouseover', function() {
				$(this).addClass("over_episode")
			}).live('mouseout', function() {
				$(this).removeClass("over_episode")
			});
			$(".video_source").live('mouseover', function() {
				$(this).addClass("over_source")
			}).live('mouseout', function() {
				$(this).removeClass("over_source")
			});
		},
		
		activateOpenSourcePanel: function () {
 			var self = this;
			var $current_source_panel = false;
			$('.show_source_panel').bind('click', function(){
				var $video_content_object = $(this).parents('.video_content_object');
				var $source_panel = $('.source_panel', $video_content_object);
				var $source_panel_loading = $('.source_panel_loading', $video_content_object);
				
				if ($source_panel.hasClass('open')) {
					$source_panel.slideUp().removeClass('open');
				} else {
					
					// Close open panel
					if ($current_source_panel)
						$current_source_panel.slideUp().removeClass('open');
					
					$source_panel_loading.show();
					if (! $source_panel.hasClass('loaded')) {
						var id = $video_content_object.attr('id').split('_');
						$.ajax({
							url : '/ajax/myqueue/movies/get-source-panel-content/' + id[2],
							type : "POST",
							dataType : 'html',
							timeout : 30000,
							error : function() {
								ajaxError();
							},
							success : function(html) {
								var $video_source = $('.video_source:first', html);
								$source_panel_loading.hide();
								$('.source_panel_content', $source_panel).html(html);
								$('.video_source:even', $source_panel).addClass('alt');
								$source_panel.slideDown().addClass('open').addClass('loaded');
								$current_source_panel = $source_panel;
								// следование экарана за раскрытым списком
							    $("html").animate({ scrollTop: $('.show_source_for_episode:first', $source_panel).offset().top - 350}, 1100);
							}
						});
					} else {
						$source_panel_loading.hide();
						$source_panel.slideDown().addClass('open');
						$current_source_panel = $source_panel;
					}
				}
				return false;
			});
		}
 	}
 	
 	$.extend(Module_MyQueuePage.prototype, $.Module_TV_prototype());
 	
 	$.Module_MyQueuePage = function(options) {
 		return new Module_MyQueuePage(options);
 	};
 
 })(jQuery);
