(function() {
    function getCookieVal(name) {
        var match = new RegExp("(?:^|; )?" + name + "=(.*?)(?:;|$)").exec(document.cookie);
        return match?match[1]:null;
    }
    function getExp(millis) {
        var exp = new Date();
        exp.setTime(exp.getTime() + millis);
        return exp.toUTCString();
    }
    try {
        var hostMatcher = /(https?:\/\/[^\/]+)\/api\/js\/track2(-min)?\.js/,
            scripts = document.getElementsByTagName("SCRIPT"),
            doc = document, hostName = null, ua = navigator.userAgent, isSafari = ua && ua.indexOf("Safari/") >= 0 && ua.indexOf("Chrome/") < 0;
		var basedata = { atmwv:2,atdt:document.title,atu:window.location,atr:document.referrer};

        for (var i = 0; i < scripts.length; i++) {
            var scr = scripts[i];
            if (hostMatcher.test(scr.src)) {
                hostName = scr.src.replace(hostMatcher, "$1");
                break;
            }
        }


        function params() {
            var res = [];
            for (var key in basedata) {
                res.push(key + "=" + encodeURIComponent(basedata[key]));
            }
            return res;
        }

        function req(extra) {
            var url = hostName + "/api/track.gif?" + params().concat(extra || []).join("&")
            if (isSafari) {
                var frame = document.createElement("IFRAME");
                frame.style.display = "none";
                frame.id = "__agHiddenSafari"+new Date().getTime();
                document.body.appendChild(frame);
                var form = document.createElement("FORM");
                form.action=url;form.target=frame.id;form.method="POST"
				frame.onload=function() {document.body.removeChild(frame);}
                form.submit();
            } else {
                new Image().src = url;
            }
        }

        function extraParam(arr) {
            var buf = [],
				spec = {},
				sessionStart = getCookieVal("__agSes")==null,
				m = (arr.length && arr[0].sessionLength) || 30;
            doc.cookie = "__agSes=y; expires=" + getExp(1000 * 60 * m )+ "; path=/"

            for (var i = 0; i < arr.length; i++) {
                var arrElem = arr[i];
                if (sessionStart && arrElem.once) {
                    spec.evt = (spec.evt || []).concat(arrElem.once);
                }
                if (arrElem.evt) {
                    spec.evt = (spec.evt || []).concat(arrElem.evt);
                }
                var data = arrElem.data;
                if (data) {
                    if (!spec.data) {
                        spec.data = data;
                    } else {
                        for (var key in data) {
                            spec.data[key] = data[key];
                        }
                    }
                }
            }

            if (spec.data) {
                for (var key in spec.data) {
                    buf.push(encodeURIComponent("attr:" + key) + "=" + encodeURIComponent(spec.data[key]));
                }
            }
            for (var j = 0; spec.evt && j < spec.evt.length; j++) {
                buf.push(encodeURIComponent("goal:" + spec.evt[j]) + "=1");
            }
            return buf;
        }

        var extra = window._agTrack || [];
        setTimeout(function() {
            req(extraParam(extra));
        },1);

        window._agTrack = {
            push:function(arg) {
                req(extraParam([arg]));
            }
        }
    } catch(e) {
    }
})();
