// Przyjmuje wartość 1 po kliknięciu strzałki, 0 po zakończeniu przewijania.
var $already_rotating = 0;
// Pozwala naprzemiennie wybierać pasek do przewijania .
var $cur_rotator = 1;

//Funkcja inicjuje naprzemienne przesuwanie pasków z raklamami.
(function($){ $.fn.rotator = function(options){
	
	// Uzupełnienie parametrów wartościami domyślnymi.
    var defaults = {
		ms: 2000,
		n: 1
	};
    var options = $.extend(defaults, options);
    
    // Definicja akcji wywołujących funkcje przesuwania po kliknięciu na strzałkę.
    $('#ar_down_1').click(function(e){
    	e.preventDefault();
    	if($already_rotating == 0)
    	{
    		$already_rotating = 1;
			rotate_down_target($("#vertical_rotator1"),200);
    	}
	});
	$('#ar_down_2').click(function(e){
		e.preventDefault();
		if($already_rotating == 0)
    	{
    		$already_rotating = 1;
    		rotate_down_target($("#vertical_rotator2"),200);
    	}
	});
    $('#ar_up_1').click(function(e){
    	e.preventDefault();
    	if($already_rotating == 0)
    	{
    		$already_rotating = 1;
    		rotate_up_target($("#vertical_rotator1"),200);
    	}
	});
	$('#ar_up_2').click(function(e){
		e.preventDefault();
		if($already_rotating == 0)
    	{
    		$already_rotating = 1;
    		rotate_up_target($("#vertical_rotator2"),200);
    	}
	});	
	
	// Utworzenie cyklicznego wywołania przewijania.
	return this.each(function(index) {
		var $this = $(this);
		
		function beginRotation(){
            $this.data("timer", setInterval( rotating_down, options.ms));
		}
		
		$this.mouseover(function(){
		    clearTimeout($this.data("timer"));
		});
		
		$this.mouseout(function(){
		    beginRotation();
		});
		
		beginRotation();
	});
}})(jQuery); // Koniec rotator.

// Przesunięcie w dół o jeden element wywoływane cyklicznie przez timer. Dla podwójnego roratora.
function rotating_down(){
    var $target;
    if($cur_rotator==1){
    	$target = $("#vertical_rotator1");
    	$cur_rotator=2;
    }else{
    	$target = $("#vertical_rotator2");
    	$cur_rotator=1;
    }
    rotate_down_target($target,500);
}  // Koniec rotating_down.

// Przesunięcie w dół o jeden element danego parametrem paska.
function rotate_down_target($target,anim_time)
{
	var childHeight = $target.children().filter(":first-child").height();
    var animParams = {scrollTop: (childHeight) + "px"};
    
	// Wywołanie transformacji animowanej. Parametry: 1 - docelowy stan, 2-czas w ms, 3 - funckja wywoływana po zakończeniu.
    $target.animate(animParams, anim_time, function(){
    	// Pobranie pierwszego elementu i przeniesienia na koniec.
    	$target.append($target.children().filter(":first-child"));
    	$target.scrollTop(0);    	
    	$target.css("overflow","hidden"); //Chrome hack
    	$already_rotating = 0;
    });		
} // Koniec rotate_down_target.

// Przesunięcie w górę o jeden element.
function rotate_up_target($target,anim_time)
{
    var animParams = {scrollTop: "0px"};
    var childHeight = $target.children().filter(":last-child").height();
    $target.prepend($target.children().filter(":last-child"));
    $target.scrollTop(childHeight);
    $target.css("overflow","hidden");
    $target.animate(animParams, anim_time, function(){
    	$target.css("overflow","hidden");
    	$already_rotating = 0;
    });		
} // Koniec rotate_up_target.

