function getElementsByClassName(classname) {
  var rl = new Array();
  var re = new RegExp('(^| )'+classname+'( |$)');
  var ael = document.getElementsByTagName('*');
  var op = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
  if (document.all && !op) ael = document.all;
  for (i=0, j=0; i<ael.length; i++) {
    if (re.test(ael[i].className)) {
      rl[j]=ael[i];
      j++;
    }
  }
  return rl;
}

function attachExternals() {
  as = document.getElementsByTagName('a');
  for (var i=0; i<as.length; i++) {
    if (as[i].className.indexOf('external') >= 0) {
      as[i].target = '_blank';
    }
  }
}

fnCustomAutoloadFormatter = function(oResultItem, sQuery) { 
	var sKey = oResultItem[0]; 
	var nQuantity = oResultItem[1]; 
	var sKeyQuery = sKey.substr(0, sQuery.length); 
	var sKeyRemainder = sKey.substr(sQuery.length); 
	var aMarkup = ["<div class='sample-result'><div class='sample-quantity'>", 
		nQuantity, 
		"</div><span class='sample-query'>", 
		sKeyQuery, 
		"</span>", 
		sKeyRemainder, 
		"</div>"]; 
	return (aMarkup.join("")); 
} 




function setSelectedTab() {
  tabpanels = getElementsByClassName('tabpanel');
  for (var j=0; j<tabpanels.length; j++) {
    tabpanels[j].style.display = 'none';
  }
  tabs = getElementsByClassName('tab');
  for (var j=0; j<tabpanels.length; j++) {
    if (tabs[j].className.indexOf('selected') != -1) {
      document.getElementById(tabs[j].childNodes[0].href.split('#')[1]).style.display = 'block';
    }
  }
}
function attachTabs() {
  tabsets = getElementsByClassName('tabset');
  for (var i=0; i<tabsets.length; i++) {
    setSelectedTab();
    tabs = getElementsByClassName('tab');
    for (var j=0; j<tabs.length; j++) {
      tabs[j].childNodes[0].onclick = function() {
        temptabs = getElementsByClassName('tab');
        for (var k=0; k<temptabs.length; k++) {
          temptabs[k].className = temptabs[k].className.replace(' selected','');
        }
        this.parentNode.className += ' selected'
        setSelectedTab();
        return false;
      };
    }
  }
}


function attachBrowseFeatures() {
  var browsetagsets = getElementsByClassName('browsefeatureset');
 // alert(browsetagsets.toString());
  for (var i=0; i<browsetagsets.length; i++) {
    browsetagsets[i].style.display = 'none';
    var toggle = document.createElement('a');
    toggle.className = 'expand';
    toggle.onclick = function() {
      if (this.className == 'expand') {
        this.parentNode.getElementsByTagName('ul')[0].style.display = 'block'
        this.className = 'contract';
      } else {
        this.parentNode.getElementsByTagName('ul')[0].style.display = 'none'
        this.className = 'expand';
      }
      return false;
    };
    browsetagsets[i].parentNode.insertBefore(toggle,browsetagsets[i].parentNode.firstChild);
    var allinputs = browsetagsets[i].parentNode.getElementsByTagName('input');
    for (var j=0; j<allinputs.length; j++) if(allinputs[j].type=='checkbox') {
      allinputs[j].onclick = function() {
        var childinputs = this.parentNode.getElementsByTagName('input');
        if (this.checked) {
          for (var k=0; k<childinputs.length; k++) {
            childinputs[k].checked = true;
          }
          var childlis = this.parentNode.parentNode.getElementsByTagName('li');
          var ok = 1;
          for (var k=0; k<childlis.length; k++) {
            if (this.parentNode.parentNode == childlis[k].parentNode) {
              if (!childlis[k].getElementsByTagName('input')[0].checked) {
                ok = 0;
              }
            }
          }
          if (ok) {
            this.parentNode.parentNode.parentNode.getElementsByTagName('input')[0].checked = true;
          }
        } else {
          for (var k=0; k<childinputs.length; k++) {
            childinputs[k].checked = false;
          }
          var parentli = this.parentNode.parentNode.parentNode;
          while (parentli.tagName == 'LI') {
            parentli.getElementsByTagName('input')[0].checked = false;
            parentli = parentli.parentNode.parentNode;
          }
        }
      };
    }
  }
}



function attachBrowseTags() {
  var browsetagsets = getElementsByClassName('browsetagset');
  for (var i=0; i<browsetagsets.length; i++) {
    browsetagsets[i].style.display = 'none';
    var toggle = document.createElement('a');
    toggle.className = 'expand';
    toggle.onclick = function() {
      if (this.className == 'expand') {
        this.parentNode.getElementsByTagName('ul')[0].style.display = 'block'
        this.className = 'contract';
      } else {
        this.parentNode.getElementsByTagName('ul')[0].style.display = 'none'
        this.className = 'expand';
      }
      return false;
    };
    browsetagsets[i].parentNode.insertBefore(toggle,browsetagsets[i].parentNode.firstChild);
    var allinputs = browsetagsets[i].parentNode.getElementsByTagName('input');
    for (var j=0; j<allinputs.length; j++) {
      allinputs[j].onclick = function() {
        var childinputs = this.parentNode.getElementsByTagName('input');
        if (this.checked) {
          for (var k=0; k<childinputs.length; k++) {
            childinputs[k].checked = true;
          }
          var childlis = this.parentNode.parentNode.getElementsByTagName('li');
          var ok = 1;
          for (var k=0; k<childlis.length; k++) {
            if (this.parentNode.parentNode == childlis[k].parentNode) {
              if (!childlis[k].getElementsByTagName('input')[0].checked) {
                ok = 0;
              }
            }
          }
          if (ok) {
            this.parentNode.parentNode.parentNode.getElementsByTagName('input')[0].checked = true;
          }
        } else {
          for (var k=0; k<childinputs.length; k++) {
            childinputs[k].checked = false;
          }
          var parentli = this.parentNode.parentNode.parentNode;
          while (parentli.tagName == 'LI') {
            parentli.getElementsByTagName('input')[0].checked = false;
            parentli = parentli.parentNode.parentNode;
          }
        }
      };
    }
  }
}

function attachPrintLink() {
  if (document.getElementById('info')) {
    printtext = document.createTextNode('Print Article');
    printlink = document.createElement('a');
    printlink.href = '#';
    printlink.onclick = function() {
      window.print();
      return false;
    };
    printlink.appendChild(printtext);
    printitem = document.createElement('li');
    printitem.className = 'print';
    printitem.appendChild(printlink);
    document.getElementById('info').appendChild(printitem);
  }
}

function showHideTagList(id)
{ 
  if (document.getElementById)
  {
  	taglist = document.getElementById(id);
  }
  else if (document.all)
  {
	  taglist = document.all[id];
  }
  else if (document.layers)
  {
    taglist = document.layers[id];
  }

  if(taglist.style.display == '' || taglist.style.display == 'block')
  {
    taglist.style.display = 'none';
  }
  else
  {
    taglist.style.display = 'block';
  }
  return false;
}

function init() {
  attachExternals();
  attachTabs();
  attachBrowseTags();
  attachBrowseFeatures();
  attachPrintLink();
}

