/******************************************************************************
 Project:     www.simyo.de
 Copyright:   SinnerSchrader <http://www.sinnerschrader.de>
 
 Description: allgemeine Funtionen
 Id:          12
 Date:        2010-02-19 05:06:55
 User:        s2-bre
 :folding=explicit:collapseFolds=1:tabSize=4:
 ******************************************************************************/
/**
* Globales
*
* {{{
*/
// YUI Loader
YUILoader = new YAHOO.util.YUILoader(
{
    require: ["dom", "event", "connection"],
    loadOptional: true,
    base: "/extensions/libs/yui/"
})
// initialise YUI Loader
YUILoader.insert();

// SIMYO - namespace
var SIMYO =
{
    // SIMYO - environment
    env:
    {
        isIE: YAHOO.env.ua.ie
    }
};
/* }}} */
/**
* Function: SIMYO.Helper
*
* @date   07.08.2008
* @author chrwla
*
* {{{
*/
SIMYO.Helper =
{
    // display an element
    displayElement: function(elementId)
    {
        YAHOO.util.Dom.setStyle(elementId, "display", "block");
    },
    // hide an element
    hideElement: function(elementId)
    {
        YAHOO.util.Dom.setStyle(elementId, "display", "none");
    },
    // set an new CSS-class
    setCssClass: function(elementId, newClassName)
    {
        var oldClassName = YAHOO.util.Dom.get(elementId).className;
        
        if (newClassName != oldClassName)
        {
            YAHOO.util.Dom.removeClass(elementId, oldClassName);
            YAHOO.util.Dom.addClass(elementId, newClassName);
        }
    },
    enableDataFlatRenewal: function (dataFlatRenewalProhibited, isDataFlatEnabled)
    {
        // alert("dataFlatRenewalProhibited: " + dataFlatRenewalProhibited + "\n isDataFlatEnabled: " + isDataFlatEnabled);
        if (!dataFlatRenewalProhibited && isDataFlatEnabled)
        {
            YAHOO.util.Dom.removeClass("dataFlatRenewal", "disabled");
            YAHOO.util.Dom.get("dataFlatRenewalChooser").disabled = "";
        }
        else if (!dataFlatRenewalProhibited && !isDataFlatEnabled)
        {
            YAHOO.util.Dom.addClass("dataFlatRenewal", "disabled");
            YAHOO.util.Dom.get("dataFlatRenewalChooser").checked = "";
            YAHOO.util.Dom.get("dataFlatRenewalChooser").disabled = "disabled";
        }
        else return;
    },
    // set Radio-Input "checked"
    enableRadioInput: function(elementId)
    {
        var radio = YAHOO.util.Dom.get(elementId);
        
        if (radio.checked != true)
        {
            radio.checked = "checked";
        }
    },
    enableChooserInput: function(elementId)
    {
        var chooser = YAHOO.util.Dom.get(elementId);
        if (chooser.disabled == true)
        {
            chooser.disabled = "";
        }
    },
    disableChooserInput: function(elementId)
    {
        var chooser = YAHOO.util.Dom.get(elementId);
        if (chooser.disabled == false)
        {
            chooser.disabled = "disabled";
        }
    },
    setChooserInput: function(elementId) {
        var chooser = YAHOO.util.Dom.get(elementId);
        if (chooser.checked != true) {
            chooser.checked = "checked";
        }
    },
    resetChooserInput: function(elementId) {
        var chooser = YAHOO.util.Dom.get(elementId);
        if (chooser.checked == true) {
            chooser.checked = "";
        }
    },
    changeTextContent: function(elementId, text)
    {
        YAHOO.util.Dom.get(elementId).innerHTML = text;
    }
};
/* }}} */
/**
* Function: SIMYO.Overlay
* 
* Dunkelt den gesamten Viewport ab und blendet einen Layer darueber ein.
* 
* @date   25.07.2008
* @author chrwla
*
* {{{
*/
SIMYO.Overlay = {
    display: function (overlay) {
        var MIN_POSITION_TOP         = YAHOO.util.Dom.getRegion("mainNav")['bottom'];
        var clientViewportHeight = YAHOO.util.Dom.getViewportHeight();
        var clientViewportWidth = YAHOO.util.Dom.getViewportWidth();;
        var clientDocumentScrollTop = YAHOO.util.Dom.getDocumentScrollTop();
        var clientDocumentScrollLeft = YAHOO.util.Dom.getDocumentScrollLeft();
        YAHOO.util.Dom.setStyle(overlay, "visibility", "hidden");
        YAHOO.util.Dom.setStyle(overlay, "top", "0");
        YAHOO.util.Dom.setStyle(overlay, "left", "0");
        YAHOO.util.Dom.setStyle(overlay, "display", "block");
        var OverlayWidth = YAHOO.util.Dom.getRegion(overlay)['right'];
        var OverlayHeight = YAHOO.util.Dom.getRegion(overlay)['bottom'];
        
        var positionTop = 0;
        var positionLeft = 0;
        var top = "";
        var left = "";
        if (OverlayWidth == 0) {
            OverlayWidth = clientViewportWidth/2;
        }
        positionLeft = (clientViewportWidth - OverlayWidth) / 2;
        positionTop = clientDocumentScrollTop + ((clientViewportHeight - OverlayHeight) / 2);
        if (Math.round(positionTop) <= MIN_POSITION_TOP) {
            positionTop = MIN_POSITION_TOP;
        }
        top = Math.round(positionTop) + "px";
        left = Math.round(positionLeft) + "px";
        if (SIMYO.isIE) {
            if (SIMYO.isIE < 7) {
                YAHOO.util.Dom.setStyle("dimmerIframe", "width", YAHOO.util.Dom.getDocumentWidth() + "px");
                YAHOO.util.Dom.setStyle("dimmerIframe", "height", YAHOO.util.Dom.getDocumentHeight() + "px");
                YAHOO.util.Dom.setStyle("dimmerIframe", "filter", "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)");
                YAHOO.util.Dom.setStyle("dimmerIframe", "display", "block");
            }
            YAHOO.util.Dom.setStyle("dimmer", "filter", "alpha(opacity = 50)");
        }
        else {
            YAHOO.util.Dom.setStyle("dimmer", "opacity", "0.5");
        }
        
        YAHOO.util.Dom.setStyle("dimmer", "width", YAHOO.util.Dom.getDocumentWidth() + "px");
        YAHOO.util.Dom.setStyle("dimmer", "height", YAHOO.util.Dom.getDocumentHeight() + "px");
        YAHOO.util.Dom.setStyle("dimmer", "display", "block");
        YAHOO.util.Dom.setStyle(overlay, "top", top);
        YAHOO.util.Dom.setStyle(overlay, "left", left);
        YAHOO.util.Dom.setStyle(overlay, "visibility", "visible");
        YAHOO.util.Event.addListener("dimmer", "click", function () {SIMYO.Overlay.close(overlay)});
    },
    close: function (overlay) {
        YAHOO.util.Dom.setStyle(overlay, "display", "none");
        YAHOO.util.Dom.setStyle("dimmer", "display", "none");
        if (SIMYO.isIE < 7) {
            YAHOO.util.Dom.setStyle("dimmerIframe", "display", "none");
        }
    }
};
/* }}} */
/**
 * Function: SIMYO.MNPLayer
 *
 *
 *
 * @date   30.09.2009
 * @author chrwla
 *
 * {{{
 */
