(function($) {
	$.slider = {   
		init: function(settings) {
			settings.int_total_slide_width = $(settings.itemContainer).width();
			settings.int_current_position = 0;
			settings.int_last_position = 0;
			settings.timer_effect = null;
			settings.int_total_items = $(settings.itemContainer+' ' + settings.itemClass).size();
			settings.int_total_inner_width = settings.int_total_slide_width * settings.int_total_items;
			
			$(settings.itemContainer+' .inner').width(settings.int_total_inner_width);

			if (settings.int_total_items > 1) {
				$.slider.createPageCounter(settings);
				if (settings.autoSlide) {
					$.slider.setEffectInterval(settings);
				}
			}	
		},
		setEffectInterval: function(settings) {
			if (settings.autoSlide) {
				settings.timer_effect = setInterval(function() { $.slider.goToNextSlide(settings); }, settings.waitBetweenItems);	
			}
		},
		goToNextSlide: function(settings) {
			settings.int_last_position = settings.int_current_position;
			++settings.int_current_position;
			
			$.slider.slideToPosition(settings.int_current_position, settings);
		},
		goToPreviousSlide: function(settings) {
			settings.int_last_position = settings.int_current_position;
			--settings.int_current_position;
			
			$.slider.slideToPosition(settings.int_current_position, settings);
		},
		createPageCounter: function(settings) {
			var str_value = '<ul class="counter">';
			var int_ul_width = 0;
			var int_li_count = 0;
			
			for (i = 0; i < settings.int_total_items; i++) {
				if (settings.showSlideNumbers) { var display = (i+1); } else { var display = "&nbsp;" }
				str_value += '<li id="slider-item-'+i+'"><a href="javascript:void(0);">'+display+'</a></li>';
			}
			$(settings.counterContainer).html(str_value);
			$(settings.counterContainer+' ul li a').each(function( int_count ) {		
				int_li_count++;						   
				int_ul_width = int_ul_width + ( Number($(this).parent().width() ));
													   
				$(this).click(function() {
					clearInterval(settings.timer_effect);
					$.slider.setEffectInterval(settings);
					settings.int_last_position = settings.int_current_position;
					settings.int_current_position = int_count;
					$.slider.slideToPosition(settings.int_current_position, settings);
				});
			});
			if (int_li_count > 0) {
				$('#slider-item-'+settings.int_current_position).addClass('on');
			}
		},
	
		slideToPosition: function(int_position, settings) {
			if (int_position >= settings.int_total_items) {
				settings.int_current_position = 0;	
			} else if (int_position < 0) {
				settings.int_current_position = settings.int_total_items-1;	
			}	
			var int_new_position = settings.int_total_slide_width * settings.int_current_position;
	
			switch(settings.itemEffect) {
				case "fade":
					function moveSlide() {
						$(settings.itemContainer+' .inner').css({ 'left': -int_new_position+'px' });
					}
					$(settings.itemContainer+' .inner').fadeOut(settings.transitionSpeed, moveSlide).fadeIn(settings.transitionSpeed)
				break;
				case "slide":
					$(settings.itemContainer+' .inner').animate({ left: -int_new_position+'px' });
				break;
			}
			$('#slider-item-'+settings.int_last_position).removeClass('on');  
			$('#slider-item-'+settings.int_current_position).addClass('on');
		}	
	}
	
	$.fn.extend({
		slider: function(options) {
			this.settings = {
				container: '#hero-slider',
				itemContainer: '.items',
				itemClass: '.item',
				counterContainer: '#slider-counter',
				itemEffect: 'slide', //fade or slide
				showSlideNumbers: false,
				autoSlide: true,
				waitBetweenItems: 6000, //milliseconds
				transitionSpeed: 500, //speed between transitions
				enableButtons: false, //Enable next and previous buttons
				forwardButton: '#work-item-next',
				backButton: '#work-item-previous' 
			}	
			
			if(options){
				$.extend(this.settings, options);
			}	
			var settings = this.settings;
			if (settings.enableButtons) {
				$(settings.forwardButton).click(function() {
					clearInterval(settings.timer_effect);
					$.slider.setEffectInterval(settings);
					
					$.slider.goToPreviousSlide(settings);									
				});
				$(settings.backButton).click(function() {
					clearInterval(settings.timer_effect);
					$.slider.setEffectInterval(settings);
					
					$.slider.goToNextSlide(settings);									
				});
			}
			if (settings.int_total_items > 1) {
				if (settings.autoSlide) { 
					$.slider.setEffectInterval();
				}
			}
			$.slider.init(this.settings);
		}
	});	
})(jQuery);	
