// Markets-Navigation
// Version 14.5.2008 HH

var here = location.href;

// Voreinstellung, um mit FTD_toggleMenu den Grundzustand wiederherzustellen
// Nummer der Zelle im Menü (0, 1, ...), wird durch initNavi evtl. geändert
var FTD_defaultmenu = 0;

// IDs der Menüs
var FTD_topmenu   = 'menu0';
var FTD_submenus  = ['menu1', 'menu2', 'menu3', 'menu4'];
var FTD_dropmenus = ['stocks', 'funds', 'derivatives'];

// Timer für Mouseout Event Handler
var FTD_menuTimer = new Array;

// Dauer von Effekten (in Sek.)
var FTD_effectDuration = 0.2;
var FTD_menuDelay = 0.2;

// Browserinfo für Sonderbehandlungen MSIE
var msie = /MSIE (\d\.\d)/.exec(navigator.appVersion) ? RegExp.$1 : 999;

//
// Inittialisierung der Navigation
//
function initNavi() {
    // Wir gehen zuerst durch die oberen Menüeinträge, gucken, zu welchem
    // die aktuelle Seite gehört, das dazugehörige Submenü wird dann anzeigt
    // Danach gehen wir durch alle Menüeinträge und gucken, ob sie zur aktuellen
    // Seite gehören. Wenn ja -> Klasse here zuweisen.

    // Die erste Menüzeile ist anders: Wenn "mymarkets" im Pfad, gehört sie
    // zu my:markets, sonst zu Markets.

    if (here.indexOf('/mymarkets/') >= 0
        || here.indexOf('/portfolio/') >= 0
        || here.indexOf('/www/login') >= 0)
    {
        FTD_defaultmenu = 1;                             // siehe oben
        $("menu0_mymarkets").addClassName("here");
    } else {
        FTD_defaultmenu = 0;
        $("menu0_markets").addClassName("here");
    }

    // richtiges Untermenu einschalten
    FTD_toggleMenu(FTD_defaultmenu);

    // In diesem Untermenü die aktuelle Zelle finden und markieren.
    // Die passende Verknüpfung könnte allerdings auch in einem Untermenü
    // (3. Ebene) sein!

    items = $(FTD_submenus[FTD_defaultmenu]).childElements();  //.reverse()
    items.each(function(item) {
        var brk = 0;
        var refs = FTD_findAllHrefs(item);
        if (refs.length == 0) return;

        refs.each(function(ref) {
            // Sonderbehandlung Portfolio (hier gibt es verschiedene Seiten,
            // die alle zum Portfolio gehören): Wenn Portfolio-Unterseite,
            // aber nicht Watchlist (hat eigenen Menüpunkt), dann so tun,
            // als wenn Portfolio-Übersichtsseite -> Menüpunkt hervorheben.

            var portfolio = false;

            if (ref.indexOf('/portfolio/') >= 0
                && ref.indexOf('/portfolio/watchlist') < 0) {
                portfolio = true;
            }
            if (portfolio || here.indexOf(ref) > -1)  {
                item.addClassName('here');
                brk = 1;
                throw $break;
            }
        });
        if (brk) throw $break;
    });

    //
    // Mouseover für obere Navigation setzen (Umschalten der zweiten Zeile)
    //
    $(FTD_topmenu).getElementsBySelector('.firstmenu').each(function(ele, i) {
        ele.observe('mouseover', function() {
            // evtl. laufenden FTD_toggleMenu-Timer abschießen, dann neuen starten
            if (FTD_menuTimer['FTD_toggleMenu']) {
                window.clearTimeout(FTD_menuTimer['FTD_toggleMenu']);
                FTD_menuTimer['FTD_toggleMenu'] = 0;
            }
            FTD_menuTimer['FTD_toggleMenu'] =
                window.setTimeout('FTD_toggleMenu(' + i + ')', FTD_menuDelay * 1000);
        });

        ele.observe('mouseout', function() {
            // evtl. laufenden FTD_toggleMenu-Timer abschießen
            if (FTD_menuTimer['FTD_toggleMenu']) {
                window.clearTimeout(FTD_menuTimer['FTD_toggleMenu']);
                FTD_menuTimer['FTD_toggleMenu'] = 0;
            }
        });
    });

    //
    // Beim Verlassen der Maus aus der Navigation soll diese auf den Startzustand
    // (wie von initNavi() erzeugt) zurückgesetzt werden.
    //
    $("navigation").observe("mouseout", function() {
        FTD_menuTimer['resetNavi'] =
            window.setTimeout('FTD_toggleMenu(FTD_defaultmenu)', FTD_menuDelay * 1000);
    });

    // Rücksetzen abbrechen, falls Navi gar nicht verlassen wurde (Bubbling)

    $("navigation").observe("mouseover", function() {
        if (FTD_menuTimer['resetNavi']) {
            window.clearTimeout(FTD_menuTimer['resetNavi']);
            FTD_menuTimer['resetNavi'] = 0;
        }
    });

    // Mouseover für Untermenüs der 3. Ebene setzen
    // Leider klappt der Rolleffekt nicht mit IE <= 7

    FTD_dropmenus.each(function(rdm) {
        if ($(rdm)) $(rdm).observe("mouseover",
                FTD_eventRollmenuOver.bindAsEventListener(this, 'ul', rdm + 'menu'));
        if ($(rdm)) $(rdm).observe("mouseout",
                FTD_eventRollmenuOut.bindAsEventListener(this, 'ul', rdm + 'menu'));
    });

} // Ende initNavi

