var PJS = {
  init: function() {
    var body = $(document.body);
    var sb = new Element('ul', {id: 'js-sidebar', 'class': 'objects'});
    var toggleObjectListener = this.toggleObject.bindAsEventListener(this);
    body.select('#sidebar .objects > li > a').each(function(a) {
      var li = new Element('li', {'class': 'object'});
      var a = a.cloneNode(true);
      a.observe('click', toggleObjectListener);
      li.insert(a);
      sb.insert(li);
    });
    body.update(sb);
  },
  toggleObject: function(ev) {
    var a = ev.element();
    ev.stop();
    var ul = a.next();
    if (!ul)
      this.loadObject(a);
    else
      ul.toggle();
  },
  loadObject: function(a) {
    var ul = new Element('ul', {'class': 'methods'});
    a.up().insert(ul);
    ul.insert(new Element('li', {'class': 'loading'}).update('loading...'));
    new Ajax.Request(a.href, {method: 'GET', onSuccess: this.loadedObject.bind(this,ul)});
  },
  loadedObject: function(ul,t) {
    ul.update();
    var html = new Element('div').update(t.responseText.scrubHTMLBody()).hide();
    document.body.appendChild(html);
    html.select('#scrubbed-sidebar .methods > li > a').each(function(a) {
      var li = new Element('li', {'class': 'method'});
      var a = a.cloneNode(true);
      li.insert(a);
      ul.insert(li);
    });
    html.remove();
  }
};

PJS.init();

