/// <reference path="../../tracking/PluginManager.ts" />
var econda;
(function (econda) {
    var tpm;
    (function (tpm) {
        var helper;
        (function (helper) {
            var TrackingPluginManager = econda.tracking.PluginManager;
            var EcondaTracking = (function () {
                function EcondaTracking() {
                }
                EcondaTracking.enable = function () {
                    TrackingPluginManager.registerPlugin(new EcondaTracking());
                };
                EcondaTracking.prototype.onRequest = function (emosProperties, cfg) {
                    if (EcondaTracking._containsAddToCartEvent(emosProperties)) {
                        econda.touchpoints().protect();
                    }
                    if (EcondaTracking._containsBuyEvent(emosProperties)) {
                        econda.touchpoints().protect(false);
                    }
                };
                EcondaTracking._containsBuyEvent = function (emosProperties) {
                    return EcondaTracking._containsEvent(emosProperties, 'buy');
                };
                EcondaTracking._containsAddToCartEvent = function (emosProperties) {
                    return EcondaTracking._containsEvent(emosProperties, 'c_add');
                };
                EcondaTracking._containsEvent = function (emosProperties, eventName) {
                    if (typeof emosProperties.ec_Event === 'object' && emosProperties.ec_Event !== null) {
                        for (var i = 0; i < emosProperties.ec_Event.length; i++) {
                            if (emosProperties.ec_Event[i].type === eventName) {
                                return true;
                            }
                        }
                    }
                    return false;
                };
                return EcondaTracking;
            }());
            helper.EcondaTracking = EcondaTracking;
        })(helper = tpm.helper || (tpm.helper = {}));
    })(tpm = econda.tpm || (econda.tpm = {}));
})(econda || (econda = {}));