//Funkcja inicjuje przesuwanie poziomego paska z reklamami.
(function($){ $.fn.horizontal_rotator = function(options){

	// Uzupełnienie parametrów wartościami domyślnymi.
    var defaults = {
		ms: 2000
	};
    var options = $.extend(defaults, options);
    
    // Definicja akcji wywołujących funkcje przesuwania po kliknięciu na strzałkę.
    $('#ar_left').click(function(e){
    	e.preventDefault();
    	if($already_rotating == 0)
    	{
    		$already_rotating = 1;
			rotate_left_target($("#horizontal_rotator_elems"),200);
    	}
	});
    $('#ar_right').click(function(e){
		e.preventDefault();
    	if($already_rotating == 0)
    	{
    		$already_rotating = 1;
    		rotate_right_target($("#horizontal_rotator_elems"),200);
    	}
	});
	
	// Utworzenie cyklicznego wywołania przewijania.
	return this.each(function(index) {
		var $this = $(this);
		
		function beginRotation(){
            $this.data("timer", setInterval( rotating_right, options.ms));
		}
		
		$this.mouseover(function(){
		    clearTimeout($this.data("timer"));
		});
		
		$this.mouseout(function(){
		    beginRotation();
		});
		
		beginRotation();
	});
}})(jQuery); // Koniec horizontal_rotator.

// Przesunięcie w prawo o jeden element wywoływane cyklicznie przez timer.
function rotating_right()
{
	rotate_right_target($("#horizontal_rotator_elems"),400);
} // Koniec rotating_right.

// Przesunięcie w prawo o jeden element danego paska.
function rotate_right_target($target,anim_time)
{
	var childWidth = $target.children().filter(":first-child").width();
	var animParams = {scrollLeft: childWidth + "px"};
	$("#horizontal_rotator").animate(animParams, anim_time, function(){
		$target.append($target.children().filter(":first-child"));
		$("#horizontal_rotator").scrollLeft(0);
		$("#horizontal_rotator").css("overflow","hidden");
		$already_rotating = 0;
	});		
} // Koniec rotate_right_target.

// Przesunięcie w lewo o jeden element danego paska.
function rotate_left_target($target,anim_time)
{
	var animParams = {scrollLeft: "0px"};
	var childWidth = $target.children().filter(":last-child").width();
	$target.prepend($target.children().filter(":last-child"));
	$("#horizontal_rotator").scrollLeft(childWidth);
	$("#horizontal_rotator").css("overflow","hidden");
	$("#horizontal_rotator").animate(animParams, anim_time, function(){
		$("#horizontal_rotator").css("overflow","hidden");
		$already_rotating = 0;
	});		
} // Koniec rotate_left_target.	

//Funkcja inicjuje przesuwanie poziomego paska z reklamami.
(function($){ $.fn.compact_rotator = function(options){
	
	// Uzupełnienie parametrów wartościami domyślnymi.
    var defaults = {
		ms: 2000,
		n: 1
	};
    var options = $.extend(defaults, options);	
	
    $('#ar_down_compact').click(function(e){
    	e.preventDefault();
    	if($already_rotating == 0)
    	{
    		$already_rotating = 1;
			rotate_down_target($("#compact_rotator_elems"),200);
    	}
	});	
    $('#ar_up_compact').click(function(e){
    	e.preventDefault();
    	if($already_rotating == 0)
    	{
    		$already_rotating = 1;
    		rotate_up_target($("#compact_rotator_elems"),200);
    	}
	});    
    
	// Utworzenie cyklicznego wywołania przewijania.
	return this.each(function(index) {
		var $this = $(this);
		
		function beginRotation(){
            $this.data("timer", setInterval( rotating_down_compact, options.ms));
		}
		
		$this.mouseover(function(){
		    clearTimeout($this.data("timer"));
		});
		
		$this.mouseout(function(){
		    beginRotation();
		});
		
		beginRotation();
	});
	
}})(jQuery); // Koniec compact_rotator.

//Przesunięcie w dół o jeden element wywoływane cyklicznie przez timer.
function rotating_down_compact()
{
	rotate_down_target($("#compact_rotator_elems"),400);
} // Koniec rotating_down_compact.
