(function($) { "use strict"; // ------------------------------------------------------------------------------------------- // Avia Text Rotator // // accordion slider script // ------------------------------------------------------------------------------------------- $.AviaTextRotator = function(options, slider) { this.$win = $( window ); this.$slider = $( slider ); this.$inner = this.$slider.find('.av-rotator-text'); this.$slides = this.$inner.find('.av-rotator-text-single'); this.$current = this.$slides.eq(0); this.open = 0; this.count = this.$slides.length; if($.avia_utilities.supported.transition === undefined) { $.avia_utilities.supported.transition = $.avia_utilities.supports('transition'); } this.browserPrefix = $.avia_utilities.supported.transition; this.cssActive = this.browserPrefix !== false ? true : false; this.property = this.browserPrefix + 'transform', //this.cssActive = false; //testing no css3 browser this._init( options ); } $.AviaTextRotator.prototype = { _init: function( options ) { var _self = this; if(this.count <= 1) return; _self.options = $.extend({}, options, this.$slider.data()); _self.$inner.addClass('av-rotation-active'); //if(_self.options.fixwidth == 1) this.$inner.width(this.$current.width()); _self._autoplay(); if(_self.options.animation == "typewriter") { _self.$slider.addClass('av-caret av-blinking-caret'); } }, _autoplay: function() { var _self = this; _self.autoplay = setTimeout(function() { _self.open = _self.open === false ? 0 : _self.open + 1; if(_self.open >= _self.count) _self.open = 0; if(_self.options.animation != "typewriter") { _self._move({}, _self.open); _self._autoplay(); } else { _self._typewriter(); } }, _self.options.interval * 1000) }, _typewriter: function(event) { var _self = this; //mark text _self.$current.css('background-color', _self.$current.css('color') ); _self.$slider.removeClass('av-caret av-blinking-caret').addClass('av-marked-text'); //store and hide text setTimeout(function() { _self.$slider.addClass('av-caret av-blinking-caret').removeClass('av-marked-text'); _self.$current.data('av_typewriter_text', _self.$current.html()); _self.$current.css('background-color', 'transparent'); _self.$current.html(""); }, 800 ); //start typing new text setTimeout(function() { _self.$slider.removeClass('av-blinking-caret'); _self.$next = _self.$slides.eq(_self.open); var content = _self.$next.data('av_typewriter_text') || _self.$next.html(); content = content.replace(/&/g, '&'); _self.$current.css({display:'none'}); _self.$next.css({display:'inline'}); _self.$next.html(""); var i = 0; var speed = 50; /* The speed/duration of the effect in milliseconds */ function typeWriter() { if (i < content.length) { _self.$next[0].innerHTML += content.charAt(i); i++; setTimeout(typeWriter, speed + Math.floor(Math.random() * 100 ) ); } else { _self.$slider.addClass('av-caret av-blinking-caret'); _self.$current = _self.$slides.eq(_self.open); _self._autoplay(); } } typeWriter(); }, 1500 ); }, _move: function(event) { var _self = this, modifier = 30 * _self.options.animation, fade_out = {opacity:0}, fade_start = {display:'inline-block', opacity:0}, fade_in = {opacity:1}; this.$next = _self.$slides.eq(this.open); if(this.cssActive) { fade_out[_self.property] = "translate(0px," + modifier +"px)"; fade_start[_self.property] = "translate(0px," + (modifier * -1) +"px)"; fade_in[_self.property] = "translate(0px,0px)"; } else { fade_out['top'] = modifier; fade_start['top'] = (modifier * -1); fade_in['top'] = 0; } _self.$current.avia_animate(fade_out, function() { _self.$current.css({display:'none'}); _self.$next.css(fade_start).avia_animate(fade_in, function() { _self.$current = _self.$slides.eq(_self.open); }); }); } }; $.fn.avia_textrotator = function( options ) { return this.each(function() { var active = $.data( this, 'AviaTextRotator' ); if(!active) { //make sure that the function doesnt get aplied a second time $.data( this, 'AviaTextRotator', 1 ); //create the preparations for fullscreen slider new $.AviaTextRotator( options, this ); } }); } }(jQuery));