﻿/********** slider-section ****************/


//создание массива элементов
	var arrayElems = new Array();
	$.getJSON("engine/library/carousel/makearr.php", function(data) {
          $.each(data, function(i,data){
			arrayElems[i] = new Array(data.src,data.title,data.href,data.thehtml);
        });
    });

$(document).ready( function() {
	
		//инициализация переменных
	var currentDuration = 5000; // количество миллисекунд, необходимое для перемещение на ширину элемента (рекомендуемое значение 3000)
	var delayInterval = 0; //  интервал задержки между перемещениями (в случае delayInterval=0 получаем непрерывное движение)
	var elemWidth = 150; //начальная ширина элемента в пикселах (px)
	var intMarginLeft = 0;
	

	var leftAnimateCallback = function() {
		var currentElem = $("#wrapper ul li:first");
		currentElem.remove();
		$("#wrapper ul").append(currentElem);
		$("#wrapper ul").css("margin-left","0");
		setTimeout( function() {
			$("#wrapper ul").animate( { marginLeft:-newElemWidth } , { duration:currentDuration, easing:"linear" , complete:leftAnimateCallback , queue:false } );
		} , delayInterval );
	}
	var rightAnimateCallback = function() {
		var currentElem = $("#wrapper ul li:last");
		currentElem.remove();
		$("#wrapper ul").prepend(currentElem);
		$("#wrapper ul").css("margin-left", "-" + newElemWidth + "px" );		
		setTimeout( function() {
			$("#wrapper ul").animate( { marginLeft:0 } , { duration:currentDuration, easing:"linear" , complete:rightAnimateCallback , queue:false } );
		} , delayInterval );
	}
	
	$(window).bind("resize load", function() {
	
		$("#wrapper").width($("#extra-wrapper").width());
		
		$("#wrapper ul").stop();	
		// инициализация переменных, необходимых для корректного построения списка элементов #wrapper ul
			wrapperWidth = $("#wrapper").width();
			elemsCountInArray = arrayElems.length;
			elemsCount = Math.floor((wrapperWidth+elemWidth)/elemWidth); //количество элементов, которые могут поместиться во wrapper
																		//с учетом одного дополнительного элемента (+elemWidth)
			countOfArrays = Math.ceil(elemsCount/elemsCountInArray);
			newElemWidth = Math.floor(wrapperWidth/(elemsCount-1));
			
		var strMy = "<ul>"; // формирование списка элементов #wrapper ul НАЧАЛО
		
		for(k=0;k<countOfArrays;k++) {
			for(i=0;i<arrayElems.length;i++) {
				strMy += "<li>";
				strMy += "<div class='slider-elem-pic'><a href='" + arrayElems[i][2] + "'><img class='elem-img' src='" + arrayElems[i][0] + "' /></a></div>";
				strMy += '<div class="slider-elem-hidden">' + arrayElems[i][3] + '</div>';
				strMy += "<div class='slider-elem-title'><a href='" + arrayElems[i][2] + "' class='elem-a-title'>" + arrayElems[i][1] + "</a></div>";
				strMy += "</li>";
			}
		}
		strMy += "</ul>"; // формирование списка элементов #wrapper ul КОНЕЦ
		
		// заполнение содержимого div'а с идентификатором wrapper
		$("#wrapper").html(strMy); 
		
		$("#wrapper ul").width(newElemWidth*elemsCount+15);
		$("#wrapper ul li").width(newElemWidth);
		
		//запуск анимации по умолчанию после загрузки страницы
		// слева-направо goRight()
		// справа-налево goLeft()
		$("#wrapper ul").goLeft();
	
	});
	
	
	$("#stop").click(function() {
		$("#wrapper ul").stop();
	});	
	$("#to-left").click(function() {
		$("#wrapper ul").goLeft();		
	});	
	$("#to-right").click(function() {
		$("#wrapper ul").goRight();		
	});	
	
	
	$("#wrapper li").live("mouseover", function() {
		if($(this).find(".slider-elem-hidden").css("height")=="0px") {
			$(this).find(".slider-elem-hidden").stop().animate( { height:80, opacity:0.7 } , 600 );
			$(this).find(".slider-elem-title").stop().animate( { opacity:0 } , 600 );
		}
	});
	$("#wrapper li").live("mouseout", function(e) {
		if($().isMouseInside($(this),e)=="outside") {
			$(this).find(".slider-elem-hidden").stop().animate( { height:0, opacity:0 } , 300 );
			$(this).find(".slider-elem-title").stop().animate( { opacity:1 } , 300 );
		}
	});	


	$("#wrapper").hover( function() {
		$("#wrapper ul").stop();
		$(".slider-elem-hidden").width($("#wrapper ul li").width());				
	}, function() {
		$(".slider-elem-hidden").animate( {opacity:0} , 300 );
		if($("#to-left").attr("class") === "currentDirection") {
			$(window).goLeft();
		} else {
			$(window).goRight();
		}
	});
	
	$.fn.isMouseInside = function(theObj,theEvent) {
		var mouseX = theEvent.pageX;
		var mouseY = theEvent.pageY;
		var objLeft = theObj.offset().left;
		var objRight = theObj.offset().left+theObj.width();
		var objTop = theObj.offset().top;
		var objBottom = theObj.offset().top+theObj.height();		
		if((mouseX > objLeft) && (mouseX<objRight) && (mouseY > objTop) && (mouseY<objBottom)) {
			return "inside";
		} else {
			return "outside";
		}
	}
	$.fn.goLeft = function() {
		$("#to-right").removeClass("currentDirection");
		$("#to-left").addClass("currentDirection");
		intMarginLeft = parseInt($("#wrapper ul").css("margin-left"));
		actualDuration = -((-newElemWidth-intMarginLeft)/newElemWidth)*currentDuration;
		$("#wrapper ul").stop().animate( { marginLeft: -1*newElemWidth } , { duration:actualDuration, easing:"linear" , complete:leftAnimateCallback , queue:false } );
	}
	$.fn.goRight = function(){
		$("#to-left").removeClass("currentDirection");
		$("#to-right").addClass("currentDirection");		
		intMarginLeft = parseInt($("#wrapper ul").css("margin-left"));
		actualDuration = -(intMarginLeft/elemWidth)*currentDuration;
		$("#wrapper ul").stop().animate( { marginLeft:0 } , { duration:actualDuration, easing:"linear" , complete:rightAnimateCallback , queue:false } );
	}

});
