 /* ================================================== *\
|*    JS Pulldown Builder © 2004-2006 by EEBKiller      *|
|*                                                      *|
|*    Modes for opening and closing:                    *|
|*                                                      *|
|*    0 - No Animation                                  *|
|*    1 - Sliding from left top corner                  *|
|*    2 - Fading                                        *|
|*    3 - Effects 1 & 2 combined                        *|
|*    4 - Sling like Windows startmenu but from top     *|
|*                                                      *|
 \* ================================================== */

var userAgent = navigator.userAgent.toLowerCase();
var is_ie     = (userAgent.indexOf('msie') != -1);
var is_moz    = (navigator.product == 'Gecko');
var is_ns     = (userAgent.indexOf('compatible') == -1) && (userAgent.indexOf('mozilla') != -1);
var pd_activePulldown = false;

var pd_delay = 700;     // Delay, when opened pulldown shall be closed automatically
var pd_duration = 200;  // How long does it take to open each pulldown 
var pd_steps = 20;      // Steps to open and close
var pd_modeShow = 0;    // Mode for opening
var pd_modeHide = 0;    // Mode for closing
var pd_image = '/images/other/pd_open.gif';  // Image used for Arrow

                        //  /* ================= *\
var pd_topSafer = 0;    // |*  Internal vars !!!  *|
var pd_closer = false;  //  \* ================= */

function pd_init(elem) {
    document.write(' <img id="' + elem + '_pic" src="' + pd_image + '" border="0" alt="" />');
    var switch1_elem = document.getElementById(elem);
    var switch2_elem = document.getElementById(elem + '_pic');

    switch1_elem.style.cursor = 'pointer';
    switch1_elem.onclick = pd_eventSwitch;
    switch1_elem.onmouseover = pd_eventSwitch;

    switch2_elem.style.cursor = 'pointer';
    switch2_elem.onclick = pd_eventSwitch;
    switch2_elem.onmouseover = pd_eventSwitch;
}

function pd_eventSwitch(E) {
    if (is_ie) {
       var E = event;
       var element = E.srcElement;
    } else {
       var element = E.target;
    }
    if (pd_activePulldown && E.type == 'mouseover') {
// Bereits eines offen oder am Öffnen und HOVER auf einen Button/Text
        var this_elem = element.id.replace(/_pic$/, '');
        if (this_elem != pd_activePulldown) {
            window.clearTimeout(pd_closer);
            document.getElementById(pd_activePulldown + '_pdown').style.display = 'none';
            pd_activePulldown = this_elem;
            var target_elem = document.getElementById(pd_activePulldown + '_pdown');
            var switch_elem = document.getElementById(pd_activePulldown);

            var pos = pd_getOffset(switch_elem);
            target_elem.style.filter = 'alpha(opacity=100)'; 
            target_elem.style.MozOpacity = 1;
            target_elem.style.opacity = 1;
            target_elem.style.clip = 'rect(auto, auto, auto, auto)';
            target_elem.style.display = 'inline';
            pos['left'] -= 10;
            if (pos['left'] < 0) {
                pos['left'] = 0;
            }
            pos['top'] += switch_elem.offsetHeight + 5;
            target_elem.style.top = pos['top'] + 'px';
            target_elem.style.left = pos['left'] + 'px';
            target_elem.onmouseout = pd_eventClose;
        }
    } else if (pd_activePulldown && E.type == 'click') {
// Bereits eines offen oder am Öffnen und KLICK auf einen Button/Text
        var this_elem = element.id.replace(/_pic$/, '');
        if (this_elem == pd_activePulldown) {
            pd_closer = window.setTimeout('pd_closePulldown(0)', 0);
        }
    } else if (!pd_activePulldown && E.type == 'click') {
// Keines geöffnet, klick auf den Button/Text
        pd_activePulldown = element.id.replace(/_pic$/, '');

        var target_elem = document.getElementById(pd_activePulldown + '_pdown');
        var switch_elem = document.getElementById(pd_activePulldown);

// Unter dem Pfeil-Button zentrieren
        var pos = pd_getOffset(switch_elem);
        target_elem.style.display = 'inline';
        pos['left'] -= 10;
        target_elem.style.display = 'none';
        if (pos['left'] < 0) {
            pos['left'] = 0;
        }
        pos['top'] += switch_elem.offsetHeight + 5;
        target_elem.style.top = pos['top'] + 'px';
        target_elem.style.left = pos['left'] + 'px';

        target_elem.onmouseout = pd_eventClose;
        document.onmouseover = pd_eventStayOpen;
        document.onclick = pd_eventClose;
        window.setTimeout('pd_openPulldown(0)', 0);
    }

}

