var JASlideshow2 = new Class({ initialize: function(element, options) { this.options = Object.extend({ startItem: 0, showItem: 4, mainWidth: 360, mainHeight: 240, itemWidth: 60, itemHeight: 60, duration: 400, interval: 5000, transition: Fx.Transitions.Back.easeOut, thumbOpacity:'0.8', maskDesc : 'maskDesc', but_prev:'but_prev', but_next: 'but_next', maskOpacity: '0.8', buttonOpacity: '0.4', overlap: 0, navigation: '', animation: 'fade', thumbSpaces: [3,3], urls: [], autoPlay: false }, options || {}); if (!this.options.animation.test(/move/)) this.options.overlap = 0; this.el = $(element); this.fxOptions = {duration:this.options.duration, transition:this.options.transition, wait: false} this.elmain = this.el.getElement('.ja-slide-main-wrap'); var conWidth = this.options.overlap?'100%':this.options.mainWidth; this.elmain.setStyles ({'width':conWidth, 'height':this.options.mainHeight}); this.els = this.el.getElements('.ja-slide-item'); this.els.setStyles ({'width':this.options.mainWidth, 'height':this.options.mainHeight}); this.options.rearWidth = 0; this.options.mainSpace = 0; if (this.options.overlap) { this.options.mainSpace = 10; this.options.rearWidth = Math.ceil((this.elmain.offsetWidth - this.options.mainWidth)/2) - this.options.mainSpace; this.but_prev = this.el.getElement('.'+this.options.but_prev); this.but_next = this.el.getElement('.'+this.options.but_next); this.but_prev.setStyles({'opacity': this.options.buttonOpacity, 'width': this.options.rearWidth, 'height': this.options.mainHeight}); this.but_next.setStyles({'opacity': this.options.buttonOpacity, 'width': this.options.rearWidth, 'height': this.options.mainHeight}); this.but_prev.addEvents ({ 'mouseover': function (){this.but_prev.setStyle('opacity', this.options.buttonOpacity/2);}.bind(this), 'mouseout': function (){this.but_prev.setStyle('opacity', this.options.buttonOpacity);}.bind(this) }); this.but_next.addEvents ({ 'mouseenter': function (){this.but_next.setStyle('opacity', this.options.buttonOpacity/2);}.bind(this), 'mouseleave': function (){this.but_next.setStyle('opacity', this.options.buttonOpacity);}.bind(this) }); this.els.setStyle ('margin-right', this.options.mainSpace); } /*Need to be fixed to work with moving up/down*/ if(this.options.navigation){ this.el.getElement('.ja-slide-thumbs-wrap').setStyles ({'width':this.options.itemWidth*this.options.showItem, 'height':this.options.itemHeight}); var thumbs_thumbs = this.el.getElement('.ja-slide-thumbs'); thumbs_thumbs.setStyle('left',0); thumbs_thumbs.getChildren().setStyles ({'width':this.options.itemWidth, 'height':this.options.itemHeight}); var thumbs_handles = this.el.getElement('.ja-slide-thumbs-handles'); thumbs_handles.setStyle('left',0); thumbs_handles.getChildren().setStyles ({'width':this.options.itemWidth, 'height':this.options.itemHeight}); var thumbsFx_thumbs = new Fx.Style(thumbs_thumbs,'left',this.fxOptions); var thumbsFx_handles= new Fx.Style(thumbs_handles,'left',this.fxOptions); this.el.getElement('.ja-slide-thumbs-mask-left').setStyles ({'height':this.options.itemHeight,'width':2000,'opacity':this.options.thumbOpacity}); this.el.getElement('.ja-slide-thumbs-mask-right').setStyles ({'height':this.options.itemHeight,'width':2000,'opacity':this.options.thumbOpacity}); this.el.getElement('.ja-slide-thumbs-mask-center').setStyles ({'height':this.options.itemHeight,'width':this.options.itemWidth,'opacity':this.options.thumbOpacity}); var thumbs_mask = this.el.getElement('.ja-slide-thumbs-mask').setStyles ({'left':this.options.startItem*this.options.itemWidth-2000,'width':5000}); //var thumbs_mask = this.el.getElement('.ja-slide-thumbs-mask').setStyle('left',(this.options.startItem*this.options.itemWidth-this.options.maskPos)+'px').setOpacity(this.options.thumbOpacity); var thumbsFx_mask = new Fx.Style(thumbs_mask,'left',this.fxOptions); } //When slideshow animate this.onWalk = function (currentIndex) { if (this.options.navigation) { if (currentIndex <= this.options.startItem || currentIndex - this.options.startItem >= this.options.showItem-1) { this.options.startItem = currentIndex - this.options.showItem+2; if (this.options.startItem < 0) this.options.startItem = 0; if (this.options.startItem > this.els.length-this.options.showItem) this.options.startItem = this.els.length-this.options.showItem; } thumbsFx_mask.start((currentIndex - this.options.startItem)*this.options.itemWidth-2000); thumbsFx_thumbs.start(-this.options.startItem*this.options.itemWidth); thumbsFx_handles.start(-this.options.startItem*this.options.itemWidth); } if (this.options.descMode.test(/load/)){ this.hideDesc(); } if (this.el.getElement('.readon')) this.el.getElement('.readon').href = this.options.urls[currentIndex]; } //Description this.maskDesc = this.el.getElement ('.'+this.options.maskDesc); this.maskDesc.setStyles ({'display':'block', 'position':'absolute', 'top': 0, 'left': this.options.rearWidth+this.options.mainSpace, 'width': this.options.mainWidth, 'height': this.options.mainHeight, 'opacity': 0.01 }); if (this.options.showDesc) { this.descFx = new Fx.Style (this.maskDesc, 'opacity',{duration:200,transition:Fx.Transitions.linear}); this.descs = this.el.getElements ('.ja-slide-desc'); this.showDesc = function() { this.descFx.stop(); this.descFx.start(0.8); }; this.hideDesc = function () { this.descFx.stop(); this.descFx.start(0.01); }; this.swapDesc = function (currentIndex) { //console.log('swap '+currentIndex); if (this.maskDesc.currentIndex == currentIndex) return; if (this.maskDesc.desc) { this.maskDesc.desc.remove(); this.maskDesc.desc = null; } if (this.descs[currentIndex].innerHTML) this.maskDesc.desc = this.descs[currentIndex].inject (this.maskDesc); this.maskDesc.currentIndex = currentIndex; } if (this.options.descMode.test(/mouseover/)){ this.maskDesc.addEvent ('mouseover', this.showDesc.bind(this)); this.maskDesc.addEvent ('mouseout', this.hideDesc.bind(this)); } } this.fxOptions.onComplete = function() { if (this.options.showDesc) { this.swapDesc(this.hs.currentIndex); if (this.options.descMode.test(/load/)){ this.showDesc(); } } if(this.hs.options.handles && this.hs.options.handles.length) { this.hs.options.handles[this.hs.lastIndex].removeClass ('active'); this.hs.options.handles[this.hs.currentIndex].addClass ('active'); } }.bind(this); //Click on Main image if (this.options.urls) { this.maskDesc.addEvent('click', function () { var url = this.options.urls[this.hs.currentIndex]; if (url) location.href = url; }.bind(this)); } this.hs = new JASlideshow({ box: this.el.getElement('.ja-slide-main'), items: this.els, handles: thumbs_handles?thumbs_handles.getChildren():[], fxOptions: this.fxOptions, interval: this.options.interval, onWalk: this.onWalk.bind(this), size: this.options.mainWidth + this.options.mainSpace, animation: this.options.animation, buttons: { previous: this.el.getElements('.ja-slide-prev'), play: this.el.getElements('.ja-slide-play'), stop: this.el.getElements('.ja-slide-stop'), playback: this.el.getElements('.ja-slide-playback'), next: this.el.getElements('.ja-slide-next') }, startItem: this.options.startItem, offset: this.options.overlap?this.options.rearWidth-this.options.mainWidth:0, autoPlay: this.options.autoPlay }); //Case xxxx if(this.options.overlap){ this.hs.box.getChildren()[0].clone().inject(this.hs.box); this.hs.box.getChildren()[this.hs.items.length-1].clone().injectTop(this.hs.box); this.hs.box.setStyle(this.hs.modes[this.hs.options.mode][1],(this.hs.options.size*(this.hs.items.length+2)+200)+'px'); } this.el.setStyle('visibility', 'visible'); //End case xxxx //hs.walk(this.options.startItem); } });