mirror of
https://github.com/e107inc/e107.git
synced 2025-08-05 14:17:49 +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/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()->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