/* 
   Credit to John Resig for this function 
   taken from Pro JavaScript techniques 
*/
function prev(elem) {
    do {
        elem = elem.previousSibling;
    } while (elem && elem.nodeType != 1);
    return elem;                
}


/*function section_toggle() {
  n = this;
  if (n.className == "section collapsed") {
  } else {
    n.setAttribute("class", "section collapsed");
    var next;                              
    next = n.nextSibling;
    while (next && next.nodeType != 1 && next.className != "section") {      
      next.style.display='none';
      next = n.nextSibling;
    }    
  }
}*/


function section_toggle(n) {
  var rows = '';
  n = this.parentNode;
  var i = 0;
  rows = n.parentNode.getElementsByTagName("tr");
  while (i < rows.length && rows[i] != n) {
    i++;
  }
  i++;
  if (n.className == "section collapsed") {
    /*n.setAttribute("class", "section");*/
    n.className = "section";                              
    while (i < rows.length && rows[i].className != "section_end") {      
      rows[i].style.display='';
      i++;
    }              
  } else {
    n.className = "section collapsed";                             
    while (i < rows.length && (rows[i].className != "section_end" /*&& rows[i].style.visibility == 'visible'*/)) {
      // skins "title" rows
      if (rows[i].className != "title" /* && rows[i].className != "section"*/) {     
        rows[i].style.display='none';
      }
      i++;      
    }
    /*
    if (rows[i - 1].className == "separator_end") {
      rows[i - 1].style.display='';
    }*/
    /*n.style.margin-bottom = '5px';*/    
  }
}

function section_collapse(n) {
  var rows = '';
  var i = 0;
  rows = n.parentNode.getElementsByTagName("tr");
  while (i < rows.length && rows[i] != n) {
    i++;
  }
  i++;
  n.className = "section collapsed";                             
  while (i < rows.length && (rows[i].className != "section_end" /*&& rows[i].style.visibility == 'visible'*/)) {
    // skins "title" rows
    if (rows[i].className != "title") {     
      rows[i].style.display='none';
    }
    i++;      
  }  
}

function section_expand(n) {
  var rows = '';
  var i = 0;
  rows = n.parentNode.getElementsByTagName("tr");
  while (i < rows.length && rows[i] != n) {
    i++;
  }
  i++;
  n.className = "section";                             
  while (i < rows.length && (rows[i].className != "section_end" /*&& rows[i].style.visibility == 'visible'*/)) {
    // skins "title" rows
    if (rows[i].className != "title") {
      rows[i].style.display='';
    }
    i++;      
  }  
}

function section_select_single() {
  n = this.parentNode;
  while (n.className == "title") {
    n = prev(n);
  }
  var rows = '';
  rows = document.getElementsByTagName("tr");
  for(var i = 0; i < rows.length; i++) {
    if (rows[i].className == "section" || rows[i].className == "section collapsed") {
      if (n != rows[i]) {
        section_collapse(rows[i]);
      } else {
        section_expand(rows[i]);
      }
    }
  } 
}

function init() {
  
  var rows = '';
  rows = document.getElementsByTagName("tr");
  /*var columns = '';*/
  for(var i = 0; i < rows.length; i++) {
    if (rows[i].className == "section" || rows[i].className == "section collapsed") {
      var columns = '';
      //columns = rows[i].getElementsByTagName("th");
      columns = rows[i].childNodes;
      for (var j = 0; j < columns.length; j++) {
        if (columns[j].className != "select" && columns[j].className != "select special") {
          columns[j].onclick = section_toggle;
        } else {
         // columns[j].onclick = section_select_single;
        }
      }
      
      if (rows[i].className == "section collapsed") {
        section_collapse(rows[i]);
      }

    }
  }

  var cells = '';
  cells = document.getElementsByTagName("th");
  for(var i = 0; i < cells.length; i++) {
    if (cells[i].className == "select" || cells[i].className == "select special") {
      cells[i].onclick = section_select_single;
    }
  }

}

window.onload = init;
