/**
 * webtrends tracking fuer infolayer
 *
 * Beim Aufruf eines Infolayers wird eine fiktive URL fuer diesen Layer und
 * der Titel des Layers getrackt. Die Url setzt sich aus der Seitenid, dem Typ
 * "infolayer" und dem Namen des Layers (klein geschrieben, ohne Leerzeichen
 * zusammen), also:
 *
 * <code>
 * DCS.dcsuri = '/event_click/<seitenid>/infolayer/<name_des_layers>';
 * WT.ti      = 'Layer <Name des Layers>: <Titel des Layers>
 * </code>
 *
 * Der Name des Layers ist derjenige, der im klickbaren Element, ueber das der
 * Layer aufgerufen wird, steht. (Wenn Name und Titel des Layers gleich sind,
 * entfällt der Titel des Layers in WT.ti
 *
 * Beispiel aus Bereich Gesundheit:
 * <code>
 * DCS.dcsuri = '/event_click/1080325/infolayer/vital-n.evt'
 * WT.ti      = 'Layer Vital-N: Unsere Lösung für Gesundheitsbewusste'
 *
 * Die Seitenid wird aus der aktuellen URI geholt.
 *
 * Name und Titel des Layers werden in dieser Funktion bereit gestellt und aus
 * der Layerid und dem Dateinamen des Bildes, dessen Imagemap die Links fuer die
 * Layer enthaelt, generiert.
 *
 * Diese Funktion wird aus den Funktionen showInfoLayer*(layerid, file)
 * @see {/axaweb/js/gesundheit.js}
 * @see {/axaweb/js/layerlogik.js}
 * aufgerufen, wenn der Layer sichtbar geschaltet werden soll.
 */
