DescriptionOpener = {};

var default_blind_duration = 0.5;

DescriptionOpener.hide = function(instantaneous) {
  $$('.closer').each(function(e) { e.hide(); });
  $$('.opener').each(function(e) { e.show(); });
  $$('.image-description').each(function(description) {
    instantaneous ? description.hide() : new Effect.BlindUp(description, { duration: default_blind_duration });
  });
}

DescriptionOpener.show = function() {
  $$('.closer').each(function(e) { e.show(); });
  $$('.opener').each(function(e) { e.hide(); });
  $$('.image-description').each(function(description) {
    new Effect.BlindDown(description, { duration: default_blind_duration });
  });
}

DescriptionOpener.setup_master_toggle = function(holders) {
  holders.each(function(holder) {
    var opener = Builder.node("a", { href: "#", className: "description-opener opener", style: "display: none" }, [ "Show image descriptions" ]);
    var closer = Builder.node("a", { href: "#", className: "description-opener closer",style: "display: none" }, [ "Hide image descriptions" ]);

    Event.observe(opener, 'click', function(e) { Event.stop(e); DescriptionOpener.show(); });
    Event.observe(closer, 'click', function(e) { Event.stop(e); DescriptionOpener.hide(); });

    holder.insert(opener);
    holder.insert(closer);
  });

  DescriptionOpener.hide(true);
}