function collapseAll(nodes, obj){
    for(i = 0;i < nodes.length;i++){
        if(nodes[i] != obj){
            nodes[i].className = "hide"; 
            if(nodes[i].tagName == "DT"){
                if( nodes[i].childNodes.length == 1){
                    nodes[i].childNodes[0].nodeValue = nodes[i].childNodes[0].nodeValue.replace("-","+");
                }
            }
        }
    }
    oList = document.getElementById("treatmentsContainer");
    oLink  = document.getElementById("expander");
    if(oLink.innerHTML.indexOf("+") > 0){
        updateClassName(oList, oLink);
    }
}

function collapse(obj){
    dds = obj.getElementsByTagName("DD");
    for(i = 0;i<dds.length;i++){
        dds[i].className = "hide";
    }
    dts = obj.getElementsByTagName("DT");
    for(i = 0;i<dts.length;i++){
         dts[i].className = "";
         dts[i].innerHTML = dts[i].innerHTML.replace("-","+");
    }
}

function updateText(value){
    var currentText;
    if(value.indexOf("+",0) > 0){
            currentText = value.replace("+","-");
        }
        else{
            currentText = value.replace("-","+");
        }
    return currentText;
}

function updateObj(obj){
    oNodes = obj.childNodes;
    var currentText = ""; 
     for(i = 0;i<oNodes.length;i++){ 
        value = oNodes[i].nodeValue;
        oNodes[i].nodeValue = updateText(value);
     }
}

function showChild(el){
    obj = getElementByEvent(el);
    collapseAll(obj.parentNode.childNodes, obj);
    if(obj.className == "show"){
        obj.className = "";
        nextChild=getNextSibling(obj);
        nextChild.className = "hide";
    }
    else{
        collapse(obj.parentNode);
        obj.className = "show";
        nextChild=getNextSibling(obj);
        nextChild.className = "show";
    }

    updateObj(obj)
}

function getNextSibling(startBrother){
  endBrother=startBrother.nextSibling;
  while(endBrother.nodeType!=1){
    endBrother = endBrother.nextSibling;
  }
  return endBrother;
}

function expandItems(obj){
    for(i = 0;i < obj.length;i++){
        if(obj[i].tagName == "DT"){
            obj[i].className = "show";
            updateObj(obj[i]);
        }
        obj[i].className = "show";
        
    }
}

function initList(id){
    list = document.getElementById(id);
    listHeaders = list.getElementsByTagName("DT");
    obj = $$('.expand');
    collapse(list.parentNode)
    expandItems(obj);
    for(i = 0;i<listHeaders.length;i++){
         AttachEvent(listHeaders[i],"click",showChild);
    }
}

function initExpander(id){
    oLink = document.getElementById(id);
    AttachEvent(oLink,"click",expandContainer);
}

function updateClassName(oList, oLink){
    if(oList.className == "expanded"){
       oList.className = "minimized";
       oLink.innerHTML = "Expand all (+)";
    }
    else{
        oList.className = "expanded";
        oLink.innerHTML = "Minimize all (-)";       
    }
}

function expandContainer(eventargs){
    oLink = getElementByEvent(eventargs);
    oList = document.getElementById("treatmentsContainer")
    updateClassName(oList, oLink)
    for(i = 0;i < oList.childNodes.length ;i++){
        if(oList.className == "minimized"){
            oList.childNodes[i].className = "hide";
            if(oList.childNodes[i].tagName == "DT"){
                oList.childNodes[i].innerHTML = oList.childNodes[i].innerHTML.replace("-","+");
            }
        }
        else{
            oList.childNodes[i].className = "show";
            if(oList.childNodes[i].tagName == "DT"){
                oList.childNodes[i].innerHTML = oList.childNodes[i].innerHTML.replace("+","-");
            }
        }
    }
}

function mainListener(eventargs){
   initList("treatmentsContainer");
   initExpander("expander");
}

function getElementByEvent(e){
    var targ;
    if (!e) var e = window.event;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;
    return targ;
}


function AttachEvent(elementObj, eventName, eventHandlerFunctionName){
    if (elementObj.addEventListener) 
        { // Non-IE browsers
	        elementObj.addEventListener(eventName, eventHandlerFunctionName, false);		
        } 
    else if (elementObj.attachEvent) 
    { // IE 6+
        elementObj.attachEvent('on' + eventName, eventHandlerFunctionName);
    } 
    else 
    { // Older browsers 
        var currentEventHandler = elementObj['on' + eventName];
        if (currentEventHandler == null) 
        {
	        elementObj['on' + eventName] = eventHandlerFunctionName;
        } 
        else 
        {
	        elementObj['on' + eventName] = function(e) { currentEventHandler(e); eventHandlerFunctionName(e); }
        }
    }
}

function init(){
  //  AttachEvent(window, 'load', mainListener);
}

expander = {
    load : function(){
        fx = [];
        header = [];
        minMaxState = 0;
        $$('.mooHeader').each(function(obj, i){
            var block = obj.getNext();
            fx[i] = new Fx.Slide(block);
            header[i] = obj;
            obj.addEvent('click', function(e){
                e = new Event(e).stop();
                if(!fx[i].open){
                    expander.hideAll();
                    expander.show(i);
                    expander.minMaxState(1);
                }else{
                    expander.hideAll();
                    if(minMaxState == 0){
                        expander.hide(i);
                        expander.minMaxState(2);
                    }else{
                        expander.show(i);
                        expander.minMaxState(1);
                        minMaxState = 0;
                    }  
                }
            });
        if(!obj.hasClass('expand')){
            header[i].removeClass('show');
            fx[i].hide();
        }
        });
        $$('.expanderContainer').each(function(obj){
            MinMaxLink = obj.getElement('a');
            MinMaxLink.addEvent('click', function(e){
                e = new Event(e).stop();
                expander.minMaxClick();
            });
        });
    },
    show : function(i){
        fx[i].show();
        header[i].addClass('show');
        expander.setText(i,'+','-');
    },
    hide : function(i){
        fx[i].hide();
        header[i].removeClass('show');
        expander.setText(i,'-','+');
    },
    showAll : function(){
        for(i=0;i<fx.length;i++){
            expander.show(i);
        }
    },
    hideAll : function(){
        for(i=0;i<fx.length;i++){
            expander.hide(i);
        }
    },
    setText : function(i,x,y){
        strTemp = header[i].innerHTML;
        strTemp = strTemp.replace(x,y);
        header[i].innerHTML = strTemp;
        return true;
    },
    minMaxClick : function(){
        var state = 0;
        for(i=0;i<fx.length;i++){
            if(fx[i].open){state += 1;}
        }
        if(state >= 1){
                expander.hideAll();
                MinMaxLink.innerHTML = 'Expand all (+)';
                minMaxState = 0;
            }else{
                expander.showAll();
                MinMaxLink.innerHTML = 'Minimize all (-)';
                minMaxState = 1;
            }
    },
    minMaxState : function(state){
        switch(state){
            case 1:
                MinMaxLink.innerHTML = 'Minimize all (-)';
                break;
            case 2:
                MinMaxLink.innerHTML = 'Expand all (+)';
                break;
        }
    }
}
function fixPrint(){
    if(window.ie){
        window.onbeforeprint=expander.showAll;
        window.onafterprint=expander.hideAll;
    }
}
window.addEvent('load', expander.load);
window.addEvent('load', fixPrint);