function pd_eventClose(E) {
    if (pd_activePulldown) {
        if (is_ie) {
           var E = event;
           var element = E.srcElement;
        } else {
           var element = E.target;
        }
        var elemID = element.id.replace(/_pic$/, '').replace(/_pdown$/, '');
        if (E.type == 'click' && elemID != pd_activePulldown) {
            if (!pd_checkChild(element)) {
                pd_closer = window.setTimeout('pd_closePulldown(0)', 0);
            }
        } else if (E.type == 'mouseout') {
            pd_closer = window.setTimeout('pd_closePulldown(0)', pd_delay);
        }
    }
}
  
function pd_eventStayOpen(E) {
    if (pd_activePulldown) {
        if (is_ie) {
            var E = event;
            var element = E.srcElement;
        } else {
            var element = E.target;
        }
        if (pd_checkChild(element)) {
            window.clearTimeout(pd_closer);
        }
    }
}
    
function pd_eventAction(E) {
    if (pd_activePulldown) {
        if (is_ie) {
            var E = event;
            var element = E.srcElement;
        } else {
            var element = E.target;
        }
        var elemId = element.id;
        var elemMenu = elemId.replace(/pdi_([\d\w]+)-\d+/, "$1");
        var elemMenuId = elemId.replace(/pdi_[\d\w]+-(\d+)/, "$1");
        if (E.type == "mouseover") {
            eval('element.className = ' + elemMenu + '[' + elemMenuId + '][2];');
        } else if (E.type == "mouseout") {
            eval('element.className = ' + elemMenu + '[' + elemMenuId + '][1];');
        }
    }
}

function pd_openPulldown(step) {
    var target_elem = document.getElementById(pd_activePulldown + '_pdown');
    switch (pd_modeShow) {
        case 0:
        target_elem.style.display = 'inline';
        break;
        case 1:
        pWidth = target_elem.offsetWidth * (step + 1) / pd_steps;
        pHeight = target_elem.offsetHeight * (step + 1) / pd_steps;
        target_elem.style.clip = 'rect(0px, ' + Math.round(pWidth) + 'px, ' + Math.round(pHeight) + 'px, 0px)';
        break;
        case 2:
        percent = Math.round((step + 1) / pd_steps * 100);
        target_elem.style.filter = 'alpha(opacity=' + percent + ')'; 
        target_elem.style.MozOpacity = (percent / 100);
        target_elem.style.opacity = (percent / 100);
        break;
        case 3:
        pWidth = target_elem.offsetWidth * (step + 1) / pd_steps;
        pHeight = target_elem.offsetHeight * (step + 1) / pd_steps;
        percent = Math.round(Math.pow(Math.round((step + 1) / pd_steps * 100), 5) / Math.pow(100, 5) * 100);
        target_elem.style.clip = 'rect(0px, ' + Math.round(pWidth) + 'px, ' + Math.round(pHeight) + 'px, 0px)';
        target_elem.style.filter = 'alpha(opacity=' + percent + ')'; 
        target_elem.style.MozOpacity = (percent / 100);
        target_elem.style.opacity = (percent / 100);
        break;
        case 4:
        if (step == 0) {
            var switch_elem = document.getElementById(pd_activePulldown);
            var pos = pd_getOffset(switch_elem);
            pd_topSafer = pos['top'] + switch_elem.offsetHeight + 5;
        }
        pWidth = target_elem.offsetWidth;
        pHeight1 = target_elem.offsetHeight;
        pHeight2 = pHeight1 - pHeight1 * (step + 1) / pd_steps;
        target_elem.style.clip = 'rect(' + Math.round(pHeight2) + 'px, ' + Math.round(pWidth) + 'px, ' + Math.round(pHeight1) + 'px, 0px)';
        target_elem.style.top = (pd_topSafer - pHeight2) + "px";
        break;
    }
    if (pd_modeShow != 0) {
        if (step + 1 < pd_steps) {
            target_elem.style.display = 'inline';
            window.setTimeout('pd_openPulldown(' + (step + 1) + ')', Math.round(pd_duration / pd_steps));
        }
    }
}

