/*
	blockbar javascript - toggle blocks and save state in cookies
*/

if (isJsEnabled()) {
  addLoadEvent(blockbar_onload);
  if (document.getElementById)
    window.onunload=blockbar_save_state
}

function blockbar_toggle( targetId, blockId) {
  if ( document.getElementById ) {
    var target = document.getElementById(targetId);
    var head = document.getElementById("blockbarhead_"+targetId);
    // close all other panels if unique flag set for block bar
    var bar = document.getElementById("block_bar_unique"+blockId)
    var unique = (bar.getAttributeNode("class").value)
    if (unique == "block_unique") {
      var bar2 = document.getElementById("block_bar_panel"+blockId)
      var panel_num = (+bar2.getAttributeNode("class").value)+1
      var bar3 = document.getElementById("block_bar_sticky"+blockId)
      var sticky = bar3 ? (bar3.getAttributeNode("class").value) : ""
      var block_state = (sticky == "block_sticky") ? "blockbar-collapsible" : "blockbar-collapsed"
      for (var i=1; i<panel_num; i++){
        block_id = "_block"+blockId+"_sub"+i
        var this_block = document.getElementById(block_id)

        if ((this_block) && (block_id != targetId)){
          if (!hasClass(this_block, block_state)) {
            var head2= document.getElementById("blockbarhead_"+block_id);
            toggleClass(head2, 'collapse');
            toggleClass(document.getElementById(block_id), block_state);
          }  
        }
      }
    }  
    toggleClass(head, 'collapse');
    toggleClass(target, 'blockbar-collapsed');
  }
}

function blockbar_get_cookie(name) {
  var search_value = name + "="
  var return_value = "";
  if (document.cookie.length > 0) {
    begin = document.cookie.indexOf(search_value)
    if (begin != -1) {
      begin += search_value.length
      end = document.cookie.indexOf(";", begin);
      if (end == -1) end = document.cookie.length;
      return_value=unescape(document.cookie.substring(begin, end))
    }
  }
  return return_value;
}

function blockbar_onload(){
  var bar1 = document.getElementById("block_bar_num")
  var bar_num = (+bar1.getAttributeNode("class").value)+1
  var cookie_name = "", cookie_value = ""
  for (var i=1; i<bar_num; i++){
    var bar2 = document.getElementById("block_bar_sticky"+i)
    var sticky = bar2 ? (bar2.getAttributeNode("class").value) : ""
    cookie_name = "block_bar"+i
    if ((sticky == "block_sticky") || (sticky == "block_sticky_default_open")) {
      var cookie_value=blockbar_get_cookie(cookie_name)
      if (cookie_value.length > 0) {
        var panels = cookie_value.split('|')
        for (var j=0; j<panels.length-1; j++) {
          blockbar_toggle(panels[j], i)
        }
      }
    }
  }  
}

function blockbar_save_state(){
  var bar1 = document.getElementById("block_bar_num")
  var bar_num = (+bar1.getAttributeNode("class").value)+1
  var cookie_name = "", cookie_value = "", block_id = ""

  for (var i=1; i<bar_num; i++){
    var bar1 = document.getElementById("block_bar_panel"+i)
    var panel_num = bar1 ? ((+bar1.getAttributeNode("class").value)+1) : 0
    var bar2 = document.getElementById("block_bar_sticky"+i)
    var sticky = bar2 ? (bar2.getAttributeNode("class").value) : ""
    cookie_name = "block_bar"+i
    if ((sticky == "block_sticky") || (sticky == "block_sticky_default_open")) {
      // If default = closed then cookie contains the blocks to open (ie toggle)
      // If default = open then cookie contains the blocks to close (ie toggle)
      var block_state = (sticky == "block_sticky") ? "blockbar-collapsible" : "blockbar-collapsed"
      for (var j=1; j<panel_num; j++){
        block_id = "_block"+i+"_sub"+j
        var this_block = document.getElementById(block_id)
        if (this_block){
          if (hasClass(this_block, block_state)) {
            cookie_value += block_id+"|" 
          }
        }
      }
    }  
    parent.document.cookie=cookie_name+"="+cookie_value+";path=/"
    cookie_value = ""
  }
}
