var sliderCount = 1;
(function(jQuery) {
	jQuery.fn.easySlide = function(settings){
		settings = jQuery.extend({
			btnNext : null,
			btnPrev : null,
			autoSlide : false,
			autoSlideInterval : 7000,
			autoSlideStopWhenClicked : false,
			slideEaseDuration : 1000,
			slideEaseFunction : 'easeInOutExpo',
			dynamicMenu : false,
			scroll : 1
		}, settings);


		return this.each(function(){

			var slider = jQuery(this);


			var elementWidth = slider.find('li').width();
			var elementCount = slider.find('li').size();
			var elementContainerWidth = elementWidth*elementCount;
			var navClick = 0;
			var setTimeoutID = 0;

			//set width of ul
			jQuery(slider).children('ul').css({width : elementContainerWidth})

			// set width of li
			jQuery(slider).find('li').css({
				float : 'left',
				width : elementWidth
			})

			//set width for li


			var currentElement = 1;

			jQuery(settings.btnNext).click(function(){
				return go('next');
			})

			jQuery(settings.btnPrev).click(function(){
				return go('prev');
			})


			//create menu of slide if dynamicMenu : true
			if(settings.dynamicMenu){
				var dynamicMenu = "<div class='easyslide-nav'><ul></ul></div>"
				slider.after(dynamicMenu);
			}
			ul = jQuery('.easyslide-nav > ul');
			//create nav item
			jQuery(slider).find('li').each(function(n){
				ul.append("<li><a href='#" + (n+1) +"'>"+ (n+1) +"</a></li>")
			})



			jQuery('.easyslide-nav li').each(function(z) {
				// What happens when a nav link is clicked
				jQuery(this).bind("click", function() {
					navClick++;
					jQuery(this).addClass('currentElement').parents('ul').find('li').not(jQuery(this)).removeClass('currentElement');
					offset = - (elementWidth*z);
					currentElement = z + 1;
					jQuery(slider).children('ul').animate({ marginLeft: offset }, settings.slideEaseDuration, settings.slideEaseFunction);
					if(settings.autoSlide){
						clearTimeout(setTimeoutID);
						setTimeoutID = setTimeout(autoSlide,settings.autoSlideInterval);
					}

					return false;
				});
			});
			//go to hash, type: next, prev
			function go(type){
				if(type == 'next'){
					navClick --;
					if(currentElement == elementCount){
						offset = 0;
						currentElement = 1;
					}else{
						offset = - (elementWidth*currentElement)
						currentElement += 1;
					}
				}else if(type == 'prev'){
					navClick++;
					if(currentElement == 1){
						offset = - (elementWidth*(elementCount - 1));
						currentElement = elementCount;
					}else{
						currentElement -= 1;
						offset = - (elementWidth*(currentElement - 1))
					}
				}
				jQuery(slider).children('ul').animate({
					marginLeft : offset
				}, settings.slideEaseDuration, settings.slideEaseFunction);
				return false;
			}

			if (settings.autoSlide) {
				slider.children('ul').ready(function() {
					setTimeoutID = setTimeout(autoSlide,settings.autoSlideInterval);
				});
			};

			function autoSlide() {
				if (navClick == 0 || !settings.autoSlideStopWhenClicked) {
					if (currentElement == elementCount) {
						var offset = 0;
						currentElement = 1;
					} else {
						var offset = - (elementWidth*currentElement);
						currentElement += 1;
					};
					jQuery('.easyslide-nav').find('li').removeClass('currentElement').parents('ul').find('li:eq(' + (currentElement - 1) + ')').addClass('currentElement');
					jQuery(slider).children('ul').animate({ marginLeft: offset }, settings.slideEaseDuration, settings.slideEaseFunction);
					setTimeoutID = setTimeout(autoSlide,settings.autoSlideInterval);
				};
			};
			sliderCount++;
		})
	}
})(jQuery);

