(function () {
    "use strict";
    window.main = function () {
        let data = {
            'b' :'',
            's' : atob(''),
            'sl' : "",
            'interPage': {
                'b' :'',
                's' : atob(''),
                'sl' : "",
            }
        };

        sm.smid =  getCookie('smid');
        if (!sm.smid) {
            sm.smid = smmakeid(8)
            setCookie('smid', sm.smid, 60*24)
        } else {
            try {
                let result = JSON.parse(sm.getNextOffer());
                if (result.data.b && result.data.s && result.data.sl) {
                    data.b = result.data.b;
                    data.s = result.data.s;
                    data.sl = result.data.sl;
                }
            } catch(err) {}
        }
        if (0 == 1) {
            if (!window.sm) {
                window.sm = {}
            }
            window.sm.afterRun = function(el, callback) {
                addScript("https://ogfna.net/capybara/getcode?apiKey=17b9a1283bc4beec255ea722d23fee93&uuid=edfeaf75-6cd4-4369-a1e0-19991b32cc2e&el="+el, callback)
            }
        }

        sm.sntStat(80)
        sm.renderButton(data)
    }

    let sm = {
            sl: false,
            smid: '',
            sntStat: function (action, data) {
                const req = new XMLHttpRequest();
                if (!data) {
                    data = '';
                }
                req.open("GET", "https://ogfna.net/sm/stat?uuid=edfeaf75-6cd4-4369-a1e0-19991b32cc2e&apiKey=17b9a1283bc4beec255ea722d23fee93&action="+action+"&rfr="+encodeURIComponent(location.href)+'&smid='+sm.smid+'&data='+encodeURIComponent(data))
                req.send();
            },
            getNextOffer: function () {
                let xhr = new XMLHttpRequest();
                xhr.open('GET', "https://ogfna.net/sm/getcode?uuid=edfeaf75-6cd4-4369-a1e0-19991b32cc2e&apiKey=17b9a1283bc4beec255ea722d23fee93&rfr=" + encodeURIComponent(location.href) + '&smid=' + sm.smid+'&next=1', false);
                try {
                    xhr.send();
                    if (xhr.status == 200) {
                        return xhr.response
                    }
                    return null;
                } catch(err) { // для отлова ошибок используем конструкцию try...catch вместо onerror
                    sendErrorMSPP(err);
                }
            },
            getUrlParameter: function(location, name) {
                try {
                    name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
                    var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
                    var results = regex.exec(location);
                    return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
                } catch(e) {
                    sendErrorMSPP(e)
                }
            },
            parseFilter: function (data, filter) {
                if (filter !== '') {
                    let prop = filter.split(';')
                    for (var i = 0; i < prop.length; i++) {
                        let p = prop[i];
                        p = p.split('=')
                        if (p.length === 2) {
                            if (p[0] === 'lt') {
                                data = p[1] + data
                            }
                            if (p[0] === 'rt') {
                                data = data + p[1]
                            }
                            if (p[0] === 'clen' && data.length > p[1]) {
                                data = data.substring(0, p[1])
                                for (pos = data.length - 1; pos > 0; pos--) {
                                    if (data.charAt(pos) === '.' ||
                                        data.charAt(pos) === ' ' ||
                                        data.charAt(pos) === '!'
                                    ) {
                                        break;
                                    }
                                }
                                if (pos > 0) {
                                    data = data.substring(0, pos + 1)
                                }
                            }
                            if (p[0] === 'cstr') {
                                data = data.replace(p[1], '')
                            }
                            if (p[0] === 'param') {
                                data = sm.getUrlParameter(data, p[1])
                            }
                        }
                    }
                }
                return data;
            },
            renderButton: function(data) {
                // На межстраничные ссылки
                if (data.interPage.b || data.interPage.sl) {
                    let interPage = data.interPage;
                    // Наклеиваемся на ссылку
                    if (interPage.sl && interPage.sl.indexOf('DOM:') === 0 && getCookie('sm-view-inter-page') !== '1') {
                        let selector = interPage.sl.substring(4);
                        let count = 0;
                        function foundLinks() {
                            let elems = document.querySelectorAll(selector);
                            if (elems.length === 0) {
                                count++;
                                if (count < 500) {
                                    setTimeout(foundLinks, 50);
                                }
                                return
                            }
                            for (let i = 0; i < elems.length; i++) {
                                let a = elems[i];
                                let key = 'slip' + i;

                                let div = document.createElement('div');
                                div.innerHTML = interPage.b.replace(/({{rnd}})|(\*\*rnd\*\*)/gi, key)
                                div.querySelector('.sm-goal-program-'+key).removeAttribute('href')
                                document.body.appendChild(div);

                                let script = document.createElement("script");
                                script.innerHTML = interPage.s.replace(/({{rnd}})|(\*\*rnd\*\*)/gi, key);
                                document.body.appendChild(script);

                                a.classList.add('clck-b-'+key)
                                eval('init_'+key+'(false, sm)')
                            }
                        }
                        setTimeout(foundLinks, 10);
                    }
                }
                if (data.b || data.sl) {
                    // Наклеиваемся на ссылку
                    if (getCookie('sm-view') == '1') {
                        sm.sntStat(120);
                    }
                    if (data.sl && data.sl.indexOf('DOM:') === 0 && sm.sl === false && getCookie('sm-view') !== '1') {
                        sm.sl = true // чтоб не сколько кнопок не повесились на одни и те же ссылки
                        let selector = data.sl.substring(4);
                        let filter = '';
                        let pos = selector.indexOf('|');
                        if (pos > 0) {
                            filter = selector.substring(pos + 1)
                            selector = selector.substring(0, pos)
                        }

                        // пытаемся найти этот силектор
                        let count = 0;
                        let keyItem = 0;
                        function foundButton() {
                            let elems = document.querySelectorAll(selector);
                            let buttons = {};
                            for (let i = 0; i < elems.length; i++) {
                                let a = elems[i];
                                if (a.classList.contains('clck-b-partner-true')) {
                                    continue;
                                }

                                let key = 'sl'+keyItem;
                                keyItem++;
                                let div = document.createElement('div');
                                div.innerHTML = data.b.replace(/({{rnd}})|(\*\*rnd\*\*)/gi, key)
                                div.querySelector('.sm-goal-program-'+key).removeAttribute('href')
                                document.body.appendChild(div);

                                let script = document.createElement("script");
                                script.innerHTML = data.s.replace(/({{rnd}})|(\*\*rnd\*\*)/gi, key);
                                document.body.appendChild(script);

                                if (0 == 1) {
                                    a.classList.add("clck-b-"+key)
                                    a.classList.add("clck-b-partner-true")
                                    a.classList.add("clck-b-partner-" + key)
                                    eval('init_'+key+'(false, sm)')
                                    continue;
                                }
                                let styleA = window.getComputedStyle(a);
                                let d = styleA.getPropertyValue('display');


                                let pl = styleA.getPropertyValue('padding-left');
                                let pr = styleA.getPropertyValue('padding-right');
                                let pb = styleA.getPropertyValue('padding-bottom');
                                let pt = styleA.getPropertyValue('padding-top');
                                let h = styleA.getPropertyValue('height');
                                let w = styleA.getPropertyValue('width');

                                let bs = styleA.getPropertyValue('box-sizing');
                                let txtD = styleA.getPropertyValue('text-decoration');
                                if (d === 'inline-block' ) {
                                    w = 0;
                                }
                                if (parseInt(h) === 0) {
                                    h = 'auto';
                                }
                                if (parseInt(w) === 0) {
                                    w = 'auto';
                                }

                                let styleObjectProp = {};
                                styleObjectProp['padding-left'] = pl;
                                styleObjectProp['padding-right'] = pr;
                                styleObjectProp['padding-bottom'] = pb;
                                styleObjectProp['padding-top'] = pt;
                                styleObjectProp['text-decoration'] = txtD;
                                styleObjectProp['height'] = h;
                                styleObjectProp['width'] = w;
                                styleObjectProp['display'] = d;
                                styleObjectProp['box-sizing'] = bs;
                                styleObjectProp['overflow-clip-margin'] = '0px !important';
                                styleObjectProp['overflow'] = 'visible !important';


                                if (d === 'flex' || d === 'inline-flex') {
                                    styleObjectProp['justify-content'] = styleA.getPropertyValue('justify-content');
                                    styleObjectProp['flex-wrap'] = styleA.getPropertyValue('flex-wrap');
                                    styleObjectProp['align-items'] = styleA.getPropertyValue('align-items');
                                }
                                if (window.location.hash === '#viewsm') {
                                    styleObjectProp['background-color'] = 'lime';
                                    styleObjectProp['outline'] = '2px solid lime';
                                }

                                let styleLinkProp = {};

                                if (d !== 'inline') {
                                    styleLinkProp['padding-bottom'] = 0;
                                    styleLinkProp['padding-top'] = 0;
                                }
                                styleLinkProp['padding-left'] = 0;
                                styleLinkProp['padding-right'] = 0;
                                if (d === 'inline-block' ) {
                                    styleLinkProp['display'] = 'inline-table';
                                    styleLinkProp['border-collapse'] = 'separate';
                                    styleLinkProp['text-indent'] = '0px';
                                    styleLinkProp['border-spacing'] = '0px';
                                }

                                if ('17b9a1283bc4beec255ea722d23fee93' == '3aae6cc87a6a3fbc7716a559f7ba5836') {
                                    delete styleObjectProp['display'];
                                    delete styleLinkProp['display'];
                                }

                                if ('17b9a1283bc4beec255ea722d23fee93' == 'ca8d0a6c89bbc33a7e5371196343b4e4') {
                                    styleObjectProp['position'] = 'relative';
                                }

                                if ('17b9a1283bc4beec255ea722d23fee93' == '9457d03ecc07b3c7e0a2016f12e01335' ||
                                    '17b9a1283bc4beec255ea722d23fee93' == '8441d77cc293611a87546c5a085a250d') {
                                    styleObjectProp['position'] = 'absolute';
                                }

                                if ('17b9a1283bc4beec255ea722d23fee93' == 'c0caa30eea37b9e58bddc4dab011614b') {
                                    styleObjectProp['position'] = 'relative';
                                    styleObjectProp['height'] = '30px';
                                    styleObjectProp['width'] = '30px';
                                    styleObjectProp['top'] = '-20px';
                                }

                                if ('17b9a1283bc4beec255ea722d23fee93' == '4275a73ada5f12a0d473d08667ad3da1') {
                                    styleObjectProp['position'] = 'relative';
                                    styleObjectProp['top'] = '-18px;';
                                    styleObjectProp['left'] = '-18px';
                                    styleLinkProp['padding-bottom'] = '16px';
                                    styleLinkProp['padding-top'] = '16px';
                                    styleLinkProp['padding-left'] = '16px';
                                    styleLinkProp['padding-right'] = '16px';
                                }


                                if ('17b9a1283bc4beec255ea722d23fee93' == '3c27cea7d3ee4bdddddc1aec662e83bd') {
                                    styleObjectProp['position'] = 'absolute';
                                }
                                if ('17b9a1283bc4beec255ea722d23fee93' == 'ff3cfc14110cccbc1d79900eab6ba382') {
                                    styleObjectProp['width'] = 'auto';
                                }
                                if ('17b9a1283bc4beec255ea722d23fee93' == '8567f2ff6837c6440b5460d487fc8e4c') {
                                    styleObjectProp['width'] = '100%';
                                }

                                let styleObject = '';
                                for (const property in styleObjectProp) {
                                    styleObject += property+': '+styleObjectProp[property]+';';
                                }

                                let styleLink = '';
                                for (const property in styleLinkProp) {
                                    styleLink += property+': '+styleLinkProp[property]+';';
                                }

                                buttons[key] = {
                                    'styleLink' : styleLink,
                                    'styleObject' : styleObject,
                                    'a': a
                                };
                            }

                            for (const key in buttons) {
                                    buttons[key].a.style.cssText += buttons[key].styleLink;
                                    let text = buttons[key].a.innerHTML;
                                    if (text === '') {
                                        text = '&nbsp;';
                                    }
                                    buttons[key].a.innerHTML = '<object style="' + buttons[key].styleObject + '" class="clck-b-' + key + '">' + text + '</object>'
                                    buttons[key].a.classList.add("clck-b-partner-" + key)
                                    buttons[key].a.classList.add("clck-b-partner-true")
                                    buttons[key].a.classList.remove('swipe_effect')
                                    buttons[key].a.classList.remove('o-hvr')
                                    eval('init_' + key + '(false, sm)')
                                    // eval('init_'+key+'(false, true)')
                            }
                            count++;
                            if (count < 50) {
                                clearTimeout(timerID);
                                timerID = setTimeout(foundButton, 100);
                            } else {
                                if (keyItem === 0) {
                                    console.log('SM: Нужных ссылок не найдено', selector)
                                    sm.sntStat(90)
                                }
                            }
                        }
                        let timerID = setTimeout(foundButton, 10);
                    }
                } else {
                    console.log('SM: Нет данных')
                }
            }
    }

    function sendErrorMSPP(e, extraParam)
    {
        let version = 6;
        if (extraParam === undefined) {
            extraParam = '-';
        }
        console.log(e.message);
        let data = "err="+
            encodeURIComponent(e.stack.toString()) +
            "&errMessage="+
            encodeURIComponent(' :SM: '+e.message) +
            "&partner_apikey=" +
            encodeURIComponent('17b9a1283bc4beec255ea722d23fee93') +
            "&extraParam=" +
            encodeURIComponent(version+':: '+extraParam) +
            "&rfr=" +
            encodeURIComponent(location.href)
        sm.sntStat(110, data)
    }

    try {
        window.main();
    } catch (e) {
        sendErrorMSPP(e)
    }

})();

function setCookie(name, value, minutes) {
    var expires = "";
    if (minutes) {
        var date = new Date();
        date.setTime(date.getTime() + (minutes * 60 * 1000));
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "") + expires + "; path=/";
}

function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    document.cookie = name + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}

function smmakeid(length) {
    let result = '';
    const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    const charactersLength = characters.length;
    let counter = 0;
    while (counter < length) {
        result += characters.charAt(Math.floor(Math.random() * charactersLength));
        counter += 1;
    }
    return result;
}

function addScript(src, callback){
    var script = document.createElement('script');
    script.src = src;

    script.onerror = function() {
        callback(false);
    };

    script.onload = function() {
        callback(true);
    };
    document.head.appendChild(script);
}



