/**
 * jQuery glider plugin. Vypracovano Symbiem, predelano jako jQuery plugin Tovarnou.
 */ 

jQuery.fn.glider = function() {
	var args = arguments[0] || {};

	var gliderLiWidth = args.liWidth || 138;
	var gliderUlWidth = args.ulWidth || 690;
	var gliderCount = args.count || 5;

	return this.each(function() {
		var gliderHolder = $(this);
		var gliderUl = $("ul", gliderHolder);
		var gliderNav = $(".gliderNav", gliderHolder);

		// Points in glider controls 
		var gliderPoints = "";
		var gliderSections = Math.ceil($("li", gliderHolder).size() / gliderCount);
		
		for (var i = 1; i <= gliderSections; i++)
			gliderPoints += '<a class="replace point" href="#">' + i + '<span></span></a>';

		// Glider controls = points and arrows
		gliderNav.append('<p class="arrows"><a class="prevSlide replace" href="">&lt;<span></span></a> <a class="nextSlide replace" href="">&gt;<span></span></a></p>');
		
		if (gliderSections < 5)
			gliderNav.append('<a href="#" class="goto-start"></a><p class="squares">' + gliderPoints + '</p><a href="#" class="goto-end"></a>')
		else
			gliderNav.append('<p class="scroll"><a href="#" class="replace point left goto-start">&lt;<span></span></a><span href="#" class="point point-paging">1 / ' + gliderSections + '<span></span></span><a href="#" class="replace point right goto-end">&gt;<span></span></a></p>')
			
		$("ul", gliderHolder).width($("li", gliderHolder).size() * gliderLiWidth);

		var gliderNavPrev = $(".prevSlide", gliderNav);
		var gliderNavNext = $(".nextSlide", gliderNav);

		$('.point:first', gliderNav).addClass('active');

		// Check previous/next arrows 
		function checkArrows() {
			// If is first item active, stop clickable
			if($(".squares a.point:first", gliderNav).hasClass("active") || parseInt($(".point-paging", gliderNav).html()) == 1)
				gliderNavPrev.addClass("disabled");
			else
				gliderNavPrev.removeClass("disabled");

			// If is last item active, stop clickable
			if($(".squares a.point:last", gliderNav).hasClass("active") || parseInt($(".point-paging", gliderNav).html()) == gliderSections)
				gliderNavNext.addClass("disabled");
			else
				gliderNavNext.removeClass("disabled");

			if(typeof delayAutoscroll == 'function')
				delayAutoscroll(gliderHolder);
		}


		// Next arrow - show previous 3 items
		gliderNavNext.click(function(event) {
			event.preventDefault();
			if(!$(this).hasClass("disabled")) {
				var new_page;
			
				if(gliderSections < 5)
					new_page = parseInt($(".squares .active", gliderNav).html());
				else
					new_page = parseInt($(".point-paging", gliderNav).html());
			
				gliderNavPrev.removeClass("active");
				gliderUl.animate({marginLeft: -gliderUlWidth * new_page}, {queue: false, duration: 250});
				$(".squares .active", gliderNav).removeClass("active").next().addClass("active");

				if($(".squares .point:nth-child(" + (gliderSections) + ")", gliderNav).hasClass("active"))
					$(this).addClass("disabled");
				
				if(new_page < gliderSections)
					$(".point-paging", gliderNav).html((new_page + 1) + ' / ' + gliderSections + '<span></span></span>');
			}
			checkArrows();
		});


		// Previous arrow - show next 3 items
		gliderNavPrev.click(function(event) {
			event.preventDefault();
			if(!$(this).hasClass("disabled")) {
				var new_page;
			
				if(gliderSections < 5)
					new_page = parseInt($(".squares .active", gliderNav).html());
				else
					new_page = parseInt($(".point-paging", gliderNav).html());
			
				gliderNavNext.removeClass("active");
				gliderUl.animate({marginLeft: -gliderUlWidth * (new_page - 2)}, {queue: false, duration: 250});
				$(".squares .active", gliderNav).removeClass("active").prev().addClass("active");
				
				if($(".squares .point:nth-child(1)").hasClass("active"))
					$(this).addClass("disabled");
				
				if(new_page >= 1)
					$(".point-paging", gliderNav).html((new_page - 1) + ' / ' + gliderSections + '<span></span></span>');
			}
			checkArrows();
		});


		// Points in glider controls - shows selected 3 items
		$(".point", gliderNav).click(function(event) {
			event.preventDefault();
			gliderUl.animate({marginLeft: -gliderUlWidth * (parseInt($(this).html())-1)}, {queue: false, duration: 250});
			$(".squares .active", gliderNav).removeClass("active");
			$(this).addClass("active");
			checkArrows();
		});
		
		$(".goto-start", gliderNav).click(function(event) {
			$(".point-paging", gliderNav).html('1 / ' + gliderSections + '<span></span></span>');
			gliderUl.animate({marginLeft: 0}, {queue: false, duration: 250});

			$(".squares .point", gliderNav).removeClass("active");
			$(".squares .point:nth-child(1)").addClass("active");

			checkArrows();
		});
		
		$(".goto-end", gliderNav).click(function(event) {
			$(".point-paging", gliderNav).html(gliderSections + ' / ' + gliderSections + '<span></span></span>');
			gliderUl.animate({marginLeft: -gliderUlWidth * (gliderSections - 2)}, {queue: false, duration: 250});
			
			checkArrows();
		});

		checkArrows();
	});
}

