var COLLAPSABLE_PARENT_NAME = "collapsable";
var COLLAPSABLE_PARENT_TYPE = "div";
var COLLAPSABLE_CHILD_TYPE = "biography";

var COLLAPSABLE_EXPAND = "Biography";
var COLLAPSABLE_SHRINK = "Close";

function getElementsByClassName(strClass, strTag, objContElm) {
  strTag = strTag || "*";
  objContElm = objContElm || document;    
  var objColl = objContElm.getElementsByTagName(strTag);
  if (!objColl.length &&  strTag == "*" &&  objContElm.all) objColl = objContElm.all;
  var arr = new Array();                              
  var delim = strClass.indexOf('|') != -1  ? '|' : ' ';   
  var arrClass = strClass.split(delim);    
  for (var i = 0, j = objColl.length; i < j; i++) {                         
    var arrObjClass = objColl[i].className.split(' ');   
    if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
    var c = 0;
    comparisonLoop:
    for (var k = 0, l = arrObjClass.length; k < l; k++) {
      for (var m = 0, n = arrClass.length; m < n; m++) {
        if (arrClass[m] == arrObjClass[k]) c++;
        if ((delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
          arr.push(objColl[i]); 
          break comparisonLoop;
        }
      }
    }
  }
  return arr; 
}

// To cover IE 5 Mac lack of the push method
Array.prototype.push = function(value) {this[this.length] = value; };


init = function() {
	if(document.getElementById && document.createTextNode) {
		var entries = document.getElementsByTagName(COLLAPSABLE_PARENT_TYPE);
		for(i=0;i<entries.length;i++)
			if (entries[i].className==COLLAPSABLE_PARENT_NAME)
				assignCollapse(entries[i]);
	}
}

assignCollapse = function (div) {
	var button = document.createElement('p');
	var hiddenObj = getElementsByClassName(COLLAPSABLE_CHILD_TYPE,'p',div);
	button.className='collapse';
	button.style.cursor='pointer';
	button.setAttribute('expand', COLLAPSABLE_EXPAND);
	button.setAttribute('shrink', COLLAPSABLE_SHRINK);
	button.setAttribute('state', -1);
	button.innerHTML='Missing Biography Style';
	// div.insertBefore(button, div.getElementsByTagName(COLLAPSABLE_CHILD_TYPE)[0]);
	div.insertBefore(button, hiddenObj[0]);

	button.onclick=function(){ 
		var state = -(1*this.getAttribute('state'));
		this.setAttribute('state', state);
		// this.parentNode.getElementsByTagName(COLLAPSABLE_CHILD_TYPE)[0].style.display=state==1?'none':'block';
		hiddenObj[0].style.display=state==1?'none':'block';
		this.innerHTML = this.getAttribute(state==1?'expand':'shrink');
	};					
	button.onclick();
}
