var dragMomentum = new function () {    
    var howMuch = 100;  // change this for greater or lesser momentum
    var minDrift = 6; // minimum drift after a drag move
    var easeType = 'easeOutQuart';

    //  This easing type requires the plugin:  
    //  jquery.easing.1.3.js  http://gsgd.co.uk/sandbox/jquery/easing/

    var dXa =[0];
    var dYa =[0];
    var dTa =[0];

    this.start = function (elemId, Xa, Ya, Ta)  {
          dXa[elemId] = Xa;
        dYa[elemId] = Ya;
        dTa[elemId] = Ta;

      }; // END dragmomentum.start()

    this.end = function (elemId, Xb, Yb, Tb)  {        
        var Xa = dXa[elemId];
        var Ya = dYa[elemId];
        var Ta = dTa[elemId];
        var Xc = 0;
        var Yc = 0;

        var dDist = Math.sqrt(Math.pow(Xa-Xb, 2) + Math.pow(Ya-Yb, 2));
        var dTime = Tb - Ta;
        var dSpeed = dDist / dTime;
        dSpeed=Math.round(dSpeed*100)/100;

        var distX =  Math.abs(Xa - Xb);
        var distY =  Math.abs(Ya - Yb);

        var dVelX = (minDrift+(Math.round(distX*dSpeed*howMuch / (distX+distY))));
        var dVelY = (minDrift+(Math.round(distY*dSpeed*howMuch / (distX+distY))));

        var position = $('#'+elemId).position();
        var locX = position.left;
        var locY = position.top;

        if ( Xa > Xb ){  // we are moving left
            Xc = locX - dVelX;
        } else {  //  we are moving right
            Xc = locX + dVelX;
        }

        if ( Ya > Yb ){  // we are moving up
            Yc = (locY - dVelY);
        } else {  // we are moving down
            Yc = (locY + dVelY);
        }


        if(Xc < 0) Xc = 30;
        if(Xc > 850) Xc = 850 - $('#'+elemId).width() ;        
        
        var newLocX = Xc + 'px';
        var newLocY = Yc + 'px';
        
        
            $('#'+elemId).animate({ left:newLocX }, 700, easeType );

    }; // END  dragmomentum.end()

};  // END dragMomentum()

(function($) {
	var defaults = {};
	var options;
    var duration = 700;
	var methods = {
	    init:function($element) {
    	    var length = $element.find('#promoPic li').length;
	        var step = 0;

           if( $(window).width() <= 1140 ) {
               $element.addClass('b-smallpromo');
           } else {
	           $element.removeClass('b-smallpromo');
           }

	        
	        $(window).resize(function(){
	           if( $(window).width() <= 1140 ) {
	               $element.addClass('b-smallpromo');
	           } else {
    	           $element.removeClass('b-smallpromo');
	           }
	        });
	        
            $element.find('.b-promo-right').live('click', function(){            
                if(step >= length - 1) {
                    $element.find('#promoPic').stop(true, true).animate({marginLeft:'-=50'}, 150).animate({marginLeft:'+=50'}, 100);                            
                } else {
                    $element.find('#promoPic').stop(true, true).animate({marginLeft:'-=1000'}, duration);
                    step++;
                }
            });

            $element.find('.b-promo-left').live('click', function(){            
                if(step <= 0) {
                    $element.find('#promoPic').stop(true, true).animate({marginLeft:'+=50'}, 150).animate({marginLeft:'-=50'}, 100);                                                        
                } else {
                    $element.find('#promoPic').stop(true, true).animate({marginLeft:'+=1000'}, duration);
                    step--;
                }
            });
            
            $element.find('.b-promo-peoples div:not(.static)').draggable({
                axis: 'x',
                containment: ".b-promo-peoples",
                start: function(e, ui) {
                    dragMomentum.start(this.id, e.clientX, e.clientY, e.timeStamp);
                },
                stop: function(e, ui) {
                    dragMomentum.end(this.id, e.clientX, e.clientY, e.timeStamp);
                }  
            });

	    },
	    move: function($element, step) {

	    }
	};

	$.fn.promo = function(params) {
        //methods.init.apply( this, arguments );
        this.each(function() {
            methods.init( $(this) );
        });
        return this;
	};
})(jQuery);