//
// Untermenü 3. Ebene ausrollen (Event Handler)
//
function FTD_eventRollmenuOver(e) {
    var ele = Event.element(e);
    var menutag = $A(arguments)[1];
    var menuid  = $A(arguments)[2];

    // Falls Einrollen-Timer aktiv, diesen abbrechen
    // (Passiert, wenn die Maus im Menü von einer Zelle zur nächsten fährt.)

    if (FTD_menuTimer['rollUp_' + menuid]) {
        window.clearTimeout(FTD_menuTimer['rollUp_' + menuid]);
        FTD_menuTimer['rollUp_' + menuid] = 0;
    }

    // Falls Ausrollen-Timer schon läuft, nichts mehr unternehmen
    if (FTD_menuTimer['rollDown_' + menuid]) return;

    FTD_menuTimer['rollDown_' + menuid] =
        window.setTimeout("FTD_rollMenuDown('" + menuid + "')", 250);
}
function FTD_rollMenuDown(menuid) {
    // Falls Menü schon sichtbar, nichts unternehmen
    if ($(menuid).getStyle('display') != 'none') return;

    Effect.BlindDown(menuid, {
        duration: FTD_effectDuration,
        afterFinish: function(obj) {
            // Charts ausblenden, damit sie Zertifikate-Menü nicht verdecken
            if (obj.element.id == 'derivativesmenu' && navigator.platform != 'Win32') {
                FTD_hideCharts(['IDMS_miniChart_1', 'IDMS_miniChart_2']);
            }   // nicht mehr erforderlich unter Windows wegen wmode=opaque
        }
    });
}

//
// Untermenü 3. Ebene einrollen (Event Handler)
//
function FTD_eventRollmenuOut(e) {
    var ele = Event.element(e);
    var menutag = $A(arguments)[1];
    var menuid  = $A(arguments)[2];

    // Falls Ausrollen-Timer aktiv, diesen abbrechen

    if (FTD_menuTimer['rollDown_' + menuid]) {
        window.clearTimeout(FTD_menuTimer['rollDown_' + menuid]);
        FTD_menuTimer['rollDown_' + menuid] = 0;
    }

    FTD_menuTimer['rollUp_' + menuid] =
        window.setTimeout("FTD_rollMenuUp('" + menuid + "')", 250);
}
function FTD_rollMenuUp(menuid) {
    // Falls Menü schon unsichtbar, nichts unternehmen
    if ($(menuid).getStyle('display') == 'none') return;

    Effect.BlindUp(menuid, {
        duration: FTD_effectDuration,
        beforeStart: function(obj) {
            // Charts wieder einblenden (sicherheitshalber immer)
            if (navigator.platform != 'Win32')
                FTD_showCharts(['IDMS_miniChart_1', 'IDMS_miniChart_2']);
        }
    });
}

//
// Ein- und Ausblenden der MiniCharts, die dem Zertifikate-Menü im Weg sein können
//
function FTD_hideCharts(aCh) {
    aCh.each(function (ele) {
        if (! $(ele)) return;
        var embeds = $(ele).getElementsBySelector("embed, object");

        if (embeds.length) {
            var chart = embeds[0];
            if (chart) {
                //$(chart).hide();
                $(chart).setStyle({ visibility: "hidden" });
            }
        }
    });
}
function FTD_showCharts(aCh) {
    aCh.each(function (ele) {
        if (! $(ele)) return;
        var embeds = $(ele).getElementsBySelector("embed, object");

        if (embeds.length) {
            var chart = embeds[0];
            if (chart) {
                //$(chart).show();
                $(chart).setStyle({ visibility: "visible" });
            }
        }
    });
}

//
// Enthaltenes A-Tag finden, dessen href zurückgeben
//
function FTD_findHref(cell) {
    var hr = null;
    var children = cell.getElementsBySelector("a");

    children.each(function(el) {
        hr = el.href;
        throw $break;
    });

    return hr;
}

//
// Alle enthaltenen A-Tags finden, deren hrefs zurückgeben
//
function FTD_findAllHrefs(cell) {
    var hr = new Array();
    var children = cell.getElementsBySelector("a");

    children.each(function(el) {
        hr.push(el.href);
    });

    return hr;
}

//
// In menu0 (obere menüzeile) das zu Element num gehörende submenu
// ein- und die anderen ausblenden
//
function FTD_toggleMenu(num) {
    currentmenu = num;

    FTD_submenus.each(function(sm, i)
    {
        if (i == num) {
            if ($(sm).getStyle("display") == 'none') {
                $(sm).show();
            }
        } else {
            if ($(sm).getStyle("display") != 'none') {
                $(sm).hide();
            }
        }
    });

    // Oberen Reiter, der Klasse here aber kein hover hat, abdunkeln

    var mi = $$('.firstmenu.here')[0];

    if (num == FTD_defaultmenu) {
        mi.setStyle({ backgroundColor: 'white' });
    } else {
        mi.setStyle({ backgroundColor: '#EEEEEE' });
    }
}

//
// Abmelde-Funktion
//
function FTD_logout() {
    logoutMarkets('SID','/',document.domain);
    location.href = 'http://www.ftd.de/logout';
}

// Ende der Navigations-Skripte
