// Basic Sliding Functions
// -- to be properly credited to Slashdot or rewritten

function getElementsByClass(searchClass, node, tag) {
  var classElements = new Array();
  if (node == null) node = document;
  if (tag == null) tag = '*';
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp("(^|\s)" + searchClass + "(\s|$)");
  for (i = 0, j = 0; i < elsLen; i++) {
    if (pattern.test(els[i].className))
      classElements[j++] = els[i];
  }
  return classElements;
}

function toggleClass(element, firstClass, secondClass) {
  var removeClass = (Element.hasClassName(element, firstClass) ? firstClass : secondClass)
  var addClass = (Element.hasClassName(element, firstClass) ? secondClass : firstClass)
    
  Element.removeClassName(element, removeClass);
  Element.addClassName(element, addClass);
}

/* Available options: remember, expanded, collapsed, none */
var menuConfig = ['remember', 'remember', 'remember', 'remember', 'remember', 'remember', 'remember', 'remember', 'remember'];

function init() {
  var blocks = $S('div#charts div.block');
  blocks.each(function(block, index) {
    block.id = 'block' + index;
    var title = getElementsByClass('title', block, 'div')[0];
    var content = getElementsByClass('content', block, 'div')[0];
    if (menuConfig[index] == 'remember') {
      var slideEffect = new fx.RememberHeight(content, {duration: 300});
      Element.addClassName(block, parseInt(slideEffect.readCookie()) == 0 ? 'collapsed' : 'expanded');
    } else if (menuConfig[index] == 'expanded') {
      var slideEffect = new fx.Height(content, {duration: 300});
      Element.addClassName(block, 'expanded');
    } else if (menuConfig[index] == 'collapsed') {
      var slideEffect = new fx.Height(content, {duration: 300});
      slideEffect.hide();
      Element.addClassName(block, 'collapsed');
    } else {
      var slideEffect = null;
      Element.addClassName(block, 'static');
    }
    
    if (slideEffect) {
      title.onclick = function(event) {
        try { var element = Event.element(event); }
        catch(err) { var element = Event.element(window.event); }
        if (element.tagName != 'A') {
          slideEffect.toggle();
          toggleClass(this.parentNode, 'collapsed', 'expanded');
        }
      }
    }
  });
}
Event.observe(window, 'load', init);