(function ($) {

// general purpose toggler plugin. Used for hiding/showing help, as well as other things.
// when clicked the 'this' elem changes between [+] & [-], and the options.toToggle object
// switches from visible to invisible.
// Probably will want to use CSS to style all the toggles.
$.fn.toggler = function (options) {
  var opts = $.extend({}, $.fn.toggler.defaults, options);
  return this.each(function () {
    var $this = $(this);
    var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
    var $toToggle = $(o.toToggle);
    var off = function () {
      $toToggle.hide();
      $this.text(o.closedToggle);
    };
    var on = function () {
      $toToggle.show();
      $this.text(o.openToggle);
    };
    var isInitialVisible = o.setInitialVisibility ? o.initiallyVisible : $toToggle.is(':visible');
    if (isInitialVisible) {
      on();
      $this.toggle(off, on);
    } else {
      off();
      $this.toggle(on, off);
    }
  });
};

$.fn.toggler.defaults = {
//  toToggle: DOM object to toggle
  setInitialVisibility: true, // set visibility initally
  initiallyVisible: false, // initially visible?
  closedToggle: '[+]',
  openToggle: '[-]'
};
})(jQuery);

