var is_msie = false;
if (navigator.userAgent.match ('MSIE') !== null) is_msie = true;


function init_expando() {
  var container = document.getElementById ('content');
  
  var show_text = 'Show section';
  var hide_text = 'Hide section';
  
  
  var h2s = container.getElementsByTagName('h2');
  for (var i = 0; i < h2s.length; i++) {
    var h2_node = h2s[i];
    
    if (h2_node.className == 'reveal') {
      var node = h2_node;
      var p_nodes = [];
      
      while (node.nextSibling) {
        node = node.nextSibling;
        if (node.nodeType == 1) {
          if ((node.nodeName.toUpperCase() == 'H2') || (node.nodeName.toUpperCase() == 'DIV')) {
            break;
          } else {
            p_nodes.push(node);
            node.style.display = 'none';
          }
        }
      }
      
      set_link_onclick(h2_node, p_nodes);
      
      h2_node.onmouseover = function () {
        this.style.textDecoration = 'underline';
      }
      
      h2_node.onmouseout = function () {
        this.style.textDecoration = '';
      }

    }
  }
}

function set_link_onclick (node, p_nodes) {
  node.onclick = function () {
    if (p_nodes[0].style.display == 'none') {
      for (var i = 0; i < p_nodes.length; i++) {
        p_nodes[i].style.display = '';
      }
      node.className = 'reveal-open';
      
    } else {
      for (var i = 0; i < p_nodes.length; i++) {
        p_nodes[i].style.display = 'none';
      }
      node.className = 'reveal';
    }
  }
}




/**
* Create an element
**/
function create_element (tag_name, attribs) {
  var element = null;
  
  tag_name = String (tag_name);
  tag_name = tag_name.toLowerCase ();
  
  // IE is broken with many elements but its non-W3C methods seem to work
  if (is_msie) {
    var tag_text;
    tag_text = '<' + tag_name;
    for (var key in attribs) {
      tag_text += ' ' + String (key) + '="' + String (attribs[key]) + '"';
    }
    tag_text += '>';
    element = document.createElement (tag_text);
    
  } else {
    element = document.createElement (tag_name);
    for (var key in attribs) {
      element.setAttribute (String (key), String (attribs[key]));
    }
  }
  
  return element;
}