SIMYO.MNPLayer = function () {
    var overlay = "overlayMNP";
    var openMNPLayer = function () {
        YAHOO.util.Event.stopEvent(e);
        YAHOO.util.Event.preventDefault(e);
        SIMYO.Overlay.display(overlay);
        YAHOO.util.Event.addListener("closeMNP", "click", function () {SIMYO.Overlay.close(overlay)});
    };
    return {
        initialise: function () {
            YAHOO.util.Event.onAvailable("existingMsisdn", function () {
                YAHOO.util.Event.addListener("existingMsisdn", "click", openMNPLayer);
            });
        }
    };
}();
/* }}} */

/**
 * Function: SIMYO.Interstitial
 *
 *
 *
 * @date   16.04.2008
 * @author chrwla
 *
 * {{{
 */
SIMYO.Interstitial = function () {
    var overlay = "overlayInterstitial";
    var actionConfig = {};
    var actionConfigTr = {};
    var responseFailure = function (o) {
        return true;
    };
    var responseSuccess = function (o) {
        return true;
    };
    var callback = {
        failure: responseFailure,
        success: responseSuccess,
        scope:   this
    };
    var triggerAction = function (method, host, action) {
        actionURL = host + action;
        var transaction = YAHOO.util.Connect.asyncRequest(method, actionURL, callback, null);
    };
    var trackInterstitialEvent = function (e, event, eventName) {
        s.linkTrackVars       = "events";
        s.linkTrackEvents     = event;
        s.events              = event;
        s.tl(e, "o", eventName);
    };
    var displayInterstitial = function () {
        SIMYO.Overlay.display(overlay);
    };
    var trackInterstitial = function (cm, val, keyval) {
        trackHbxCustomMetric(cm,val,keyval);
    }
    var closeInterstitial = function () {
        // triggerAction(actionConfig.method, actionConfig.host, actionConfig.close.action);
        // trackInterstitial(actionConfigTr.cm, actionConfigTr.val, actionConfigTr.keyval);
        trackInterstitialEvent(true, "event19", "Interstitial close");
        SIMYO.Overlay.close(overlay);
    };
    var avoidInterstitial = function () {
        triggerAction(actionConfig.method, actionConfig.host, actionConfig.avoid.action);
        trackInterstitialEvent(true, "event21", "Interstitial avoid");
        SIMYO.Overlay.close(overlay);
    };
    var executeInterstitial = function () {
        // triggerAction(actionConfig.method, actionConfig.host, actionConfig.avoid.action);
        var target = document.getElementById("executeInterstitial");
        YAHOO.util.Event.stopEvent(e);
        YAHOO.util.Event.preventDefault(e);
        trackInterstitialEvent(target, "event20", "Interstitial rate change");
        document.location = this.href;
    };
    var registerEvents = function () {
        YAHOO.util.Event.onContentReady(overlay, function () {
            // var dimmer         = document.getElementById("dimmer");
            // var closeTrigger   = document.getElementById("closeInterstitial");
            // var avoidTrigger   = document.getElementById("avoidInterstitial");
            // var executeTrigger = document.getElementById("executeInterstitial");
            YAHOO.util.Event.addListener("dimmer", "click", closeInterstitial);
            YAHOO.util.Event.addListener("closeInterstitial", "click", closeInterstitial);
            YAHOO.util.Event.addListener("avoidInterstitial", "click", avoidInterstitial);
            YAHOO.util.Event.addListener("executeInterstitial", "click", executeInterstitial);
        });
    };
    return {
        initialise: function (config) {
            if (config) {
                actionConfig = config;
            }
            registerEvents();
            displayInterstitial();
        },
        trackClose: function (configTr) {
            if (configTr) {
                actionConfigTr = configTr;
            }
        }
    };
}();
/* }}} */
/**
 * Function: SIMYO.Interceptor
 *
 * @date   15.05.2008
 * @author chrwla
 *
 * {{{
 */
