(function( $ ){
	var methods = {
		init : function(settings) {
			return this.each(function(){
		        var $this = $(this),
		        settings = $this.data('slider'),
		        tooltip = $('<div />', {
		          text : $this.attr('title')
		        });

				if (!settings) {
					$this.data('slider', {
			   			slider			: null,
						sliderId		: null,
						currentSlide 	: 1,
						slideCount		: 0,
						timer			: null,
						duration		: 5000,
						speed			: 100
			         });
			        settings = $this.data('slider')
				}
			
				settings.slider = $(this);
				settings.sliderId = settings.slider.attr('id');
				settings.slideCount = $('#' + settings.sliderId).find('.slide').length;
				
				$this.data('slider', settings);
				
				$('#' + settings.sliderId).find('.next').click(function() {
					methods.next(settings);
				});
				$('#' + settings.sliderId).find('.prev').click(function() {
					methods.prev(settings);
				});
				
				$('#' + settings.sliderId).find('.slide').hover(
					function() {
						$(this).find('span').animate({'margin-top' : -120}, {'duration' : 300, 'easing': 'swing'});
						methods.stop(settings);
					},
					function() {
						$(this).find('span').animate({'margin-top' : 0}, {'duration' : 300, 'easing': 'swing'});
						methods.start(settings);
					}
				);
				
				$('#' + settings.sliderId).localScroll({
					hash		: false,
					duration	: 500,
					easing		: 'swing',
					stop		: true,
					queue		: false,
					axis		: 'yx',
					target		: '#' + settings.sliderId + ' .slideBox',
					onBefore	: function(e, anchor, $target) {
						$('#' + settings.sliderId).find('.pagination li a').removeClass('active');
					},
					onAfter		: function(e, anchor, $target) {
						var className = '.' + $(e).attr('id') + '-button'; 
						$('#' + settings.sliderId).find(className).addClass('active');
						settings.currentSlide = parseInt($(e).attr('id').replace(settings.sliderId, ''));
						methods.reset(settings);
					}
				});			
				
				methods.start(settings);
				
				return this;
			})
			
		},
	    next : function(settings) {
			if (settings.currentSlide == settings.slideCount) {
				nextItem = 1;
			}
			else {
				nextItem = settings.currentSlide+1;
			}
			//alert('#' + settings.sliderId + ' .' + settings.sliderId + nextItem + '-button');
			$('#' + settings.sliderId).find('.' + settings.sliderId + nextItem + '-button').click();
			return this;
		},
	    prev : function(settings) {
			if (settings.currentSlide == 1) {
				nextItem = settings.slideCount;
			}
			else {
				nextItem = settings.currentSlide-1;
			}
			$('#' + settings.sliderId).find('.' + settings.sliderId + nextItem + '-button').click();
			return this;
		},
		start : function(settings) {
			$('#' + settings.sliderId).everyTime(settings.duration, settings.sliderId, function() {
				methods.next(settings);
			});
		},
		stop : function(settings) {
			$('#' + settings.sliderId).stopTime(settings.sliderId);
		},
		reset : function(settings) {
			methods.stop(settings);
			methods.start(settings);
		}
	};
	
	$.fn.slider = function( method ) {
		if (methods[method]) {
			return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
		} 
		else if (typeof method === 'object' || ! method) {
			return methods.init.apply(this, arguments);
		} 
		else {
			$.error('Method ' +  method + ' does not exist on jQuery.slider');
		}
	};
})( jQuery );
