/* $Id: WookeeExpandable.js 135 2007-03-18 13:52:07Z Julian Mehnle $ */

function browserSupported() {
    return document.getElementById && document.createTextNode;
}

function getNextSiblingElement(node) {
    var sibling = node.nextSibling;
    while (sibling && sibling.nodeType != Node.ELEMENT_NODE)
        sibling = sibling.nextSibling;
    return sibling;
}

function toggleElementExpanded(event) {
    if (!browserSupported()) {
        return;
    }
    
    event = event || window.event;
    var label_element = event.target || event.srcElement;
    var expandable_element = document.getElementById(
        label_element.getAttribute('labelfor')
    );
    
    if (expandable_element)
        var display_style;
        
        if (expandable_element.currentStyle)  // Internet Explorer
            display_style = expandable_element.currentStyle.display;
        else  // DOM
            display_style = getComputedStyle(expandable_element, '').display;

        if (display_style == 'none') {
            // Expand element:
            label_element.firstChild.nodeValue = '<<';
            expandable_element.style.display = 'block';
        }
        else {
            // Collapse element:
            label_element.firstChild.nodeValue = '>>';
            expandable_element.style.display = 'none';
        }
}

if (browserSupported()) {
    if (document.styleSheets) {
        for (var iStyleSheet = 0; iStyleSheet < document.styleSheets.length; iStyleSheet++) {
            var StyleSheet = document.styleSheets[iStyleSheet];
            var CSSRules = StyleSheet.cssRules || StyleSheet.rules;

            for (var iRule = 0; iRule < CSSRules.length; iRule++) {
                var CSSRule = CSSRules[iRule];
                if (CSSRule.selectorText && CSSRule.selectorText.match(/\.expandable$/i)) {
                    // Internet Explorer 5 does not support setProperty for CSSRule.style,
                    // so we have to modify the textual representation instead.
                    CSSRule.style.cssText = 'display: none;' + CSSRule.style.cssText;
                }
            }
        }
    }
    else {
        // Certain browsers (such as Opera 7) don't support document.styleSheets,
        // so we have to hack the CSS changes in the hard way.
        document.write('<style type="text/css">');
        document.write('.expandable { display: none }');
        document.write('</style>');
    }
}

