var SL_Slider_mutli = new Class({ Implements: [Options], numNav: new Array(), timer: [], isSliding: [], isPaused: [], direction: [], blocked: [], itemNum: [], strefy: 0, elementy: [], //options options: { slideTimer: 8000, transitionTime: 1000, container: null, items: null, numNavActive: true, numNavHolder: null, playBtn: null, prevBtn: null, nextBtn: null }, //initialization initialize: function(options) { this.setOptions(options); var myElements = $$('div.'+this.options.container); var i = 1; myElements.each(function(el) { //el.setStyle('overflow', "hidden"); //el.setStyle('visibility', "visible"); this.direction[i] = 1; this.isSliding[i] = 0; this.isPaused[i] = 0; var elementy = el.getElements('*[class="'+this.options.items+'"]'); var ile = elementy.length; var prev = el.getElement('*[class="'+this.options.prevBtn+'"]'); var next = el.getElement('*[class="'+this.options.nextBtn+'"]'); var stop = el.getElement('*[class="'+this.options.startpauseBtn+'"]'); var numery = el.getElement('*[class="'+this.options.numNavHolder+'"]'); numery = numery.getElement('ul'); this.elementy[i] = elementy; if (prev && next) { this.przycisk_wstecz(i,prev); this.przycisk_przod(i,next); } if (stop) { this.przycisk_stop(i,stop); } this.numNav[i] = new Array(); this.elementy(i,elementy,numery); this.touchswipe(el,i); this.strefy = i; i++; }.bind(this)); }, touchswipe: function(el,i) { var othis = this; el.addEvent('touchstart', function(e) { if (e.touches.length == 1) { var startX = e.changedTouches[0].pageX el.addEvent('touchend', function(ee) { var x = ee.changedTouches[0].pageX; var dx = startX - x; if (Math.abs(dx) >= 50) { var all = (dx > 0 ? 'swipeleft' : 'swiperight'); if (all == 'swiperight') { othis.direction[i] = 0; othis.slideIt(i); } else { othis.direction[i] = 1; othis.slideIt(i); } el.removeEvents('touchend'); } }); } }); }, elementy: function(nr,elementy,numNavHolder) { var html = this.options.next_temp; var nav = this.numNav[nr]; elementy.each(function(el, i){ //el.setStyle('position', "absolute"); //el.setStyle('visibility', "hidden"); //el.setStyle('opacity', "0"); if (this.options.numNavActive){ var numItem = new Element('li'); var htmltmp = (html) ? html.replace('%nr',(i+1)) : (i+1); el.addEvents({ 'mouseenter': function() { this.pauseIt(nr,0); }.bind(this), 'mouseleave': function() { //this.pauseIt(nr,1); }.bind(this) }); var numLink = new Element('a', { 'class': 'numbtn', 'href': el.getElement('a').getProperty('href'), 'title': el.getProperty('title'), 'html': htmltmp }); numItem.adopt(numLink); numNavHolder.adopt(numItem); nav.push(numLink); numLink.set('morph', {duration: 100, transition: Fx.Transitions.linear, link: 'ignore'}); numLink.addEvents({ 'click' : function(e){ this.numPress(nr,e,i); return false; }.bind(this), 'mouseenter' : function() { this.setStyle('cursor', 'pointer'); }, 'focus' : function() { this.pauseIt(nr,0); }.bind(this) }); } }, this); }, przycisk_wstecz: function(nr,button) { var othis = this; button.addEvents({ 'click' : function() { othis.direction[nr] = 0; othis.slideIt(nr); return false; }, 'mouseover' : function() { //othis.pauseIt(nr); }, 'mouseenter' : function() { this.setStyle('cursor', 'pointer'); }, 'mouseleave' : function() { }, 'focus' : function() { othis.pauseIt(nr,0); } }); }, przycisk_przod: function(nr,button) { var othis = this; button.addEvents({ 'click' : function() { othis.direction[nr] = 1; othis.slideIt(nr); return false; }, 'mouseover' : function() { othis.pauseIt(nr,0); }, 'mouseenter' : function() { this.setStyle('cursor', 'pointer'); }, 'mouseleave' : function() { }, 'focus' : function() { othis.pauseIt(nr,0); } }); }, przycisk_stop: function(nr,button) { var othis = this; var klasa = this.options.startpauseClass; button.addEvents({ 'click' : function() { othis.pauseIt(nr,1); this.toggleClass(klasa); return false; } }); }, przycisk_start: function(nr,button) { var othis = this; button.addEvents({ 'click' : function() { othis.pauseIt(nr,1); return false; } }); }, start: function() { if (!this.strefy) { return false; } for (var a=1;a<=this.strefy;a++) { this.itemNum[a] = 0; this.slideIt(a,0); if (this.elementy[a].length > 1) { this.timer[a] = this.slideIt.periodical(this.options.slideTimer, this, a); } } }, pauseIt: function(nr,stan) { if (this.isSliding[nr] == 0){ if(this.isPaused[nr] == 0){ this.isPaused[nr] = 1; clearInterval(this.timer[nr]); } else { if (stan) { this.isPaused[nr] = 0; this.slideIt(nr); this.timer[nr] = this.slideIt.periodical(this.options.slideTimer, this, nr); } } } }, slideIt: function(nr,index) { if (this.blocked[nr]){ return false; } this.blocked[nr] = 1; var curItem = this.elementy[nr][this.itemNum[nr]]; if(this.options.numNavActive){ var curNumItem = this.numNav[nr][this.itemNum[nr]]; } if(index !== undefined) { if (index >= this.itemNum[nr]) { this.direction[nr] = 1; } else { this.direction[nr] = 0; } } this.changeIndex(nr); if (index != null) { if( this.itemNum[nr] != index){ this.itemNum[nr] = index; } } var direct = this.direction[nr]; if (direct) { var cl_move = 'sliderLeft'; var cl_nx = 'next'; } else { var cl_move = 'sliderRight'; var cl_nx = 'prev'; } var newItem = this.elementy[nr][this.itemNum[nr]]; //var item_in = new Fx.Tween(newItem, { // duration: this.options.transitionTimeIn, // property: 'opacity' //}); if( this.options.numNavActive){ var newNumItem = this.numNav[nr][this.itemNum[nr]]; var par = newNumItem.getParent(); newNumItem.addClass('active'); par.addClass('active'); } //item_in.start(0,1); //curItem.setStyle('visibility', "hidden"); if (curItem != newItem){ //var item_out = new Fx.Tween(curItem, { // duration: this.options.transitionTimeOut, // property:'opacity', // onStart: function() { // curItem.addClass('back'); // }, // onComplete: function() { // curItem.removeClass('back'); // } //}); if(this.options.numNavActive){ var par = curNumItem.getParent(); curNumItem.removeClass('active'); par.removeClass('active'); } //item_out.start(1,0); } newItem.addClass(cl_nx); (function(){ curItem.addClass(cl_move); newItem.addClass(cl_move); }).delay(10); (function(){ curItem.removeClass(cl_move); newItem.removeClass(cl_nx); newItem.removeClass(cl_move); newItem.addClass('active'); if (curItem != newItem){ curItem.removeClass('active'); } this.blocked[nr] = 0; }.bind(this)).delay(1000); //newItem.setStyle('visibility', "visible"); }, changeIndex: function(nr) { var numItems = this.elementy[nr].length; if (this.direction[nr] == 1) { if (this.itemNum[nr] < (numItems - 1)) { this.itemNum[nr]++; }else{ this.itemNum[nr] = 0; } } else { if (this.itemNum[nr] == 0) { this.itemNum[nr] = numItems-1; } else { this.itemNum[nr]--; } } }, numPress: function (nr, e, theIndex) { this.slideIt(nr,theIndex); if ((this.isSliding[nr] == 0) && (this.isPaused[nr] == 0)) { clearInterval(this.timer[nr]); this.timer[nr] = this.slideIt.periodical(this.options.slideTimer, this, nr); } this.direction[nr] = 1; return false; }, toggleSlidingOn: function (nr) { this.isSliding[nr] = 1; //prevents extra clicks }, toggleSlidingOff: function () { this.isSliding[nr] = 0; //prevents extra clicks }, touchmove: function(nr,startX,e) { } });