function infolayerDoWebtrends (layerid, filename) {
    // MenuId der Seite
    var menuID = extractMenuId();

    var layerevents = new Array();
    var layertitles = new Array();

    layerevents["pkw_auswahl_versicherung"]     = new Array();
    layerevents["pkw_auswahl_versicherung"][1]  = 'kfz_haftpflicht';
    layerevents["pkw_auswahl_versicherung"][2]  = 'inkl_schutzbrief';
    layerevents["pkw_auswahl_versicherung"][3]  = 'teilkasko';
    layerevents["pkw_auswahl_versicherung"][4]  = 'vollkasko';
    layerevents["pkw_auswahl_versicherung"][5]  = 'insassenunfall';
    layerevents["pkw_auswahl_versicherung"][6]  = 'verkehrsrechtsschutz';

    layertitles["pkw_auswahl_versicherung"]     = new Array();
    layertitles["pkw_auswahl_versicherung"][1]  = 'Layer KFZ - Haftpflicht';
    layertitles["pkw_auswahl_versicherung"][2]  = 'Layer inkl. Schutzbrief';
    layertitles["pkw_auswahl_versicherung"][3]  = 'Layer Teilkasko';
    layertitles["pkw_auswahl_versicherung"][4]  = 'Layer Vollkasko';
    layertitles["pkw_auswahl_versicherung"][5]  = 'Layer Insassenunfall';
    layertitles["pkw_auswahl_versicherung"][6]  = 'Layer Verkehrsrechtsschutz';

    layerevents["motorrad_auswahl_versicherung"]    = new Array();
    layerevents["motorrad_auswahl_versicherung"][1] = 'kfz_haftpflicht';
    layerevents["motorrad_auswahl_versicherung"][2] = 'inkl_schutzbrief';
    layerevents["motorrad_auswahl_versicherung"][3] = 'teilkasko';
    layerevents["motorrad_auswahl_versicherung"][4] = 'vollkasko';
    layerevents["motorrad_auswahl_versicherung"][5] = 'verkehrsrechtsschutz';

    layertitles["motorrad_auswahl_versicherung"]    = new Array();
    layertitles["motorrad_auswahl_versicherung"][1] = 'Layer KFZ - Haftpflicht';
    layertitles["motorrad_auswahl_versicherung"][2] = 'Layer inkl. Schutzbrief';
    layertitles["motorrad_auswahl_versicherung"][3] = 'Layer Teilkasko';
    layertitles["motorrad_auswahl_versicherung"][4] = 'Layer Vollkasko';
    layertitles["motorrad_auswahl_versicherung"][5] = 'Layer Verkehrsrechtsschutz';

    layerevents["oldtimer_youngtimer"]      = new Array();
    layerevents["oldtimer_youngtimer"][1]   = 'oldtimer';
    layerevents["oldtimer_youngtimer"][2]   = 'youngtimer';

    layertitles["oldtimer_youngtimer"]      = new Array();
    layertitles["oldtimer_youngtimer"][1]   = 'Layer Oldtimer: Versichern Sie Ihren Oldtimer';
    layertitles["oldtimer_youngtimer"][2]   = 'Layer Youngtimer: Versichern Sie Ihren Youngtimer';

    layerevents["ges_auswahl_priv_kv"]      = new Array();
    layerevents["ges_auswahl_priv_kv"][1]   = 'vital-n';
    layerevents["ges_auswahl_priv_kv"][2]   = 'el_bonus-n';
    layerevents["ges_auswahl_priv_kv"][3]   = 'elementar-n';

    layertitles["ges_auswahl_priv_kv"]      = new Array();
    layertitles["ges_auswahl_priv_kv"][1]   = 'Layer Vital-N: Unsere Lösung für Gesundheitsbewusste';
    layertitles["ges_auswahl_priv_kv"][2]   = 'Layer EL Bonus-N: Unsere Lösung für Preisbewusste';
    layertitles["ges_auswahl_priv_kv"][3]   = 'Layer Elementar-N: Ihre Vollversicherung ohne Selbstbeteiligung';

    layerevents["ges_auswahl_versicherungen"]       = new Array();
    layerevents["ges_auswahl_versicherungen"][1]    = 'im_ausland';
    layerevents["ges_auswahl_versicherungen"][2]    = 'beim_zahnarzt';
    layerevents["ges_auswahl_versicherungen"][3]    = 'im_krankenhaus';
    layerevents["ges_auswahl_versicherungen"][4]    = 'im_pflegefall';
    layerevents["ges_auswahl_versicherungen"][5]    = 'beim_heilpraktiker';
    layerevents["ges_auswahl_versicherungen"][6]    = 'klug_kombiniert';

    layertitles["ges_auswahl_versicherungen"]       = new Array();
    layertitles["ges_auswahl_versicherungen"][1]    = 'Layer Im Ausland: Unsere Auslandsreiseversicherungen';
    layertitles["ges_auswahl_versicherungen"][2]    = 'Layer Beim Zahnarzt: Unsere Zahnzusatzversicherungen';
    layertitles["ges_auswahl_versicherungen"][3]    = 'Layer Im Krankenhaus';
    layertitles["ges_auswahl_versicherungen"][4]    = 'Layer Im Pflegefall: Unsere Pflegeversicherungen';
    layertitles["ges_auswahl_versicherungen"][5]    = 'Layer Beim Heilpraktiker';
    layertitles["ges_auswahl_versicherungen"][6]    = 'Layer Klug Kombiniert: Kombinierte Ergänzungsversicherung EG Pro';

    if (typeof layerevents[filename] == "undefined" ||
            typeof layerevents[filename][layerid] == "undefined" ||
            typeof layertitles[filename]   == "undefined" ||
            typeof layertitles[filename][layerid] == "undefined") {

        return;
    }

    dcsMultiTrack('DCS.dcsuri',
        'event_click/' + menuID + '/infolayer/' + layerevents[filename][layerid] + '.evt',
        'WT.ti',
        layertitles[filename][layerid]);

    return;
}

/**
 * Webtrends tracking fuer Reiternavigation.
 *
 * Beim Aufruf eines neuen Reiters über die Reiternavigation wird dieser per
 * dcsMultiTrack getrackt. Hierfür wird eine fiktive Url fuer den Parameter
 * DCS.dcsuri generiert. Sie setzt sich zusammen aus der Seitenid und dem
 * Name des Reiters, also:
 *
 * <code>
 * DCS.dcsuri = '/event_click/<seitenid>/<Reitername>.evt';
 * </code>
 *
 * Der Name des Reiters steht im &lt;div&gt; in der Tabellenzelle des
 * entsprechenden Reiters. Diese Zelle kann ueber die Id "button"+reiterid
 * identifiziert werden.
 *
 * Diese Funktion wird aus der Funktion showPage(page) aufgerufen
 * @see {/axaweb/js/layerlogik.js}
 * @see {/axaweb/js/gesundheit.js}
 */
