/*
 * jQuery mouseGallerySlide v1.1.0
 *
 * Copyright (c) 2008 Taranets Aleksey
 * www: markup-javascript.com
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 */

jQuery.fn.mouseGallerySlide = function(_options){
	// defaults options
	var _options = jQuery.extend({
		scrollElParent: 'ul',
		scrollEl: 'li'
	},_options);

	return this.each(function(){
		var _this = $(this);

		var _gWidth = _this.outerWidth();      // ширина видимого дива        480
		var _scrollElParent = jQuery(_options.scrollElParent,_this);
		var _scrollEl = jQuery(_options.scrollEl,_this);
		var _liWidth = _scrollEl.outerWidth(true);    // ширина ли    80
		var _liSum = _scrollEl.length * _liWidth;      //1040 ширина всего списка с невидимой частью       _scrollEl.length -количество ли

		var _sec = (_liSum - _gWidth) * 30;     //время в секундах для прокрутки всего списка

		var _maxMargin = _liSum;     // максимальній маргин при смещении
		var _posHolder = _this.offset(); //получаем текущую позицию от верха и левой стороны данного дива
		var _width = _this.outerWidth();
		var _height = _this.outerHeight();

		var _chapter = _gWidth/12;    // ширина одного блока ли
		var _speed = 0.25;             // скорость
		var _direction = 3;      // напрпавление
		var _timerOut = false;

		var _cloneList = _scrollEl.clone();
		_scrollElParent.append(_cloneList);
		_scrollElParent
		var _e

		jQuery(document).resize(function(){
			_posHolder = _this.offset();         // 10 позиция от левого края и верха.. нашего дива видимого

		});

		$(document).ready(function(){
		   animateEl();
        });

		$(document).mousemove(function(e){
			if (e.pageX > _posHolder.left && e.pageX < (_posHolder.left + _width) && e.pageY > _posHolder.top && e.pageY < (_posHolder.top + _height)) // короче если курсор в зоне нашего видимого блока то віполняем следующую ф-цию
			{               // e.pagex координата мыши по оси х от левого начала браузера
			   mouseOverMove(e);

			}
			//else _scrollElParent.stop();
		});
		$('#right').hover(
		  function(){
		  	 _scrollElParent.stop();
		  },
		  function(){
		  	// animateEl();
		  });

          $('#right').click(function(){
            	myanimateEl_r();
            	return false;
          });
		$('#left').hover(
		  function(){
		  	 _scrollElParent.stop();
		  },
		  function(){
		  	// animateEl();
		  });

          $('#left').click(function(){
            	myanimateEl_l();
            	return false;
          });


		function mouseOverMove(e) {
			for (var i=0; i <= 12; i++) {
				if ((_chapter*i) > (e.pageX - _posHolder.left)) {  // задаем скорость в зависимости от расположения курсора
					switch(i){
						/*case 1: _speed = 2;break
						case 2:	_speed = 1.5;break
						case 3: _speed = 1;break
						case 4: _speed = 0.5;break
						case 12: _speed = 2;break
						case 11: _speed = 1.5;break
						case 10: _speed = 1;break
						case 9: _speed = 0.5;break
						default:_speed = 0;*/

						case 1: _speed = 1.5;break
						case 2:	_speed = 1.5;break
						case 3: _speed = 0.5;break
						case 4: _speed = 0.5;break
						case 12: _speed = 1.5;break
						case 11: _speed = 1.5;break
						case 10: _speed = 0.5;break
						case 9: _speed = 0.5;break
						default:_speed = 0;

					}

					if (i < 5) _direction = 1;       // задаем направление прокрутки в зависимости от расположения курсора
					else if (i > 8) _direction = 3;
					break;
				}
			}
			animateEl();               //запускаем анимацию с новыми парамметрами
		}
			function myanimateEl_l() {         //крутим влево

			_scrollElParent.stop();

		    var _curMargin = parseInt(_scrollElParent.css('marginLeft'));
            if (_curMargin==0){
            	_scrollElParent.css({'marginLeft':-(_maxMargin)},10);
            	var _curMargin = parseInt(_scrollElParent.css('marginLeft'));
            }
		    _myScroll = ((Math.ceil((-_curMargin-_maxMargin)/_liWidth))-1)*_liWidth;

		    if (Math.abs(_myScroll)> _maxMargin) {
		    	_myScroll = 0;
		    	_myScroll2 = -_liWidth;
		    }
                var k = -_curMargin/_maxMargin;
   				_scrollElParent.stop().animate({marginLeft:-(_maxMargin-Math.abs(_myScroll))},
						{easing:'linear',duration:'fast', complete:function(){
							if (_curMargin == 0)
							{_scrollElParent.css({'marginLeft':0},10);
								if (_myScroll2 > 0){
									 animate({marginLeft:_myScroll2},{easing:'linear',duration:(_sec/_speed)*k});
									 _myScroll2 = 0;
								}
                            }
						}}
					);
         }
		function myanimateEl_r() {         //крутим вправо

			_scrollElParent.stop();

		    var _curMargin = parseInt(_scrollElParent.css('marginLeft'));

            if (_curMargin == -_maxMargin){
            	_scrollElParent.css({'marginLeft':0},10);
            	var _curMargin = parseInt(_scrollElParent.css('marginLeft'));
            }
		    _myScroll = ((Math.ceil(_curMargin/_liWidth))-1)*_liWidth;

		    if (Math.abs(_myScroll)> _maxMargin) {
		    	_myScroll = 0;
		    	_myScroll2 = -_liWidth;
		    }

                var k = -_curMargin/_maxMargin;
 				_scrollElParent.stop().animate({marginLeft:_myScroll},
						{easing:'linear',duration:'fast', complete:function(){
							if (_curMargin == -_maxMargin)
							{_scrollElParent.css({'marginLeft':0},10);
								if (_myScroll2 > 0){
									 animate({marginLeft:_myScroll2},{easing:'linear',duration:(_sec/_speed)*k});
									 _myScroll2 = 0;
								}
                            }
						}}
					);
         }
		function animateEl() {
			if (_timerOut) clearTimeout(_timerOut);   //сбрасіваем таймер если таковой установлен
			_scrollElParent.stop();  //останавливает текущую анимацию
			var _curMargin = parseInt(_scrollElParent.css('marginLeft')); // берем текущий отступ нашего div-a
			if (_direction == 1) {         // если крутить вправо
				var k = -_curMargin/_maxMargin;   // коэфициент для скорости
				_scrollElParent.stop()    //останавливает текущую анимацию
					.animate(
						{marginLeft:0},           //  прокрутка влево до координаті 0
						{easing:'linear',duration:(_sec/_speed)*k, complete:function(){
							_scrollElParent.css({'marginLeft':-(_maxMargin)});   // устанавливаем начало прокрутки
							_timerOut = setTimeout(function(){animateEl()},15)   // то віполняем заново єту всю функцию
						}}
					);
			}
			if (_direction == 3) {
				var k = (_maxMargin + _curMargin)/_maxMargin;
				_scrollElParent.stop()
					.animate(
						{marginLeft:-_maxMargin},     // устанавливаем наш список с -длині одного списка координаті для прокрутки влево
						{easing:'linear',duration:(_sec/_speed)*k, complete:function(){
							_scrollElParent.css({'marginLeft':0});
							_timerOut = setTimeout(function(){animateEl()},15)
						}}
					);
			}
		}
	});

}



