Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- __SCROLLROLLER__ : function($item, settings)
- {
- var __settings = jQuery.extend
- (
- true,
- {
- // additional list-items; not implemented yet
- items : null,
- ignoreChilds : true,
- adjust :
- {
- // r.penner easing method
- method : 'easeOutCubic',
- duration : 200,
- // animation callbacks; context: adjust list-items
- callback :
- {
- container :
- {
- init : function(){},
- mouseleave : function(){}
- },
- item :
- {
- activate : function(){},
- deactivate : function(){}
- },
- window :
- {
- resolutionchange : function(){}
- }
- }
- }
- },
- settings
- );
- var __scrollroller = function($list)
- {
- var __REGISTRY_CONFIG__ = new $.tri4m.global.__CLASS__.__VARIABLE__.__REGISTRY__(),
- __REGISTRY_JQUERY__ = new $.tri4m.global.__CLASS__.__VARIABLE__.__REGISTRY__(),
- __CONST_DOM_JQY_C__ = 'c',
- __CONST_DOM_JQY_W__ = 'w',
- __CONST_DOM_JQY_L__ = 'l',
- __CONST_DOM_JQY_I__ = 'i',
- __CONST_OBJ_DMNGR__ = 'data.manager',
- __CONST_OBJ_DMATH__ = 'data.math',
- __CONST_FNC_ECB_I__ = 'scroll.easing.callback.init',
- __CONST_FNC_ECB_L__ = 'scroll.easing.callback.mouseleave',
- __CONST_FNC_ECB_A__ = 'scroll.easing.callback.activation',
- __CONST_FNC_ECB_D__ = 'scroll.easing.callback.deactivation',
- __CONST_FNC_ECB_R__ = 'scroll.easing.callback.resolutionchange',
- __CONST_STR_CSS_C__ = 'css.class.scrollroller',
- __CONST_STR_CSS_W__ = 'css.class.wrapper',
- __CONST_STR_CSS_L__ = 'css.class.list',
- __CONST_STR_CSS_I__ = 'css.class.listitem',
- __CONST_STR_CSS_A__ = 'css.class.active',
- __CONST_FNC_EAS_M__ = 'scroll.easing.method',
- __CONST_INT_EAS_D__ = 'scroll.easing.duration';
- __REGISTRY_CONFIG__
- .register(__CONST_STR_CSS_C__, 'tri4m-ui-scrollroller', true)
- .register(__CONST_STR_CSS_W__, 'tri4m-ui-scrollroller-wrapper', true)
- .register(__CONST_STR_CSS_L__, 'tri4m-ui-scrollroller-list', true)
- .register(__CONST_STR_CSS_I__, 'tri4m-ui-scrollroller-listitem', true)
- .register(__CONST_STR_CSS_A__, 'tri4m-ui-scrollroller-listitem-active', true)
- .register(__CONST_FNC_ECB_I__, __settings.adjust.callback.container.init, true)
- .register(__CONST_FNC_ECB_L__, __settings.adjust.callback.container.mouseleave, true)
- .register(__CONST_FNC_ECB_A__, __settings.adjust.callback.item.activate, true)
- .register(__CONST_FNC_ECB_D__, __settings.adjust.callback.item.deactivate, true)
- .register(__CONST_FNC_ECB_R__, __settings.adjust.callback.window.resolutionchange, true)
- .register(__CONST_FNC_EAS_M__, __settings.adjust.method, true)
- .register(__CONST_INT_EAS_D__, __settings.adjust.duration, true)
- .register(__CONST_OBJ_DMATH__, 'tri4m:ui:scrollroller:math:', true)
- .register(__CONST_OBJ_DMNGR__, 'tri4m:ui:scrollroller:mngr:', true);
- __REGISTRY_JQUERY__
- .register(__CONST_DOM_JQY_C__, $list, true)
- .register(__CONST_DOM_JQY_W__, (($('div:first', $list).length === 0)
- ? $('<div></div>').appendTo(__REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__))
- : $('div:first', $list)), true)
- .register(__CONST_DOM_JQY_L__, (($('div:first ul:first', $list).length === 0)
- ? $('<ul></ul>').appendTo(__REGISTRY_JQUERY__.get(__CONST_DOM_JQY_W__))
- : $('div:first ul:first', $list)), true);
- /**
- * @todo write hook/de-hook
- */
- if(null !== __settings.items)
- for(var i in __settings.items)
- $('<li>' + __settings.items[i] + '</li>').appendTo(__REGISTRY_JQUERY__.get(__CONST_DOM_JQY_L__));
- __REGISTRY_JQUERY__
- .register(__CONST_DOM_JQY_I__, $('div:first ul:first li', $list), true);
- __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_W__).addClass(__REGISTRY_CONFIG__.get(__CONST_STR_CSS_W__));
- __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_L__).addClass(__REGISTRY_CONFIG__.get(__CONST_STR_CSS_L__));
- __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_I__).addClass(__REGISTRY_CONFIG__.get(__CONST_STR_CSS_I__));
- __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).addClass(__REGISTRY_CONFIG__.get(__CONST_STR_CSS_C__))
- .css({overflow: 'hidden'})
- .data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__), {
- index : null,
- isChild : false });
- /**
- * abstract
- */
- var filter =
- {
- item :
- {
- first : function() { return $('ul:first > li', __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_W__)).filter(':first'); },
- last : function() { return $('ul:first > li', __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_W__)).filter(':last'); },
- eq : function(i) { return $('ul:first > li', __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_W__)).filter(':eq(' + i + ')' ); },
- active : function() { return $('ul:first > li.' + __REGISTRY_CONFIG__.get(__CONST_STR_CSS_A__), __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_W__)).filter ( ':first' ); },
- activeOrFirst : function() { var active = filter.item.active(); return (active.length > 0) ? active : filter.item.first(); }
- }
- };
- var math =
- {
- roll : function(o) { var f = (!o.m || o.m === 0) ? 1 : o.m; return (((o.i.d - o.r.o) * ((o.t.o + o.t.d + (o.A.d / f)) - o.r.d) / o.r.d ) - (o.A.d / (f * 2))); },
- center : function(o) { return o.c - (o.d / 2); }
- };
- var anim =
- {
- scroll : function(o)
- {
- var c = (true === init.c(o.c)) ? o.c : function(){}, a = {};
- a[o.a] = o.p;
- return __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).stop()
- .animate
- (
- a,
- __REGISTRY_CONFIG__.get(__CONST_INT_EAS_D__),
- __REGISTRY_CONFIG__.get(__CONST_FNC_EAS_M__),
- function() { c(); }
- );
- }
- };
- var adjust =
- {
- window : function() { adjust.__c(__REGISTRY_CONFIG__.get(__CONST_FNC_ECB_R__)); },
- mouseleave : function() { adjust.__c(__REGISTRY_CONFIG__.get(__CONST_FNC_ECB_L__)); },
- init : function() { adjust.__c(__REGISTRY_CONFIG__.get(__CONST_FNC_ECB_I__)); },
- activation : function() { adjust.__c(__REGISTRY_CONFIG__.get(__CONST_FNC_ECB_A__)); },
- deactivation : function() { adjust.__c(__REGISTRY_CONFIG__.get(__CONST_FNC_ECB_D__)); },
- mousemove : function(p) { adjust.__p(p); }
- };
- var calc =
- {
- center : function() { return math.center (calc.__c()); },
- mouse : function(e) { return math.roll (calc.__m(e)); },
- position : function(p, c) { return anim.scroll (calc.__p(p, c)); }
- };
- var init =
- {
- d : function()
- {
- var td = 0;
- __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_I__).each(function(i)
- {
- var t = $(this);
- var d = init.__d(t);
- var dc = d / 2;
- var p = td;
- var pc = dc + p;
- var k = init.__a(p);
- var kc = init.__a(pc);
- t.data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMATH__),
- {
- i : { m : { f : d, h : dc }, p : { a : k, c : kc } }
- })
- .data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__),
- {
- index : i,
- disabled : false,
- activated : false
- });
- td = init.__s(p + d);
- });
- init.__w(td);
- __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__)
- .mousemove(function(e) { adjust.mousemove(calc.mouse(e)); })
- .mouseleave(function(e){ adjust.mouseleave(); });
- adjust.init();
- $(window).bind
- ({
- 'resize.resolutionchange' : adjust.window
- });
- __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_I__).bind
- ({
- 'adjust-activate' : adjust.activation,
- 'adjust-deactivate' : adjust.deactivation
- });
- },
- c : function(c) { return (typeof(c) == 'function'); }
- }
- var x = function()
- {
- init.__d = function(t) { return t.outerWidth(true); };
- init.__a = function(p) { return {x : p, y : 0}; };
- init.__s = function(d) { return d; }
- init.__w = function(d) { __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_L__).addClass('ui-helper-clearfix'); if(d > __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).width()) __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_W__).width(d); };
- adjust.__c = function(t) { calc.position(calc.center(), t); };
- adjust.__p = function(x) { calc.position(x); };
- calc.__p = function(x, f) { return { a : 'scrollLeft', p : x, c : f}; };
- calc.__c = function() { return { c : filter.item.activeOrFirst().data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMATH__)).i.p.c.x,
- d : __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).width() }; };
- calc.__m = function(e) { return { t : { d : filter.item.last().outerWidth(),
- o : filter.item.last()[0].offsetLeft },
- r : { d : __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).width(),
- o : __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).offset().left },
- i : { d : e.pageX },
- A : { d : __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_W__).width() },
- m : 4 }; };
- init.d();
- };
- var y = function()
- {
- init.__d = function(t) { return t.outerHeight(true); };
- init.__a = function(p) { return {x : 0, y : p}; };
- init.__s = function(d) { return d - parseInt($('li:first-child', __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_L__)).css("margin-bottom"), 10); }
- init.__w = function(d) { if(d > __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).height()) __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_W__).height(d); };
- adjust.__c = function(t) { calc.position(calc.center(), t); };
- adjust.__p = function(y) { calc.position(y); };
- calc.__p = function(y, f) { return { a : 'scrollTop', p : y, c : f}; };
- calc.__c = function() { return { c : filter.item.activeOrFirst().data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMATH__)).i.p.c.y,
- d : __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).height() }; };
- calc.__m = function(e) { return { t : { d : filter.item.last().outerHeight(),
- o : filter.item.last()[0].offsetTop },
- r : { d : __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).height(),
- o : __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).offset().top },
- i : { d : e.pageY },
- A : { d : __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_W__).height() },
- m : 1 }; };
- init.d();
- };
- /**
- * events
- */
- __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_I__).bind
- ({
- 'activate' : function(e, c)
- {
- filter.item.active().trigger('deactivate');
- var t = $(e.target);
- var ci = __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__));
- var dc = t.data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__));
- var ds = t.data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMATH__));
- ci.index = dc.index;
- dc.activated = true;
- ds.m = { x : e.pageX, y : e.pageY };
- ds.c = { x : (__REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).offset().left), y : (__REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).offset().top) };
- ds.w = { x : (__REGISTRY_JQUERY__.get(__CONST_DOM_JQY_W__).offset().left), y : (__REGISTRY_JQUERY__.get(__CONST_DOM_JQY_W__).offset().top) };
- __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__)
- .data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__), ci);
- t.toggleClass(__REGISTRY_CONFIG__.get(__CONST_STR_CSS_A__))
- .data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMATH__), ds)
- .data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__), dc);
- if(true === init.c(c)) c();
- },
- 'deactivate' : function(e, c)
- {
- var t = $(e.target);
- var ci = __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__));
- var dl = filter.item.active().data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__));
- ci.index = null;
- dl.activated = false;
- __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__)
- .data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__), ci);
- t.toggleClass(__REGISTRY_CONFIG__.get(__CONST_STR_CSS_A__))
- .data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__), dl);
- if(true === init.c(c)) c();
- },
- 'disable' : function(e, c)
- {
- },
- 'enable' : function(e, c)
- {
- }
- });
- __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).bind
- ({
- 'activate-index' : function(e, i, c)
- {
- var l = __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_I__).size() - 1;
- return (i > l || i < 0)
- ? null
- : filter.item.eq(i)
- .trigger('activate', [c])
- .trigger('adjust-activate');
- },
- 'activate-first' : function(e, c)
- {
- var t = $(e.target);
- return t.trigger('activate-index', [0, c]);
- },
- 'activate-last' : function(e, c)
- {
- var t = $(e.target),
- l = __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_I__).size() - 1;
- return t.trigger('activate-index', [l, c]);
- },
- 'activate-next' : function(e, c)
- {
- var t = $(e.target),
- a = __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__)).index;
- if(a === null) return null;
- var n = a + 1;
- return t.trigger('activate-index', [n, c]);
- },
- 'activate-next-or-index' : function(e, i, c)
- {
- var t = $(e.target),
- a = __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__)).index;
- return (a === null)
- ? t.trigger('activate-index', [i, c])
- : t.trigger('activate-next', [c]);
- },
- 'activate-next-or-first' : function(e, c)
- {
- var t = $(e.target),
- a = __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__)).index,
- l = __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_I__).size() - 1;
- return (a === null || a === l)
- ? t.trigger('activate-first', [c])
- : t.trigger('activate-next', [c]);
- },
- 'activate-prev' : function(e, c)
- {
- var t = $(e.target),
- a = __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__)).index;
- if(a === null) return null;
- var p = a - 1;
- return t.trigger('activate-index', [p, c]);
- },
- 'activate-prev-or-index' : function(e, i, c)
- {
- var t = $(e.target),
- a = __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__)).index;
- return (a === null)
- ? t.trigger('activate-index', [i, c])
- : t.trigger('activate-prev', [c]);
- },
- 'activate-prev-or-last' : function(e, c)
- {
- var t = $(e.target),
- a = __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).data(__REGISTRY_CONFIG__.get(__CONST_OBJ_DMNGR__)).index;
- if(a === null) return t.trigger('activate-first', [c]);
- return (a === 0)
- ? t.trigger('activate-last', [c])
- : t.trigger('activate-prev', [c]);
- },
- 'deactivate-item' : function(e, c)
- {
- return filter.item.active()
- .trigger('deactivate', [c])
- .trigger('adjust-deactivate');
- },
- 'disable-item' : function(e, i, c)
- {
- },
- 'disable-items' : function(e, iArr, c)
- {
- },
- 'enable-item' : function(e, i, c)
- {
- },
- 'enable-items' : function(e, iArr, c)
- {
- },
- 'append-item' : function(e, i, c)
- {
- },
- 'prepend-item' : function(e, i, c)
- {
- },
- 'insert-item' : function(e, i, item, c)
- {
- },
- 'disable-all' : function(e, c)
- {
- },
- 'enable-all' : function(e, c)
- {
- }
- });
- /**
- * item
- */
- __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_I__).click(function(e)
- {
- var t = $(e.target);
- t.trigger('activate');
- });
- /**
- * construct
- */
- __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__).hasClass('tri4m-ui-scrollroller-y')
- ? new y()
- : new x();
- return __REGISTRY_JQUERY__.get(__CONST_DOM_JQY_C__);
- };
- if(false === $item.hasClass('tri4m-ui-scrollroller-y')
- && false === $item.hasClass('tri4m-ui-scrollroller-x'))
- return $item;
- return __scrollroller($item);
- },
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement