Shop.implement({ selectorFunctions : { boxslider2 : { selector : '.centercol .box.slider2', domready : function(slider) { var podlist = slider.getElements('.product'); if(podlist.length > 1) { slider.getElements('hr').setStyle('display', 'none'); podlist.setStyle('display', 'none'); podlist[0].setStyles({ display : 'block', vibility : 'hidden' }); } }, load : function(el) { if(el.getElements('.product').length < 2) return; el.getElements('hr').destroy(); var innerbox = el.getElement('.innerbox'); if(!Shop.$chk(innerbox)) return; var outterdiv = new Element('div', { styles : { overflow : 'hidden', position : 'relative' } }).inject(innerbox); var innerdiv = new Element('div').inject(outterdiv); var outter_size = outterdiv.getSize(); var width = 0; var scroll_step = outter_size.x/4; el.getElements('.product') .setStyle('display', 'block') .inject(innerdiv) .setStyle('width', outter_size.x/4 + 'px') .each(function(div) { width += outter_size.x/4; }); outterdiv.setStyle('width', outter_size.x + 'px'); innerdiv.setStyle('width', width + 'px'); innerdiv.getChildren('.product').setStyle('float', 'left'); outter_size = outterdiv.getSize(); outterdiv.setStyle('height', outter_size.y + 'px'); innerdiv.setStyles({ height : outter_size.y + 'px', position : 'absolute', left : '0px', top : '0px' }); var left = new Element('img', { src : this.url('public/images/1px.gif'), 'class' : 'arrow_left' }).inject(outterdiv); var right = new Element('img', { src : this.url('public/images/1px.gif'), 'class' : 'arrow_right' }).inject(outterdiv); left._outter = right._outter = outterdiv; outterdiv._scroll_step = scroll_step; outterdiv._left = left; outterdiv._right = right; outterdiv._n = 0; outterdiv._max = innerdiv.getChildren('.product').length - 1; outterdiv._inner = innerdiv; outterdiv._fx = new Fx.Tween(innerdiv, { duration: 200, transition : 'linear' }); left.fade('hide'); right.fade('hide'); outterdiv.addEvent('mouseenter', function(e) { if(this._n > 0) this._left.fade('in'); if(this._n < this._max) this._right.fade('in'); }); outterdiv.fireEvent('mouseenter'); if(Shop.$chk(Shop.useroptions.slider) && true == Shop.useroptions.slider.fadearrows) { outterdiv.addEvent('mouseleave', function(e) { this._left.fade('out'); this._right.fade('out'); }); } if(el.hasClass('slider_automove') && Shop.$chk(Shop.useroptions.slider) && Shop.useroptions.slider.automove > 0 && outterdiv._max > 0) { (function() { if(false == this._mousein) { this.scrollToNext(); } }).periodical(Shop.useroptions.slider.automove, outterdiv); outterdiv.addEvent('mouseenter', function(e) { this._mousein = true; }) outterdiv.addEvent('mouseleave', function(e) { this._mousein = false; }) outterdiv._mousein = false; } outterdiv.scrollToLeft = (function() { if(this._n > 0) { this._n--; this._fx.start('left', -1 * this._n * this._scroll_step + 'px'); this._right.fade('in'); if(0 == this._n) this._left.fade('out'); } }).bind(outterdiv); outterdiv.scrollToRight = (function() { if(this._n < this._max) { this._n++; this._fx.start('left', -1 * this._n * this._scroll_step + 'px'); this._left.fade('in'); if(this._max == this._n) this._right.fade('out'); } }).bind(outterdiv); outterdiv.scrollToNext = (function() { if(this._n < this._max) { this.scrollToRight(); } else { this._n = 1; this.scrollToLeft(); } }).bind(outterdiv); left.addEvent('click', function(e) { new DOMEvent(e).stop(); this._outter.scrollToLeft(); }); right.addEvent('click', function(e) { new DOMEvent(e).stop(); this._outter.scrollToRight(); }); lh = left.getSize().y; if(lh < 1) lh = 10; rh = right.getSize().y; if(rh < 1) rh = 10; left.setStyle('top', Math.ceil( ( outter_size.y - lh ) / 2 ) + 'px'); right.setStyle('top', Math.ceil( ( outter_size.y - rh ) / 2 ) + 'px'); } } } });