﻿var carW = 0;
var id = 0;
var carPosition = 0;
var carMinPos = 0;
var carMaxPos = 0;
var dx;
var carObj;
var unit_ar = [];
var koef = 1; // коэффициент ускорения в зависимости от производительности браузера

var bench = 0;
var delta = 0;
var carmovepos = 0;

var move_event_completed = true;

var not_hover = false;

var global_dx = 2;

$(document).ready(function()
{	
	// адаптация коэффициента скорости карусели
	//id_ = setInterval(benchmark,1000);
	if ($.browser.mozilla) global_dx=10;
	
	preParedCar(null);

	// hover-карусель	
	$("#index .splash-r .carousel").hover(function()
	{			
		var obj = $(this);
		carMinPos = -(obj.find("li").length/2)*obj.find("li").innerWidth();	
		carW = obj.width()/2; // центр карусели
		//alert(carW);
	},
	function()
	{				
		$(this).attr("rel",carPosition);
		clearInterval(id);
		id = 0;
		bench = 0;
	});		
});

function caruselR()
{
	if (carObj==null) return false;
	carPosition = carPosition-koef*dx;

	if (carPosition>carMinPos)
		carObj.css("left",carPosition+"px");
	else
	{
		carObj.css("left",0);
		carPosition=0;
	}
	
}function caruselL()
{
	if (carObj==null) return false;
	carPosition = 1*carPosition-koef*dx;
	
	if (carPosition<0)
		carObj.css("left",carPosition+"px");
	else
	{
		carObj.css("left",carMinPos);
		carPosition=carMinPos;	
	}
	
}

function carReWdth(obj) // пересчитываем ширину карусели obj =.carousel
{
	obj.find("ul").width(obj.find("li").length*(obj.find("li").width()+1)+"px");
}



function mousePageXY(e)
 {
	      var x = 0, y = 0;
	     
	      if (!e) e = window.event;
	     
	      if (e.pageX || e.pageY)
	      {
	        x = e.pageX;
	        y = e.pageY;
	      }
	      else if (e.clientX || e.clientY)
	      {
	        x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
			y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
	      }
     
	      return x;
}

function preParedCar(obj) // подготовить карусельку
{
	if (obj==null)
	{
		// для всех каруселек добавляем еще элементы
		for (j=0;j<$(".carousel").length;j++)
		{
			var obj = $(".carousel:eq("+j+")");
			var lng = $(".carousel:eq("+j+") li").length;
			//obj.find("ul").width("100000px");
			//obj.width("100%");
			
			if (obj.attr("class").indexOf("carusel-move")==-1)
				obj.mousemove(function(e){carmove(e,$(this))});
			
			for (i=0;i<lng;i++)
			{
				obj.find("li:eq("+(i+lng-1)+")").after("<li>"+obj.find("li:eq("+i+")").html()+"</li>");
			}
			obj.find("ul").width(2*lng*161);
			//obj.find("ul").css("width","96%");
			obj.find("ul").css("position","relative");
			obj.css("overflow","hidden");
			obj.find("li").css("float","left");
			
			obj.find("ul").animate({left: -obj.find("ul").width()},200,function()
			{
				obj.find("ul").css("left",0);
			});
		}
	}
	else
	{ // для конкретной .carousel
		/*var lng = obj.find("li").length;
		for (i=0;i<4;i++)
		{
			obj.find("li:eq("+(i+lng-1)+")").after("<li>"+_obj.find("li:eq("+i+")").html()+"</li>");			
		}
		
		carObj = obj;
		var lng = carObj.find("li").length;
		carObj.width(lng*carObj.find("li").width()+"px");
		carObj.parent().width(4*carObj.find("li").width()+"px"); 
		carW = carObj.parent().offset().left+(carObj.parent().width()/2); // центр карусели

		carPosition = 0;
		carMinPos = -(lng-4)*carObj.find("li").width();
		*/
	}
}

function carmove(e,jqueryobj) // обработчик событий карусели
{
	carObj=jqueryobj.find('ul');
	var thX = mousePageXY(e)-jqueryobj.offset().left;
	
	carW = jqueryobj.width()/2;
	//
	if (Math.abs(thX-carW)>30)
	{
		if (thX>carW)
				{		
					//$(".h2:first").html(carW);
					
					//clearInterval(id);		
					if (dx<0) {
						clearInterval(id);
						id=0;
					}			
					//if $(bromozilla
					dx =global_dx;//*(thX-carW)/jqueryobj.width();		
					
					if (id==0)
						id = setInterval(dispetcher,15);
					
				}
				else
				{
					//clearInterval(id);
					if (dx>0) {
						clearInterval(id);
						id=0;
					}
					dx = -global_dx;//*(carW-thX)/jqueryobj.width();
					
					if (id==0)
						id = setInterval(dispetcher, 15);
				}
	}
	else
	{
		clearInterval(id);
		id = 0;
	}
}

function dispetcher()
{
	if (move_event_completed)
	{
		move_event_completed = false;

		if (dx>0)
			caruselR()
		else
			caruselL();

		move_event_completed = true;
	}
}
