mirror of
https://github.com/e107inc/e107.git
synced 2025-08-06 06:38:00 +02:00
Updated to fixed version of carousel.js
This commit is contained in:
@@ -13,11 +13,15 @@ e107::getJs()->pluginCSS('gallery', 'jslib/lightbox/css/lightbox.css');
|
|||||||
|
|
||||||
e107::getJS()->headerFile("https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js",1);
|
e107::getJS()->headerFile("https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js",1);
|
||||||
e107::getJS()->headerFile("https://ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/scriptaculous.js?load=effects",1);
|
e107::getJS()->headerFile("https://ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/scriptaculous.js?load=effects",1);
|
||||||
e107::getJs()->headerPlugin('gallery', 'jslib/carousel-min.js');
|
e107::getJs()->headerPlugin('gallery', 'jslib/carousel.js');
|
||||||
e107::getJs()->pluginCSS('gallery', 'gallery_style.css');
|
e107::getJs()->pluginCSS('gallery', 'gallery_style.css');
|
||||||
|
|
||||||
e107::getJs()->footerInline("
|
e107::getJs()->footerInline("
|
||||||
new Carousel('carousel-wrapper', $$('#carousel-content .slide'), $$('a.carousel-control', 'a.carousel-jumper'));
|
new Carousel('carousel-wrapper', $$('#carousel-content .slide'), $$('a.carousel-control', 'a.carousel-jumper' ),
|
||||||
|
{
|
||||||
|
auto: true,
|
||||||
|
circular: true
|
||||||
|
});
|
||||||
");
|
");
|
||||||
|
|
||||||
|
|
||||||
|
25
e107_plugins/gallery/jslib/carousel-min.js
vendored
25
e107_plugins/gallery/jslib/carousel-min.js
vendored
@@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright (c) 2009 Victor Stanciu - http://www.victorstanciu.ro
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person
|
|
||||||
obtaining a copy of this software and associated documentation
|
|
||||||
files (the "Software"), to deal in the Software without
|
|
||||||
restriction, including without limitation the rights to use,
|
|
||||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the
|
|
||||||
Software is furnished to do so, subject to the following
|
|
||||||
conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('1C=19.1a(1D,{1b:7(c,d,e,f){4.o=t;4.h=$(c);4.8=d;4.k=e;4.5=F.G({p:1,1c:t,1d:3,q:1,1e:\'H-1E\',1f:\'H-1F\',I:\'H-1G\',J:\'H-1H\',r:t,v:K,w:\'1g\',S:\'T\'},f||{});6(4.5.w==\'L\'){4.5.r=K}4.8.1I(7(a,b){a.M=b});6(4.k){4.k.N(\'U\',\'V\',4.V.z(4))}6(4.5.v){4.h.U(\'1J\',4.v.1h(4)).U(\'1K\',4.v.1h(4))}6(4.5.1c){4.A()}6(4.5.1i){9 g=4.8.1L($(4.5.1i));6(g>(4.5.q-1)&&4.5.q>1){6(g>4.8.i-(4.5.q+1)){g=4.8.i-4.5.q}}4.l(4.8[g])}},V:7(a){4.B();9 b=a.1M(\'a\');6(!b.W(4.5.I)){6(b.W(4.5.1e)){1N("4."+b.1j+"()")}s 6(b.W(4.5.1f)){4.l(b.1j);6(4.5.J){4.k.N(\'1k\',4.5.J);b.1l(4.5.J)}}}4.X();a.B()},l:7(a){6(4.5.Y&&(Z 4.5.Y==\'7\')){4.5.Y()}4.10=4.m?4.m:4.8[0];4.m=$(a);9 b=4.h.1m();9 c=4.m.1m();6(4.o){4.o.1O()}1n(4.5.w){O\'L\':4.o=11 n.1o(4.h,{1p:1.0,1q:0,p:4.5.p,12:(7(){4.h.C=c[0]-b[0];4.h.D=c[1]-b[1];11 n.1o(4.h,{1p:0,1q:1.0,p:4.5.p,12:(7(){6(4.k){4.P()}6(4.5.u&&(Z 4.5.u==\'7\')){4.5.u()}}).z(4)})}).z(4)});Q;O\'1g\':1r:9 d;1n(4.5.S){O\'1s\':d=n.1t.1s;Q;O\'T\':1r:d=n.1t.T;Q}4.o=11 n.13(4.h,{p:4.5.p,x:(c[0]-b[0]),y:(c[1]-b[1]),S:d,12:(7(){6(4.k){4.P()}6(4.5.u&&(Z 4.5.u==\'7\')){4.5.u()}4.o=t}).z(4)});Q}R t},1u:7(){6(4.m){9 a=4.m.M;9 b=(a==0)?(4.5.r?4.8.i-1:0):a-1}s{9 b=(4.5.r?4.8.i-1:0)}6(b==(4.8.i-1)&&4.5.r&&4.5.w!=\'L\'){4.h.C=(4.8.i-1)*4.8.14().1P();4.h.D=(4.8.i-1)*4.8.14().1Q();b=4.8.i-2}4.l(4.8[b])},15:7(){6(4.m){9 a=4.m.M;9 b=(4.8.i-1==a)?(4.5.r?0:a):a+1}s{9 b=1}6(b==0&&4.5.r&&4.5.w!=\'L\'){4.h.C=0;4.h.D=0;b=1}6(b>4.8.i-(4.5.q+1)){b=4.8.i-4.5.q}4.l(4.8[b])},14:7(){4.l(4.8[0])},1R:7(){4.l(4.8[4.8.i-1])},1S:7(){6(4.10){4.l(4.8[4.10.M])}s{R t}},B:7(){6(4.E){1v(4.E)}},A:7(){4.16()},1T:7(){4.B();4.P()},1U:7(b){6(b){9 c=b.1V||b.1W;6(!c||(!4.8.1X(c)&&!4.8.1Y(7(a){R c.1Z(a)}))){4.A()}}s{4.A()}},16:7(){6(4.E!=20){1v(4.E);4.15()}4.E=21(4.16.z(4),4.5.1d*22)},v:7(a){a.23=K;a.B();9 b=0;6(!a){a=24.25}6(a.1w){b=a.1w/26}s 6(a.1x){b=-a.1x/3}6(!4.o){4.X();6(b>0){4.1u()}s{4.15()}}R 27.28(b)},X:7(){4.k.N(\'1l\',4.5.I)},P:7(){4.k.N(\'1k\',4.5.I)}});n.13=19.1a();F.G(F.G(n.13.1y,n.29.1y),{1b:7(a){4.j=$(a);9 b=F.G({x:0,y:0,1z:\'1A\'},2a[1]||{});4.A(b)},2b:7(){6(4.5.2c&&!4.j.1B){4.j.2d();4.j.1B=K;4.j.2e(4.j.2f)}4.17=4.j.C;4.18=4.j.D;6(4.5.1z==\'1A\'){4.5.x-=4.17;4.5.y-=4.18}},2g:7(a){4.j.C=4.5.x*a+4.17;4.j.D=4.5.y*a+4.18}});',62,141,'||||this|options|if|function|slides|var||||||||scroller|length|element|controls|moveTo|current|Effect|scrolling|duration|visibleSlides|circular|else|false|afterMove|wheel|effect|||bind|start|stop|scrollLeft|scrollTop|timer|Object|extend|carousel|disabledClassName|selectedClassName|true|fade|_index|invoke|case|activateControls|break|return|transition|sinoidal|observe|click|hasClassName|deactivateControls|beforeMove|typeof|previous|new|afterFinish|SmoothScroll|first|next|periodicallyUpdate|originalLeft|originalTop|Class|create|initialize|auto|frequency|controlClassName|jumperClassName|scroll|bindAsEventListener|initial|rel|removeClassName|addClassName|cumulativeOffset|switch|Opacity|from|to|default|spring|Transitions|prev|clearTimeout|wheelDelta|detail|prototype|mode|absolute|_ext|Carousel|Abstract|control|jumper|disabled|selected|each|mousewheel|DOMMouseScroll|indexOf|findElement|eval|cancel|getWidth|getHeight|last|toggle|pause|resume|relatedTarget|toElement|include|any|descendantOf|null|setTimeout|1000|cancelBubble|window|event|120|Math|round|Base|arguments|setup|continuous|cleanWhitespace|appendChild|firstChild|update'.split('|'),0,{}))
|
|
465
e107_plugins/gallery/jslib/carousel.js
Normal file
465
e107_plugins/gallery/jslib/carousel.js
Normal file
@@ -0,0 +1,465 @@
|
|||||||
|
/*
|
||||||
|
Copyright (c) 2009 Victor Stanciu - http://www.victorstanciu.ro
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation
|
||||||
|
files (the "Software"), to deal in the Software without
|
||||||
|
restriction, including without limitation the rights to use,
|
||||||
|
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
Carousel = Class.create(Abstract, {
|
||||||
|
initialize: function (scroller, slides, controls, options) {
|
||||||
|
this.scrolling = false;
|
||||||
|
this.scroller = $(scroller);
|
||||||
|
this.slides = slides;
|
||||||
|
this.controls = controls;
|
||||||
|
|
||||||
|
|
||||||
|
this.options = Object.extend({
|
||||||
|
duration: 1,
|
||||||
|
auto: false,
|
||||||
|
frequency: 3,
|
||||||
|
visibleSlides: 1,
|
||||||
|
controlClassName: 'carousel-control',
|
||||||
|
jumperClassName: 'carousel-jumper',
|
||||||
|
disabledClassName: 'carousel-disabled',
|
||||||
|
selectedClassName: 'carousel-selected',
|
||||||
|
circular: false,
|
||||||
|
wheel: true,
|
||||||
|
effect: 'scroll',
|
||||||
|
transition: 'sinoidal'
|
||||||
|
|
||||||
|
}, options || {});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (this.options.effect == 'fade') {
|
||||||
|
this.options.circular = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//scroll-circular fix by SecretR @ free-source.net
|
||||||
|
if (this.options.effect == 'scroll' && this.options.circular && this.slides.length > 1) {
|
||||||
|
var fixel = Element.clone(this.slides[0], true);
|
||||||
|
fixel.identify();
|
||||||
|
this.slides[this.slides.length] = fixel;
|
||||||
|
Element.insert(this.slides[0].up(), {
|
||||||
|
bottom: fixel
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
this.slides.each(function(slide, index) {
|
||||||
|
slide._index = index;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (this.controls) {
|
||||||
|
this.controls.invoke('observe', 'click', this.click.bind(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.options.wheel) {
|
||||||
|
this.scroller.observe('mousewheel', this.wheel.bindAsEventListener(this)).observe('DOMMouseScroll', this.wheel.bindAsEventListener(this));;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.options.auto) {
|
||||||
|
this.start();
|
||||||
|
// this.slides.invoke('observe', 'mouseover', this.pause.bind(this));
|
||||||
|
// this.slides.invoke('observe', 'mouseout', this.resume.bind(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.options.initial) {
|
||||||
|
|
||||||
|
var initialIndex = this.slides.indexOf($(this.options.initial));
|
||||||
|
|
||||||
|
if (initialIndex > (this.options.visibleSlides - 1) && this.options.visibleSlides > 1) {
|
||||||
|
if (initialIndex > this.slides.length - (this.options.visibleSlides + 1)) {
|
||||||
|
initialIndex = this.slides.length - this.options.visibleSlides;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.moveTo(this.slides[initialIndex]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.options.container) {
|
||||||
|
this.container = $(this.options.container);
|
||||||
|
this.jumpers = this.container.select('a.'+this.options.jumperClassName);
|
||||||
|
} else {
|
||||||
|
this.jumpers = $$('a.'+ this.options.jumperClassName);
|
||||||
|
}
|
||||||
|
|
||||||
|
//this.current = this.slides[0];
|
||||||
|
},
|
||||||
|
|
||||||
|
click: function (event) {
|
||||||
|
this.stop();
|
||||||
|
|
||||||
|
var element = event.findElement('a');
|
||||||
|
|
||||||
|
if (!element.hasClassName(this.options.disabledClassName)) {
|
||||||
|
if (element.hasClassName(this.options.controlClassName)) {
|
||||||
|
eval("this." + element.rel + "()");
|
||||||
|
} else if (element.hasClassName(this.options.jumperClassName)) {
|
||||||
|
this.moveTo(element.rel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.deactivateControls();
|
||||||
|
|
||||||
|
event.stop();
|
||||||
|
},
|
||||||
|
|
||||||
|
moveTo: function (element) {
|
||||||
|
if (this.slides.length > 1) {
|
||||||
|
if (this.options.selectedClassName && this.jumpers) {
|
||||||
|
this.jumpers.each(function(jump,b){
|
||||||
|
if (jump.hasClassName(this.options.selectedClassName)) {
|
||||||
|
jump.removeClassName(this.options.selectedClassName);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jump.rel == element || jump.rel == element.id ) {
|
||||||
|
jump.addClassName(this.options.selectedClassName);
|
||||||
|
}
|
||||||
|
|
||||||
|
}.bind(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.options.beforeMove && (typeof this.options.beforeMove == 'function')) {
|
||||||
|
this.options.beforeMove();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.previous = this.current ? this.current : this.slides[0];
|
||||||
|
this.current = $(element);
|
||||||
|
|
||||||
|
var scrollerOffset = this.scroller.cumulativeOffset();
|
||||||
|
var elementOffset = this.current.cumulativeOffset();
|
||||||
|
|
||||||
|
if (this.scrolling) {
|
||||||
|
this.scrolling.cancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (this.options.effect) {
|
||||||
|
case 'fade':
|
||||||
|
this.scrolling = new Effect.Opacity(this.scroller, {
|
||||||
|
from: 1.0,
|
||||||
|
to: 0,
|
||||||
|
duration: this.options.duration,
|
||||||
|
afterFinish: (function () {
|
||||||
|
this.scroller.scrollLeft = elementOffset[0] - scrollerOffset[0];
|
||||||
|
this.scroller.scrollTop = elementOffset[1] - scrollerOffset[1];
|
||||||
|
|
||||||
|
new Effect.Opacity(this.scroller, {
|
||||||
|
from: 0,
|
||||||
|
to: 1.0,
|
||||||
|
duration: this.options.duration,
|
||||||
|
afterFinish: (function () {
|
||||||
|
if (this.controls) {
|
||||||
|
this.activateControls();
|
||||||
|
}
|
||||||
|
if (this.options.afterMove && (typeof this.options.afterMove == 'function')) {
|
||||||
|
this.options.afterMove();
|
||||||
|
}
|
||||||
|
}).bind(this)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
).bind(this)});
|
||||||
|
break;
|
||||||
|
case 'scroll':
|
||||||
|
default:
|
||||||
|
var transition;
|
||||||
|
switch (this.options.transition) {
|
||||||
|
case 'spring':
|
||||||
|
transition = Effect.Transitions.spring;
|
||||||
|
break;
|
||||||
|
case 'sinoidal':
|
||||||
|
default:
|
||||||
|
transition = Effect.Transitions.sinoidal;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.scrolling = new Effect.SmoothScroll(this.scroller, {
|
||||||
|
duration: this.options.duration,
|
||||||
|
x: (elementOffset[0] - scrollerOffset[0]),
|
||||||
|
y: (elementOffset[1] - scrollerOffset[1]),
|
||||||
|
transition: transition,
|
||||||
|
afterFinish: (function () {
|
||||||
|
|
||||||
|
if (this.controls) {
|
||||||
|
this.activateControls();
|
||||||
|
}
|
||||||
|
if (this.options.afterMove && (typeof this.options.afterMove == 'function')) {
|
||||||
|
this.options.afterMove();
|
||||||
|
}
|
||||||
|
this.scrolling = false;
|
||||||
|
}).bind(this)});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
prev: function () {
|
||||||
|
if (this.current) {
|
||||||
|
var currentIndex = this.current._index;
|
||||||
|
var prevIndex = (currentIndex == 0) ? (this.options.circular ? this.slides.length - 1 : 0) : currentIndex - 1;
|
||||||
|
} else {
|
||||||
|
var prevIndex = (this.options.circular ? this.slides.length - 1 : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prevIndex == (this.slides.length - 1) && this.options.circular && this.options.effect != 'fade') {
|
||||||
|
this.scroller.scrollLeft = (this.slides.length - 1) * this.slides.first().getWidth();
|
||||||
|
this.scroller.scrollTop = (this.slides.length - 1) * this.slides.first().getHeight();
|
||||||
|
prevIndex = this.slides.length - 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.moveTo(this.slides[prevIndex]);
|
||||||
|
},
|
||||||
|
|
||||||
|
next: function () {
|
||||||
|
if (this.current) {
|
||||||
|
var currentIndex = this.current._index;
|
||||||
|
var nextIndex = (this.slides.length - 1 == currentIndex) ? (this.options.circular ? 0 : currentIndex) : currentIndex + 1;
|
||||||
|
} else {
|
||||||
|
var nextIndex = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nextIndex == 0 && this.options.circular && this.options.effect != 'fade') {
|
||||||
|
this.scroller.scrollLeft = 0;
|
||||||
|
this.scroller.scrollTop = 0;
|
||||||
|
nextIndex = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nextIndex > this.slides.length - (this.options.visibleSlides + 1)) {
|
||||||
|
nextIndex = this.slides.length - this.options.visibleSlides;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.moveTo(this.slides[nextIndex]);
|
||||||
|
},
|
||||||
|
|
||||||
|
first: function () {
|
||||||
|
this.moveTo(this.slides[0]);
|
||||||
|
},
|
||||||
|
|
||||||
|
last: function () {
|
||||||
|
this.moveTo(this.slides[this.slides.length - 1]);
|
||||||
|
},
|
||||||
|
|
||||||
|
toggle: function () {
|
||||||
|
if (this.previous) {
|
||||||
|
this.moveTo(this.slides[this.previous._index]);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
stop: function () {
|
||||||
|
if (this.timer) {
|
||||||
|
clearTimeout(this.timer);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
start: function () {
|
||||||
|
this.periodicallyUpdate();
|
||||||
|
},
|
||||||
|
|
||||||
|
pause: function (event) {
|
||||||
|
this.stop();
|
||||||
|
this.activateControls();
|
||||||
|
this.scroller.addClassName('test-over')
|
||||||
|
},
|
||||||
|
|
||||||
|
resume: function (event) {
|
||||||
|
if (event) {
|
||||||
|
var related = event.relatedTarget || event.toElement;
|
||||||
|
if (!related || (!this.slides.include(related) && !this.slides.any(function (slide) { return related.descendantOf(slide); }))) {
|
||||||
|
this.start();
|
||||||
|
this.scroller.removeClassName('test-over')
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.start();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
periodicallyUpdate: function () {
|
||||||
|
if (this.timer != null) {
|
||||||
|
clearTimeout(this.timer);
|
||||||
|
this.next();
|
||||||
|
}
|
||||||
|
this.timer = setTimeout(this.periodicallyUpdate.bind(this), this.options.frequency * 1000);
|
||||||
|
},
|
||||||
|
|
||||||
|
wheel: function (event) {
|
||||||
|
/*
|
||||||
|
event.cancelBubble = true;
|
||||||
|
event.stop();
|
||||||
|
|
||||||
|
var delta = 0;
|
||||||
|
if (!event) {
|
||||||
|
event = window.event;
|
||||||
|
}
|
||||||
|
if (event.wheelDelta) {
|
||||||
|
delta = event.wheelDelta / 120;
|
||||||
|
} else if (event.detail) {
|
||||||
|
delta = -event.detail / 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.scrolling) {
|
||||||
|
this.deactivateControls();
|
||||||
|
if (delta > 0) {
|
||||||
|
this.prev();
|
||||||
|
} else {
|
||||||
|
this.next();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.round(delta); //Safari Round
|
||||||
|
*/
|
||||||
|
},
|
||||||
|
deactivateControls: function () {
|
||||||
|
this.controls.invoke('addClassName', this.options.disabledClassName);
|
||||||
|
},
|
||||||
|
|
||||||
|
activateControls: function () {
|
||||||
|
this.controls.invoke('removeClassName', this.options.disabledClassName);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
Effect.SmoothScroll = Class.create();
|
||||||
|
Object.extend(Object.extend(Effect.SmoothScroll.prototype, Effect.Base.prototype), {
|
||||||
|
initialize: function (element) {
|
||||||
|
this.element = $(element);
|
||||||
|
var options = Object.extend({ x: 0, y: 0, mode: 'absolute' } , arguments[1] || {});
|
||||||
|
this.start(options);
|
||||||
|
},
|
||||||
|
|
||||||
|
setup: function () {
|
||||||
|
if (this.options.continuous && !this.element._ext) {
|
||||||
|
this.element.cleanWhitespace();
|
||||||
|
this.element._ext = true;
|
||||||
|
this.element.appendChild(this.element.firstChild);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.originalLeft = this.element.scrollLeft;
|
||||||
|
this.originalTop = this.element.scrollTop;
|
||||||
|
|
||||||
|
if (this.options.mode == 'absolute') {
|
||||||
|
this.options.x -= this.originalLeft;
|
||||||
|
this.options.y -= this.originalTop;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
update: function (position) {
|
||||||
|
this.element.scrollLeft = this.options.x * position + this.originalLeft;
|
||||||
|
this.element.scrollTop = this.options.y * position + this.originalTop;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var FSfader = Class.create({
|
||||||
|
initialize: function(wrapper,fader,items,options){
|
||||||
|
this.wrapper = $(wrapper);
|
||||||
|
this.fader = $(fader);
|
||||||
|
this.items = $$(items);
|
||||||
|
|
||||||
|
this.options = Object.extend({
|
||||||
|
layout: 'vertical',
|
||||||
|
itemstyle: 'top',
|
||||||
|
toShow: 4,
|
||||||
|
jumperClass: 'jump',
|
||||||
|
transition: Effect.Transitions.EaseTo
|
||||||
|
}, arguments[3] || {});
|
||||||
|
|
||||||
|
this.controls = $$( '#'+wrapper + ' a.'+ this.options.jumperClass);
|
||||||
|
this.controls.invoke('observe', 'click', this.click.bind(this));
|
||||||
|
|
||||||
|
this.current = 0;
|
||||||
|
this.p = new Effect.Parallel([]);
|
||||||
|
if (!this.options.itemWidth) { this.options.itemWidth = this.items[0].getWidth(); }
|
||||||
|
|
||||||
|
this.space = Math.round((this.fader.getWidth() - this.options.itemWidth*this.options.toShow)/(this.options.toShow+1));
|
||||||
|
|
||||||
|
var a=0, b=0;
|
||||||
|
this.arrGroup = new Array;
|
||||||
|
|
||||||
|
this.items.each(function(item,i){
|
||||||
|
item.hide();
|
||||||
|
|
||||||
|
if (a >= this.options.toShow) {
|
||||||
|
a=0;
|
||||||
|
b++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof this.arrGroup[b] == 'undefined') this.arrGroup[b] = new Array;
|
||||||
|
this.arrGroup[b].push(item);
|
||||||
|
a++;
|
||||||
|
}.bind(this));
|
||||||
|
this.showGroup(this.arrGroup[0]);
|
||||||
|
},
|
||||||
|
|
||||||
|
showGroup: function(group) {
|
||||||
|
group.each(function(item,i){
|
||||||
|
item.setStyle({"left": (this.options.itemWidth*i + this.space*(i+1)) + "px"});
|
||||||
|
}.bind(this));
|
||||||
|
new Effect.multiple(group,Effect.Appear,{ speed: 0.1, duration: 0.4});
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
hideGroup: function(group) {
|
||||||
|
this.p.cancel();
|
||||||
|
group.each(function(item,i){
|
||||||
|
var eff = new Effect.Fade(item, {duration: 0.3, from: 1, to: 0, delay: 0.1*i, sync: true});
|
||||||
|
this.p.effects.push(eff);
|
||||||
|
}.bind(this));
|
||||||
|
this.p.start({
|
||||||
|
afterFinish: function () {
|
||||||
|
this.showGroup(this.arrGroup[this.toShow]);
|
||||||
|
this.current=this.toShow;
|
||||||
|
}.bind(this)
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
next: function() {
|
||||||
|
if (!this.toShow || this.toShow != this.current+1) {
|
||||||
|
if (this.current != this.arrGroup.length-1 ) {
|
||||||
|
this.toShow = this.current + 1;
|
||||||
|
} else {
|
||||||
|
this.toShow = 0;
|
||||||
|
}
|
||||||
|
this.hideGroup(this.arrGroup[this.current])
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
prev: function() {
|
||||||
|
if (!this.toShow || this.toShow != this.current-1) {
|
||||||
|
if (this.current != 0 ) {
|
||||||
|
this.toShow = this.current - 1;
|
||||||
|
} else {
|
||||||
|
this.toShow = this.arrGroup.length-1;
|
||||||
|
}
|
||||||
|
this.hideGroup(this.arrGroup[this.current])
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
click: function (event) {
|
||||||
|
event.stop();
|
||||||
|
var element = event.findElement('a');
|
||||||
|
if (!this.running) {
|
||||||
|
eval("this." + element.rel + "()");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
Reference in New Issue
Block a user