(function( $ ){
$.fn.hoverSlide = function ( options ) {    
	return this.each(function () {
		var $wrapper = $('> div', this).css('overflow', 'hidden'),
            $slider = $wrapper.find('> ul'),
            $items = $slider.find('> li'),
            $single = $items.filter(':first');
		
		var settings = {
			width : $single.outerWidth(true)*$items.length,
			speed : 200,
			dir : 0
		};
		
		if ( options ) { 
			$.extend( settings, options );
		}
		
		// slider function
		function slidePage( dir ) {
            var distance = dir > 0 ? settings.width-$wrapper.width() : 0,
				time = dir > 0 ? (settings.width - $wrapper.scrollLeft() - $wrapper.width()) / settings.speed* 1000 
							   : $wrapper.scrollLeft() / settings.speed* 1000;
				settings.dir = dir;
				
			if ($wrapper.scrollLeft() >= 0 && $wrapper.scrollLeft() < settings.width) {
				$wrapper.stop().animate({
					scrollLeft : distance
				}, time);
			}
            return false;
        }
		
		window.Slider_slidePage = slidePage;
		
		$wrapper.mousemove(function(e) {
			var dir = 0;
			if( (e.pageX - $(this).offset().left) < ($wrapper.width()*0.33) ) {
				dir = -1;
			} else if( (e.pageX - $(this).offset().left) > ($wrapper.width()*0.67) ) {
				dir = 1;
			} else {
				if( settings.dir != 0 ) {
					$wrapper.stop();
					settings.dir = 0;
				}
			}
			
			if( dir != settings.dir && dir != 0 ) {
				slidePage( dir );
			}
		}).mouseleave(function() {
			//var left = (settings.dir*40);
			$wrapper.stop();
			/*.animate({
				scrollLeft : '+=' + left
			}, 1000);*/
			settings.dir = 0;
		});
		
    });  
};
})( jQuery );
