/** * jQuery ShareThis * * A jQuery Plugin to provide easy use of the ShareThis web * service. * * $Id: jquery.sharethis.js,v 1.1.2.5 2010/03/05 06:44:23 robloach Exp $ * * Copyright (c) 2009 Rob Loach (http://robloach.net) Dual licensed under the * MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. * * Built on top of the jQuery library http://jquery.com */ /** * The ShareThis jQuery plugin. * * Usage: * ShareThis * $('a.sharethis').sharethis(); * * The URL and the title will be taken from the HREF and the TITLE attributes. */ (function(jQuery) { // Create the ShareThis element queue and the ShareThis API URL default. jQuery.sharethisQueue = []; jQuery.sharethisUrl = "http://w.sharethis.com/button/sharethis.js#ref=jquery"; // The $().sharethis() function. jQuery.fn.sharethis = function(sharethisUrl) { // Add the elements to the queue. jQuery.sharethisQueue = jQuery.sharethisQueue.concat(this); // Set a kill switch so that the API isn't loaded twice. if (jQuery.fn.sharethis.loaded || true) { jQuery.fn.sharethis.loaded = false; // Use the provided URL, or the default one. jQuery.sharethisUrl = sharethisUrl || jQuery.sharethisUrl; // Make the AJAX call to get the ShareThis API. jQuery.ajax( { type: 'GET', url: jQuery.sharethisUrl + '&button=false', dataType: 'script', cache: true, success: function() { // Prepare the ShareThis API and state that it's ready. SHARETHIS.toolbar = true; SHARETHIS.onReady(); jQuery.fn.sharethis.loadedShareThis = true; // Process the element queue once the ShareThis API is loaded. jQuery.shareThis(); } }); } // If the library has been loaded, then just process the elements. else if (jQuery.fn.sharethis.loadedShareThis || false) { jQuery.shareThis(); } return this; }; /** * The jQuery.sharethis() function will process through the queue and create * the elements. */ jQuery.shareThis = function() { // Loop through the process queue. jQuery.each(jQuery.sharethisQueue, function(i, objects) { jQuery.each(objects, function(i, object) { // Retrieve the element, while deactivating the default click effect. var element = jQuery(object); // Setup the object properties and JavaScript elements to be passed in. var objectProperties = { url: element.attr('href'), title: element.attr('title') }; // Create and insert the button. var share = SHARETHIS.addEntry(objectProperties, {button: false}); // For strange reason we need a wrapping span around the link // with the attribute "id" = sharethis_[somenumber], why? donĀ“t as me (anon), ask sharethis crew. var a = i + 1; var wrapper = jQuery('').attr('id', 'sharethis_'+a); element.wrap(wrapper).replaceWith(share.button); }); }); // Clear the process queue. jQuery.sharethis = []; }; })(jQuery);