var catbarElid = null;

function catbarHide(elid) {
  var el = document.getElementById(elid);
  if (el) el.style.display = 'none';
  el = document.getElementById('cmbutton_' + elid.substring(7));
  if (el) el.className = 'catmenu';
}

function catbarShow(elid) {
  var el = document.getElementById(elid);
  if (el) el.style.display = 'block';
  el = document.getElementById('cmbutton_' + elid.substring(7));
  if (el) el.className = 'catmenu open';
}

function catbarClick(e) {
  if (!e) var e = window.event;
  var el = e.target;
  if (!el) el = e.srcElement;
  if (!el) {
    alert("No target.");
    return;
  }
  if (!el.id) {
    alert("catbarClick with no id");
    return;
  }
  var elid = 'cmpane_' + el.id.substring(9);
  
  // turn off the last menu
  if (catbarElid) catbarHide(catbarElid);

  // if they don't differ, don't show it
  if (elid == catbarElid) {
    catbarElid = null;
    return killEvent(e);
  }

  catbarElid = elid;
  catbarShow(elid);

  return killEvent(e);
}

function catbarClickOff(e) {
  if (catbarElid) {
    catbarHide(catbarElid);
    catbarElid = null;
  }
}

function catbarBuild(paneid) {
  var paneEl = document.getElementById(paneid);
  if (!paneEl) {
    status(paneid + " not found");
    return;
  }
  var middle = firstkid(paneEl, 'div', 'middle');
  if (!middle) return;

  var otherid = 'cmbutton_' + paneid.substring(7);
  var linkEl = document.getElementById(otherid);
  if (!linkEl) {
    status(otherid + " not found");
    return;
  }
  var linkName = linkEl.firstChild.nodeValue;
  // Build the brands element
  var brands = catbarBrands[linkName];
  var baseURL = '/catalog/viewcat/'+linkName.replace(/ /g,'_');
  var brandList = makeEl('p');
  brandList.appendChild(makeEl('strong', {"title":"hello"}, 'Popular brands: '));
  for (var i in brands) {
    var url = baseURL+'/By_Brand/'+brands[i].replace(/ /g,'_');
    brandList.appendChild(makeEl('a', {"href":url}, brands[i]));
    brandList.appendChild(document.createTextNode(', '));
  }
  var url = baseURL+'?allBrands=1';
  brandList.appendChild(makeEl('a', {'href':url}, 'more'))
  middle.appendChild(brandList);

  status(linkName);
  var ul = makeEl('ul', {'class':"catbartree"});
  for (var catName in catbarTree[linkName]) {
    var li = makeEl('li');
    var url = baseURL+'/'+catName.replace(/ /g,'_');
    url = url.replace(/ /g,'_');
    li.appendChild(makeEl('a', {"href":url}, catName));
    var sub_ul = makeEl('ul');
    for (var i in catbarTree[linkName][catName]) {
      var subcatName = catbarTree[linkName][catName][i];
      var sub_li = makeEl('li');
      var suburl = url;
      if (subcatName != null) {
        suburl = url+'/'+subcatName.replace(/ /g,'_')
      } else {
        subcatName = catName;
      }
      sub_li.appendChild(makeEl('a', {'href':suburl}, subcatName));
      sub_ul.appendChild(sub_li);
    }
    // omitted: populate this ul
    li.appendChild(sub_ul);
    ul.appendChild(li);
  }
  middle.appendChild(ul);
}

function catbarSearchBlur(e) {
  var el = document.getElementById('catbarsearchcover');
  var disp = 'block';
  if (e.target.value && e.target.value.length) disp = 'none';
  if (el) el.style.display = disp;
}

function catbarSearchFocus(e) {
  var el = document.getElementById('catbarsearchcover');
  if (el) el.style.display = 'none';
}

function catbarSearchCoverClick(e) {
  if (!e) var e = window.event;
  if (e.target) e.target.style.display = 'none';
  var el = document.getElementById('catbarsearch');
  if (el) el.focus();
}

function catbarRegister() {
  if (!document.getElementsByTagName) return;
  var els = document.getElementsByTagName('div');
  for (var i = 0; i < els.length; ++i) {
    var el = els[i];
    if (!el.id || el.id.substring(0, 7) != 'cmpane_') continue;
    var otherid = 'cmbutton_' + el.id.substring(7);
    el = document.getElementById(otherid);
    if (!el) {
      alert('Missing an element with id ' + otherid);
      continue;
    }
    addEvent(el, 'click', catbarClick);
  }
  addEvent(document, 'click', catbarClickOff);
  var el = document.getElementById('catbarsearch');
  if (el) {
    catbarSearchBlur({'target': el});
    addEvent(el, 'blur', catbarSearchBlur);
    addEvent(el, 'focus', catbarSearchFocus);
  }
  var el = document.getElementById('catbarsearchcover');
  if (el) {
    addEvent(el, 'click', catbarSearchCoverClick);
  }
  addEvent(document, 'click', catbarClickOff);
  catbarBuild('cmpane_1');
  catbarBuild('cmpane_2');
  catbarBuild('cmpane_3');
  catbarBuild('cmpane_4');
  catbarBuild('cmpane_5');
  catbarBuild('cmpane_6');
}

domReady(catbarRegister);
