SetsMaster

Наборы армии, навыков и оружия - 3 в 1 (by Tamozhnya1 & Demin)

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name           SetsMaster
// @author         Demin
// @namespace      Tamozhnya1
// @description    Наборы армии, навыков и оружия - 3 в 1 (by Tamozhnya1 & Demin)
// @homepage       https://greasyfork.org/users/1602-demin
// @icon           http://i.imgur.com/LZJFLgt.png
// @version        3.7
// @encoding 	   utf-8
// @include        http://www.heroeswm.ru/*
// @include        http://qrator.heroeswm.ru/*
// @include        http://178.248.235.15/*
// @include        http://www.lordswm.com/*
// @exclude        */rightcol.php*
// @exclude        */ch_box.php*
// @exclude        */chat*
// @exclude        */ticker.html*
// @exclude        */frames*
// @exclude        */brd.php*
// @grant          GM_deleteValue
// @grant          GM_getValue
// @grant          GM_listValues
// @grant          GM_setValue
// @grant          GM_addStyle
// @grant          GM_log
// @grant          GM_openInTab
// ==/UserScript==

// (c) 2012-2015, demin  ( http://www.heroeswm.ru/pl_info.php?id=15091 )
// (c) 2012,2015, Tamozhnya1

(function() {

var version = '3.7';


var hide_perks = true;
//var hide_perks = false;

var refreshing_pages = false;
//var refreshing_pages = true;


if (typeof GM_deleteValue != '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];};

	this.GM_addStyle=function (key) {
		var style = document.createElement('style');
		style.textContent = key;
		document.querySelector("head").appendChild(style);
	}
}
if (typeof GM_listValues != 'function') {
	this.GM_listValues=function () {
		var values = [];
		for (var i=0; i<localStorage.length; i++) {
			values.push(localStorage.key(i));
		}
		return values;
	}
}


var script_num = 124512;
var script_name = "SetsMaster: Наборы армии, навыков и оружия - 3 в 1 (by Tamozhnya1 & Demin)";
update_n(version,script_num,script_name);

var url_cur = location.href;
var url = 'http://'+location.hostname+'/';


var GlobalCultureName = url.match('lordswm') ? "en-US" : "ru-RU",
    Strings = {
        "ru-RU" : {
            Army : "Армия",
            Save : "Сохранить",
            Add : "Добавить",
            SetName : "Наименование набора",
            Delete : "Удалить",
            Talents : "Навыки",
            SavePerkSetAlert : 'Сначала выберите навыки и нажмите "Принять"',
            Weapon : "Оружие",
            RemoveAll : "Снять все",
        },
        "en-US" : {
            Army : "Army",
            Save : "Save",
            Add : "Add",
            SetName : "Set name",
            Delete : "Delete",
            Talents : "Talents",
            SavePerkSetAlert : 'Please select skills and click on "Accept"',
            Weapon : "Weapon",
            RemoveAll : "Un-equip all",
        }
    },
    LocalizedString = Strings[GlobalCultureName];

var flash_heart = document.querySelector("object > param[value*='heart.swf']");
if ( flash_heart ) flash_heart = flash_heart.parentNode.querySelector("param[name='FlashVars']");
if ( flash_heart ) {
	flash_heart = flash_heart.value.split('|');
	if ( flash_heart[3] ) { var nick = flash_heart[3] + "_"; }
}

if ( !(document.querySelector("body") && nick) ) { return; }

var frak, frak_class, temp_nick = nick;
nick = encodeURIComponent(nick);

if ( location.pathname=='/home.php' ) {
	frak = /\/i\/(r\d+)\.gif/.exec( document.querySelector("body").innerHTML );
	if ( frak ) {
		frak = frak[1] + "_";
		GM_setValue( nick+"frak", frak );
	}
}
else if ( location.pathname=='/pl_info.php' ) {
	var temp_regexp = new RegExp(temp_nick.slice(0, -1)+'.\{30,150\}\\/i\\/(r\\d+)\\.gif');
	frak = temp_regexp.exec( document.querySelector("body").innerHTML );
	if ( frak ) {
		frak = frak[1] + "_";
		GM_setValue( nick+"frak", frak );
	}
}
else if ( location.pathname=='/castle.php' ) {
	function frak_and_class(frak, temp_fract) {
		for (var i=0, temp_fract_len=temp_fract.length, temp_fr; i<temp_fract_len; i++) {
			temp_fr = temp_fract[i].value;
			if ( !temp_fr ) { frak = false; break; }

			frak += 1;
			if ( temp_fr != frak ) {
				break;
			} else if ( i+1 == temp_fract_len ) {
				frak += 1;
			}
		}
		return frak;
	}

	frak = frak_and_class(-1, document.querySelectorAll("select[name='fract'] > option"));
	frak_class = frak_and_class(-2, document.querySelectorAll("select[name='classid'] > option"));

	if ( frak!==false && frak_class!==false && frak>=0 ) {
		if ( frak_class < 0 ) frak_class = 0;
		frak = "r" + ( frak_class * 100 + frak ) + "_";
		GM_setValue( nick+"frak", frak );
	} else {
		frak = false;
	}
}

if ( !frak ) frak = GM_getValue( nick+"frak" );
if ( !frak ) { return; }

var menuId = "menuSets";
/************************************************************************************************************/
armySet = {
    oid : 2,
    id : "armySet",
    name : "<a href='army.php' style='color: #f5c137; text-decoration: none;'>" + LocalizedString.Army + "</a>",
    currentSetName : nick + frak + "currentArmySet",
    currentSetNumber : undefined,
    sets : new Array(),
    setObjects : new Array(),
    menuItems : {},
    currentMenuItem : undefined,
    menu : undefined,
    savedSetIdsConst : nick + frak + "savedArmySetIds",
    savedSetConst : nick + frak + "savedArmySet",
    refreshingPages : "home.php;army.php;pl_info.php",
    army_now : new Array(),

    getSets : function () {
        for (var i = 0; i < this.setObjects.length; i++) {
            var setObject = this.setObjects[i];
            if (setObject) {
                var setName = setObject.name;
                var army = setObject.army;

                var setTitle = "";
                for (var j = 0; j < army.length; j++) {
                    setTitle += (army[j] == "" ? "0" : army[j]) + "+";
                }
                setTitle = setTitle.substring(0, setTitle.length - 1);

                var data = "";
                for (var j = 0; j < army.length; j++) {
                    data = "countv" + (j + 1) + "=" + (army[j] == "" ? "0" : army[j]) + (data == "" ? "" : "&") + data;
                }
                this.sets[i] = {
                    number : parseInt(setObject.oid),
                    name : setName,
                    title : setTitle,
                    method : "POST",
                    url : "army_apply.php",
                    data : data,
                    contentType : "application/x-www-form-urlencoded"
                };
            }
        }
    },
    init : function () {
        this.currentSetNumber = GM_getValue(this.currentSetName, -1);
        var savedSetIdsStr = GM_getValue(this.savedSetIdsConst);
        var setIds = new Array();
        if (savedSetIdsStr) {
            setIds = savedSetIdsStr.split("|");
        }
        for (var i = 0; i < setIds.length; i++) {
            if (setIds[i] == "") {
                continue;
            }
            var setStr = GM_getValue(this.savedSetConst + setIds[i]);
            if (!setStr) {
                continue;
            }
            var setData = setStr.split("|");
            this.setObjects[i] = {
                oid : setIds[i],
                name : setData[7],
                fraction : setData[8],
                army : new Array()
            };
            for (var j = 0; j < 7; j++) {
                this.setObjects[i].army[j] = setData[j];
            }
        }
        if (/army.php$/.test(location.href)) {
            this.drawSetsTable();
        }
    },
    drawSetsTable : function () {
        var div = addElement("center", document.querySelector("body"));
        addElement("br", div);
        var htmlTable = addElement("table", div, {
                bgcolor : "#959595",
                bordercolor : "#f5c137",
                border : "1px"
            });
        this.drawTableHeader(htmlTable);
        for (var i = 0; i < this.setObjects.length; i++) {
            if (this.setObjects[i]) {
                this.drawSetsRow(htmlTable, this.setObjects[i]);
            }
        }
        var saveButton = addElement("input", div, { type : "button", value : LocalizedString.Save });
        saveButton.addEventListener("click", this.saveSets, false);
        var addButton = addElement("input", div, { type : "button", value : LocalizedString.Add });
        addButton.addEventListener("click", this.addSet, false);
    },
    drawTableHeader : function (htmlTable) {
        var flash = document.querySelector("object > param[value*='recruitarmy.swf']");
        flash = flash.parentNode.querySelector("param[name='FlashVars']");
        var flashVars = flash.value.substr(8);
        var sets = flashVars.split(";M");

        var tr = addElement("tr", htmlTable);
        var th = addElement("td", tr);

        th.style.fontWeight = "bold";
        th.innerHTML = LocalizedString.SetName;
        for (var i = 0; i < sets.length; i++) {
            var set = sets[i].split("|");
            th = addElement("td", tr);
            th.style.fontWeight = "bold";
            this.army_now.push(Number(sets[i].split(":")[1].substr(57,3)));
            if (url.match('lordswm')) {
                th.innerHTML = set[2].split("#")[1];
            } else {
                th.innerHTML = set[2].split("#")[0];
            }
        }
	while ( this.army_now.length != 7 ) { this.army_now.push(""); }
    },
    drawSetsRow : function (htmlTable, setObject) {
        var tr = addElement("tr", htmlTable, {
                oid : setObject.oid
            });
        var td = addElement("td", tr);
        var input = addElement("input", td, {
                value : setObject.name,
                size : 22
            });
        for (var i = 0; i < setObject.army.length; i++) {
            td = addElement("td", tr);
            input = addElement("input", td, { value : setObject.army[i], size : 5 });
        }
        td = addElement("td", tr);
        var delButton = addElement("input", td, { type : "button", value : "x", title : LocalizedString.Delete });
        delButton.addEventListener("click", this.deleteSet, false);
    },
    saveSets : function () {
        var table = this.previousSibling;
        var setIdsStr = "";
        for (var i = 1; i < table.rows.length; i++) {
            var setStr = "";
            var row = table.rows[i];
            var oid = row.getAttribute("oid");
            setIdsStr = setIdsStr + "|" + oid;
            for (var j = 1; j <= 7; j++) {
                setStr = setStr + "|" + row.cells[j].firstChild.value;
            }
            setStr = setStr + "|" + row.cells[0].firstChild.value;
            setStr = setStr + "|" + "";
            GM_setValue(armySet.savedSetConst + oid, setStr.substr(1));
        }
        if (setIdsStr && setIdsStr != "") {
            GM_setValue(armySet.savedSetIdsConst, setIdsStr.substr(1));

            // udalit' udalennye komplekty
            if (typeof GM_listValues == 'function') {
                var clear_d = GM_listValues();
                var clear_d_len = clear_d.length;
                var num_id_regexp = new RegExp(armySet.savedSetConst + '(\\d+)');
                var num_id;
                for (var i = clear_d_len; i--; ) {
                    num_id = num_id_regexp.exec(clear_d[i]);
                    if (num_id && !setIdsStr.match(num_id[1])) {
                        GM_deleteValue(clear_d[i]);
                    }
                }
            }
        } else {
            GM_deleteValue(armySet.savedSetIdsConst);
            GM_deleteValue(armySet.currentSetName);

            // udalit' udalennye komplekty
            if (typeof GM_listValues == 'function') {
                var clear_d = GM_listValues();
                var clear_d_len = clear_d.length;
                var num_id_regexp = new RegExp(armySet.savedSetConst + '(\\d+)');
                var num_id;
                for (var i = clear_d_len; i--; ) {
                    num_id = num_id_regexp.exec(clear_d[i]);
                    if (num_id) {
                        GM_deleteValue(clear_d[i]);
                    }
                }
            }
        }
    },
    addSet : function () {
        var table = this.previousSibling.previousSibling;

        var setTitle = "";
        for (var j = 0, j_len = armySet.army_now.length; j < j_len; j++) {
            setTitle += (armySet.army_now[j] == "" ? "0" : armySet.army_now[j]) + "+";
        }
        setTitle = setTitle.slice(0, -1);

        armySet.drawSetsRow(table, {
            oid : (new Date()).getTime(),
            name : setTitle,
        //  army : ["", "", "", "", "", "", ""]
            army : armySet.army_now
        });
    },
    deleteSet : function () {
        var table = this.parentNode.parentNode.parentNode;
        var row = this.parentNode.parentNode;
        table.removeChild(row);
    },
}
/***********************************************************************************************************/
skillSet = {
    oid : 1,
    id : "skillSet",
    name : "<a href='skillwheel.php' style='color: #f5c137; text-decoration: none;'>" + LocalizedString.Talents + "</a>",
    currentSetName : nick + frak + "currentSkillSet",
    currentSetNumber : undefined,
    sets : new Array(),
    setObjects : new Array(),
    menuItems : {},
    currentMenuItem : undefined,
    menu : undefined,
    refreshingPages : "skillwheel.php;pl_info.php",

    getSets : function () {
        var setRefs = document.querySelectorAll("a[href^='skillwheel.php?setuserperk']");
        for(var i = 0; i < setRefs.length; i++) {
            this.sets[i] = { number : i, name : setRefs[i].innerHTML, title : '', method : "GET", url : setRefs[i].href }
            setRefs[i].addEventListener("click", markCurrentEventHandler, false);
            setRefs[i].setAttribute("number", i);
            setRefs[i].setAttribute("oid", this.oid);
        }
    },
    init : function () {
        this.currentSetNumber = GM_getValue(this.currentSetName, -1);
    }
}
/************************************************************************************************************/
weaponSet = {
    oid : 0,
    id : "weaponSet",
    name : "<a href='inventory.php' style='color: #f5c137; text-decoration: none;'>" + LocalizedString.Weapon + "</a>",
    currentSetName : nick + "currentWeaponSet",
    currentSetNumber : undefined,
    sets : new Array(),
    menuItems : {},
    currentMenuItem : undefined,
    menu : undefined,
    refreshingPages : "home.php;inventory.php;pl_info.php",

    getSets : function () {
        this.sets[0] = { number : 0, name : LocalizedString.RemoveAll, method : "GET", url : "inventory.php?all_off=100" }
        for (var i = 1; i <= 5; i++) {
            var setName = GM_getValue(nick + "weaponSet" + i);
            if (setName) {
                this.sets[i] = { number : i, name : setName, method : "GET", url : "inventory.php?all_on=" + i, headers : null }
            }
        }
    },
    init : function () {
        this.currentSetNumber = GM_getValue(this.currentSetName, -1);
        if (/inventory.php$/.test(location.href)) {
            var a = document.querySelector("a[href^='inventory.php?all_off=']");
            if ( a ) {
            a.addEventListener("click", markCurrentEventHandler, false);
            a.setAttribute("number", 0);
            a.setAttribute("oid", this.oid);

            var all_on = document.querySelectorAll("a[href^='inventory.php?all_on=']");
            var FilledSets = new Array();
            for (var i = 0; i < all_on.length; i++) {
                a = all_on[i];
                a.addEventListener("click", markCurrentEventHandler, false);
                var setNumber = parseInt(a.href.substr(a.href.indexOf("all_on=") + 7, 1));
                a.setAttribute("number", setNumber);
                a.setAttribute("oid", this.oid);
                GM_setValue(nick + "weaponSet" + setNumber, a.innerHTML);
                FilledSets[setNumber] = setNumber;
            }
            for (var i = 1; i <= 5; i++) {
                if (!FilledSets[i]) {
                    GM_deleteValue(nick + "weaponSet" + i);
                }
            }
            }
        }
    }
}

/************************************************************************************************************/
var setObjects = new Array();
setObjects[weaponSet.oid] = weaponSet;
setObjects[armySet.oid] = armySet;
setObjects[skillSet.oid] = skillSet;
var timer;

main();

function main() {
    var menuId = "menuSetsTable";
    var logobEngChild = document.querySelector("img[width='101'][height='26']");
    if (!logobEngChild) {
        return;
    }
    var styleObject = { borderColor : "#f5c137", background : "#6b6b69", color : "#f5c137" }
    if (document.querySelector("img[src*='i/top_ny']")) {
        styleObject.background = "#003399";
	}
    var offSet = -55;
    for (var i = 0; i < setObjects.length; i++) {
        if (!setObjects[i]) {
            continue;
        }
        var currentSetObject = setObjects[i];
        if (currentSetObject.init) {
            currentSetObject.init();
        }
        currentSetObject.getSets();

        if (i > 0) {
            offSet += $(menuId + (i - 1) + "Header").clientWidth;
        }
        var menuHeaderStyleObject = {
            position : "absolute",
            margin : "2px 0px 0px " + offSet + "px",
            background : styleObject.background,
            color : styleObject.color,
            border : "1px solid " + styleObject.borderColor,
            "font-weight" : "bold",
            padding : "2px 6px 4px 5px",
            "z-index" : (url_cur.match('photo_pl_photos') ? "0" : "2")
        }
        var menuHeader = addElement("div", logobEngChild.parentNode, { id : menuId + i + "Header", headerId : menuId + i + "Header", menuId : menuId + i }, menuHeaderStyleObject);
        var aLevel1 = addElement("b", menuHeader, {}, "color: #f5c137;");
        //  aLevel1.style.cursor = "pointer";
        aLevel1.innerHTML = currentSetObject.name;
        currentSetObject.menu = aLevel1;

        var menuContent = addElement("div", menuHeader, { id : menuId + i, headerId : menuId + i + "Header", menuId : menuId + i }, "position: relative; padding: 6px 3px 2px 3px; white-space: nowrap;");
        menuHeader.addEventListener("mouseover", showMenu, false);
        menuHeader.addEventListener("mouseout", hideMenu, false);
        menuContent.addEventListener("mouseover", showMenuCont, false);
        menuContent.addEventListener("mouseout", hideMenu, false);

        for (var j = 0; j < currentSetObject.sets.length; j++) {
            var currentSet = currentSetObject.sets[j];
            if (!currentSet) {
                continue;
            }
            var liLevel2 = addElement(url_cur.match('photo_pl_photos') ? "div" : "li", menuContent, { type: "disc", title:  currentSetObject.title || "" });
            var aLevel2 = addElement("b", liLevel2, currentSet, "color: #f5c137;");
            aLevel2.style.cursor = "pointer";
            aLevel2.innerHTML = currentSet.name;
            aLevel2.addEventListener("click", applySet, false);

            aLevel2.setAttribute("oid", currentSetObject.oid);
            if (currentSet.number == currentSetObject.currentSetNumber) {
                markCurrent(aLevel2);
            }
            currentSetObject.menuItems[j] = aLevel2;
        }
        $(menuId + i).style.width = ($(menuId + i).clientWidth + 20) + "px";
        $(menuId + i).style.display = "none";
    }

	if ( hide_perks ) {
		hide_perks = document.querySelectorAll("a[href='skillwheel.php'] > font");
		var temp_i;
		for ( var i in hide_perks ) {
			temp_i = hide_perks[i];
			if ( temp_i && temp_i.innerHTML && ( temp_i.innerHTML.indexOf("▼")!=-1 || temp_i.innerHTML.indexOf("&#9660;")!=-1 ) ) {
				while ( temp_i.tagName != 'TD' ) { temp_i = temp_i.parentNode; }
				temp_i.style.display = 'none';

				// восстанавливаем отступ
				var temp_td = document.createElement('td');
				temp_td.height = "6px";
				temp_i.parentNode.appendChild(temp_td);

				break;
			}
		}
	}
}
function showMenu() {
    var menu = $(this.getAttribute("menuId"));
    timer = setTimeout(function () {
            if (menu) {
                menu.style.display = "block";
            }
        }, 100);
}
function showMenuCont() {
    var menu = $(this.getAttribute("menuId"));
    if (menu) {
        menu.style.display = "block";
    }
}
function hideMenu() {
    if (timer) {
        clearTimeout(timer);
    }
    var menu = $(this.getAttribute("menuId"));
    if (menu) {
        menu.style.display = "none";
    }
}
function markCurrentEventHandler(e) {
    var obj = setObjects[this.getAttribute("oid")];
    var menuItemToMark = obj.menuItems[this.getAttribute("number")];
    markCurrent(menuItemToMark);
}
function markCurrent(el) {
    var obj = setObjects[el.getAttribute("oid")];
    GM_setValue(obj.currentSetName, el.getAttribute("number"));
    el.style.color = '#0f0';
    if (obj.currentMenuItem && obj.currentMenuItem != el) {
        obj.currentMenuItem.style.color = "#f5c137";
    }
    obj.currentMenuItem = el;
}
function applySet() {
    markCurrent(this);
    var obj = setObjects[parseInt(this.getAttribute("oid"))];
    var _this = this;
    var title = this.innerHTML;
    this.innerHTML += " " + getLoadGif();
    var objXMLHttpReqSM = new XMLHttpRequest();
    objXMLHttpReqSM.open(this.getAttribute("method"), this.getAttribute("url"), true);
    objXMLHttpReqSM.onreadystatechange = function () {
        if (objXMLHttpReqSM.readyState == 2) {
            objXMLHttpReqSM.abort();
            _this.innerHTML = title;
            if(refreshing_pages && obj.refreshingPages) {
                var pages = obj.refreshingPages.split(';');
                for(var i = 0; i < pages.length; i++) {
                    if(location.href.indexOf(pages[i]) > -1) {
                        window.location.href = window.location.href;
                    }
                }
            }
        }
    };
    
    var contentType = this.getAttribute("contentType");
    if (contentType) {
        objXMLHttpReqSM.setRequestHeader('Content-type', contentType);
    }
    objXMLHttpReqSM.send(this.getAttribute("data"));

    return false;
}
function addElement(type, parent, data, style) {
    var el = document.createElement(type);
    if (parent) {
        parent.appendChild(el);
    }
    if (data) {
        for (var key in data) {
            el.setAttribute(key, data[key]);
        }
    }
    if (style && el.id) {
        var styleStr = "";
        if (typeof(style) == "string") {
            styleStr = style;
        } else {
            for (var key in style) {
                styleStr += key + ": " + style[key] + "; ";
            }
        }
        GM_addStyle("#" + el.id + "{" + styleStr + "}");
    }
    return el;
}
function getLoadGif() {
    return '<img border="0" align="absmiddle" height="11" src="data:image/gif;base64,' +
    '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' +
    'fySDhGYQdDWGQyUhADs=">';
}

function $(id) { return document.querySelector("#"+id); }

function addEvent(elem, evType, fn) {
	if (elem.addEventListener) {
		elem.addEventListener(evType, fn, false);
	}
	else if (elem.attachEvent) {
		elem.attachEvent("on" + evType, fn);
	}
	else {
		elem["on" + evType] = fn;
	}
}

function update_n(a,b,c,d,e){if(e){e++}else{e=1;d=(Number(GM_getValue(b+'_update_script_last2','0'))||0)}if(e>3){return}var f=new Date().getTime();var g=document.querySelector('#update_demin_script2');if(g){if((d+86400000<f)||(d>f)){g=g.innerHTML;if(/100000=1.1/.exec(g)){var h=new RegExp(b+'=(\\d+\\.\\d+)=(\\d+)').exec(g);var i=/url7=([^%]+)/.exec(g);if(a&&h&&i){if(Number(h[1])>Number(a))setTimeout(function(){if(confirm('\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u0441\u043A\u0440\u0438\u043F\u0442\u0430: "'+c+'".\n\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u0443\u044E \u0432\u0435\u0440\u0441\u0438\u044E \u0441\u0435\u0439\u0447\u0430\u0441?\n\nThere is an update available for the script: "'+c+'".\nWould you like install the script now?')){if(typeof GM_openInTab=='function'){GM_openInTab(i[1].replace(/\s/g,'')+h[2])}else{window.open(i[1].replace(/\s/g,'')+h[2],'_blank')}}},500)}GM_setValue(b+'_update_script_last2',''+f)}else{setTimeout(function(){update_n(a,b,c,d,e)},1000)}}}else{var j=document.querySelector('body');if(j){var k=GM_getValue(b+'_update_script_array2');if(e==1&&((d+86400000<f)||(d>f)||!k)){if(k){GM_deleteValue(b+'_update_script_array2')}setTimeout(function(){update_n(a,b,c,d,e)},1000);return}var l=document.createElement('div');l.id='update_demin_script2';l.setAttribute('style','position: absolute; width: 0px; height: 0px; top: 0px; left: 0px; display: none;');l.innerHTML='';j.appendChild(l);if((d+86400000<f)||(d>f)||!k){var m=new XMLHttpRequest();m.open('GET','photo_pl_photos.php?aid=1777'+'&rand='+(Math.random()*100),true);m.onreadystatechange=function(){update(m,a,b,c,d,e)};m.send(null)}else{document.querySelector('#update_demin_script2').innerHTML=k;setTimeout(function(){update_n(a,b,c,d,e)},10)}}}}function update(a,b,c,d,e,f){if(a.readyState==4&&a.status==200){a=a.responseText;var g=/(\d+=\d+\.\d+(=\d+)*)/g;var h='';var i=/(url7=[^%]+\%)/.exec(a);if(i){h+=i[1]}while((i=g.exec(a))!=null){if(h.indexOf(i[1])==-1){h+=' '+i[1]}};GM_setValue(c+'_update_script_array2',''+h);var j=document.querySelector('#update_demin_script2');if(j){j.innerHTML=h;setTimeout(function(){update_n(b,c,d,e,f)},10)}}}

})();