var toggleDivClassName = "toggle";
var toggleDivSpeedMultiplier = 2;
var toggleDivDelay = 10;

var toggleDivOnlyOneOpen = false;

var toggleDivs = new Array();

var togglingDivs = new Object();

function toggleDiv(divId,action) {
        var d = fetch_object(divId);
        if (d==null || d.tagName!="DIV" || !d.offsetHeight || togglingDivs[divId]) { return; }

        d.style.overflow = "hidden";
        if (action=="open" || (typeof(action)=="undefined" && d.style.visibility=="hidden")) {
                if (toggleDivOnlyOneOpen) {
                        setTimeout("closeAllToggleDivsExcept('"+divId+"')",5);
                }
                var originalHeight = d.offsetHeight;
                var height = 1;
                d.style.height = height+"px";
                d.style.visibility = "visible";
                d.style.position="static";
                togglingDivs[divId] = true;
                setTimeout("toggleObject('"+divId+"','open',"+originalHeight+","+height+")",toggleDivDelay);
        }
        else if (action=="close" || (typeof(action)=="undefined" && d.style.visibility=="visible")) {
                var originalHeight = d.offsetHeight;
                var height = originalHeight;
                togglingDivs[divId] = true;
                setTimeout("toggleObject('"+divId+"','close',"+originalHeight+","+height+")",toggleDivDelay);
        }
}

function closeAllToggleDivsExcept(divId) {
        for (var i=0; toggleDivs!=null && i<toggleDivs.length; i++) {
                if (toggleDivs[i].id!=divId) {
                        toggleDiv(toggleDivs[i].id,'close');
                }
        }
}

function toggleObject(divId, openClose, originalHeight, height) {
        var d = fetch_object(divId);
        if (d==null || d.tagName!="DIV") { return; }

        if (openClose=="open") {
                height = height * toggleDivSpeedMultiplier;
                if (height > originalHeight) {
                        d.style.height = originalHeight+"px";
                        delete togglingDivs[divId];
                }
                else {
                        d.style.height = height+"px";
                        setTimeout("toggleObject('"+divId+"','"+openClose+"',"+originalHeight+","+height+")",toggleDivDelay);
                }
        }
        else {
                height = height * (1/toggleDivSpeedMultiplier);
                if (height <= 1) {
                        d.style.position = "absolute";
                        d.style.visibility = "hidden";
                        d.style.height = originalHeight+"px";
                        delete togglingDivs[divId];
                }
                else {
                        d.style.height = height+"px";
                        setTimeout("toggleObject('"+divId+"','"+openClose+"',"+originalHeight+","+height+")",toggleDivDelay);
                }
        }
}

function hideToggleDivs() {
        var divs = document.getElementsByTagName("DIV");
        for (var i=0; divs!=null && i<divs.length; i++) {
                if (divs[i].className.indexOf(toggleDivClassName)>-1) {
                        toggleDivs[toggleDivs.length] = divs[i];
                        var s = divs[i].style;
                        s.position="absolute";
                        s.visibility="hidden";
                }
        }
}

function addHandler(obj, evt, newhandler, captures) {
        if (obj.attachEvent) {
                obj.attachEvent('on' + evt, newhandler);
        }
        else if (obj.addEventListener) {
                obj.addEventListener(evt, newhandler, captures);
        }
        else {
                var oldhandler;
                if (oldhandler = obj['on' + evt]) {
                        obj['on' + evt] = function() {
                                oldhandler();
                                newhandler();
                        }
                }
                else {
                        obj['on' + evt] = newhandler;
                }
        }
}

if (document.getElementById && document.getElementsByTagName) {
        addHandler(window,'load',hideToggleDivs,false);
}
