(function() {
  var controls = dom.html.getElementsByClassName(document, 'collapsible', 'label'),
      contract = '../images/minus.gif',
      expand   = '../images/plus.gif',
      content, current, image;

  if(!dom.isGenericObject(document.createElement)) {return;}

  function toggle(event) {
    var content = dom.core.getElementById(this.htmlFor),
        hide;

    if(content) {
      hide = ('none' != dom.style.getInline(content, 'display'));

      dom.style.setInline(content, 'display', hide ? 'none' : '');

      this.lastChild.alt = hide ? ' [expand] ' : ' [contract] ';
      this.lastChild.src = hide ? expand : contract;
    }
    return false;
  }

  for(var i = 0, n = controls.length; i < n; ++i) {
    current = controls[i];
    content = dom.core.getElementById(current.htmlFor);
    image   = document.createElement('img');

    if(content && content.style && image
     && dom.isGenericObject(current.appendChild)
     && !dom.isUndefined(current.lastChild))
    {
      dom.events.addEventListener(current, 'click', toggle, false);
      dom.style.setInline(current, 'cursor', 'pointer');

      if(dom.html.ofClass(content, 'collapsed')) {
        dom.style.setInline(content, 'display', 'none');

        image.alt = ' [expand] ';
        image.src = expand;
      } else {
        image.alt = ' [contract] ';
        image.src = contract;
      }
      current.appendChild(image);
    }
  }
  controls = current
           = content
           = image
           = null;
})();
