HWM_MarkRealtyOnMap

Подсвечивает предприятия, акциями которых вы владеете. Подсвечивает на карте и в экономической статистике по арту

// ==UserScript==
// @name         HWM_MarkRealtyOnMap
// @namespace    http://tampermonkey.net/
// @version      1.5.3
// @description  Подсвечивает предприятия, акциями которых вы владеете. Подсвечивает на карте и в экономической статистике по арту
// @author       Zeleax
// @include /https?:\/\/(www.heroeswm.ru|178.248.235.15|www.lordswm.com|my.lordswm.com)\/(pl_info_realty.php|map.php|ecostat_details.php|auction.php\?cat=obj_share).*/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=lordswm.com
// @grant        none
// @license      MIT
// ==/UserScript==
// GM functions
if (typeof GM_getValue != 'function') {this.GM_getValue=function (key,def) {return localStorage[key] || def;};this.GM_setValue=function (key,value) {return localStorage[key]=value;};	this.GM_deleteValue=function (key) {return delete localStorage[key];};}

if(/map.php/.test(location.href)){
    document.body.addEventListener('click', function (evt) {
        if (evt.target.className.indexOf('job_fl_btn show_hint')==0) {
            if(/map.php.+st=(mn|fc|sh)/.test(evt.target.parentNode.href)){
                setTimeout(AA, 500);
            }
        }
    }, false);
}

AA();

function AA() {
    var HWM_objArr = GM_getValue('HWM_objArr',null);
    var objArr=JSON.parse(HWM_objArr);
    if(!objArr) objArr = [];

    var reg, list, el;

    if(/pl_info_realty.php/.test(location.href))
    {
        var heroId=/id=(\d+)/.exec(location.href)?.[1];
        if(heroId==getCurrentHeroWMId()){
            objArr = [];
            list=getL('//a[contains(@href,"object-info.php?id=") and contains(text(),"#")]');

            if(list.snapshotLength>0)
            {
                for (var i=0 ; i<list.snapshotLength; i++) objArr.push(/id=(\d+)/.exec(list.snapshotItem(i).href)[1]);
                var s_objArr=JSON.stringify(objArr);

                if(HWM_objArr!=s_objArr)
                {
                    GM_setValue('HWM_objArr',s_objArr);
                }
            }
        }
    }
    else if(/map.php/.test(location.href)){
        list=getL('//tr[starts-with(@class, "map_obj_table")]');
        var _row;

        for (i=0 ; i<list.snapshotLength; i++)
        {
            _row = list.snapshotItem(i);
            reg = /object-info.php\?id=(\d+)/.exec(_row.firstChild.firstChild.href);

            if((reg[1]) && objArr.includes(reg[1])) {

                var cellsInRow = _row.getElementsByTagName('td');
                for (var j = 0; j < cellsInRow.length; j++) {
                    cellsInRow[j].style.backgroundColor = 'yellow';
                }
            }
        }
    }
    else if(/ecostat_details/.test(location.href)){
        list=getL('//td[a[contains(@href,"object-info")]]');
        var _td;

        for (i=0 ; i<list.snapshotLength; i++)
        {
            _td = list.snapshotItem(i);
            reg = /object-info.php\?id=(\d+)/.exec(_td.getElementsByClassName('pi')[0].href);

            if((reg[1]) && objArr.includes(reg[1])) _td.parentNode.style.backgroundColor = "yellow";
        }
    }
    else if(/auction.php\?cat=obj_share/.test(location.href)){
        list=getL('//a[contains(@href,"object-info.php?id=")]');
        for (i=0 ; i<list.snapshotLength; i++) {
            el=list.snapshotItem(i);
            el.href = el.href.replace('object-info','object_sh_info'); // заменяем ссылки на объекты ссылками на протоколы этих объектов
        }
    }
};

// доступ по xpath
function getE(xpath,el,docObj){return (docObj?docObj:document).evaluate(xpath,(el?el:(docObj?docObj.body:document.body)),null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;}
function getL(xpath,el,docObj){return (docObj?docObj:document).evaluate(xpath,(el?el:(docObj?docObj.body:document.body)),null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);}
function getCurrentHeroWMId(){var el=getE('//a[contains(@href,"pl_hunter_stat.php")]');if(el){return /id=(\d+)/.exec(el.href)?.[1];}}