%PDF- %PDF-
Direktori : /home/kfvehpdt/plage-cote-mer.fr/javascript/ |
Current File : /home/kfvehpdt/plage-cote-mer.fr/javascript/jquery.marquee.js |
(function ($){ $.fn.marquee = function (klass){ var newMarquee=[], last=this.length; function getReset(newDir, marqueeRedux, marqueeState){ var behavior = marqueeState.behavior, width = marqueeState.width, dir = marqueeState.dir; var r = 0; if(behavior=='alternate'){ r = newDir == 1 ? marqueeRedux[marqueeState.widthAxis] - (width*2) : width; }else if(behavior=='slide'){ if(newDir == -1){ r=dir == -1 ? marqueeRedux[marqueeState.widthAxis] : width; }else{ r=dir == -1 ? marqueeRedux[marqueeState.widthAxis] - (width*2) : 0; } }else{ r=newDir == -1 ? marqueeRedux[marqueeState.widthAxis] : 0; } return r; } function animateMarquee(){ var i=newMarquee.length, marqueeRedux=null, $marqueeRedux=null, marqueeState={}, newMarqueeList=[], hitedge=false; while(i--){ marqueeRedux=newMarquee[i]; $marqueeRedux=$(marqueeRedux); marqueeState=$marqueeRedux.data('marqueeState'); if($marqueeRedux.data('paused')!==true){ marqueeRedux[marqueeState.axis]+=(marqueeState.scrollamount * marqueeState.dir); hitedge=marqueeState.dir == -1 ? marqueeRedux[marqueeState.axis] <= getReset(marqueeState.dir * -1, marqueeRedux, marqueeState) : marqueeRedux[marqueeState.axis] >= getReset(marqueeState.dir * -1, marqueeRedux, marqueeState); if((marqueeState.behavior == 'scroll' && marqueeState.last == marqueeRedux[marqueeState.axis]) || (marqueeState.behavior == 'alternate' && hitedge && marqueeState.last != -1) || (marqueeState.behavior == 'slide' && hitedge && marqueeState.last != -1)){ if(marqueeState.behavior=='alternate'){ marqueeState.dir *= -1; } marqueeState.last = -1; $marqueeRedux.trigger('stop'); marqueeState.loops--; if (marqueeState.loops === 0){ if (marqueeState.behavior != 'slide'){ marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState); }else{ marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir * -1, marqueeRedux, marqueeState); } $marqueeRedux.trigger('end'); }else{ newMarqueeList.push(marqueeRedux); $marqueeRedux.trigger('start'); marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState); } }else{ newMarqueeList.push(marqueeRedux); } marqueeState.last = marqueeRedux[marqueeState.axis]; $marqueeRedux.data('marqueeState', marqueeState); }else{ newMarqueeList.push(marqueeRedux); } } newMarquee=newMarqueeList; if(newMarquee.length){ setTimeout(animateMarquee, 25); } } this.each(function(i){ var $marquee=$(this), width = $marquee.attr('width') || $marquee.width(), height = $marquee.attr('height') || $marquee.height(), $marqueeRedux = $marquee.after('<div ' + (klass ? 'class="' + klass + '" ' : '') + 'style="display: block-inline; width: ' + width + 'px; height: ' + height + 'px; overflow: hidden;"><div style="float: left; white-space: nowrap;">' + $marquee.html() + '</div></div>').next(), marqueeRedux = $marqueeRedux.get(0), hitedge = 0, direction = ($marquee.attr('direction') || 'left').toLowerCase(), marqueeState ={ dir : /down|right/.test(direction) ? -1 : 1, axis : /left|right/.test(direction) ? 'scrollLeft' : 'scrollTop', widthAxis : /left|right/.test(direction) ? 'scrollWidth' : 'scrollHeight', last : -1, loops : $marquee.attr('loop') || -1, scrollamount : $marquee.attr('scrollamount') || this.scrollAmount || 2, behavior : ($marquee.attr('behavior') || 'scroll').toLowerCase(), width : /left|right/.test(direction) ? width : height }; if($marquee.attr('loop') == -1 && marqueeState.behavior == 'slide'){ marqueeState.loops = 1; } $marquee.remove(); if(/left|right/.test(direction)){ $marqueeRedux.find('> div').css('padding', '0 ' + width + 'px'); }else{ $marqueeRedux.find('> div').css('padding', height + 'px 0'); } $marqueeRedux.bind('stop', function(){ $marqueeRedux.data('paused', true); }).bind('pause', function(){ $marqueeRedux.data('paused', true); }).bind('start', function(){ $marqueeRedux.data('paused', false); }).bind('unpause', function(){ $marqueeRedux.data('paused', false); }).data('marqueeState', marqueeState); newMarquee.push(marqueeRedux); marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState); $marqueeRedux.trigger('start'); if(i+1==last){ animateMarquee(); } }); return $(newMarquee); }; }(jQuery));