///<reference path="./IEmosGlobalConfig.ts" />
/// <reference path="../cookie/Store.ts" />
var econda;
(function (econda) {
    var tracking;
    (function (tracking) {
        var CookieStore = econda.cookie.Store;
        var EmosConfig = (function () {
            function EmosConfig(globalConfigProperties) {
                this.globalConfigProperties = globalConfigProperties;
                for (var attrname in globalConfigProperties) {
                    this[attrname] = globalConfigProperties[attrname];
                }
            }
            EmosConfig.prototype.getPidIndex = function () {
                return this.PRODUCT_ID_IN_EC_EVENT;
            };
            /**
             * Visitor Id cookie lifetime in days
             * @returns {number}
             */
            EmosConfig.prototype.getClientCookieLifetime = function () {
                return this.CLIENT_COOKIE_LIFETIME;
            };
            EmosConfig.prototype.getCookieDomain = function () {
                return this.globalConfigProperties.COOKIE_DOMAIN
                    || this.getDefaultCookieDomainFor(window.location.hostname);
            };
            EmosConfig.prototype.getDefaultCookieDomainFor = function (domainName) {
                var domainAr = domainName.split('.');
                var topLevelDomain = domainAr[domainAr.length - 1];
                var secondLevelDomain = domainAr[domainAr.length - 2];
                var anz = (topLevelDomain == 'uk' || topLevelDomain == 'tr' || topLevelDomain == 'br' || (topLevelDomain == 'at' && secondLevelDomain == 'co') || (topLevelDomain == 'jp' && (secondLevelDomain == 'co' || secondLevelDomain == 'ac' || secondLevelDomain == 'go' || secondLevelDomain == 'ne' || secondLevelDomain == 'or'))) ? 3 : 2;
                var defaultDomain;
                if (isNaN(parseInt(topLevelDomain, 10)) && domainAr.length >= anz) {
                    defaultDomain = '';
                    for (var i = domainAr.length - anz; i < domainAr.length; i++) {
                        defaultDomain += ('.' + domainAr[i]);
                    }
                }
                else {
                    defaultDomain = domainName;
                }
                return defaultDomain;
            };
            EmosConfig.prototype.doNotTrack = function () {
                if (window.emosDoNotTrack) {
                    return true;
                }
                if (this.DO_NOT_TRACK) {
                    return true;
                }
                if (this.COOKIE_DNT) {
                    var value = CookieStore.getValue(this.COOKIE_DNT);
                    if (value === "1") {
                        return true;
                    }
                }
                return false;
            };
            EmosConfig.prototype.isTrackThirdParty = function () {
                return typeof this.TRACK_THIRD_PARTY == 'undefined' || this.TRACK_THIRD_PARTY == true;
            };
            EmosConfig.prototype.isSyncCacheId = function () {
                return this.JSID == true;
            };
            return EmosConfig;
        }());
        tracking.EmosConfig = EmosConfig;
    })(tracking = econda.tracking || (econda.tracking = {}));
})(econda || (econda = {}));