HWM_FastNanoartsRepair

Ремонт артефактов существ без перезагрузки страницы

// ==UserScript==
// @name         HWM_FastNanoartsRepair
// @namespace    Небылица
// @version      1.0
// @description  Ремонт артефактов существ без перезагрузки страницы
// @author       Небылица
// @include      /^https{0,1}:\/\/((www|qrator)\.heroeswm\.ru|178\.248\.235\.15)\/arts_for_monsters\.php/
// ==/UserScript==

(function() {
    "use strict";

    // Вспомогательные функции
    function sendPOSTRequest(url, mimeType, params, callback){ // Универсалка для отправки POST-запроса к url с выставлением заданного MIME Type, параметрами params и исполнением функции callback при получении ответа
        var xhr = new XMLHttpRequest();
        xhr.open("POST", url, true);

        if (typeof mimeType === "string"){
            xhr.overrideMimeType(mimeType);
        }
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        if (typeof callback === "function"){
            xhr.onreadystatechange = function(){
                if (xhr.readyState === 4 && xhr.status === 200){
                    callback.apply(xhr);
                }
            };
        }

        xhr.send(params);
    }
    //

    // пробегаемся по всем кнопкам и переопределяем поведение при клике
    var repairButtons = document.querySelectorAll("input[type='submit'][value^='ремонт за']"),
        form0 = repairButtons[0].parentElement.children,
        race = form0[1].value,
        sign = form0[2].value;

    repairButtons.forEach(function(repairButton){
        repairButton.onclick = function(event){
            event.preventDefault();

            sendPOSTRequest("arts_for_monsters.php", "text/html; charset=windows-1251",
                            "na_id=" + event.target.parentElement.firstChild.value +
                            "&race=" + race +
                            "&sign=" + sign);

            event.target.disabled = true;
            };
    });;
})();