/*
Sets the sections on the left-hand column togglable (is that a word?)
*/

var expand_img   = '<img title="open" alt="open" width="16" height="16" src="/images/expand.gif"/>&nbsp;';
var collapse_img = '<img title="close" alt="close" width="16" height="16" src="/images/collapse.gif"/>&nbsp;';

function prepareBookToc(current_id) {
    
    if (!document.getElementsByTagName) return false;
    if (!document.getElementById('sub_toc')) return false;
    
    var subtoc = document.getElementById('sub_toc');
    var items  = subtoc.getElementsByTagName('li');
    
    for (i=0;i<items.length;i++) {

      var item = items[i];
      var item_id = item.getAttribute('id');
      var list_id = item_id + "_list";
        
      if (document.getElementById(list_id)) {
         var link = document.createElement("a");
         link.setAttribute("href","javascript:toggle('"+item_id+"');");
         link.setAttribute("class", "imglink");
         // only close up the non-current ids
         if (current_id != item_id) {
            link.innerHTML += expand_img;
            item.insertBefore(link, item.firstChild);
            toggle(item_id);
         } else {
            link.innerHTML += collapse_img;
            item.insertBefore(link, item.firstChild);
         }
      } else {
         var spacer = document.createElement("span");
         spacer.innerHTML += '<img width="16" height="16" src="/images/spacer.gif"/>&nbsp;';
         item.insertBefore(spacer, item.firstChild);
      }
    }
    
}

function prepareSearchResults() {
   
    if (!document.getElementsByTagName) return false;
    if (!document.getElementById('content')) return false;
    if (!document.getElementById('extra')) return false;
    
    prepareResultHeaders();
    prepareFacetHeaders();
    enableControls();
   
}

function prepareResultHeaders() {
   
    var content = document.getElementById('content');
    var hdrs = content.getElementsByTagName('h5');

    if ( $.cookie('search_result_state') ) {
        makeExpanderControls(hdrs, true, $.cookie('search_result_state'));
    } else {
        makeExpanderControls(hdrs, true, 'open'); // default is open
    }
}

function prepareFacetHeaders() {
    
    var extra = document.getElementById('extra');
    var refiners = extra.getElementsByTagName('h3');
   
    makeExpanderControls(refiners, false, 'closed');
}

function makeExpanderControls(elems, controlAfter, defaultState) {

    for (i=0;i<elems.length;i++) {

      var header = elems[i];
      var header_id = header.getAttribute('id');
      var list_id = header_id + "_list";

      if (document.getElementById(list_id)) {
         var link = document.createElement("a");
         link.setAttribute("class", "imglink");
         link.setAttribute("href","javascript:toggle('"+header_id+"');");
         if ( controlAfter ) {
             link.appendChild(header.firstChild);
             link.innerHTML += ' ' + expand_img;
             header.appendChild(link);
         } else {
             link.innerHTML += expand_img;
             link.appendChild(header.firstChild);
             header.insertBefore(link, header.firstChild);         
         }
         initToggleState(header_id, defaultState);
      }
   }   
}

function enableControls() {
   if(document.getElementById('showHide')){
      document.getElementById('showHide').id = '';
   }   
}

function initToggleState(header_id, defaultState) {

   var list_id = header_id + "_list";
   if (!document.getElementById(header_id)) return false;
   if (!document.getElementById(list_id)) return false;

   var header = document.getElementById(header_id);
   var list = document.getElementById(list_id);

   var current_state = defaultState;
   if ($.cookie(header_id + '_state')) {
        current_state = $.cookie(header_id + '_state');
   }
   
   if (current_state == "open") {
        expand(header, list);
   } else {
        collapse(header, list);
   }
   
}

function toggle(header_id) {

   var list_id = header_id + "_list";
   if (!document.getElementById(header_id)) return false;
   if (!document.getElementById(list_id)) return false;

   var header = document.getElementById(header_id);
   var list = document.getElementById(list_id);

   if (header.className != "open") {
        expand(header, list);
   } else {
        collapse(header, list);
   }
   
   if (header_id.search(/^refine_by/) >= 0) {
        $.cookie(header_id + '_state', header.className); 
   }
   
}

function collapse(header, list) {
    header.className = "closed";
    list.style.display = "none";
    header.getElementsByTagName('img')[0].src = "/images/expand.gif";
    header.getElementsByTagName('img')[0].title = "open";
    header.getElementsByTagName('img')[0].alt = "open";
}

function expand(header, list) {
    header.className = "open";
    list.style.display = "block";
    header.getElementsByTagName('img')[0].src = "/images/collapse.gif";
    header.getElementsByTagName('img')[0].title = "close";
    header.getElementsByTagName('img')[0].alt = "close";
}

function expandAllResults(){
   toggleTheseResults("closed");
   $.cookie('search_result_state', 'open');
}

function collapseAllResults(){
   toggleTheseResults("open");
   $.cookie('search_result_state', 'closed');
}

function toggleTheseResults(className){
   if (!document.getElementsByTagName) return false;
   if (!document.getElementById('content')) return false;

   var content = document.getElementById('content');
   var hdrs = content.getElementsByTagName('h5');
   for (i=0;i<hdrs.length;i++) {
      if(hdrs[i].className = className){
         toggle(hdrs[i].id);
      }
   }
}
