Вход Регистрация
Файл: Luxe-Shop v6.0/templates/premium/js/baron.full.js
Строк: 1226
<?php
(function(windowundefined) {
    
'use strict';

    if (!
window) return; // Server side

var
    
_baron baron// Stored baron value for noConflict usage
    
pos = ['left''top''right''bottom''width''height'],
    
origin = {
        
v: { // Vertical
            
x'Y'pospos[1], oppospos[3], crossPospos[0], crossOpPospos[2], sizepos[5], crossSizepos[4],
            
client'clientHeight'crossClient'clientWidth'crossScroll'scrollWidth'offset'offsetHeight'crossOffset'offsetWidth'offsetPos'offsetTop',
            
scroll'scrollTop'scrollSize'scrollHeight'
        
},
        
h: { // Horizontal
            
x'X'pospos[0], oppospos[2], crossPospos[1], crossOpPospos[3], sizepos[4], crossSizepos[5],
            
client'clientWidth'crossClient'clientHeight'crossScroll'scrollHeight'offset'offsetWidth'crossOffset'offsetHeight'offsetPos'offsetLeft',
            
scroll'scrollLeft'scrollSize'scrollWidth'
        
}
    },

    
each = function(objiterator) {
        var 
0;

        if (
obj.length === undefined || obj === windowobj = [obj];

        while (
obj[i]) {
            
iterator.call(thisobj[i], i);
            
i++;
        }
    },

    
baron = function(params) {
        var 
jQueryMode,
            
roots,
            $;

        
params params || {};
        $ = 
params.$ || window.jQuery;
        
jQueryMode this instanceof $;  // this - window or jQuery instance

        
if (jQueryMode) {
            
params.root roots this;
        } else {
            
roots = $(params.root || params.scroller);
        }

        return new 
baron.fn.constructor(rootsparams, $);
    };

    
baron.fn = {
        
constructor: function(rootsinput, $) {
            var 
params validate(input);

            
params.$ = $;
            
each.call(thisroots, function(rooti) {
                var 
localParams = clone(params);

                if (
params.root && params.scroller) {
                    
localParams.scroller params.$(params.scrollerroot);
                    if (!
localParams.scroller.length) {
                        
localParams.scroller root;
                    }
                } else {
                    
localParams.scroller root;
                }

                
localParams.root root;
                
this[i] = init(localParams);
                
this.length 1;
            });

            
this.params params;
        },

        
dispose: function() {
            var 
params this.params;

            if (
this[0]) { /* Если есть хотя бы 1 рабочий инстанс */
                
each(this, function(item) {
                    
item.dispose(params);
                });
            }
            
this.params null;
        },

        
update: function() {
            var 
0;

            while (
this[i]) {
                
this[i].update.apply(this[i], arguments);
                
i++;
            }
        },

        
baron: function(params) {
            
params.root = [];
            
params.scroller this.params.scroller;

            
each.call(thisthis, function(elem) {
                
params.root.push(elem.root);
            });
            
params.direction = (this.params.direction == 'v') ? 'h' 'v';
            
params._chain true;

            return 
baron(params);
        }
    };

    function 
manageEvents(itemeventManagermode) {
        
item._eventHandlers item._eventHandlers || [ // Creating new functions for one baron item only one time
            
{
                
// onScroll:
                
elementitem.scroller,

                
handler: function(e) {
                    
item.scroll(e);
                },

                
type'scroll'
            
}, {
                
// onKeyup (textarea):
                
elementitem.scroller,

                
handler: function() {
                    
item.update();
                },

                
type'keyup'
            
}, {
                
// onMouseDown:
                
elementitem.bar,

                
handler: function(e) {
                    
e.preventDefault(); // Text selection disabling in Opera... and all other browsers?
                    
item.selection(); // Disable text selection in ie8
                    
item.drag.now 1// Save private byte
                
},

                
type'touchstart mousedown'
            
}, {
                
// onMouseUp:
                
elementdocument,

                
handler: function() {
                    
item.selection(1); // Enable text selection
                    
item.drag.now 0;
                },

                
type'mouseup blur touchend'
            
}, {
                
// onCoordinateReset:
                
elementdocument,

                
handler: function(e) {
                    if (
e.button != 2) { // Not RM
                        
item._pos0(e);
                    }
                },

                
type'touchstart mousedown'
            
}, {
                
// onMouseMove:
                
elementdocument,

                
handler: function(e) {
                    if (
item.drag.now) {
                        
item.drag(e);
                    }
                },

                
type'mousemove touchmove'
            
}, {
                
// onResize:
                
elementwindow,

                
handler: function() {
                    
item.update();
                },

                
type'resize'
            
}, {
                
// sizeChange:
                
elementitem.root,

                
handler: function() {
                    
item.update();
                },

                
type'sizeChange'
            
}
        ];

        
each(item._eventHandlers, function(event) {
            if (
event.element) {
                
eventManager(event.elementevent.typeevent.handlermode);
            }
        });

        
// if (item.scroller) {
        //     event(item.scroller, 'scroll', item._eventHandlers.onScroll, mode);
        // }
        // if (item.bar) {
        //     event(item.bar, 'touchstart mousedown', item._eventHandlers.onMouseDown, mode);
        // }
        // event(document, 'mouseup blur touchend', item._eventHandlers.onMouseUp, mode);
        // event(document, 'touchstart mousedown', item._eventHandlers.onCoordinateReset, mode);
        // event(document, 'mousemove touchmove', item._eventHandlers.onMouseMove, mode);
        // event(window, 'resize', item._eventHandlers.onResize, mode);
        // if (item.root) {
        //     event(item.root, 'sizeChange', item._eventHandlers.onResize, mode); // Custon event for alternate baron update mechanism
        // }
    
}

    function 
manageAttr(nodedirectionmode) {
        var 
attrName 'data-baron-' direction;

        if (
mode == 'on') {
            
node.setAttribute(attrName'inited');
        } else if (
mode == 'off') {
            
node.removeAttribute(attrName);
        } else {
            return 
node.getAttribute(attrName);
        }
    }

    function 
init(params) {
        if (
manageAttr(params.rootparams.direction)) throw new Error('Second baron initialization');

        var 
out = new item.prototype.constructor(params); // __proto__ of returning object is baron.prototype

        
manageEvents(outparams.event'on');

        
manageAttr(out.rootparams.direction'on');

        
out.update({
            
initModetrue
        
});

        return 
out;
    }

    function clone(
input) {
        var 
output = {};

        
input input || {};

        for (var 
key in input) {
            if (
input.hasOwnProperty(key)) {
                
output[key] = input[key];
            }
        }

        return 
output;
    }

    function 
validate(input) {
        var 
output = clone(input);

        
output.direction output.direction || 'v';

        var 
event input.event || function(elemeventfuncmode) {
            
output.$(elem)[mode || 'on'](eventfunc);
        };

        
output.event = function(elemsefuncmode) {
            
each(elems, function(elem) {
                
event(elemefuncmode);
            });
        };

        return 
output;
    }

    function 
fire(eventName) {
        
/* jshint validthis:true */
        
if (this.events && this.events[eventName]) {
            for (var 
this.events[eventName].length i++) {
                var 
args = Array.prototype.slice.callarguments);

                
this.events[eventName][i].apply(thisargs);
            }
        }
    }

    var 
item = {};

    
item.prototype = {
        
constructor: function(params) {
            var $,
                
barPos,
                
scrollerPos0,
                
track,
                
resizePauseTimer,
                
scrollPauseTimer,
                
scrollingTimer,
                
pause,
                
scrollLastFire,
                
resizeLastFire,
                
oldBarSize;

            
resizeLastFire scrollLastFire = new Date().getTime();

            $ = 
this.$ = params.$;
            
this.event params.event;
            
this.events = {};

            function 
getNode(selcontext) {
                return $(
selcontext)[0]; // Can be undefined
            
}

            
// DOM elements
            
this.root params.root// Always html node, not just selector
            
this.scroller getNode(params.scroller); // (params.scroller) ? getNode(params.scroller, this.root) : this.root;
            
this.bar getNode(params.barthis.root);
            
track this.track getNode(params.trackthis.root);
            if (!
this.track && this.bar) {
                
track this.bar.parentNode;
            }
            
this.clipper this.scroller.parentNode;

            
// Parameters
            
this.direction params.direction;
            
this.origin origin[this.direction];
            
this.barOnCls params.barOnCls;
            
this.scrollingCls params.scrollingCls;
            
this.barTopLimit 0;
            
pause params.pause 1000 || 0;

            
// Updating height or width of bar
            
function setBarSize(size) {
                
/* jshint validthis:true */
                
var barMinSize this.barMinSize || 20;

                if (
size && size barMinSize) {
                    
size barMinSize;
                }

                if (
this.bar) {
                    $(
this.bar).css(this.origin.sizeparseInt(size10) + 'px');
                }
            }

            
// Updating top or left bar position
            
function posBar(pos) {
                
/* jshint validthis:true */
                
if (this.bar) {
                    $(
this.bar).css(this.origin.pos, +pos 'px');
                }
            }

            
// Free path for bar
            
function k() {
                
/* jshint validthis:true */
                
return track[this.origin.client] - this.barTopLimit this.bar[this.origin.offset];
            }

            
// Relative content top position to bar top position
            
function relToPos(r) {
                
/* jshint validthis:true */
                
return k.call(this) + this.barTopLimit;
            }

            
// Bar position to relative content position
            
function posToRel(t) {
                
/* jshint validthis:true */
                
return (this.barTopLimit) / k.call(this);
            }

            
// Cursor position in main direction in px // Now with iOs support
            
this.cursor = function(e) {
                return 
e['client' this.origin.x] || (((e.originalEvent || e).touches || {})[0] || {})['page' this.origin.x];
            };

            
// Text selection pos preventing
            
function dontPosSelect() {
                return 
false;
            }

            
this.pos = function(x) { // Absolute scroller position in px
                
var ie 'page' this.origin.'Offset',
                    
key = (this.scroller[ie]) ? ie this.origin.scroll;

                if (
!== undefinedthis.scroller[key] = x;

                return 
this.scroller[key];
            };

            
this.rpos = function(r) { // Relative scroller position (0..1)
                
var free this.scroller[this.origin.scrollSize] - this.scroller[this.origin.client],
                    
x;

                if (
r) {
                    
this.pos(free);
                } else {
                    
this.pos();
                }

                return 
/ (free || 1);
            };

            
// Switch on the bar by adding user-defined CSS classname to scroller
            
this.barOn = function(dispose) {
                if (
this.barOnCls) {
                    if (
dispose || this.scroller[this.origin.client] >= this.scroller[this.origin.scrollSize]) {
                        $(
this.root).removeClass(this.barOnCls);
                    } else {
                        $(
this.root).addClass(this.barOnCls);
                    }
                }
            };

            
this._pos0 = function(e) {
                
scrollerPos0 this.cursor(e) - barPos;
            };

            
this.drag = function(e) {
                
this.scroller[this.origin.scroll] = posToRel.call(thisthis.cursor(e) - scrollerPos0) * (this.scroller[this.origin.scrollSize] - this.scroller[this.origin.client]);
            };

            
// Text selection preventing on drag
            
this.selection = function(enable) {
                
this.event(document'selectpos selectstart'dontPosSelectenable 'off' 'on');
            };

            
// onResize & DOM modified handler
            
this.resize = function() {
                var 
self this,
                    
delay 0;

                if (new 
Date().getTime() - resizeLastFire pause) {
                    
clearTimeout(resizePauseTimer);
                    
delay pause;
                }

                function 
upd() {
                    var 
delta,
                        
client;

                    
self.barOn();

                    
client self.scroller[self.origin.crossClient];

                    
delta self.scroller[self.origin.crossOffset] - client;

                    if (
params.freeze && !self.clipper.style[self.origin.crossSize]) { // Sould fire only once
                        
$(self.clipper).css(self.origin.crossSizeself.clipper[self.origin.crossClient] - delta 'px');
                    }

                    $(
self.scroller).css(self.origin.crossSizeself.clipper[self.origin.crossClient] + delta 'px');

                    Array.
prototype.unshift.call(arguments'resize');
                    
fire.apply(selfarguments);

                    
resizeLastFire = new Date().getTime();
                }

                if (
delay) {
                    
resizePauseTimer setTimeout(upddelay);
                } else {
                    
upd();
                }
            };

            
this.updatePositions = function() {
                var 
newBarSize,
                    
self this;

                if (
self.bar) {
                    
newBarSize = (track[self.origin.client] - self.barTopLimit) * self.scroller[self.origin.client] / self.scroller[self.origin.scrollSize];

                    
// Positioning bar
                    
if (parseInt(oldBarSize10) != parseInt(newBarSize10)) {
                        
setBarSize.call(selfnewBarSize);
                        
oldBarSize newBarSize;
                    }

                    
barPos relToPos.call(selfself.rpos());

                    
posBar.call(selfbarPos);
                }

                Array.
prototype.unshift.callarguments'scroll' );
                
fire.apply(selfarguments);

                
scrollLastFire = new Date().getTime();
            };

            
// onScroll handler
            
this.scroll = function() {
                var 
delay 0,
                    
self this;

                if (new 
Date().getTime() - scrollLastFire pause) {
                    
clearTimeout(scrollPauseTimer);
                    
delay pause;
                }

                if (new 
Date().getTime() - scrollLastFire pause) {
                    
clearTimeout(scrollPauseTimer);
                    
delay pause;
                }

                if (
delay) {
                    
scrollPauseTimer setTimeout(function() {
                        
self.updatePositions();
                    }, 
delay);
                } else {
                    
self.updatePositions();
                }

                if (
self.scrollingCls) {
                    if (!
scrollingTimer) {
                        
this.$(this.scroller).addClass(this.scrollingCls);
                    }
                    
clearTimeout(scrollingTimer);
                    
scrollingTimer setTimeout(function() {
                        
self.$(self.scroller).removeClass(self.scrollingCls);
                        
scrollingTimer undefined;
                    }, 
300);
                }

            };

            return 
this;
        },

        
update: function(params) {
            
fire.call(this'upd'params); // Update all plugins' params

            
this.resize(1);
            
this.updatePositions();

            return 
this;
        },

        
dispose: function(params) {
            
manageEvents(thisthis.event'off');
            
manageAttr(this.rootparams.direction'off');
            $(
this.scroller).css(this.origin.crossSize'');
            
this.barOn(true);
            
fire.call(this'dispose');
        },

        
on: function(eventNamefuncarg) {
            var 
names eventName.split(' ');

            for (var 
names.length i++) {
                if (
names[i] == 'init') {
                    
func.call(thisarg);
                } else {
                    
this.events[names[i]] = this.events[names[i]] || [];

                    
this.events[names[i]].push(function(userArg) {
                        
func.call(thisuserArg || arg);
                    });
                }
            }
        }
    };

    
baron.fn.constructor.prototype baron.fn;
    
item.prototype.constructor.prototype item.prototype;

    
// Use when you need "baron" global var for another purposes
    
baron.noConflict = function() {
        
window.baron _baron// Restoring original value of "baron" global var

        
return baron;
    };

    
baron.version '0.7.7';

    if ($ && $.
fn) { // Adding baron to jQuery as plugin
        
$.fn.baron baron;
    }
    
window.baron baron// Use noConflict method if you need window.baron var for another purposes
    
if (window['module'] && module.exports) {
        
module.exports baron.noConflict();
    }
})(
window);

