mmRequestCallbacks[1]({"Scripts":[{"Name":"edynamics_init","Type":"script","Attrs":{"type":"text/javascript"},"Data":"visitor.storeAttr('mmPageID', mmPageID);\n\nif (!window.MM_edyn_init) {\n\n    window.MM_edyn_init = true;\n\n    window.MMgenInfo = site.getPageExperiences();\n\n   /* function _edyn_init() {\n        document.addEventListener(\"DOMContentLoaded\", function(event) {\n            if (typeof DCSext.Language != \"undefined\") {\n                visitor.storeAttr('Language', DCSext.Language);\n            }\n            if (typeof DCSext.CustStatus != \"undefined\") {\n                visitor.storeAttr('CustomerStatus', DCSext.CustStatus);\n            }\n        });\n    }\n\n    function _edyn_init2() {\n        visitor.storeAttr('Campaign', utag_data.wt_campaign);\n    }*/\n\n    (function init_gdpr() {\n        window.MM_gdpr = [];\n\n        if (cookies.get('mmapi.MM_gdpr')) {\n            var gdpr_cookie = JSON.parse(cookies.get('mmapi.MM_gdpr'));\n\n            for (var j = 1; j < 4; j++) {\n                MM_gdpr[j] = gdpr_cookie[j];                \n            }\n        }\n        gdpr_waitFor();\n    })();\n\n    /*var _INITwaitForDCSext_wait_count = 0;\n    (function _INITwaitForDCSext() {\n        if (!window.DCSext || !DCSext.Language) {\n            _INITwaitForDCSext_wait_count++;\n            if (_INITwaitForDCSext_wait_count <= 100) {\n                setTimeout(function() {\n                    _INITwaitForDCSext()\n                }, 100);\n            }\n        } else {\n            _edyn_init();\n        }\n    })();\n\n    var _INITwaitForUTAG_wait_count = 0;\n    (function _INITwaitForUTAG() {\n        if (!window.utag_data || !window.utag_data.wt_campaign) {\n            _INITwaitForUTAG_wait_count++;\n            if (_INITwaitForUTAG_wait_count <= 100) {\n                setTimeout(function() {\n                    _INITwaitForUTAG()\n                }, 100);\n            }\n        } else {\n            _edyn_init2();\n        }\n    })();*/\n\n    var gdpr_waitFor_count = 0;  \n    function gdpr_waitFor() {\n        if (typeof utag == \"undefined\" || typeof utag.gdpr == \"undefined\") {\n            if (gdpr_waitFor_count <= 100) {\n                gdpr_waitFor_count++;\n                setTimeout(function() {\n                    gdpr_waitFor()\n                }, 250);\n            }\n        } else {\n            setTimeout(function() {\n                MM_gdpr[1] = utag.gdpr.getCookieValues().c2;\n                MM_gdpr[2] = utag.gdpr.getCookieValues().c3;\n                MM_gdpr[3] = utag.gdpr.getCookieValues().c4;\n                cookies.set('mmapi.MM_gdpr', JSON.stringify(MM_gdpr), {\n                    expires: 90\n                });\n            }, 500);\n        }\n\n    }\n\n    events.domReady(function() {\n       document.addEventListener(\"click\", function(e) {\n          for (var target = e.target; target && target != this; target = target.parentNode) {\n            if (target.matches('#cm-selectAllCheckboxes') || target.matches('#cm-selectSpecific')) {\n                setTimeout(function(){\n                  gdpr_waitFor();                 \n                }, 250);\n                break;\n            }\n          }\n       });\n    });\n}\n","Order":-1000,"HighLevelApiVersion":"1.15"},{"Name":"Polyfills","Type":"script","Attrs":{"type":"text/javascript"},"Data":"// Code wird auf ALLEN Seiten ausgespielt !!!\n\nif (!Element.prototype.matches) {\n    Element.prototype.matches = Element.prototype.msMatchesSelector ||\n                                Element.prototype.webkitMatchesSelector;\n}","Order":-100,"HighLevelApiVersion":"1.15"},{"Name":"CustomAttr_Reset","Type":"script","Attrs":{"type":"text/javascript"},"Data":"function removeValues(names){\n  for(var i = 0; i < names.length; i++){\n    visitor.storeAttr(names[i], '');\n  }\n}\n\n//HMPG\nif(mmPageID.indexOf('homepage') > -1){ \n  removeValues(['TravelPurpose','BFT','FM_TimeSpend','TripType','TimeTillDep','TripLength','Passengers','Children','Babies','BookingClass',\n                'BundleClass','BundleTariff','OandD']);\n}\n\n//FOXX\nif(mmPageID.indexOf('FFPP') > -1 || mmPageID.indexOf('FOFP') > -1 || mmPageID.indexOf('FOMS') > -1) {\n  removeValues(['TripLength','BookingClass','BundleClass','BundleTariff']);\n}","Order":0,"HighLevelApiVersion":"1.15"},{"Name":"Language Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"visitor.storeAttr('Language', mmPageID.split('_')[2].toLowerCase());","Order":2000,"HighLevelApiVersion":"1.15"},{"Name":"Market Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"visitor.storeAttr('Market', mmPageID.split('_')[1].toLowerCase());","Order":2000,"HighLevelApiVersion":"1.15"},{"Name":"mmPageID Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"// Below is the code that has been generated automatically from the attribute's rules.\n\nvar attrName = \"mmPageID\";\n\n// start config\nvar config = {\n    \"datalayer\": {\n        \"variable\": \"window.mmPageID\",\n        \"rules\": [\n            {\n                \"condition\": \"contains\",\n                \"text\": \"_\",\n                \"useDatalayerValue\": true\n            }\n        ],\n        \"defaultUseDatalayerValue\": true\n    }\n};\n// end config\n\nvar getVariable = function (variablePath) {\n    var i, result = window, variables;\n\n    if (typeof variablePath.split !== 'function') {\n        return null;\n    }\n\n    variables = variablePath.split('.');\n\n    for(i = 0; i < variables.length; i++) {\n        if (typeof result === 'object') {\n            result = result[variables[i]];\n        } else {\n            result = null;\n            break;\n        }\n    }\n\n    return result;\n};\n\n\nvar toDecimal = function (value) {\n    var result = null;\n    var parse = /[0-9]+(\\.[0-9]{1,2})?/.exec(value);\n\n    if (parse !== null) {\n        result = parseFloat(parse[0]);\n    }\n\n    return result;\n};\n\nvar checkCondition = function (value, rule) {\n    var decimalValue;\n    var result = false;\n    switch (rule.condition) {\n    case 'equals':\n        if (value === rule.text) {\n            result = true;\n        }\n        break;\n    case 'does not equal':\n        if (value !== rule.text) {\n            result = true;\n        }\n        break;\n    case 'contains':\n        if (value && typeof value.indexOf === 'function' && value.indexOf(rule.text) !== -1) {\n            result = true;\n        }\n        break;\n    case 'does not contain':\n        if (value && typeof value.indexOf === 'function' && value.indexOf(rule.text) === -1) {\n            result = true;\n        }\n        break;\n    case 'has value less than':\n        decimalValue = toDecimal(value);\n        if (decimalValue !== null && decimalValue < parseFloat(rule.text)) {\n            result = true;\n        }\n        break;\n    case 'has value greater than':\n        decimalValue = toDecimal(value);\n        if (decimalValue !== null && decimalValue > parseFloat(rule.text)) {\n            result = true;\n        }\n        break;\n    case 'is true':\n        if ('true' === (value + '').toLowerCase()) {\n            result = true;\n        }\n        break;\n    case 'is false':\n        if ('false' === (value + '').toLowerCase()) {\n            result = true;\n        }\n        break;\n    default:\n        result = false;\n    }\n\n    return result;\n};\n\nvar onReady = function () {\n    var rule, attributeValue;\n    var captureValue = getVariable(config.datalayer.variable);\n\n    for (var i = 0; i < config.datalayer.rules.length; i++) {\n        rule = config.datalayer.rules[i];\n\n        if (checkCondition(captureValue, rule)) {\n            attributeValue = rule.useDatalayerValue ? captureValue : rule.value;\n            visitor.storeAttr(attrName, attributeValue);\n            return;\n        }\n    }\n\n    attributeValue = config.datalayer.defaultUseDatalayerValue ? captureValue : config.datalayer.defaultValue;\n    visitor.storeAttr(attrName, attributeValue);\n};\n\n\nevents.domReady(onReady.bind(this));","Order":2000,"HighLevelApiVersion":"1.15"},{"Name":"LoginStatus Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"// Below is the code that has been generated automatically from the attribute's rules.\n\nvar attrName = \"LoginStatus\";\n\n// start config\nvar config = {\n    \"datalayer\": {\n        \"variable\": \"lhgData.user.profile.loginStatus\",\n        \"rules\": [\n            {\n                \"condition\": \"is true\",\n                \"value\": \"loggedIn\"\n            },\n            {\n                \"condition\": \"equals\",\n                \"text\": \"1\",\n                \"value\": \"loggedIn\"\n            }\n        ],\n        \"defaultValue\": \"notLoggedIn\"\n    }\n};\n// end config\n\nvar getVariable = function (variablePath) {\n    var i, result = window, variables;\n\n    if (typeof variablePath.split !== 'function') {\n        return null;\n    }\n\n    variables = variablePath.split('.');\n\n    for(i = 0; i < variables.length; i++) {\n        if (typeof result === 'object') {\n            result = result[variables[i]];\n        } else {\n            result = null;\n            break;\n        }\n    }\n\n    return result;\n};\n\n\nvar toDecimal = function (value) {\n    var result = null;\n    var parse = /[0-9]+(\\.[0-9]{1,2})?/.exec(value);\n\n    if (parse !== null) {\n        result = parseFloat(parse[0]);\n    }\n\n    return result;\n};\n\nvar checkCondition = function (value, rule) {\n    var decimalValue;\n    var result = false;\n    switch (rule.condition) {\n    case 'equals':\n        if (value === rule.text) {\n            result = true;\n        }\n        break;\n    case 'does not equal':\n        if (value !== rule.text) {\n            result = true;\n        }\n        break;\n    case 'contains':\n        if (value && typeof value.indexOf === 'function' && value.indexOf(rule.text) !== -1) {\n            result = true;\n        }\n        break;\n    case 'does not contain':\n        if (value && typeof value.indexOf === 'function' && value.indexOf(rule.text) === -1) {\n            result = true;\n        }\n        break;\n    case 'has value less than':\n        decimalValue = toDecimal(value);\n        if (decimalValue !== null && decimalValue < parseFloat(rule.text)) {\n            result = true;\n        }\n        break;\n    case 'has value greater than':\n        decimalValue = toDecimal(value);\n        if (decimalValue !== null && decimalValue > parseFloat(rule.text)) {\n            result = true;\n        }\n        break;\n    case 'is true':\n        if ('true' === (value + '').toLowerCase()) {\n            result = true;\n        }\n        break;\n    case 'is false':\n        if ('false' === (value + '').toLowerCase()) {\n            result = true;\n        }\n        break;\n    default:\n        result = false;\n    }\n\n    return result;\n};\n\nvar onReady = function () {\n    var rule, attributeValue;\n    var captureValue = getVariable(config.datalayer.variable);\n\n    for (var i = 0; i < config.datalayer.rules.length; i++) {\n        rule = config.datalayer.rules[i];\n\n        if (checkCondition(captureValue, rule)) {\n            attributeValue = rule.useDatalayerValue ? captureValue : rule.value;\n            visitor.storeAttr(attrName, attributeValue);\n            return;\n        }\n    }\n\n    attributeValue = config.datalayer.defaultUseDatalayerValue ? captureValue : config.datalayer.defaultValue;\n    visitor.storeAttr(attrName, attributeValue);\n};\n\n\nevents.domReady(onReady.bind(this));","Order":2000,"HighLevelApiVersion":"1.15"},{"Name":"URL Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"visitor.setAttr('URL', location.href);","Order":2000,"HighLevelApiVersion":"1.15"},{"Name":"IrregTeaser Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"events.domReady(function(){\n  if(document.getElementsByClassName('irreg-teaser-wrapper').length > 0){\n    visitor.storeAttr('IrregTeaser', 'yes');\n  } else {\n    visitor.storeAttr('IrregTeaser', 'no');\n  }\n});","Order":2000,"HighLevelApiVersion":"1.15"}],"Campaigns":[],"MRRules":[],"PersistData":[{"Name":"srv","IsGlobal":false,"Value":"prodiadcgeu04","Expiration":365},{"Name":"bid","IsGlobal":false,"Value":"prodiadcgeu04","Expiration":0.00694},{"Name":"pd","IsGlobal":false,"Value":"s_FUWFJKrfBgm91Ssxn_jAZs8kT17Fua8nsKE8RhMlU=|AQAAAApDH4sIAAAAAAAEAGNh2Oa0Rdpb9FMPA3NmYgqjEAOjE8MO51nyjAzzJkay8Gy_6QGjGYDgPxQwsLlkFqUmlzB6izKCxMEAJgmioUKMrgDIkK4SYQAAAA==","Expiration":365}],"SiteInfo":[{"Url":"lufthansa.com","ID":210}],"SystemData":[{"Version":"1.0","RequestId":1,"ResponseId":1}],"GenInfo":{},"ServerAttributes":{},"Iteration":"hpi7EdbubWIR30LfOD7xp65TGts","Packages":["mmpackage-1.15.js"]});