Вход Регистрация
Файл: static/plugins/base/js/drag_and_drop_slider.js
Строк: 119
<?php
(function($){
    
    $.fn.
schemeSwitcher = function(options) {
        var 
$node = $(this);
        var 
$handle $node.find('.peep_dnd_slider_handle'); 
        var 
$markers $node.find(".peep_dnd_slider_marker");
        var 
$activeMarker $node.find('.peep_dnd_slider_item .current');
        var 
markersPositionMap = [];
        var 
moveTo = function( $toMarker ) {
            
prePosition $toMarker.outerWidth() + $toMarker.position().left - ( $handle.outerWidth() / ) -2;
            
$handle.css('left'prePosition);
        };
        
        var 
changeDelegate = function() {
            
            var 
$this = $(this); 
            
moveTo($this);
            
            if ( 
$this.hasClass('current') ) {
                return;
            }
            var 
lastMarker $node.find('.current').removeClass('current').get(0);
            
$this.addClass('current');
            
$activeMarker $this;
            if ( 
options.change !== undefined ) {
                var 
event = {
                    
markerthis,
                    
markerPointthis.pointer,
                    
lastMarkerlastMarker  
                
};
                
                
options.change.apply($node.get(0), [event]);
            }
        };
        
        var 
updateDelegate = function() {
            
            if ( 
options.update !== undefined ) {
                var 
event = {
                    
markerthis
                
};
                
                
options.update.apply($node.get(0), [event]);
            }
        };
                
        if ( ! 
$activeMarker.length ) {
            
$activeMarker = $( $markers.get(0) ).addClass('current');
        }
        
moveTo($activeMarker);
        
        
$handle.draggable({
            
containment'parent',
            
axis'x',
            
            
start: function() {
                $(
this).addClass('peep_dnd_slider_in_move');
            },
            
stop: function() {
                $(
this).removeClass('peep_dnd_slider_in_move');
                
updateDelegate.apply($activeMarker.get(0));
            },
            
helper: function(){
                return $(
this).clone(false).addClass('peep_dnd_slider_helper');  
            }
        });
        
        
$markers.droppable({
            
tolerance'touch',
            
accept'.peep_dnd_slider_handle',
            
overchangeDelegate
        
});
        
        for (var 
0$markers.lengthi++) {
            var 
$this = $($markers[i]);
            
            var 
$pointer = $('<div class="peep_dnd_slider_marker_point"></div>');
            
$node.append($pointer);
            var 
left $this.position().left $this.outerWidth() - 2;
            
$pointer.css('left'left);
            
this.pointer $pointer.get(0);
            
            var 
np $node.position(); 
            var 
markerX left np.left;
            var 
nml $markers[i+1] ? np.left + $($markers[i+1]).position().left np.left $node.outerWidth();
            var 
x1x2;
            if ( 
== 0) {
                
x1 np.left;
            } else {
                
x1 markersPositionMap[i-1].x2;
            }
            
            if (
$markers[i+1]) {
                
x2 np.left left + ( $($markers[i+1]).position().left left ) / 2;
            } else {
                
x2 np.left $node.outerWidth();
            }
            
            
markersPositionMap.push({
                
x1x1,
                
x2x2,
                
m$markers[i]
            });
        }

        
        
$node.click(function(e){
            var 
mpm markersPositionMap;
            
            for( var 
i=0mpm.lengthi++ ) {
                if ( 
e.clientX mpm[i].x1 && e.clientX mpm[i].x2 ) {
                    
changeDelegate.apply(mpm[i].m);
                    
updateDelegate.apply(mpm[i].m);
                    return;
                }
            }
        });
        
        return 
this;
    }
    
})(
jQuery)
?>
Онлайн: 1
Реклама