var Share = (function namespace_init(){
  function displayTwitterWidgets(sliders) {
    if (typeof(twttr) == "undefined") {
      return;
    }

    $(sliders).each(function(index, slider) {
      if ($(slider).data('twttr-enabled')) { return; }

      var twitterButton = $(slider).find(".inactive-twitter-share-button");
      twitterButton.addClass("twitter-share-button");
      twitterButton.removeClass("inactive-twitter-share-button");
      twttrButton = new twttr.TweetButton(twitterButton[0]);
      twttrButton.render();

      $(slider).data('twttr-enabled', true);
    });
  }

  function displayFbWidgets(sliders) {
    if (typeof(FB) == "undefined") {
      return;
    }

    $(sliders).each(function(index, slider) {
      if ($(slider).data('fb-enabled')) { return; }

      var url = $(slider).closest("div.browsing-element").find(".facebook-permalink").val();
      var fbml_code = '<div class="fblike"><fb:like href="' + url + '" layout="button_count" show_faces="false"></fb:like></div>';
      $(slider).prepend(fbml_code);
      FB.XFBML.parse(slider[0]);

      $(slider).data('fb-enabled', true);
    });
  }

  function displayShareWidgets(sliders, slideDown) {
    $(sliders).each(function(index, slider) {
      var slideDuration = slideDown ? 'slow' : 0;
      $(slider).closest('.votings').addClass('already-voted');
      $(slider).slideDown(slideDuration);
    });
  }

  function initializeTwitterWidgets() {
    displayTwitterWidgets($('.already-voted .slider-has-voted'));
  }

  function initializeFbWidgets() {
    displayFbWidgets($('.already-voted .slider-has-voted'));
  }

  var visisbleAttributesAndFunctions = {
    displayTwitterWidgets: displayTwitterWidgets,
    displayFbWidgets: displayFbWidgets,
    displayShareWidgets: displayShareWidgets,
    initializeTwitterWidgets: initializeTwitterWidgets,
    initializeFbWidgets: initializeFbWidgets
  };
  return visisbleAttributesAndFunctions;

})();

$(document).ready(function() {
  Share.displayShareWidgets($('.already-voted .slider-has-voted'), false);

  $('div.garmz-vote').live('hover', function (e) {
    $(this).toggleClass('hover');
  });

  $('div.browsing-element div.garmz-vote a').live('click', function(e) {
    $(this).parents('.garmz-vote').load($(this).attr('href'));

    if(!$(this).closest('.votings').hasClass('already-voted')) {
      var slider = $(this).closest('.votings').find('div.slider-has-voted');
      Share.displayTwitterWidgets(slider);
      Share.displayFbWidgets(slider);
      Share.displayShareWidgets(slider, true);
    }

    return false;
  });

  $(document).bind("fb.ready", Share.initializeFbWidgets);
  $(document).bind("twttr.ready", Share.initializeTwitterWidgets);
});
