$(document).ready(function(){

  $(".toolbox").each(function(){
  
    $(this).find(".share").append( $('<div />').addClass('lightbox_bg').hide() );
    
    $(this).find("div.permalink").hide();
    $(this).find("div.share_pane").hide();
    
    $(this).find(".share_link").click(function(e){
    
      var $share_pane = $(this).parents(".share").find(".share_pane");
      $(this).parents("ul").toggleClass("expanded");
      
      if( $(this).parents(".share").find(".share_pane:visible").length > 0 )
      {  
        $share_pane.hide();
        $(this).parents(".share").find('.lightbox_bg').hide();
      } 
      else 
      {
        $share_pane.show().css({position:"absolute"});
        
        if( $(this).parents(".toolbox").hasClass("horizontal") ) {
          $(this).parents(".share").find(".share_pane").center();
          $(this).parents(".share").find('.lightbox_bg').show();
        }

        $(document).bind('click', hideSharePanes);
        $(document).keydown(function(event){
          if(event.which == 27) {
            hideSharePanes();
          }
        });
      }

      return false;
    });
    
    $(".share_pane ul li a").attr("target", "_blank");
    
    $(".share_pane .permalink a").click(function(){
      $(this).parents(".share_pane").find("div.permalink").toggle();
      $(this).parents(".share_pane").find("div.permalink input").focus();
      return false;
    });
  });
});

function hideSharePanes()
{
  $(".share_pane").hide();
  $('.lightbox_bg').hide();
  $('body').unbind('click', hideSharePanes);
}

jQuery.fn.center = function (absolute) {
    return this.each(function () {
        var t = jQuery(this);

        t.css({
            position: absolute ? 'absolute' : 'fixed', 
            left: '50%', 
            top: '50%', 
            zIndex: '99'
        }).css({
            marginLeft: '-' + (t.width() / 2) + 'px', 
            marginTop: '-' + (t.height() / 2) + 'px'
        });

        if (absolute) {
            t.css({
                marginTop: parseInt(t.css('marginTop'), 10) + jQuery(window).scrollTop(), 
                marginLeft: parseInt(t.css('marginLeft'), 10) + jQuery(window).scrollLeft()
            });
        }
    });
};