SIMYO.Interceptor = function () {
    var active        = true;  // Interceptor aktivieren oder deaktivieren
    var debug         = false;  
    var traceable     = true;  // Tracking aktivieren oder deaktivieren
    var overlay       = "overlayInterceptor";
    var counter       = 0;
    var exitURL       = "";
    var cookieAB      = "interceptorAB";
    var cookieCounter = "interceptorCounter";
    var cookieOptions = {
        path: "/",
        expires: new Date("January 12, 2025")
    };
    var filterAnchor = function (e) {
        if (!YAHOO.util.Dom.hasClass(e, "noInterception")) {
            return e;
        }
    };
    var getAnchor = function (scopes) {
        var anchors = [], a = [], i = 0;
        while (i < scopes.length) {
            a = YAHOO.util.Dom.getElementsBy(filterAnchor, "a", scopes[i]);
            i++;
            anchors = anchors.concat(a);
        }
        return anchors;
    };
    var setCounter = function (value) {
        counter = value;
    };
    var isInTestGroup = function () {
        if (debug) {
            return true;
        } else {
            var randomNumber = Math.random();
            if (randomNumber > 1) {
                return true;
            } else {
                return false;
            }
        }
    };
    var prepareListeners = function (config) {
        var scopes = [];
        try {
            scopes = config.scopes.split(",");
        } catch (e) {
            scopes = ["www-simyo-de"];  // default scope
        }
        var links = getAnchor(scopes);
        YAHOO.util.Event.addListener(links, "click", displayInterceptor);
        YAHOO.util.Event.addListener("dimmer", "click", closeInterceptor);
        YAHOO.util.Event.addListener("interceptorClose", "click", closeInterceptor);
        YAHOO.util.Event.addListener("interceptorConfirm", "click", confirmInterceptor);
        YAHOO.util.Event.addListener("interceptorConfirmExitSale", "click", confirmInterceptorExitSale);
        YAHOO.util.Event.addListener("interceptorCancel", "click", cancelInterceptor);
    };
    if (traceable) {
        var trackInitialisation = function (testGroup, eventName) {
            s.linkTrackVars   = "eVar2,eVar5";
            s.eVar2           = testGroup;
            s.eVar5           = counter;
            s.tl(this, "o", eventName);
        };
        var trackAction = function (e, event, eventName) {
            var target = YAHOO.util.Event.getTarget(e)
            s.linkTrackVars   = "prop2,events,eVar2,eVar3,eVar4,eVar5";
            s.linkTrackEvents = event;
            s.prop2           = eventName;
            s.eVar2           = "A";
            s.eVar3           = eventName;
            s.eVar4           = s.pageName;
            s.eVar5           = counter;
            s.events          = event;
            s.tl(target, "o", eventName);
        };
    }
    var closeInterceptor = function (e) {
        YAHOO.util.Event.stopEvent(e);
        YAHOO.util.Event.preventDefault(e);
        if (traceable) {
            trackAction(e, "event6", "Layer close");
        }
        SIMYO.Overlay.close(overlay);
        document.location = exitURL;
    };
    var confirmInterceptor = function (e) {
        YAHOO.util.Event.stopEvent(e);
        YAHOO.util.Event.preventDefault(e);
        var infoURL = YAHOO.util.Event.getTarget(e).href;
        if (traceable) {
            trackAction(e, "event7", "Layer open a_z");
        }
        SIMYO.Overlay.close(overlay);
        document.location = infoURL;
    };
    var confirmInterceptorExitSale = function (e) {
        YAHOO.util.Event.stopEvent(e);
        YAHOO.util.Event.preventDefault(e);
        if (traceable) {
            trackAction(e, "event9", "Layer exit_sale");
        }
        SIMYO.Overlay.close(overlay);
        document.location = exitURL;
    };
    var cancelInterceptor = function (e) {
        if (traceable) {
            trackAction(e, "event8", "Layer open sale");
        }
        SIMYO.Overlay.close(overlay);
    };
    var displayInterceptor = function (e) {
        exitURL = YAHOO.util.Event.getTarget(e).href;
        YAHOO.util.Event.stopEvent(e);
        YAHOO.util.Event.preventDefault(e);
        SIMYO.Overlay.display(overlay);
        counter = counter + 1;
        YAHOO.util.Cookie.set(cookieCounter, counter, cookieOptions);
        if (traceable) {
            trackAction(e, "event5", "Layer open");
        }
    };
    return {
        initialise: function (config) {
            if (active) {
                var ABValue = YAHOO.util.Cookie.get(cookieAB, String);
                if (ABValue) {
                    if (ABValue === "A") {
                        var cookieValue = YAHOO.util.Cookie.get(cookieCounter, Number);
                        setCounter(cookieValue);
                        prepareListeners(config);
                    } else {
                        return;
                    }
                } else {
                    if (isInTestGroup()) {
                        YAHOO.util.Cookie.set(cookieAB, "A", cookieOptions);
                        YAHOO.util.Cookie.set(cookieCounter, counter, cookieOptions);
                        if (traceable) {
                            trackInitialisation("A", "Layer initialised");
                        }
                        prepareListeners(config);
                    } else {
                        YAHOO.util.Cookie.set(cookieAB, "B", cookieOptions);
                        YAHOO.util.Cookie.set(cookieCounter, counter, cookieOptions);
                        if (traceable) {
                            trackInitialisation("B", "Layer not initialised");
                        }
                    }
                }
            }
        }
    }
}();
/* }}} */
/**
* Function: SIMYO.Popunder
*
* @date   01.12.2009
* @author chrwla
*
* {{{
*/
SIMYO.Popunder = function () {
    var that            = {},
        active            = false,
        debug            = false,
        popunder,
        popunderName    = "popunder",
        popunderParams  = "width=540,height=516,resizable=yes",
        popunderCookie    = "popunderAB",
        statusCookie    = "p_st",
        cookieOptions   = {
            path: "/",
            expires: new Date("January 12, 2025")
        };    /**
     * Setzt den Inhalt des Statuscookie
     *
     * @param: value  Inhalt des Cookie [0|1]
     */
    var setStatusCookieValue = function (value) {
        YAHOO.util.Cookie.set(statusCookie, value, cookieOptions);
    };
    /**
     * Prueft ob der Statuscookie existiert und liefert anhand dessen Inhalt
     * den Status des Popunder zurueck.
     * Gibt null zurueck wenn der Cookie nicht existiert.
     */
    var getSatusCookieValue = function () {
        var value = YAHOO.util.Cookie.get(statusCookie, Number);
        if (value !== null && value === 1) {
            return 1;
        } else if (value !== null && value === 0) {
            return 0;
        } else {
            return null;
        }
    };
    /**
     * Entscheidet per Zufall, welcher Gruppe die Besucher angehören
     */
    var isInTestGroup = function () {
        if (debug) {
            return true;
        } else {
            var randomNumber = Math.random();
            if (randomNumber <= 0.5) {
                return true;
            } else {
                return false;
            }
        }
    };
    /**
     * Holt sich die Links, die keinen Abbruch bewirken
     */
    var filterAnchor = function (e) {
        if (!YAHOO.util.Dom.hasClass(e, "noInterception")) {
            return e;
        }
    };
    /**
     * Holt sich alle Links
     */
    var getAnchor = function (scopes) {
        var anchors = [], a = [], i = 0;
        while (i < scopes.length) {
            a = YAHOO.util.Dom.getElementsBy(filterAnchor, "a", scopes[i]);
            i += 1;
            anchors = anchors.concat(a);
        }
        //console.log(anchors);
        return anchors;
    };
    var prepareListeners = function(config){
        var scopes = [];
        try {
            scopes = config.scopes.split(",");
        } catch (e) {
            scopes = ["www-simyo-de"]; // default scope
        }
        var links = getAnchor(scopes);
        YAHOO.util.Event.addListener(links, "click", function(){
            if (getSatusCookieValue() == 1) {
                // tracking code will follow!
            }
        });
    };
    /**
     * Prueft den Status des Cookie und oeffnet das Popunder.
     *.
     * Existiert der Cookie nicht oder ist sein Inhalt ungleich 0 wird das
     * Popunder geoeffnet und der Status auf 1 gesetzt.
     *
     * @param: contentURL  URL fuer den Inhalt des Popunder.
     */
    var openPopunder = function (contentURL) {
        var status = getSatusCookieValue();
        if (status !== 0) {
            popunder = open(contentURL, popunderName, popunderParams);
            setStatusCookieValue("1");
            popunder.opener.focus();
        } else {
            return;
        }
    };
    /**
     * Oeffentliche Methode, um den Status im Cookie auszulesen.
     */
    that.getStatus = function () {
        return getSatusCookieValue();
    };
    /**
     * Oeffentliche Methode zum Setzen des Status.
     *
     * @param status  Status des Popunder
     *                geoeffnet:   1
     *                geschlossen: 0
     */
    that.setStatus = function (status) {
        setStatusCookieValue(status);
    };
    /**
     * Oeffentliche Methode zum Aktualisieren des Inhaltes.
     * (Wenn das Popunder geoeffnet ist [Status: 1].
     *
     * @param: url  URL fuer den neuen Inhalt des Popunder.
     */
    that.update = function (url) {
        var status = getSatusCookieValue();
        if (status === 1) {
            popunder = open(url, popunderName, popunderParams);
        }
    };
    /**
     * Oeffentliche Methode zum Schließen des Popunder.
     */
    that.close = function () {
        setStatusCookieValue("0");
        self.close();
    };
    /**
     * Oeffentliche Methode zum Initialisieren des Popunder.
     *
     *
     * @param  Object  Objekt fuer die Konfiguration der Initialisierung.
     *                 {
     *                     active:   [true|false],
     *                     url:      "[URL]",
     *                     selector: "[CSS selector string]"
     *                 }
     * @throws PopunderConfigurationError
     */
    that.initialise = function (config) {
        try {
            if (config.active === false) {
                setStatusCookieValue("0");
                return;
            } else if (config.active && config.active === true) {
                if (!config.url) {
                    throw new Error("You must specify a URL for the initial content of the Popunder. {url: '[URL]'}");
                } else if (!config.selector) {
                    throw new Error("You must specify a CSS selector for the HTML element that will open the Popunder. {selector: '[CSS selector string]'}");
                } else {
                    var ABValue = YAHOO.util.Cookie.get(popunderCookie, String);
                    if ((ABValue && ABValue == "B") || (!ABValue && isInTestGroup())) {
                        var url      = config.url,
                        selector = config.selector;
                        YAHOO.util.Event.onContentReady("main", function () {
                            var nodes = YAHOO.util.Selector.query(selector);
                            YAHOO.util.Cookie.set(popunderCookie, "B", cookieOptions);
                            YAHOO.util.Event.addListener(nodes, "click", function () {
                                // tracking "Popunder open"
                                s.linkTrackVars     = "events,eVar7";
                                s.linkTrackEvents   = "event4";
                                s.eVar7             = "B";
                                s.events            = "event4";
                                s.tl(this, "o", "Open Popunder");
                                // END tracking
                                openPopunder(url);
                            });
                        });
                    } else {
                        YAHOO.util.Event.onContentReady("main", function () {
                            YAHOO.util.Cookie.set(popunderCookie, "A", cookieOptions);
                            s.linkTrackVars = "eVar7";
                            s.eVar7 = "A";
                            s.tl(this, "o", "A");
                        });
                    }
                }
            } else {
                throw new Error("You must specify whether the popunder is active or not. {acitve: [true|false]}");
            }
        } catch (e) {
            console.error(e.name + ": " + e.message);
        }
    };
    that.initBackToOrderProcessHandler = function () {
        var selector = "#backToOrderProcess",
            node = YAHOO.util.Selector.query(selector);
        s.eVar8 = " Order cancel";
        YAHOO.util.Event.addListener(node, "click", function (e) {
            YAHOO.util.Event.stopEvent(e);
            YAHOO.util.Event.preventDefault(e);
            // tracking "Popunder Order restart"
            s.linkTrackVars     = "eVar9";
            s.eVar9             = "Popunder Order restart";
            s.tl(true, "o", "Popunder Order restart");
            // END tracking
            open(this.href);
            self.close();
        });
    };
    return that;
}();
/* }}} */
/**
* Function: SIMYO.PopunderRuler
*
* @date   01.12.2009
* @author chrwla
*
* {{{
*/
SIMYO.PopunderController = function () {
    var that       = {},
        rulerFrame = "popunderController";  // Name des IFrame im Popunder.
    /**
     * Prueft den Status des Popunder und laedt neuen Inhalt in den IFrame.
     *
     * @param: contentURL  URL fuer den Inhalt des IFrame.
     */
    var update = function (contentURL) {
        var status = SIMYO.Popunder.getStatus();
        if (status !== 0 && status !== null) {
            open(contentURL, rulerFrame);
        }
    };
    /**
     * Aktualisiert den Inhalt des IFrame sofort.
     *
     * @param: url  URL fuer den Inhalt des IFrame.
     */
    that.update = function (url) {
        update(url);
    };
    /**
     * Aktualisiert den Inhalt des IFrame wenn das aktuelle Dokument entladen
     * wird..
     *
     * @param: url  URL fuer den Inhalt des IFrame.
     */
    that.updateOnBeforeUnload = function (url) {
        YAHOO.util.Event.addListener(window, "beforeunload", function () {
            update(url);
        });
    };
    return that;
}();
/* }}} */
/**
* Function: initialiseMsisdnInput
*
* Initialisierung der Eingabefelder fuer eine MSISDN oder deren Fragmente
* im Bestellprozess auf den Seiten Rufnummernsuche und Runfnummernmitnahme.
*
* @param id            (String)
* @param colorInactive (String)
* @param initValue     (String)
*
* @date 25.06.2008
* @author chrwla
*
* {{{
*/
function initialiseMsisdnInput(id, colorInactive, initValue)
{
    var msisdnInput = document.getElementById(id);
    var valueMaxLength = initValue.length;
    
    if (msisdnInput && msisdnInput.value == "")
    {
        msisdnInput.style.color = colorInactive;
        msisdnInput.maxLength = valueMaxLength;
        msisdnInput.value = initValue;
    }
}
/* }}} */
/**
* Function: changeMsisdnInput
*
* Stellt Standardwert im Eingabefeld fuer eine MSISDN oder deren Fragmente
* im Bestellprozess auf den Seiten Rufnummernsuche und Runfnummernmitnahme
* wieder her.
*
* @param id            (String)
* @param maxLength     (Integer)
* @param colorActive   (String)
* @param colorInactive (String)
* @param initValue     (String)
*
* @date 25.06.2008
* @author chrwla
*
* {{{
*/
function changeMsisdnInput(id, maxLength, colorActive, colorInactive, initValue)
{
    var msisdnInput = document.getElementById(id);
    var valueMaxLength = initValue.length;
    
    if (msisdnInput.value == initValue)
    {
        msisdnInput.value = "";
        msisdnInput.style.color = colorActive;
        msisdnInput.maxLength = maxLength;
    }
    else if (msisdnInput.value == "")
    {
        msisdnInput.style.color = colorInactive;
        msisdnInput.maxLength = valueMaxLength;
        msisdnInput.value = initValue;
    }
}
/* }}} */
/**
* Function: noCopyPaste
*
* Copy & Paste der E-Mail Adresse im 2. Bestellschritt verhindern.
* (funtioniert nur im IE)
*
* @param formField (String)
*
* @date 27.09.2007
* @author chrwla
*
* {{{
*/
function noCopyPaste(formField)
{
    if (document.getElementById(formField))
    {
        document.getElementById(formField).onpaste = new Function("return false;");
    }
}
/* }}} */
/**
* Function: openLink
*
* Oeffnet den Link in einem Teaser egal wohin man im Teaser geklickt hat.
* Erstellt die URL fuer das Teaser-Tracking.
*
* @param o            (HMTL-Element)
* @param tracking     (Boolean)
* @param pageID       (Integer)
* @param hbxPageName  (String)
* @param slotNumber   (Integer)
* @param teaserNumber (Integer)
* @param teaserName   (String)
*
* @date 20.06.2008
* @author chrwla
*
* {{{
*/
function openLink(o, tracking, pageID, hbxPageName, slotNumber, teaserNumber, teaserName)
{
    var link = o.getElementsByTagName("a")[o.getElementsByTagName("a").length-1];
    var isTracking = false;
    var pid = 0, slot = 0, position = 0;
    var pageName = "", url = "";
    // Parameter
    var lidValue = "", lposValue = "", nameValue = ""
    
    if (tracking && typeof(tracking) == "boolean")
    {
        isTracking = tracking;
        if (isTracking)
        {
            if (pageID && typeof(pageID) == 'number')
            {
                pid = pageID;
            }
            else
            {
                return;
            }
            if (hbxPageName && typeof(hbxPageName) == 'string')
            {
                pageName = hbxPageName;
            }
            else
            {
                return;
            }
            
            if (slotNumber && typeof(slotNumber) == 'number' && teaserNumber && typeof(teaserNumber) == 'number')
            {
                slot = slotNumber;
                position = teaserNumber;
            }
            else
            {
                return;
            }
            
            if (teaserName && typeof(teaserName) == 'string')
            {
                lposValue = teaserName;
            }
            else
            {
                return;
            }
            lidValue = pageName + "_" + "s" + slot + "p" + position;
            nameValue = encodeURIComponent("&lid=" + lidValue + "&lpos=" + lposValue);
            
            url = link.href;
            if (url.indexOf("?") != -1)
            {
                url = url + "&pid=" + pid;
            }
            else
            {
                url = url + "?pid=" + pid;
            }
            url = url + "&lid="  + lidValue;
            url = url + "&lpos=" + lposValue;
            url = url + "&name=" + nameValue;
            
            /*
            alert("isTracking:    " + isTracking +
                  "\n\n" + "pid:  " + pid +
                  "\n\n" + "lid:  " + lidValue +
                  "\n\n" + "lpos: " + lposValue +
                  "\n\n" + "name: " + nameValue +
                  "\n\n" + "url:  " + url);
            */
            
            link.href = url;
            location.href = url;
        }
        else
        {
            return;
        }
    }
    else
    {
        // alert("Trecking is off.");
        if (!link.onclick) {
            location.href = link.href;
        }
        else {
            link.onclick();
            _hbExitLink(link.href);
        }
    }
}
/* }}} */
/**
* Popups
*
* {{{
*/
    var POPUP_SCROLLBAR_DEFAULT = "yes";
    var POPUP_SIZE_X_540 = 540;
    var POPUP_SIZE_X_760 = 760;
    var POPUP_SIZE_X_800 = 800;
    var POPUP_SIZE_X_DEFAULT = POPUP_SIZE_X_540;
    
    /**
    * Function: popup
    *
    * Oeffnen eines Popups in Standardbreite (siehe: POPUP_SIZE_X_DEFAULT)
    *
    * @param url    (String)
    * @param name   (String)
    * @param params (String)
    *
    * @date 08.05.2007
    * @author helgri
    *
    * {{{
    */
    function popup(url, name, params) {
        var sizeX = 0;
        var sizeY = 0;
        var winX = screen.availWidth;
        var winY = screen.availHeight;
        var tmpArray = params.split(',');
        var tmpParams = "";
        for (var i = 0; i < tmpArray.length; i++) {
            if (tmpArray[i].indexOf('width') != -1) {
               /* var tmpArray2 = tmpArray[i].split('=');*/
                sizeX = POPUP_SIZE_X_DEFAULT /*tmpArray2[1]; */
                tmpArray[i] = "width=" + POPUP_SIZE_X_DEFAULT;
            }
            else if (tmpArray[i].indexOf('height') != -1) {
                var tmpArray2 = tmpArray[i].split('=');
                sizeY = tmpArray2[1];
            }
    
            if (tmpParams == "") {
                tmpParams += tmpArray[i]
            }
            else {
                tmpParams += "," + tmpArray[i];
            }
        }
        
        var centerX = Math.round(winX / 2 - sizeX / 2);
        var centerY = Math.round(winY / 2 - sizeY / 2);
        tmpParams += ',left=' + centerX + ',top=' + centerY + ',resizable=yes';
        var pWindow = open(url,name,tmpParams).focus();
    }
    /* }}} */
    
    /**
    * Function: popup540
    *
    * Oeffnet Popup mit Breite 540px
    *
    * @param url    (String)
    * @param name   (String)
    * @param params (String)
    *
    * @author simjac
    * @date 29.05.2007
    *
    * {{{
    */
    function popup540(url, name, params) {
        var tmpParams = "";
        tmpParams = private_extractParams(params);
        tmpParams = private_addParam(tmpParams, "width=" + POPUP_SIZE_X_540);
            
        private_openPopup(url,name, tmpParams);
    }
    /* }}} */
    
    /**
    * Function: popup760
    *
    * Oeffnet Popup mit Breite 760px
    *
    * @param url    (String)
    * @param name   (String)
    * @param params (String)
    *
    * @author simjac
    * @date 29.05.2007
    *
    * {{{
    */
    function popup760(url, name, params) {
        var tmpParams = "";
        tmpParams = private_extractParams(params);
        tmpParams = private_addParam(tmpParams, "width=" + POPUP_SIZE_X_760);
            
        private_openPopup(url,name, tmpParams);
    }
    /* }}} */
    
    /**
    * Function: popup800
    *
    * Oeffnet Popup mit Breite 800px
    *
    * @param url    (String)
    * @param name   (String)
    * @param params (String)
    *
    * Oeffnet Popup mit Breite 800px
    *
    * @author simjac
    * @date 29.05.2007
    *
    * {{{
    */
    function popup800(url, name, params)
    {
        var tmpParams = "";
        tmpParams = private_extractParams(params);
        tmpParams = private_addParam(tmpParams, "width=" + POPUP_SIZE_X_800);
            
        private_openPopup(url,name, tmpParams);
    }
    /* }}} */
    
    /**
    * Function: private_extractParams
    *
    * Fuer Popup: extrahiert alle Parameter ausser Breitenangabe
    * Private Methode - NICHT in Templates benutzen!
    * nur ueber die Wrapper-Methoden
    * 
    * @param params (String)
    *
    * @author simjac
    * @date 29.05.2007
    *
    * {{{
    */
    function private_extractParams(params) {
        var tmpArray = params.split(',');
        var tmpParams = "";
        var length = tmpArray.length;
        var scrollbarEntry = false;
        for (var i = 0; i < length; i++) {
            if (tmpArray[i].indexOf('width') != -1)
            {
                tmpArray[i] = "";
            }
            if (tmpArray[i].indexOf('scrollbars') != -1)
            {
                scrollbarEntry = true;
            }
            tmpParams = private_addParam(tmpParams, tmpArray[i]);
        }
        if (!scrollbarEntry) {
            tmpParams = private_addParam(tmpParams, "scrollbars=" + POPUP_SCROLLBAR_DEFAULT);
        }
        return tmpParams;
    }
    /* }}} */
    
    /**
    * Function: private_addParam
    *
    * Fuer Popup - fuegt Paramer Array hinzu
    * Private Methode - NICHT in Templates benutzen!
    * nur ueber die Wrapper-Methoden
    *
    * @author simajc
    * @date 29.05.2007
    *
    * {{{
    */
    function private_addParam(array, value) {
        if (array == "" && (value != null && value != ""))
        {
            array += value
        }
        else if (value != null && value != "")
        {
            array += "," + value;
        }
        return array;
    }
    /* }}} */
    
    /**
    * Function: private_openPopup
    *
    * Oeffnet ein Popup
    * Private Methode - NICHT in Templates benutzen!
    * nur ueber die Wrapper-Methoden
    *
    * @param url    (String)
    * @param name   (String)
    * @param params (String)
    *
    * @author simjac
    * @date 29.05.2007
    * 
    * {{{
    */
    function private_openPopup(url, name, params) {
        var sizeX = 0;
        var sizeY = 0;
        var winX = screen.availWidth;
        var winY = screen.availHeight;
        var tmpArray = params.split(',');
     
        for (var i = 0; i < tmpArray.length; i++)
        {
            if (tmpArray[i].indexOf('width') != -1)
            {
               var tmpArray2 = tmpArray[i].split('=');
                sizeX = tmpArray2[1]; 
            }
            else if (tmpArray[i].indexOf('height') != -1)
            {
                var tmpArray2 = tmpArray[i].split('=');
                sizeY = tmpArray2[1];
            }
        }
        var centerX = Math.round(winX / 2 - sizeX / 2);
        var centerY = Math.round(winY / 2 - sizeY / 2);
        params += ',left=' + centerX + ',top=' + centerY + ',resizable=yes';
        var pWindow = open(url,name,params).focus();
    }
    /* }}} */
