/**
 * This script animates the drop-down-box for the language selection.
 *
 * Needs the Yahoo! UI Library (YUI)
 *
 * @author Mario Volke <mario.volke@webholics.de>
 * @copyright 2007 Mario Volke
 */
 
YAHOO.namespace('languageSelect');

YAHOO.languageSelect.insideId = function(node, id) {
    if(node.id == id) {
        return true;
    }

    while(node.parentNode) {
        node = node.parentNode;
        if(node.id == id) {
            return true;
        }
    }

    return false;
}

YAHOO.languageSelect.open = function(e) {
    if(YAHOO.languageSelect.isOpen && YAHOO.languageSelect.timer) {
        window.clearInterval(YAHOO.languageSelect.timer);
        delete YAHOO.languageSelect.timer;
    }

    if(!YAHOO.languageSelect.isOpen &&
       !YAHOO.languageSelect.anim.isAnimated() &&
       YAHOO.util.Event.getRelatedTarget(e) &&
       !YAHOO.languageSelect.insideId(YAHOO.util.Event.getRelatedTarget(e), 'languageSelect')) {

        YAHOO.languageSelect.anim.attributes.marginTop = { from: -8, to: 0, unit: 'em' };
        YAHOO.languageSelect.anim.animate();

        YAHOO.languageSelect.isOpen = true;
    }
}

YAHOO.languageSelect.close = function(e) {
    if(YAHOO.languageSelect.isOpen &&
       YAHOO.util.Event.getRelatedTarget(e) &&
       !YAHOO.languageSelect.insideId(YAHOO.util.Event.getRelatedTarget(e), 'languageSelect')) {

        if(YAHOO.languageSelect.anim.isAnimated()) {
            YAHOO.languageSelect.timer = window.setInterval(YAHOO.languageSelect.closeAnim, 500);
        }
        else {
            YAHOO.languageSelect.closeAnim();
        }
    }
}

YAHOO.languageSelect.closeAnim = function() {
    if(!YAHOO.languageSelect.anim.isAnimated()) {
        YAHOO.languageSelect.anim.attributes.marginTop = { from: 0, to: -8, unit: 'em' };
        YAHOO.languageSelect.anim.animate();

        YAHOO.languageSelect.isOpen = false;

        if(YAHOO.languageSelect.timer) {
            window.clearInterval(YAHOO.languageSelect.timer);
            delete YAHOO.languageSelect.timer;
        }
    }
}

YAHOO.languageSelect.load = function() {
    YAHOO.languageSelect.anim = new YAHOO.util.Anim('languageSelect');
    YAHOO.languageSelect.anim.duration = 0.3;
    YAHOO.languageSelect.anim.method = YAHOO.util.Easing.easeOut;

    YAHOO.languageSelect.isOpen = false;
}

YAHOO.util.Event.onAvailable('languageSelect', YAHOO.languageSelect.load);
YAHOO.util.Event.addListener('languageSelect', 'mouseover', YAHOO.languageSelect.open);
YAHOO.util.Event.addListener('languageSelect', 'mouseout', YAHOO.languageSelect.close);