function pd_closePulldown(step) {
    if (pd_activePulldown) {
        var target_elem = document.getElementById(pd_activePulldown + '_pdown');
        switch (pd_modeHide) {
            case 0:
            target_elem.style.display = 'none';
            pd_activePulldown = false;
            break;
            case 1:
            pWidth = target_elem.offsetWidth * (1 - ((step + 1) / pd_steps));
            pHeight = target_elem.offsetHeight * (1 - ((step + 1) / pd_steps));
            target_elem.style.clip = 'rect(0px, ' + Math.round(pWidth) + 'px, ' + Math.round(pHeight) + 'px, 0px)';
            window.status = step;
            break;
            case 2:
            percent = 100 - (Math.round((step + 1) / pd_steps * 100));
            target_elem.style.filter = 'alpha(opacity=' + percent + ')'; 
            target_elem.style.MozOpacity = (percent / 100);
            target_elem.style.opacity = (percent / 100);
            break;
            case 3:
            pWidth = target_elem.offsetWidth * (1 - ((step + 1) / pd_steps));
            pHeight = target_elem.offsetHeight * (1 - ((step + 1) / pd_steps));
            percent = Math.round(Math.pow(100 - Math.round((step + 1) / pd_steps * 100), 0.3) / Math.pow(100, 0.3) * 100);
            target_elem.style.clip = 'rect(0px, ' + Math.round(pWidth) + 'px, ' + Math.round(pHeight) + 'px, 0px)';
            target_elem.style.filter = 'alpha(opacity=' + percent + ')'; 
            target_elem.style.MozOpacity = (percent / 100);
            target_elem.style.opacity = (percent / 100);
            break;
            case 4:
            if (step == 0) {
                var switch_elem = document.getElementById(pd_activePulldown);
                var pos = pd_getOffset(switch_elem);
                pd_topSafer = pos['top'] + switch_elem.offsetHeight + 5;
            }
            pWidth = target_elem.offsetWidth;
            pHeight1 = target_elem.offsetHeight;
            pHeight2 = pHeight1 - pHeight1 * (1 - (step + 1) / pd_steps);
            target_elem.style.clip = 'rect(' + Math.round(pHeight2) + 'px, ' + Math.round(pWidth) + 'px, ' + Math.round(pHeight1) + 'px, 0px)';
            target_elem.style.top = (pd_topSafer - pHeight2) + "px";
            break;
        }
        if (pd_modeHide != 0) {
            if (step + 1 < pd_steps) {
                window.setTimeout('pd_closePulldown(' + (step + 1) + ')', Math.round(pd_duration / pd_steps));
            }
        }
        if (step + 1 == pd_steps) {
            target_elem.style.display = 'none';
            target_elem.style.filter = 'alpha(opacity=100)'; 
            target_elem.style.MozOpacity = 1;
            target_elem.style.opacity = (percent / 100);
            target_elem.style.clip = 'rect(auto, auto, auto, auto)';
            pd_activePulldown = false;
        }
    }
}
  
function pd_getOffset(elem) {
    var oLeft = elem.offsetLeft;
    var oTop = elem.offsetTop;

  //  if (is_moz) {
  //      return { 'left' : oLeft, 'top' : oTop };
  //  }
    while ((elem = elem.offsetParent) != null) {
        oLeft += elem.offsetLeft;
        oTop += elem.offsetTop;
    }
    return { 'left' : oLeft, 'top' : oTop };
}
    
function pd_checkChild(elem) {
    do {
        if (elem.id && elem.id == pd_activePulldown + "_pdown") {
            return true;
        }
    } while ((elem = elem.offsetParent) != null)
    return false;
}

function pd_build(pd_name, pd_class, pd_data) {
    var len = pd_data.length;
    document.writeln('<div id="' + pd_name + '_pdown" style="position: absolute; display: none; z-index: 2;" class="' + pd_class + '">');
    for (i = 0; i < len; i++) {
        document.writeln('<div class="' + pd_data[i][2] + '" ' + pd_data[i][4] + ' onmouseover="this.className = \'' + pd_data[i][3] + '\';" onmouseout="this.className = \'' + pd_data[i][2] + '\';" onclick="document.location.href = \'' + pd_data[i][1] + '\'">' + pd_data[i][0] + '</div>');

    }
    document.writeln('</div>');
}

/*
function switchIn() {
    pd_modeShow ++;
    if (pd_modeShow > 4) {
        pd_modeShow = 0;
    }
    document.getElementById("in1").innerHTML = pd_modeShow;
}

function switchOut() {
    pd_modeHide ++;
    if (pd_modeHide > 4) {
        pd_modeHide = 0;
    }
    document.getElementById("out1").innerHTML = pd_modeHide;
}
*/