(function($) {
    $.fn.hideshow = function(options) {
      var defaults = {
        clickListener: "h2",
        showClass: "slide-show",
        hideClass: "slide-hide",
        annimationTime: 600
      };
      var o = $.extend(defaults, options);
      var hs = $(this);
      //Add Event listeners to all h2 objects of this element
      $(hs).children(o.clickListener).click(function(){
        var next = $(this).next();
        var parent = $(this).parent();
        if( next.css('display') == 'none') {
          $(this).removeClass('caption-hide');
          $(this).addClass('caption-display');
          next.slideDown(o.annimationTime, function(){
            parent.addClass(o.showClass);
            parent.removeClass(o.hideClass);
          });
        } else {
          $(this).removeClass('caption-display');
          $(this).addClass('caption-hide');
          next.slideUp(o.annimationTime, function(){
            parent.removeClass(o.showClass);
            parent.addClass(o.hideClass);
          });
        }
      })
      init();
      //hide each element that not has the class slide-show
      function init() {
        hs.each(function() {
          if( $(this).hasClass(o.showClass) !== true ) {
            $(this).addClass(o.hideClass);
          }
        });
      }
    };
})(jQuery);