/* Fixable elements plugin for baron 0.6+ */
(function(windowundefined) {
    var 
fix = function(userParams) {
        var 
elementsviewPortSize,
            
params = { // Default params
                
outside'',
                
inside'',
                
before'',
                
after'',
                
past'',
                
future'',
                
radius0,
                
minView0
            
},
            
topFixHeights = [], // inline style for element
            
topRealHeights = [], // ? something related to negative margins for fixable elements
            
headerTops = [], // offset positions when not fixed
            
scroller this.scroller,
            
eventManager this.event,
            $ = 
this.$,
            
self this;

        
// i - number of fixing element, pos - fix-position in px, flag - 1: top, 2: bottom
        // Invocation only in case when fix-state changed
        
function fixElement(iposflag) {
            var 
ori flag == 'pos' 'oppos';

            if (
viewPortSize < (params.minView || 0)) { // No headers fixing when no enought space for viewport
                
pos undefined;
            }

            
// Removing all fixing stuff - we can do this because fixElement triggers only when fixState really changed
            
this.$(elements[i]).css(this.origin.pos'').css(this.origin.oppos'').removeClass(params.outside);

            
// Fixing if needed
            
if (pos !== undefined) {
                
pos += 'px';
                
this.$(elements[i]).css(this.origin[ori], pos).addClass(params.outside);
            }
        }

        function 
bubbleWheel(e) {
            try {
                
document.createEvent('WheelEvent'); // i - for extra byte
                // evt.initWebKitWheelEvent(deltaX, deltaY, window, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey);
                
i.initWebKitWheelEvent(e.originalEvent.wheelDeltaXe.originalEvent.wheelDeltaY);
                
scroller.dispatchEvent(i);
                
e.preventDefault();
            } catch (
e) {}
        }

        function 
init(_params) {
            var 
pos;

            for (var 
key in _params) {
                
params[key] = _params[key];
            }

            
elements this.$(params.elementsthis.scroller);

            if (
elements) {
                
viewPortSize this.scroller[this.origin.client];
                for (var 
elements.length i++) {
                    
// Variable header heights
                    
pos = {};
                    
pos[this.origin.size] = elements[i][this.origin.offset];
                    if (
elements[i].parentNode !== this.scroller) {
                        
this.$(elements[i].parentNode).css(pos);
                    }
                    
pos = {};
                    
pos[this.origin.crossSize] = elements[i].parentNode[this.origin.crossClient];
                    
this.$(elements[i]).css(pos);

                    
// Between fixed headers
                    
viewPortSize -= elements[i][this.origin.offset];

                    
headerTops[i] = elements[i].parentNode[this.origin.offsetPos]; // No paddings for parentNode

                    // Summary elements height above current
                    
topFixHeights[i] = (topFixHeights[1] || 0); // Not zero because of negative margins
                    
topRealHeights[i] = (topRealHeights[1] || Math.min(headerTops[i], 0));

                    if (
elements[1]) {
                        
topFixHeights[i] += elements[1][this.origin.offset];
                        
topRealHeights[i] += elements[1][this.origin.offset];
                    }

                    if ( !(
== && headerTops[i] == 0)/* && force */) {
                        
this.event(elements[i], 'mousewheel'bubbleWheel'off');
                        
this.event(elements[i], 'mousewheel'bubbleWheel);
                    }
                }

                if (
params.limiter && elements[0]) { // Bottom edge of first header as top limit for track
                    
if (this.track && this.track != this.scroller) {
                        
pos = {};
                        
pos[this.origin.pos] = elements[0].parentNode[this.origin.offset];
                        
this.$(this.track).css(pos);
                    } else {
                        
this.barTopLimit elements[0].parentNode[this.origin.offset];
                    }
                    
// this.barTopLimit = elements[0].parentNode[this.origin.offset];
                    
this.scroll();
                }

                if (
params.limiter === false) { // undefined (in second fix instance) should have no influence on bar limit
                    
this.barTopLimit 0;
                }
            }

            var 
event = {
                
elementelements,

                
handler: function() {
                    var 
parent = $(this)[0].parentNode,
                        
top parent.offsetTop,
                        
num;

                    
// finding num -> elements[num] === this
                    
for (var elements.length i++ ) {
                        if (
elements[i] === thisnum i;
                    }

                    var 
pos top topFixHeights[num];

                    if (
params.scroll) { // User defined callback
                        
params.scroll({
                            
x1self.scroller.scrollTop,
                            
x2pos
                        
});
                    } else {
                        
self.scroller.scrollTop pos;
                    }
                },

                
type'click'
            
};

            if (
params.clickable) {
                
this._eventHandlers.push(event); // For auto-dispose
                // eventManager(event.element, event.type, event.handler, 'off');
                
eventManager(event.elementevent.typeevent.handler'on');
            }
        }

        
this.on('init'inituserParams);

        var 
fixFlag = [], // 1 - past, 2 - future, 3 - current (not fixed)
            
gradFlag = [];
        
this.on('init scroll', function() {
            var 
fixStatehTopgradState;

            if (
elements) {
                var 
change;

                
// fixFlag update
                
for (var elements.length i++) {
                    
fixState 0;
                    if (
headerTops[i] - this.pos() < topRealHeights[i] + params.radius) {
                        
// Header trying to go up
                        
fixState 1;
                        
hTop topFixHeights[i];
                    } else if (
headerTops[i] - this.pos() > topRealHeights[i] + viewPortSize params.radius) {
                        
// Header trying to go down
                        
fixState 2;
                        
// console.log('topFixHeights[i] + viewPortSize + topRealHeights[i]', topFixHeights[i], this.scroller[this.origin.client], topRealHeights[i]);
                        
hTop this.scroller[this.origin.client] - elements[i][this.origin.offset] - topFixHeights[i] - viewPortSize;
                        
// console.log('hTop', hTop, viewPortSize, elements[this.origin.offset], topFixHeights[i]);
                        //(topFixHeights[i] + viewPortSize + elements[this.origin.offset]) - this.scroller[this.origin.client];
                    
} else {
                        
// Header in viewport
                        
fixState 3;
                        
hTop undefined;
                    }

                    
gradState false;
                    if (
headerTops[i] - this.pos() < topRealHeights[i] || headerTops[i] - this.pos() > topRealHeights[i] + viewPortSize) {
                        
gradState true;
                    }

                    if (
fixState != fixFlag[i] || gradState != gradFlag[i]) {
                        
fixElement.call(thisihTopfixState);
                        
fixFlag[i] = fixState;
                        
gradFlag[i] = gradState;
                        
change true;
                    }
                }

                
// Adding positioning classes (on last top and first bottom header)
                
if (change) { // At leats one change in elements flag structure occured
                    
for (elements.length i++) {
                        if (
fixFlag[i] == && params.past) {
                            
this.$(elements[i]).addClass(params.past).removeClass(params.future);
                        }

                        if (
fixFlag[i] == && params.future) {
                            
this.$(elements[i]).addClass(params.future).removeClass(params.past);
                        }

                        if (
fixFlag[i] == 3) {
                            if (
params.future || params.pastthis.$(elements[i]).removeClass(params.past).removeClass(params.future);
                            if (
params.insidethis.$(elements[i]).addClass(params.inside);
                        } else if (
params.inside) {
                            
this.$(elements[i]).removeClass(params.inside);
                        }

                        if (
fixFlag[i] != fixFlag[1] && fixFlag[i] == && params.before) {
                            
this.$(elements[i]).addClass(params.before).removeClass(params.after); // Last top fixed header
                        
} else if (fixFlag[i] != fixFlag[1] && fixFlag[i] == && params.after) {
                            
this.$(elements[i]).addClass(params.after).removeClass(params.before); // First bottom fixed header
                        
} else {
                            
this.$(elements[i]).removeClass(params.before).removeClass(params.after);
                        }

                        if (
params.grad) {
                            if (
gradFlag[i]) {
                                
this.$(elements[i]).addClass(params.grad);
                            } else {
                                
this.$(elements[i]).removeClass(params.grad);
                            }
                        }
                    }
                }
            }
        });

        
this.on('resize upd', function(updParams) {
            
init.call(thisupdParams && updParams.fix);
        });
    };

    
baron.fn.fix = function(params) {
        var 
0;

        while (
this[i]) {
            
fix.call(this[i], params);
            
i++;
        }

        return 
this;
    };
})(
window);
/* Controls plugin for baron 0.6+ */
(function(windowundefined) {
    var 
controls = function(params) {
        var 
forwardbackwardtrackscreen,
            
self this// AAAAAA!!!!!11
            
event;

        
screen params.screen || 0.9;

        if (
params.forward) {
            
forward this.$(params.forwardthis.clipper);

            
event = {
                
elementforward,

                
handler: function() {
                    var 
self.pos() - params.delta || 30;

                    
self.pos(y);
                },

                
type'click'
            
};

            
this._eventHandlers.push(event); // For auto-dispose
            
this.event(event.elementevent.typeevent.handler'on');
        }

        if (
params.backward) {
            
backward this.$(params.backwardthis.clipper);

            
event = {
                
elementbackward,

                
handler: function() {
                    var 
self.pos() + params.delta || 30;

                    
self.pos(y);
                },

                
type'click'
            
};

            
this._eventHandlers.push(event); // For auto-dispose
            
this.event(event.elementevent.typeevent.handler'on');
        }

        if (
params.track) {
            if (
params.track === true) {
                
track this.track;
            } else {
                
track this.$(params.trackthis.clipper)[0];
            }

            if (
track) {
                
event = {
                    
elementtrack,

                    
handler: function(e) {
                        var 
e['offset' self.origin.x],
                            
xBar self.bar[self.origin.offsetPos],
                            
sign 0;

                        if (
xBar) {
                            
sign = -1;
                        } else if (
xBar self.bar[self.origin.offset]) {
                            
sign 1;
                        }

                        var 
self.pos() + sign screen self.scroller[self.origin.client];
                        
self.pos(y);
                    },

                    
type'mousedown'
                
};

                
this._eventHandlers.push(event); // For auto-dispose
                
this.event(event.elementevent.typeevent.handler'on');
            }
        }
    };

    
baron.fn.controls = function(params) {
        var 
0;

        while (
this[i]) {
            
controls.call(this[i], params);
            
i++;
        }

        return 
this;
    };
})(
window);
/* Autotests plugin for baron 0.6+ (for developers) */
(function(windowundefined) {
    var 
test = function(params) {
        var 
errCount 0,
            
totalCount 0;

        var 
log = function(typemsgobj) {
            var 
text type ': ' msg;

            switch (
type) {
                case 
'log'css 'color: #0b0'; break;
                case 
'warn'css 'color: #fc9'; break;
                case 
'error'css 'color: #f00'; break;
            }
            
totalCount++;
            if (
type == 'log') {
                
errCount++;
            }

            
console.log('%c ' totalCount '. ' textcss);
            if (
obj !== undefined) {
                
console.log(obj);
            }
        };

        if (
this.scroller && this.scroller.nodeType === 1) {
            
log('log''Scroller defined and has proper nodeType value'this.scroller);
        } else {
            
log('error''Scroller not defined or has wrong type (should be html node).'this.scroller);
        }

        if (
this.$ && typeof this.$ == 'function') {
            
log('log''Local $ defined and it is a function');
        } else {
            
log('error''Local $ has wrong value or is not defined, or custom params.dom and params.selector not defined'params.$);
        }

        if (
this.scroller.getAttribute('data-baron-v')) {
            
log('log''Baron initialized in vertical direction'this.scroller.getAttribute('data-baron-v'));
            if (
this.scroller.clientHeight this.scroller.scrollHeight && this.scroller.getAttribute('data-baron-v')) {
                
log('log''There are enought space for scrolling in vertical direction right now'this.scroller.scrollHeight this.scroller.clientHeight 'px');
            } else {
                
log('log''There are not enought space for scrolling in vertical direction right now');
            }
        }
        if (
this.scroller.getAttribute('data-baron-h')) {
            
log('log''Baron initialized in horizontal direction'this.scroller.getAttribute('data-baron-h'));
            if (
this.scroller.clientWidth this.scroller.scrollWidth) {
                
log('log''There are enought space for scrolling in horizontal direction right now'this.scroller.scrollWidth this.scroller.clientWidth 'px');
            } else {
                
log('log''There are not enought space for scrolling in horizontal direction right now');
            }
        }

        if (
this.bar && this.bar.nodeType === 1) {
            
log('log''Bar defined and has proper nodeType value'this.bar);
        } else {
            
log('warn''Bar not defined or has wrong type (should be html node).'this.bar);
        }

        if (
this.barOnCls) {
            
log('log''CSS classname barOnCls defined'this.barOnCls);
        } else {
            
log('warn''barOnCls not defined - bar will be visible or not visible all the time'this.barOnCls);
        }

        
// Preformance test
        
var t1 = new Date().getTime(),
            
x;
        for (var 
1000 += 10) {
            
% (this.scroller[this.origin.scrollSize] - this.scroller[this.origin.client]);
            
this.pos(x);
            
this.event(this.scroller'scroll'undefined'trigger');
        }
        var 
t2 = new Date().getTime();
        
log('log''Preformance test: ' + (t2 t1) / 1000 ' milliseconds per scroll event');

        
log('log''Result is ' errCount ' / ' totalCount 'n');
    };

    
baron.fn.test = function(params) {
        var 
0;

        while (
this[i]) {
            
test.call(this[i], params);
            
i++;
        }

        return 
this;
    };
})(
window);
/* Pull to load plugin for baron 0.6+ */
(function(windowundefined) {
    var 
pull = function(params) {
        var 
block this.$(params.block),
            
size params.size || this.origin.size,
            
limit params.limit || 80,
            
onExpand params.onExpand,
            
elements params.elements || [],
            
inProgress params.inProgress || '',
            
self this,
            
_insistence 0,
            
_zeroXCount 0,
            
_interval,
            
_timer,
            
_x 0,
            
_onExpandCalled,
            
_waiting params.waiting || 500,
            
_on;

        function 
getSize() {
            return 
self.scroller[self.origin.scroll] + self.scroller[self.origin.offset];
        }

        
// Scroller content height
        
function getContentSize() {
            return 
self.scroller[self.origin.scrollSize];
        }

        
// Scroller height
        
function getScrollerSize() {
            return 
self.scroller[self.origin.client];
        }

        function 
step(xforce) {
            var 
0.0005;

            return 
Math.floor(force * (550));
        }

        function 
toggle(on) {
            
_on on;

            if (
on) {
                
update(); // First time with no delay
                
_interval setInterval(update200);
            } else {
                
clearInterval(_interval);
            }
        }

        function 
update() {
            var 
pos = {},
                
height getSize(),
                
scrollHeight getContentSize(),
                
dx,
                
op4,
                
scrollInProgress _insistence == 1;

            
op4 0// Возвращающая сила
            
if (_insistence 0) {
                
op4 40;
            }
            
//if (_insistence > -1) {
                
dx step(_xop4);
                if (
height >= scrollHeight _x && _insistence > -1) {
                    if (
scrollInProgress) {
                        
_x += dx;
                    }
                } else {
                    
_x 0;
                }

                if (
_x 0_x 0;

                
pos[size] = _x 'px';
                if (
getScrollerSize() <= getContentSize()) {
                    
self.$(block).css(pos);
                    for (var 
elements.length i++) {
                        
self.$(elements[i].self).css(elements[i].propertyMath.min(_x limit 100100) + '%');
                    }
                }

                if (
inProgress && _x) {
                    
self.$(self.root).addClass(inProgress);
                }

                if (
_x == 0) {
                    if (
params.onCollapse) {
                        
params.onCollapse();
                    }
                }

                
_insistence 0;
                
_timer setTimeout(function() {
                    
_insistence = -1;
                }, 
_waiting);
            
//}

            
if (onExpand && _x limit && !_onExpandCalled) {
                
onExpand();
                
_onExpandCalled true;
            }

            if (
_x == 0) {
                
_zeroXCount++;
            } else {
                
_zeroXCount 0;
            }
            if (
_zeroXCount 1) {
                
toggle(false);
                
_onExpandCalled false;
                if (
inProgress) {
                    
self.$(self.root).removeClass(inProgress);
                }
            }
        }

        
this.on('init', function() {
            
toggle(true);
        });

        
this.on('dispose', function() {
            
toggle(false);
        });

        
this.event(this.scroller'mousewheel DOMMouseScroll', function(e) {
            var 
down e.wheelDelta || (e.originalEvent && e.originalEvent.wheelDelta 0) || e.detail 0;

            if (
down) {
                
_insistence 1;
                
clearTimeout(_timer);
                if (!
_on && getSize() >= getContentSize()) {
                    
toggle(true);
                }
            }
            
//  else {
            //     toggle(false);
            // }
        
});
    };

    
baron.fn.pull = function(params) {
        var 
0;

        while (
this[i]) {
            
pull.call(this[i], params);
            
i++;
        }


        return 
this;
    };
})(
window);
/* Autoupdate plugin for baron 0.6+ */
(function(windowundefined) {
    var 
MutationObserver window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver || null;

    var 
autoUpdate = function() {
        var 
self this;

        
this._observer = new MutationObserver(function() {
            
self.update();
        });

        
this.on('init', function() {
            
self._observer.observe(self.root, {childListtruesubtreetruecharacterDatatrue});
        });

        
this.on('dispose', function() {
            
self._observer.disconnect();
            
delete self._observer;
        });

    };

    
baron.fn.autoUpdate = function(params) {
        if (!
MutationObserver) return this;

        var 
0;

        while (
this[i]) {
            
autoUpdate.call(this[i], params);
            
i++;
        }

        return 
this;
    };
})(
window);
?>
Онлайн: 2
Реклама