function reiternaviDoWebtrends(tabid) {

    // MenuId der Seite
    var menuID = extractMenuId();

    // Reitertabellenzelle:
    var reiter  = document.getElementById('button' + tabid);

    // Reitername ist Text des nächsten Divs
    var reiterName = reiter.getElementsByTagName("div")[0].firstChild.data;

    // Titelname der Seite aus der Navigation
    var title   = currentNaviitemTitle();

    if (typeof reiterName == "undefined" || reiterName == '' ||
        title == '') {
        return;
    }

    dcsMultiTrack('DCS.dcsuri',
        'event_click/' + menuID + '/' + reiterName.toLowerCase() + '.evt',
        'WT.ti', title + ': ' + reiterName);

    return;
}

/**
 * Webtrends tracking fuer AktionsboxLayer.
 *
 * Diese Methode wird aufgerufen von showAktionsboxLayer und
 * showAktionsboxAndTransparentLayer
 * @see {/axaweb/js/layerlogik.js}
 *
 * Event und Titel des Layers werden aus dem HTML-Quellcode geparsed. Hierfuer
 * sind die Elemente aktionboxbutton<layerid> (enthaelt die Buttongrafik und damit den
 * Eventnamen) und aktionboxlayer<layerid> (enthaelt den Layer und darin den
 * Titel des Layers) wichtig.
 */
function aktionsboxDoWebtrends(layerid) {
    // menuID of the page
    menuID      = extractMenuId();

    // extrahiere den button fuer den eventnamen
    var button  = document.getElementById("aktionboxbutton" + layerid);

    if (button == null || typeof button == "undefined") { return; }

    // extrahiere eventnamen aus grafiknamen
    var layerevent  = button.src.match(/_([a-zA-Z]+)(_dark|\.)/)[1];

    // suche layer
    var layer   = document.getElementById("aktionboxlayer" + layerid);

    var childdivs   = layer.getElementsByTagName("div");

    var title   = '';

    // suche titel des layers
    for (var i = 0; i < childdivs.length; ++i) {
        if (childdivs[i].className == "doorpagelayerheadertext") {
            title   = childdivs[i].firstChild.data;
            break;
        }
    }

    // fuehre tracking aus
    dcsMultiTrack('DCS.dcsuri',
        'event_click/' + menuID + '/' + layerevent.toLowerCase() + '.evt',
        'WT.ti', layerevent + ': ' + title);
}

/**
 * Retrieve title of current (marked) navigation item of lowest level.
 *
 * The marked navigation item of the third level is identified by 'subsubmarker',
 * the one of the second level is identified by 'submarker' whereas the marked
 * item of the first level is identified by 'marker'.
 */
function currentNaviitemTitle() {
    var titlelink;

    titlelink   = document.getElementById("subsubmarker");

    if (titlelink != null && typeof titlelink != 'undefined') {
        return $(titlelink).text();
    }

    titlelink   = document.getElementById("submarker");

    if (titlelink != null && typeof titlelink != 'undefined') {
        return $(titlelink).text();
    }

    titlelink   = document.getElementById("marker");

    if (titlelink != null && typeof titlelink != 'undefined') {
        return $(titlelink).text();
    }

    return '';
}

// debug mode
var wt_debug    = false;

/**
 * Tracke den ausgewaehlten Reiter und alle dessen geoeffneten Contentblocks
 *
 * <code>
 *   trackCurrentElements(getReiter());
 * <code>
 *
 * @param reiter    das ausgewaehlte Reiterobjekt, das mit getReiter() instantiiert ist
 */
