var Activeweave = window.Activeweave || {};

Activeweave.Faq = {
  openall_on:      0,                /* closed */
  categories:     {},                /* per category open/closed status */
  cat_len:        0,
  cat_label:      "cat_"
};

/* intialize the faq structures, and set them to openclosed */
Activeweave.Faq.init = function(cat_label, categories, openclosed,openfirst)
  {
  var el;

  var hash = window.location.hash;
  if(hash&&hash.length>0&&hash.indexOf(Activeweave.Faq.cat_label)==1)
    {
    hash = hash.substring(1);
    }
  else
    {
    hash = null;
    }
  Activeweave.Faq.cat_len = categories;
  Activeweave.Faq.cat_label = cat_label;

  for (var i=1; i <= categories; i++)
    {
    Activeweave.Faq.categories[cat_label + i] = openclosed;
    }
  Activeweave.Faq.openall_on = openclosed;
  el = $('allToggle');
  Activeweave.Faq.toggleAll(el, openclosed);
  if(openfirst)
    {
    Activeweave.Faq.toggleCat("cat_1", $('cat_a_1'), 1);      
    }
  if(hash)
    {
    var hid   = hash.replace('anchor_','');
    var hname = hash.replace('anchor','a');
    Activeweave.Faq.toggleCat(hid, $(hname), true);
    }
  }

/* toggle the state of the answer in question, return open/closed state */
Activeweave.Faq.toggleAnswer = function (answerName) {
  var div=$(answerName);
  if (!div)
     return null;
  var toggle = div.className == "answer_open"? "answer_closed": "answer_open";
  div.className = toggle;
  return toggle == "answer_open";
}

/* open close entire category, explicit or based on current state */
Activeweave.Faq.toggleCat = function (id, el, onoff)
  {
  var cat_on = onoff == null? !Activeweave.Faq.categories[id]: onoff;
  var choose = cat_on? ".answer_closed":".answer_open";
  var which = document.getElementsBySelector('#' + id + ' ' + choose);

  for (var i = 0; i < which.length; i++)
    {
    Activeweave.Faq.toggleAnswer(which[i].id);
    }
  if (el)
    {
    el.innerHTML = cat_on? "close": "open";
    }
  Activeweave.Faq.categories[id] = cat_on;
  }

Activeweave.Faq.toggleAll = function (el, allon)
  {
  var on = allon==null? !Activeweave.Faq.openall_on: allon;

  for (var ix = 1; ix <= Activeweave.Faq.cat_len; ix++)
    {
    var a = document.getElementsBySelector('#' + Activeweave.Faq.cat_label + ix + ' a');
    Activeweave.Faq.toggleCat(Activeweave.Faq.cat_label + ix, a[0], on);
    }
  Activeweave.Faq.openall_on = on;
  if (el)
    {
    el.innerHTML = on? "close all": "open all";
    }
  }
