(function($){
  $.fn.collapsable = function(options) {
    return this.each(function() {
      var scope = this;

      var list = $(this).find('>ul, >form');

      var arrow = $('<div></div>',{
        'class': 'arrow',
        click: function() {
          collapsable.toggle(scope);
        }
      });
      
      if (list.length > 0) {
        collapsable.init(scope);
        $(this).prepend(arrow);
      };
    });
  };
  
  var collapsable = {
    init: function(elem) {
      var list = $(elem).find('>ul, >form');

      if ($(elem).hasClass('default_open')) {
        this.toggle(elem);
      }
      else {
        list.hide();
      }
            
    },
    toggle: function(elem) {
      var list = $(elem).find('>ul, >form');

      $(elem).toggleClass('open');
      $(elem).hasClass('open') ? this.open(list) : this.collapse(list);
    },
    collapse: function(elem) {
      $(elem).slideUp();
    },
    open: function(elem) {
      $(elem).slideDown();
    }
  }; 
  
})(jQuery);