/* }}} */
/**
* Function: toggleContextRelatedElements
*
* Ein- und Ausblenden von kontextabhaengige Elementen
*
* @param value (String)
* @param check (String)
* @param obj   (HTML-Element)
*
* @date 08.05.2007
* @author helgri
*
* {{{
*/
function toggleContextRelatedElements(value, check, obj)
{
    if (document.getElementById(obj))
    {
        if (String(value) == check)
        {
            document.getElementById(obj).style.display = "block";
        }
        else
        {
            document.getElementById(obj).style.display = "none";
        }
    }
    return false;
}
/* }}} */
/**
* Function: toggleContextRelatedElements
*
* Ein- und Ausblenden von Elementen durch setzten einer CSS-Klasse
*
* @param value     (String)
* @param check     (String)
* @param obj       (HTML-Element)
* @param classname (String)
*
* @date 04.05.2007
* @author chrwla
*
* {{{
*/
function toggleContextRelatedClassName(value, check, obj, classname)
{
    if (document.getElementById(obj))
    {
        if (String(value) == check)
        {
            document.getElementById(obj).className = classname;
        }
    }
    return false;
}
/* }}} */
/**
* Function: changeSelectBox
* Wechselt die Inhalte der Gruppe der Selectboxen [SIM-Chef > auto-Aufladen]
*
* @date 12.20.2006
* @author simjac
*
* {{{
*/
function changeSelectBox(name, length, value)
{
    var list = null;
    var firstName = "topupList"
    for (var i=0; i<length; i++)
    {
        list = document.getElementsByName(firstName + "[" + i + "]" + "." + name)    
        // if (list[0] != null) 
        list[0].selectedIndex = value;  
   }
}
/* }}} */
/**
* Function: changeRadioButtons
*
* Wechselt den Status der Gruppe der Radiobuttons [SIM-Chef > auto-Aufladen]
*
* @date 12.20.2006
* @author simjac
*
* {{{
*/
function changeRadioButtons(name, length, value)
{
    var list = null;
    for (var i=0; i<length; i++)
    {
        radio = document.getElementById(name + "_" + i );
        if ( radio!= null && value)
        {
            radio.checked = "checked";
        }
        else if (radio != null)
        {
            radio.checked = "";
        }
    }
}
/* }}} */
/**
* Function: iniFields
*
* Initialisiert die ganze Reihe der Selectboxen und Radiobuttons [SIM-Chef > auto-Aufladen]
*
* @date 12.20.2006
* @author simjac
*
* {{{
*/
function iniFields(value, length)
{
    switch(value)
    {
        case "byDateAmount":    
            changeSelectBox('byDateAmount',length, document.getElementById('selectByDateAmount').selectedIndex);
            changeRadioButtons('byDate',length, true);    
            changeRadioButtons('byLimit',length, false);    
            changeRadioButtons('no',length, false);    
        break;
        case "byLimitLimit":    
            changeSelectBox('byLimitLimit',length, document.getElementById('selectByLimitLimit').selectedIndex);
            changeSelectBox('byLimitAmount',length, document.getElementById('selectByLimitAmount').selectedIndex);
            changeRadioButtons('byDate',length, false);    
            changeRadioButtons('byLimit',length, true);    
            changeRadioButtons('no',length, false);    
        break;
        case "no":    
            changeRadioButtons('byDate',length, false);    
            changeRadioButtons('byLimit',length, false);    
            changeRadioButtons('no',length, true);    
        break;
    }
}
/* }}} */
/**
* Function: iniCheckBoxes
*
* Initilaisiert die ein-/ausgeblendeten Felder daten->aendern (aufladen - Bereich)
*
* @date 13.10.2006
* @author simjac
*
* {{{
*/
function iniCheckBoxes(name, toChange, length)
{
    var list = null;
    for (var i=0; i<length; i++)
    {
        cb = document.getElementById(name + "_" + i );    
        obj = document.getElementById(toChange + "_" + i );    
        if (cb!= null && cb.checked)
        {
            obj.style.visibility="visible";
        }
    }
}
/* }}} */
/**
* Function: goToSheet
*
* Shows next sheet in special teaser "10 sheets"
*
* @date 17.04.2007
* @author helgri
*
* {{{
*/
function goToSheet(which)
{
    /*stop if teaser isn't used on page and no target has been defined*/
    if (document.getElementById("sheets") && which.indexOf("#sheet") != -1)
    {
        var sheetNumber = which.substr(which.indexOf("#sheet")+6); //TODO: JSESSIONID
        var nextSheet = "sheet" + sheetNumber;
        document.getElementById("sheets").className = nextSheet;
    }
    else
    {
        return false;
    }
}
/* }}} */
/**
* Function: toogleToolBox
*
* Blaetterfunktion fuer den Teaser: "Toolbox"
*
* @date 09.05.2007
* @author helgri
*
* {{{
*/
function toogleToolBox(which)
{
    document.getElementById("toolbox").getElementsByTagName("DIV")[1].className = "cartridgeBody teaserHeadline " + which;
}
/* }}} */
/**
* Function: _init
*
* Loads functions which run with onload event.
*
* @date 17.04.2007
* @author helgri
*/
function _init() {
    goToSheet(location.href);
}
/**
 * Function: detectCancel
 * 
 * Erlaubt das Tracken von Bestellabbrüchen unabhängig von Popunder / Interceptor
 */