function trackCurrentElements(reiter) {

    if (typeof reiter != 'undefined') {

        if (!wt_debug) {
            // webtrends tracking der Reiterauswahl
            // Seitenname wird aus Breadcrumb-Navigation geholt
            dcsMultiTrack(
                'DCS.dcsuri', window.location.pathname,
                'DCSext.axd_reiter', reiter.rt_name,
                'DCSext.axd_cblock', getOpenContentBlocks(reiter.rt_nummer).cb_headlines
            );
        } else {
            alert(reiter.rt_name);
            alert(getOpenContentBlocks(reiter.rt_nummer).cb_headlines);
        }
    }
}

/**
 * Tracke den ausgewaehlten Contentblock, der ueber das Element
 * .headlinecontainer identifiziert wird.
 *
 * <code>
 *  $('.toggleablebox .headlinecontainer').click(function() {
 *      trackSingleContentblock(this);
 *  });
 * </code> 
 */
function trackSingleContentblock(contentblockHeadlineContainer) {
    var reiter = getReiter();
    var contentblock    = getContentblock(contentblockHeadlineContainer);

    if (typeof reiter != 'undefined') {
        if (!wt_debug) {
            dcsMultiTrack(
                'DCS.dcsuri', window.location.pathname,
                'DCSext.axd_reiter', reiter.rt_name,
                'DCSext.axd_cblock', contentblock.cb_name
            );
        } else {
            alert(reiter.rt_name);
            alert(contentblock.cb_name);
        }
    }
}

$(document).ready(function() {
    /**
     * Verpixelung von Contentbuttons
     *
     * Die zu verpixelnden Buttons muessen als Link-Elemente implementiert sein und
     * folgende Attribute besitzen:
     *
     * * class="tarifrechner|abschliessen|betreuersuche"
     * * title="<Name/zum/Link>"
     *
     * Der <Name/zum/Link> muss hierbei den Button auf dieser Seite identifizieren
     * koennen, vor allem wenn mehrere gleichartige Buttons auf der Seite
     * implementiert sind. Er darf auszerdem nur alphanumerische Zeichen,
     * Leerzeichen und "/" enthalten. Umlaute sind umzuschreiben.
     * Bei Seiten mit Reiterlogik saehe der <Name/zum/Link> folgendermaszen aus:
     * title="Leistungen/Leistungen Haftpflicht/Kraftfahrt alternativ"
     *
     * Der Aufruf dieser Funktion wird an alle Links mit einer der oben genannten
     * Klassen per jQuery angehaengt.
     */
    $('.tarifrechner,.abschliessen,.betreuersuche,.anfordern').click(function() {
        var currentMenuId   = extractMenuId();
        var titleAttr       = $(this).attr('title')

        // ersetze alle "/" durch " - "
        var ti              = currentNaviitemTitle() + ' - ' +
            titleAttr.replace(/\//g, ' - ') + ': ';
        var uri             = 'event_click/' + currentMenuId + '/conversion/';
        // ersetze Whitespaces durch "_"
        var uri_postfix     = '/' + titleAttr.toLowerCase().replace(/[\s(),]+/g, '_') +
            '.evt';

        if ($(this).hasClass('tarifrechner')) {
            dcsMultiTrack(
                'WT.ti', ti + 'Tarif berechnen',
                'DCS.dcsuri', uri + 'berechnen' + uri_postfix,
                'DCSext.axd_tarifrechner', 1);
        } else if ($(this).hasClass('abschliessen')) {
            dcsMultiTrack(
                'WT.ti', ti + 'Online abschließen',
                'DCS.dcsuri', uri + 'abschliessen' + uri_postfix,
                'DCSext.axd_abschluss', 1);
        } else if ($(this).hasClass('betreuersuche')) {
            dcsMultiTrack(
                'WT.ti', ti + 'Betreuer suchen',
                'DCS.dcsuri', uri + 'suchen' + uri_postfix,
                'DCSext.axd_betreuersuche', 1);
        } else if ($(this).hasClass('anfordern')) {
            dcsMultiTrack(
                'WT.ti', ti + 'Angebot anfordern',
                'DCS.dcsuri', uri + 'anfordern' + uri_postfix,
                'DCSext.axd_angebot', 1);
        }
    });
});

