//edYwaWtBridge:START++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//Initial Variable fÃ¼r WT Tracking Objekt
var wt;

//edBridge - Basis Funktion
function edBridgeCls()
{

}

//loader Funktion welche die Basisklasse ladet
function loadBridge()
{


    //gibt das verÃ¤nderter Trackerobjekt zurÃ¼ck
    this.getTracker = function(sYwaId,sWebtrekkId,sDataFile)
    {

        //WT laden
        this.loadWt(sWebtrekkId);

        //YWA laden
        var oYwaTracker = this.loadYwa(sYwaId,sDataFile);

        //YWA Objekt zurÃ¼ckgeben
        return oYwaTracker;

    }

    this.loadWt = function(sWebtrekkId)
    {
        //neue Instanz von Webrekk V3 erzeugen
        wt = new webtrekkV3();
        if(sWebtrekkId!=false)
        {
            //Wenn eine Webtrekk ID Ã¼bergeben wurde dann diese schreiben, sonst wurde diese bereits im conf gesetzt.
            wt.trackid=sWebtrekkId;
        }
    }

    this.loadYwa = function (sYwaId,sDataFile)
    {
        //YWA.isNewYWATEnabled muss auf true gesetzt sein um new ausfÃ¼hren zu kÃ¶nnen
        YWA.isNewYWATEnabled=true;
        edBridgeCls.prototype = new YWAT(sYwaId)
        YWA.isNewYWATEnabled=false;

        //Parent eigenschaft setzen um spÃ¤ter in den Ã¼berschriebenen Funktionen auf die Elternklassen zugreifen zu kÃ¶nnen.
        edBridgeCls.parent = YWAT.prototype;
        //Tranlsate Daten laden.
        edBridgeCls.oTransTable=this.loadTranslateTable(sDataFile);



        //Alle Funktionen welche die original YWA Ã¼berschreiben sollen laden
        this.loadFunctions();

        //neues Objekt von der Basisklasse erzeugen
        var myTracker = new edBridgeCls();

        //Bridge Tracker zurÃ¼ckgeben
        return myTracker;
    }

    this.loadTranslateTable = function (sDataFile)
    {
        //Create the XML request
        xmlReq = null;
        if(window.XMLHttpRequest) xmlReq = new XMLHttpRequest();
        else if(window.ActiveXObject) xmlReq = new ActiveXObject("Microsoft.XMLHTTP");
        if(xmlReq==null) return false; // Failed to create the request

        // Make the request
        xmlReq.open ('GET', sDataFile, false);
        xmlReq.send (null);

        //json Daten interpretieren
        eval("oData="+xmlReq.responseText+";");

        //Daten zurÃ¼ckgeben
        return oData;
    }

    this.loadFunctions = function()
    {

        edBridgeCls.prototype.setDocumentName = function (sName)
        {

            //YWA #########################
            edBridgeCls.parent.setDocumentName.call(this,sName);

            //WT ##########################
            if(sName!="")
			{
				wt.contentId=sName;
			}

        }

        edBridgeCls.prototype.setDocumentGroup = function (sName)
        {

            //YWA #########################
            edBridgeCls.parent.setDocumentGroup.call(this,sName);

            //WT ##########################
            //<x1.2
            sDokumentGroupID=edBridgeCls.oTransTable["CFHierarchy"]["DOCUMENTGROUP"]
            if(wt.contentGroup==false)
			{
				wt.contentGroup = new Object();
			}
			wt.contentGroup[sDokumentGroupID]=sName;
            //x>
        }

        edBridgeCls.prototype.submit = function ()
        {

            //YWA #########################
            edBridgeCls.parent.submit.call(this);

            //WT ##########################
            //Wenn noch eine Action offen ist diese abschicken.
            if(edBridgeCls.sCurrentActionID!=null)
            {
                //WT ##########################
                var sWtActionName=edBridgeCls.oTransTable["Action"][edBridgeCls.sCurrentActionID];
                if(edBridgeCls.customClickParameter==null || edBridgeCls.customClickParameter[sWtActionName]==null)
                {
                    //keine Klickparameter
                    wt.sendinfo({linkId:sWtActionName});
                }
                else
                {
                    var oClickPar= new Object();
                    oClickPar["customClickParameter"]=edBridgeCls.customClickParameter[sWtActionName];
                    oClickPar["linkId"]=sWtActionName;
                    //Klickparameter
                    wt.sendinfo(oClickPar);
                    edBridgeCls.sCurrentActionID=null;
                    edBridgeCls.customClickParameter=null;
                }
            }


            wt.sendinfo();
            

        }

        edBridgeCls.prototype.setAction = function (sActionId)
        {

            //YWA #########################
            edBridgeCls.parent.setAction.call(this,sActionId);

            //WT ##########################
            edBridgeCls.sCurrentActionID=sActionId;

            //<+1.2
            //1.2:Wenn wt.productStatus false ist dann wird es jetzt gesetzt.
            if(wt.productStatus==false)
            {
                if(sActionId=="PRODUCT_VIEW")
                {
                    wt.productStatus = "view";
                }
                else if(sActionId=="ADD_TO_CART")
                {
                    wt.productStatus = "add";
                }
                else if(sActionId=="01")
                {
                    //sale
                    wt.productStatus = "conf";
                }
            }
            //1.2>

        }

        edBridgeCls.prototype.submit_action = function ()
        {

            //YWA #########################
            edBridgeCls.parent.submit_action.call(this);

            //WT ##########################
            var sWtActionName=edBridgeCls.oTransTable["Action"][edBridgeCls.sCurrentActionID];
            if(edBridgeCls.customClickParameter==null || edBridgeCls.customClickParameter[sWtActionName]==null)
            {
                //keine Klickparameter
                wt.sendinfo({linkId:sWtActionName});
            }
            else
            {
                var oClickPar= new Object();
                oClickPar["customClickParameter"]=edBridgeCls.customClickParameter[sWtActionName];
                oClickPar["linkId"]=sWtActionName;
                //Klickparameter
                wt.sendinfo(oClickPar);
                edBridgeCls.sCurrentActionID=null;
                edBridgeCls.customClickParameter=null;
            }


        }

        edBridgeCls.prototype.setCF = function (sCfId,sCfVal)
        {

            //YWA #########################
            edBridgeCls.parent.setCF.call(this,sCfId,sCfVal);

            //WT ##########################

            //<+1.2
            //Hierachy Daten lesen
            if(edBridgeCls.oTransTable["CFHierarchy"][sCfId]==null)
            {
            //+>
                //KEIN CF für die Hierachy

                //Daten aus der Tabelle lesen
                var sCfScope=edBridgeCls.oTransTable["CfScopes"][sCfId];
                var sWkId=edBridgeCls.oTransTable["CF"][sCfId];



                //Je nach scope andere WT Funktionen nutzen
                if(sCfScope=="Pageview")
                {
                    if(wt.customParameter==false)
                    {
                        wt.customParameter={};
                    }
                    wt.customParameter[sWkId]=sCfVal;
                }
                else if(sCfScope=="Session")
                {
                    if(wt.customSessionParameter==false)
                    {
                        wt.customSessionParameter={};
                    }
                    wt.customSessionParameter[sWkId]=sCfVal;
                }
                else if(sCfScope=="Action")
                {

                    var sWtActionName=edBridgeCls.oTransTable["Action"][edBridgeCls.sCurrentActionID];


                    if(edBridgeCls.customClickParameter==null)
                    {
                        edBridgeCls.customClickParameter={};
                    }

                    if(edBridgeCls.customClickParameter[sWtActionName]==null)
                    {
                        edBridgeCls.customClickParameter[sWtActionName]={};
                    }

                    edBridgeCls.customClickParameter[sWtActionName][sWkId]=sCfVal;




                }
                //<+1.2
                else if(sCfScope=="ECommerce")
                {
                    if(wt.customEcommerceParameter==false)
                    {
                        wt.customEcommerceParameter={};
                    }
                    wt.customEcommerceParameter[sWkId]=sCfVal;

                }
                //+>
                else if(sCfScope=="Campaign")
                {
                    if(wt.customCampaignParameter==false)
                    {
                        wt.customCampaignParameter={};
                    }
                    wt.customCampaignParameter[sWkId]=sCfVal;
                }
            //<+1.2
            }
            else
            {
                //Dieses CF wird als Hierachy verwendet.
                iDokumentGroupID=edBridgeCls.oTransTable["CFHierarchy"][sCfId]
                if(wt.contentGroup==false)
				{
					wt.contentGroup = new Object();
				}
				wt.contentGroup[iDokumentGroupID]=sCfVal;
            }
            //+>


        }

        edBridgeCls.prototype.setSKU = function (sSKU)
        {
            //YWA #########################
            edBridgeCls.parent.setSKU.call(this,sSKU);

            //WT ##########################
            wt.product=sSKU;

            //PrÃ¼fen welche Action zuvor gesetzt wurde und entsprechend die WT Funktionen ansprechen
            if(edBridgeCls.sCurrentActionID=="PRODUCT_VIEW")
            {
                wt.productStatus = "view";
            }
            else if(edBridgeCls.sCurrentActionID=="ADD_TO_CART")
            {
                wt.productStatus = "add";
            }
            else if(edBridgeCls.sCurrentActionID=="01")
            {
                //sale
                wt.productStatus = "conf";
            }

            //1.2:Wenn noch keine Aktion gesetzt wurde ist productStatus immer noch false, das wird dann bei setAction nachträglich gesetzt.
        }

        edBridgeCls.prototype.setUnits = function (sUntis)
        {

            //YWA #########################
            edBridgeCls.parent.setUnits.call(this,sUntis);

            //WT ##########################
            wt.productQuantity = sUntis;

        }

        edBridgeCls.prototype.setAmounts = function (sAmounts)
        {

            //YWA #########################
            edBridgeCls.parent.setAmounts.call(this,sAmounts);

            //WT ##########################
            wt.productCost = sAmounts;

        }

        //Gesamtbestellwert
        edBridgeCls.prototype.setAmount = function (sAmount)
        {

            //YWA #########################
            edBridgeCls.parent.setAmount.call(this,sAmount);

            //WT ##########################
            wt.orderValue = sAmount;

        }

        edBridgeCls.prototype.setOrderId = function (sOrderId)
        {
            //YWA #########################
            edBridgeCls.parent.setOrderId.call(this,sOrderId);


            //WT ##########################
            wt.orderId = sOrderId;

        }


        edBridgeCls.prototype.setDiscount = function (sDiscount)
        {

            //YWA #########################
            edBridgeCls.parent.setDiscount.call(this,sDiscount);

            //WT ##########################
            var sEcomerceBridgePar=edBridgeCls.oTransTable["ECommerce"]["discount"];

            //Wenn ein bride CF angegeben wurde in diese schreiben
            if(sEcomerceBridgePar!=false)
            {
                if(wt.customEcommerceParameter==false)
                {
                    wt.customEcommerceParameter={};
                }
                
                wt.customEcommerceParameter[sEcomerceBridgePar] = sDiscount;
            }


        }

        edBridgeCls.prototype.setTax = function (sTax)
        {
            //YWA #########################
            edBridgeCls.parent.setTax.call(this,sTax);

            //WT ##########################
            var sEcomerceBridgePar=edBridgeCls.oTransTable["ECommerce"]["tax"];

            //Wenn ein bride CF angegeben wurde in diese schreiben
            if(sEcomerceBridgePar!=false)
            {
                if(wt.customEcommerceParameter==false)
                {
                    wt.customEcommerceParameter={};
                }

                wt.customEcommerceParameter[sEcomerceBridgePar] = sTax;
            }


        }

        edBridgeCls.prototype.setShipping = function (sShipping)
        {
            //YWA #########################
            edBridgeCls.parent.setShipping.call(this,sShipping);

            //WT ##########################
            var sEcomerceBridgePar=edBridgeCls.oTransTable["ECommerce"]["shipping"];

            //Wenn ein bride CF angegeben wurde in diese schreiben
            if(sEcomerceBridgePar!=false)
            {
                if(wt.customEcommerceParameter==false)
                {
                    wt.customEcommerceParameter={};
                }

                wt.customEcommerceParameter[sEcomerceBridgePar] = sShipping;
            }

        }
    }
}

var edBridge = new loadBridge();
//edYwaWtBridge:END++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

