/*

	Mousescroll - Mousescroll jQuery Plugin
	Version : 1.0.0
	
	Author : Biber Ltd.

*/

(function($){
    $.fn.extend({
        mousescroll: function(options) {
            
            var defaults = {
                direction: 'horizontal',
                speed: 30
            };
            var options = $.extend(defaults, options);
            
            return $(this).each(function(){
                
                /* Thumbs scroll effect */
                var $thumbs =  $(this);
                var moveinterval = 0;
                var velocity = 0;
                
                var outerSize = $thumbs.outerWidth();
                var wrapperSize = $(window).width();
                
                if(options.direction == 'vertical') {
                    outerSize = $thumbs.outerHeight();
                    wrapperSize = $('.scroll-wrapper').height();
                }
                
                clearInterval(moveinterval);
                
                // recalculate on resize
                var thumbsLeft = (outerSize - wrapperSize) * -1;
                
                if($thumbs.position().left <= thumbsLeft) {
                    //$thumbs.css('left', thumbsLeft);  
                }
                
                if(outerSize > wrapperSize){
                    
                    var move = function() {
                        
                        if(options.direction == 'horizontal') {
                            var newpos = $thumbs.position().left + velocity;
                            if (newpos >= 0) {
                                $thumbs.css('left', 0);
                                return;
                            }
                            if (newpos <= (outerSize - wrapperSize) * -1) {
                                $thumbs.css('left', (outerSize - wrapperSize) * -1);
                                return;
                            }
                            $thumbs.css('left', newpos);    
                        }
                        
                        else if(options.direction == 'vertical') {
                            var position = $thumbs.position().top - 45;
                            var newpos = position + velocity;
                            
                            if (newpos >= 0) {
                                $thumbs.css('top', 0);
                                return;
                            }
                            if (newpos <= (outerSize - wrapperSize) * -1) {
                                $thumbs.css('top', (outerSize - wrapperSize) * -1);
                                return;
                            }
                            $thumbs.css('top', newpos);
                        }
                    } 
                    
                    $thumbs.unbind('hover');
                    
                    $thumbs.hover(function() {
                        moveinterval = setInterval(move, 30);
                    }, function() {
                        velocity = 0;
                        clearInterval(moveinterval);
                    }); 
                    $thumbs.unbind('mousemove');
                    
                    $thumbs.mousemove(function(e){
                        var pos;
                        
                        if(options.direction == 'horizontal') {
                            pos = (((e.pageX * 2) - wrapperSize) / 2) / options.speed;    
                        }
                        
                        else if(options.direction == 'vertical') {
                            var offset = $('.scroll-wrapper').offset().top;
                            pos = ((e.pageY - offset) - (wrapperSize / 2 )) / options.speed;
                        }  
                        
                        if (pos > 3) {
                            pos = pos - 3;
                        }
                        else if (pos < - 3) {
                            pos = pos + 3;
                        }
                        else {
                            pos = 0;
                        } 
                        velocity = pos * -1;
                    });   
                }  
            });
        }        
    });   

})(jQuery);
