/* * TweetScroll jQuery Plugin * Author: Pixel Industry * Author URL : http://pixel-industry.com * Version: 1.2.6 * * jQuery plugin to load latest Twitter tweets. * */ (function($) { //define the tweetable plugin $.fn.tweetscroll = function(options) { //specify the plugins defauls var defaults = { limit: 5, //number of tweets to fetch visible_tweets: 2, //number of tweets to be visible speed: 600, // scroll animation speed delay: 3000, // delay between animations username: 'envatowebdesign', //@username tweets to display. can be multiple usernames e.g. [philipbeel, vmrkela] time: false, //display date replies: false, //filter out @replys date_format: 'style1', animation: 'slide_up', url_new_window: false, request_url: 'twitter/tweets.php', logo: false, profile_image: false }; //overwrite the defaults var tweetscrollOptions = $.extend({}, defaults, options); // verify if speed value is number if (isNaN(tweetscrollOptions.speed)) { tweetscrollOptions.speed = 600; } // verify if speed value is number if (isNaN(tweetscrollOptions.delay)) { tweetscrollOptions.delay = 3000; } // Wordpress widget change tweetscrollOptions['instance_id'] = $(this).attr('data-instance-id'); if (!tweetscrollOptions['instance_id']) tweetscrollOptions['instance_id'] = ""; tweetscrollOptions['action'] = 'pi_tweetscroll_ajax'; //loop through each instance return this.each(function(options) { //assign our initial vars var act = $(this); var $allTweets; // Wordpress/jQuery widget difference if (typeof (PiTweetScroll) == 'undefined') { var requestURL = tweetscrollOptions.request_url; } else { var requestURL = PiTweetScroll.ajaxrequests; } if (tweetscrollOptions.animation == false) { tweetscrollOptions.limit = tweetscrollOptions.visible_tweets; } //do a JSON request to twitter API $.getJSON(requestURL, tweetscrollOptions, function(data) { $allTweets = createHtml(data, tweetscrollOptions); $($allTweets).appendTo(act); setInitialListHeight($allTweets); setTimeout(function() { animateTweets($allTweets); }, tweetscrollOptions.delay); }); function animateTweets($allTweets) { var scrollSpeed = tweetscrollOptions.speed; switch (tweetscrollOptions.animation) { case 'slide_down': var itemHeight = $allTweets.find('li').outerHeight(); var containerSize = 0; var visibleItemsMax = tweetscrollOptions.visible_tweets; for (var i = 1; i < visibleItemsMax; i++) { var selector = $allTweets.find("li:nth-child(" + i + ")"); containerSize += $(selector).outerHeight(); } var lastItemHeight = parseInt($allTweets.find("li:last").outerHeight()); containerSize += lastItemHeight; $allTweets.parent().css({ 'height': containerSize }); /* animate the carousel */ $allTweets.animate( { 'bottom': -lastItemHeight }, scrollSpeed, 'linear', function() { /* put the last item before the first item */ $allTweets.find('li:first').before($allTweets.find('li:last')); /* reset top position */ $allTweets.css({ 'bottom': 0 }); window.setTimeout(function() { animateTweets($allTweets); }, tweetscrollOptions.delay); }); break; case 'slide_up': var itemHeight = $allTweets.find('li').outerHeight(); var containerSize = 0; var visibleItemsMax = tweetscrollOptions.visible_tweets + 2; for (var i = 2; i < visibleItemsMax; i++) { var selector = $allTweets.find("li:nth-child(" + i + ")"); containerSize += $(selector).outerHeight(); } $allTweets.parent().css({ 'height': containerSize }); /* animate the carousel */ $allTweets.animate( { 'top': -itemHeight }, scrollSpeed, 'linear', function() { /* put the last item before the first item */ $allTweets.find('li:last').after($allTweets.find('li:first')); /* reset top position */ $allTweets.css({ 'top': 0 }); window.setTimeout(function() { animateTweets($allTweets); }, tweetscrollOptions.delay); }); break; case 'fade': var itemHeight = $allTweets.outerHeight(); var containerSize = 0; var moveFactor = parseInt($allTweets.css('top')) + itemHeight; /* animate the carousel */ $allTweets.animate( { 'opacity': 0 }, scrollSpeed, 'linear', function() { /* put the last item before the first item */ var selectorString = $allTweets.find('li:lt(' + tweetscrollOptions.visible_tweets + ')'); $allTweets.find('li:last').after($(selectorString)); for (var i = 1; i <= tweetscrollOptions.visible_tweets; i++) { var selector = $allTweets.find("li:nth-child(" + i + ")"); containerSize += $(selector).outerHeight(); } $allTweets.parent().css({ 'height': containerSize }); $allTweets.animate({ opacity: 1 }); window.setTimeout(function() { animateTweets($allTweets); }, tweetscrollOptions.delay); }); break; } } function setInitialListHeight($allTweets) { var containerSize = 0; if (tweetscrollOptions.animation == 'slide_down') { var visibleItemsMax = tweetscrollOptions.visible_tweets + 1; for (var i = 1; i < visibleItemsMax; i++) { var selector = $allTweets.find("li:nth-child(" + i + ")"); containerSize += $(selector).outerHeight(); } $allTweets.parent().css({ 'height': containerSize }); $allTweets.css({ 'bottom': 0 }); } else if (tweetscrollOptions.animation == 'slide_up') { var visibleItemsMax = tweetscrollOptions.visible_tweets + 1; for (var i = 1; i < visibleItemsMax; i++) { var selector = $allTweets.find("li:nth-child(" + i + ")"); containerSize += $(selector).outerHeight(); } $allTweets.parent().css({ 'height': containerSize }); } else if (tweetscrollOptions.animation == 'fade') { var visibleItemsMax = tweetscrollOptions.visible_tweets + 1; for (var i = 1; i < visibleItemsMax; i++) { var selector = $allTweets.find("li:nth-child(" + i + ")"); containerSize += $(selector).outerHeight(); } $allTweets.parent().css({ 'height': containerSize }); } } }); function createHtml(data, tweetscrollOptions) { var $tweetList; var tweetMonth = ''; var shortMonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; var allMonths = ["January", "February", "March", "April", "May", "June", "July", "August", "Septemper", "October", "November", "December"]; $.each(data, function(i, item) { var profileImage = item.user.profile_image_url; //check for the first loop if (i == 0) { $tweetList = $('