    function procedureCollapse() {
    	var procedures = getElementsByClassName('procedure', 'div', document);
	    for (var i = 0; i < procedures.length; i++) {
  			var procedure = procedures[i];
  			var showProc = document.getElementById('hide_show_link_' + i);
  			if (!showProc) {
  				showProc = document.createElement('span');
   				showProc.id = 'hide_show_link_' + i;
  				showProc.innerHTML = 'Show Procedure';
  				showProc.className = 'hide_show_procedure';
  				showProc.onclick = new Function("hideshowProcedure(" + i + ");");
  				procedure.parentNode.insertBefore(showProc, procedure);
				}
        else {
            showProc.innerHTML = 'Show Procedure';
				    showProc.style.display = 'inline';
  		  }
        procedure.style.display = 'none';
  		  procedure.id = 'proc_id_' + i;
		  }
    }
    
    function showAllProcedures() {
        var procedures = getElementsByClassName("procedure", "div", document);
        for (var i = 0; i < procedures.length; i++) {
            var elem = procedures[i];   
            elem.style.display = 'block';
        }
        var hideShowLinks = getElementsByClassName("hide_show_procedure", "span", document);
        for (var i = 0; i < hideShowLinks.length; i++) {
            var elem = hideShowLinks[i];   
            elem.style.display = 'none';
        }
        
    }
   
   function hideAllProcedures() {
        var procedures = getElementsByClassName("procedure", "div", document);
        for (var i = 0; i < procedures.length; i++) {
            procedures[i].style.display = 'none';
        }
        var hideShowLinks = getElementsByClassName("hide_show_procedure", "span", document);
        for (var i = 0; i < hideShowLinks.length; i++) {
            var elem = hideShowLinks[i];   
            elem.style.display = 'none';
        }
    }

    function hideshowProcedure(n) {
    	if (document.getElementById('proc_id_' + n).style.display == 'none') {
	    	document.getElementById('proc_id_' + n).style.display = 'block';
	    	document.getElementById('hide_show_link_' + n).innerHTML = "Hide Procedure";
    	}
    	else {
	    	document.getElementById('proc_id_' + n).style.display = 'none';
	    	document.getElementById('hide_show_link_' + n).innerHTML = "Show Procedure";
    	}
    }
    
// From http://www.robertnyman.com/index.php?p=256
// By Robert Nyman
function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}
