/*
 * Slideshow gallery plug-in for jQuery
 * tested with jQuery 1.4
 * Filename* jquery.slidergallery_v01.js
 * Version 1.0 (March 10, 2010)
 * Author: Peter Anderhagen (peter_anderhagen@hotmail.com)
 *
 * Usage
 *
 * $("#references").sliderGallery();
 *
 *
 *
 */
(function($){ 
	$.fn.extend({  
		sliderGallery: function(arguments){ 
 
			// Default settings.
			var defaults = ({
				galleryItemElement: 'div.item',
				scrollSpeed: 500,
				fadeSpeed: 300
			});
			// Override defaults for passed arguments.
			var settings = $.extend(defaults, arguments);
			var items = [];
			var container = $(this);
			var containerWidth = container.width()
			var containerHeight = container.height()
			var current_item = 0;
			var num_items = (container.find(settings.galleryItemElement).length - 1);
			var marker = '';
			
			// Loop thru items and do stuff.
			container.find(settings.galleryItemElement).each(function(i){
				var item = $(this);
				item.attr("id", "item_" + i);
				item.css({
					position:'absolute',
					top:0,
					left:(containerWidth * i) + "px",
					'z-index': '100'
				});
				if(i == 0){
					marker += '<li id="ind_' + i + '" class="active"><span></span></li>';
				}
				else{
					marker += '<li id="ind_' + i + '"><span></span></li>';
				}
				
				item.children("div.description").fadeTo('fast', 0.6);
			});
			
			// Append button and marker divs.
			container.append('<div class="marker"><ul>' + marker + '</ul></div>');
			container.append('<div class="btnPrev sliderbutton"></div><div class="btnNext sliderbutton"></div>');

			var btnPrev = container.find(".btnPrev");
			var btnNext = container.find(".btnNext");

			btnPrev.click(function(){
				slideItems("-");
			});
			
			btnNext.click(function(){
				slideItems("+");
			});
			
			$("div.sliderbutton").hover(function(){
				$(this).append('<div></div>');
				$("div.sliderbutton div").css({display:"none"}).fadeTo(300, 0.75);
				// Change classes on arrow divs on hover
				$("div.sliderbutton div").hover(function(){
					$(this).addClass('hover');
				},function(){
					$(this).removeClass('hover');
				});
			},
			function(){
				$("div.sliderbutton div").fadeOut(300, function() {
					$(this).remove();
				});
			});
			
			
			

			
			function slideItems(direction){
				var old_item = container.find("#item_" + current_item );
				if( direction == "+"){
					if(current_item == num_items) {
						current_item = 0;
					}
					else{
						current_item++;
					}
					// Make sure the new item is in place before removing the old one.
					container.find("#item_" + current_item ).css('left',containerWidth + "px");
					old_item.animate({"left": "-" + containerWidth + "px"}, settings.scrollSpeed);
					container.find("#item_" + current_item ).animate({"left": "0px"}, settings.scrollSpeed);
				}
				else{
					if(current_item == 0) {
						current_item = (num_items);
					}
					else{
						current_item--;
					}
					// Make sure the new item is in place before removing the old one.
					container.find("#item_" + current_item ).css('left','-' + containerWidth + "px");
					old_item.animate({"left": containerWidth + "px"}, settings.scrollSpeed);
					container.find("#item_" + current_item ).animate({"left": "0px"}, settings.scrollSpeed);
				}
				// Set indicator.
				setActiveItem(current_item);
			};
			
			
			function setActiveItem(n){
				$(".marker ul li").each(function(i){
					if(n == i){
						$(this).addClass("active");
					}
					else{
						$(this).removeClass("active");
					}
				});
			};
			
			

        }
    }); 
})(jQuery);
