
BigScrollAnnounce = function() {
  this.Constructor();
}

$.extend(BigScrollAnnounce.prototype, {

	CurrentCellNum:	0,
	NumberOfCells:	0,
	DragStartX:		0,
	DragStartY:		0, 
	DragStartImgX:	0,
	DragStartImgY:	0,
	StartImageDrag:	false,
	Animating:		false,
	touchStartX: 0,
	touchLastX: 0,
	touchStartY: 0,
	touchLastY: 0,
	timer: null,
	autodir: 'right',

	/** constructor */
	Constructor: function() {
		
		// событие на ресайз окна
		var __instance = this; 			// хак, из-за того, что this не работает внутри jquery-конструкций
		$(window).resize(function() {
			__instance.AdjustCellsWidth();
		});
		
		
		this.InitMode();
			
		// скролл стрелочками
		this.InitScrollArrows();
		
		// меню настроек
		this.InitSettingsMenu();
		
		/*$("#main-announce")[0].ontouchstart = function(e) {
			__instance.touchLastX = __instance.touchStartX = e.touches[0].pageX
			__instance.touchLastY = __instance.touchStartY = e.touches[0].pageY
		};
		$("#main-announce")[0].ontouchmove = function(e) {
			__instance.touchLastX = e.touches[0].pageX
		};
		
		$("#main-announce")[0].ontouchend = function(e) {
			var delta = __instance.touchStartX - __instance.touchLastX
			if(Math.abs(delta)>100) {
				if(delta>0) {
					$("#main-announce .scroll-right").trigger('click');
				} else {
					$("#main-announce .scroll-left").trigger('click');
				}
				
			}
		};*/


		__instance.timer = setTimeout(function() {__instance.AutoScroll()}, 14000);
		
		IeShowPng();
	},


	AutoScroll: function() {
		var __instance = this;
		if( $(".scroll-"+__instance.autodir+"1").is('.inactive')) {
			if( __instance.autodir =='right' ) __instance.autodir ='left'; else __instance.autodir ='right';
		}
		$(".scroll-"+__instance.autodir+"1").trigger('click');
	},

	
	InitMode: function() {
		
		this.CurrentCellNum = 0;
		
		// начальное позиционирование
		$("#main-announce .viewport .window").scrollTo( '0px', { axis:'x' } );

		if( parseInt($("#main-announce").attr('current_mode')) == 1 ) {
			var NewX = ($("#main-announce .viewport").width() - 2000 ) / 2;
			var NewY = ($("#main-announce .viewport").height() - 1000 ) / 2;
			$("#main-announce .viewport .current-cell").css('background-position', NewX+'px '+NewY+'px');
			$("#main-announce .viewport .cell").css('background-position', NewX+'px '+NewY+'px');
			IeShowPng();
		}
	
		this.AdjustCellsWidth();
		
		// количество ячеек
		this.NumberOfCells = $("##main-announce .viewport .cell").length;

		// спрячем невидимые ячейки
		$("#main-announce .viewport .cell:not(:eq("+this.CurrentCellNum+"))").css('visibility', 'hidden')

		// уберем или покажем стрелочки
		this.CheckArrowsAvailability();
		
		if( parseInt($("#main-announce").attr('current_mode')) == 1 ) {
			// таскание мышкой
			this.InitDrag();	
		}
		if( parseInt($("#main-announce").attr('current_mode')) != 3 ) {
			$(".big-image-scroller").show();
		} else {
			$(".big-image-scroller").hide();
		}
		
		$(".big-image-scroller A").removeClass('active');
		$(".big-image-scroller A:eq("+(this.CurrentCellNum+1)+")").addClass('active');
		
	},
	
	/* -----------------------------------  ТАСКАНИЕ МЫШКОЙ --------------------------------- -------*/
	/** инициализация собьтий */
	InitDrag: function() {
		var __instance = this; 
		
		$("#main-announce .viewport .current-cell").mousedown(function(e) {
			__instance.OnStartDrag(e);
		});
		$(document).mousemove(function(e) {
			__instance.OnDrag(e);
		});
		$(document).mouseup(function() {
			__instance.OnStopDrag();
		});
	},
	
	/** Начало таскания - нажатие мышкой на картинке */
	OnStartDrag: function( e ) {
			document.ondragstart = function(){ return false; }
			document.onselectstart = function(){ return false; }
	    	e.preventDefault();	

			tmpArr = $("#main-announce .viewport .current-cell").backgroundPosition().split(' ');
			this.DragStartImgX = parseInt(tmpArr[0]);
			this.DragStartImgY = parseInt(tmpArr[1]);

			this.DragStartX = e.clientX;
	    	this.DragStartY = e.clientY;
			
	    	
			this.StartImageDrag = true;
	},
	
	/** Таскание */
	OnDrag: function( e ) {
		if( this.StartImageDrag ) {
			var deltaX = this.DragStartX - e.clientX;
			var deltaY = this.DragStartY - e.clientY;
			
			NewY = this.DragStartImgY - deltaY;
			NewX = this.DragStartImgX - deltaX;
			
			if( NewY > 0 ) NewY = 0;
			if( NewX > 0 ) NewX = 0;
			if( NewX < $("#main-announce .viewport").width() - 2000 ) NewX = $("#main-announce .viewport").width() - 2000;
			if( NewY < $("#main-announce .viewport").height() - 1000 ) NewY = $("#main-announce .viewport").height() - 1000;
			
			$("#main-announce .viewport .current-cell").css('background-position', NewX+'px '+NewY+'px');
			
		}
	},
	
	/** Завершение таскания */
	OnStopDrag: function() {
		if( this.StartImageDrag ) {
			this.StartImageDrag = false;
			document.ondragstart = function(){ return true; }
			document.onselectstart = function(){ return true; }
			
			this.CopyBackPositionToCurrentCell();
		}
	},
		
	/*-------------------------------- ENABLE|DISABLE ARROWS ------------------------------------------*/
	CheckArrowsAvailability: function() {
		$("#main-announce .scroll-right, #main-announce .scroll-left").hide();
			if( this.CurrentCellNum == 0 ) {
//				$("#main-announce .scroll-left").hide();
				$(".scroll-left1").addClass('inactive');
			} else {
//				$("#main-announce .scroll-left").show();
				$(".scroll-left1").removeClass('inactive');
			}
			if( this.CurrentCellNum == this.NumberOfCells-1 ) {
//				$("#main-announce .scroll-right").hide();
				$(".scroll-right1").addClass('inactive');
			} else {
//				$("#main-announce .scroll-right").show();
				$(".scroll-right1").removeClass('inactive');
			}
//			if( parseInt($("#main-announce").attr('current_mode'))  1 ) {
//				$("#main-announce .scroll-right, #main-announce .scroll-left").hide();
//			}
	},	
	
	
	/*-------------------------------- СКРОЛЛ СТРЕЛОЧКАМИ ------------------------------------------------*/
	InitScrollArrows: function() {
		var __instance = this; 
		$("#main-announce .scroll-left, #main-announce .scroll-right, .scroll-left1, .scroll-right1").click(function() {
			clearTimeout(__instance.timer);
			if( __instance.Animating ) return false;
			var DirectionLeft = ($(this).is('.scroll-left') || $(this).is('.scroll-left1')) ? true : false;

			if( (DirectionLeft && __instance.CurrentCellNum == 0) || ( !DirectionLeft && __instance.CurrentCellNum == __instance.NumberOfCells - 1 ) ) return false;

			$("#main-announce .viewport .cell:not(:eq("+__instance.CurrentCellNum+"))").css('visibility', 'visible')
			
			$("#main-announce .viewport .current-cell").hide();
			
			var ScrollBy = (DirectionLeft?'-':'+') + '='+$("#main-announce .viewport").width()+'px';
			$("#main-announce .scroll-left, #main-announce .scroll-right").hide();
			__instance.Animating = true;
			$("#main-announce .viewport .window").scrollTo( ScrollBy , 500, { easing:'swing', axis:'x', onAfter:function(){
				
				__instance.CurrentCellNum += (DirectionLeft?-1:1);
				
				if( parseInt($("#main-announce").attr('current_mode')) == 1 ) {
					$("#main-announce .viewport .current-cell").css('background-image', $("#main-announce .viewport .cell:eq("+__instance.CurrentCellNum+")").css('background-image'));
					$("#main-announce .viewport .current-cell").css('background-position', $("#main-announce .viewport .cell:eq("+__instance.CurrentCellNum+")").backgroundPosition());
				}

				$("#main-announce .viewport .current-cell").html($("#main-announce .viewport .cell:eq("+__instance.CurrentCellNum+")").html()).show();
				
				$("#main-announce .viewport .cell:not(:eq("+__instance.CurrentCellNum+"))").css('visibility', 'hidden')
				
				$(".big-image-scroller A").removeClass('active');
				$(".big-image-scroller A:eq("+(__instance.CurrentCellNum+1)+")").addClass('active');
				
				__instance.CheckArrowsAvailability();
				__instance.Animating = false;
				__instance.timer = setTimeout(function() {__instance.AutoScroll()}, 14000);

				
	 		} } );
	 		
	 		return false;
		});
		
		$(".big-image-scroller A:not(:first):not(:last)").click(function() {
			clearTimeout(__instance.timer);
			if( !$(this).is('.active') && !__instance.Animating ) {
				var new_num = $(this).attr('href').substring(1) - 1;
				if(new_num<0||new_num>5) return;
				__instance.Animating = true;
				var scrollby =  (new_num - __instance.CurrentCellNum) * $("#main-announce .viewport").width();
				
				if( scrollby > 0 ) { 
					scrollby = "+="+scrollby;
				} else {
					scrollby = "-="+Math.abs(scrollby);
				}
				scrollby += "px";
				//$(".scroll-left1, .scroll-right1").hide();
				$("#main-announce .viewport .cell:not(:eq("+__instance.CurrentCellNum+"))").css('visibility', 'visible')
				
				$("#main-announce .viewport .current-cell").hide();
				$("#main-announce .viewport .window").scrollTo( scrollby , 500+(Math.abs(new_num - __instance.CurrentCellNum)*200), { easing:'swing', axis:'x', onAfter:function(){
					__instance.CurrentCellNum = new_num;
					
					if( parseInt($("#main-announce").attr('current_mode')) == 1 ) {
						$("#main-announce .viewport .current-cell").css('background-image', $("#main-announce .viewport .cell:eq("+__instance.CurrentCellNum+")").css('background-image'));
						$("#main-announce .viewport .current-cell").css('background-position', $("#main-announce .viewport .cell:eq("+__instance.CurrentCellNum+")").backgroundPosition());
					}
	
					$("#main-announce .viewport .current-cell").html($("#main-announce .viewport .cell:eq("+__instance.CurrentCellNum+")").html()).show();
					
					$("#main-announce .viewport .cell:not(:eq("+__instance.CurrentCellNum+"))").css('visibility', 'hidden')
					
					$(".big-image-scroller A").removeClass('active');
					$(".big-image-scroller A:eq("+(__instance.CurrentCellNum+1)+")").addClass('active');
					
					__instance.CheckArrowsAvailability();
					__instance.Animating = false;
					__instance.timer = setTimeout(function() {__instance.AutoScroll()}, 14000);

		 		} } );
			
			
			
			}
			return false;
		});
		
	},	
   
	
	CopyBackPositionToCurrentCell: function() {
		$("#main-announce .viewport .cell:eq("+this.CurrentCellNum+")").css('background-position', $("#main-announce .viewport .current-cell").backgroundPosition());
	},
	
	
	
	/*---------------------- ВЫРАВНИВАНИЕ РАЗМЕРА ВЬЮПОРТА В СООТВЕТСТВИИ С ОКНОМ БРАУЗЕРА ----------------------*/
	AdjustCellsWidth: function() {

		if( parseInt($("#main-announce").attr('current_mode')) == 1 ) {
			tmpArr = $("#main-announce .viewport .current-cell").backgroundPosition().split(' ');	
			CurX = parseInt(tmpArr[0]);
			CurY = parseInt(tmpArr[1]);
		
			// Если при ресайзе у нас правый кусок уезжает больше, чем можно, то сдвигаем вправо
			if( CurX < $("#main-announce .viewport").width() - 2000 ) CurX = $("#main-announce .viewport").width() - 2000;
			$("#main-announce .viewport .current-cell").css('background-position', CurX+'px '+CurY+'px');
		
			// Копируем стиль в ячейку
			this.CopyBackPositionToCurrentCell();
		}		
	
		// Позиционируем окошко и изменяем размеры всех ячеек в соответствии с новым размером вьюпорта
		$("#main-announce .viewport .window").scrollTo( (this.CurrentCellNum*$("#main-announce .viewport").width())+'px', { axis:'x' } );
		$("#main-announce .viewport .cell").width($("#main-announce .viewport").width());
	},
	
	
	
	
	/* ------------------------------------------ НАСТРОЙКИ ----------------------------------------------*/
	InitSettingsMenu: function() {
		var __instance = this;
		
		
		$("#main-announce .settings-menu-2 .button").click(function() {
			if( !$(this).is('.active') ) {
				var CurrentMode = $(this).siblings('.active').removeClass('active').attr('href').substring(1);
				var SelectedMode = parseInt($(this).addClass('active').attr('href').substring(1));
				if( SelectedMode != CurrentMode && SelectedMode >=1 && SelectedMode<=3) {
					$.post(sHtmlRoot+"_ajax_handler.phtml", { SetMainAnnounceMode: SelectedMode },
					function(data){
						$("#main-announce").attr('current_mode', SelectedMode);
						$("#main-announce").removeClass('mode_'+CurrentMode);
						$("#main-announce").addClass('mode_'+SelectedMode);
						$("#main-announce .viewport").html(data);

						__instance.InitMode();
						
					}, "html");			
				}
			}
		});
	
		
		$("#main-announce .settings-button").click(function() {
			if($(this).is('.opened')) {
				var SelectedMode = parseInt($("#main-announce .settings-menu INPUT:checked").val());
				var CurrentMode = parseInt($("#main-announce").attr('current_mode'));
				if( SelectedMode != CurrentMode && SelectedMode >=1 && SelectedMode<=3) {
					$.post(sHtmlRoot+"_ajax_handler.phtml", { SetMainAnnounceMode: SelectedMode },
					function(data){
						$("#main-announce").attr('current_mode', SelectedMode);
						$("#main-announce").removeClass('mode_'+CurrentMode);
						$("#main-announce").addClass('mode_'+SelectedMode);
						$("#main-announce .viewport").html(data);
						$("#main-announce  .settings-menu .menu-container .wrapper LABEL.selected").removeClass('selected');
						$("#main-announce  .settings-menu .menu-container .wrapper LABEL[for=announce_settings_"+SelectedMode+"]").addClass('selected');

						__instance.InitMode();
						
					}, "html");			
				}
				
				$(this).removeClass('opened');
				$("#main-announce .settings-menu").fadeOut();
			} else {
				$(this).addClass('opened');
				$("#main-announce .settings-menu").fadeIn();
			}
			return false;
		});
		
		//initial value - to negate form-autocomplete
		$( "#announce_settings_" + $("#main-announce").attr('current_mode') ).attr('checked', true);
		$("#main-announce .settings-menu").css('opacity', 0.9);
	}
	
   
   
});