function detectCancel(){
    var elements = YAHOO.util.Dom.getElementsByClassName("noInterception", "a");
    if ((elements.length > 0 || elements.length != undefined) && document.location.toString().indexOf("/bestellen/") != -1) {
        var anchors = document.getElementsByTagName("a");
        for (var i = 0; i < anchors.length; i++) {
            var anch = anchors[i];
            if(!YAHOO.util.Dom.hasClass(anch, "noInterception") && !YAHOO.util.Dom.hasClass(anch, "info") && !YAHOO.util.Dom.hasClass(anch, "infoi") && anch.getAttribute("id") != "backToOrderProcess" && anch.getAttribute("id") != "switchToPrepaid" && anch.getAttribute("id") != "existingMsisdn") {
                YAHOO.util.Event.addListener(anch, "click", function(){
                    var ABValue = YAHOO.util.Cookie.get("p_st", function(v) {
                        return v;
                    });
                    s.linkTrackVars = "prop3,events,eVar8";
                    s.linkTrackEvents = "event3";
                    s.events = "event3";
                    s.eVar8 = "Order cancel";
                    s.prop3 = "Order cancel";
                    s.tl(true, "o", "Order cancel");
                });
            }
        }
    }
}
window.onload = function(){
    _init();
    detectCancel();
}