// @source https://github.com/NyaaPantsu/nyaa/tree/dev/public/js
// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
var Query = {
    Failed:0,
    MaxFail: 10,
    Get: function(url, renderer, callback) {
        var xhr = new XMLHttpRequest();
        xhr.open('GET', url, true);
        xhr.responseType = 'json';
        xhr.onload = function(e) {
            if (this.status == 200) {
                Query.Failed = 0;
                renderer(this.response);
                if (callback != undefined) callback(this.response);
            } else {
                console.log("Error when refresh")
                Query.Failed++;
                console.log("Attempt to refresh "+Query.Failed+"...");
                if ((Query.MaxFail == -1) || (Query.Failed < Query.MaxFail)) Query.Get(url, renderer, callback);
                else console.error("Too many attempts, stopping...")
            }
        };
        xhr.send();
    },
    Post: function(url, postArgs, callback) {
        var xhr = new XMLHttpRequest();
        xhr.open('POST', url, true);
        xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhr.responseType = 'json';
        xhr.onload = function(e) {
            if (this.status == 200) {
                Query.Failed = 0;
                if (callback != undefined) callback(this.response);
            } else {
                console.log("Error when refresh")
                Query.Failed++;
                console.log("Attempt to refresh "+Query.Failed+"...");
                if ((Query.MaxFail == -1) || (Query.Failed < Query.MaxFail)) Query.Post(url, postArgs, callback);
                else console.error("Too many attempts, stopping...")
            }
        };
        xhr.send(postArgs);
    }
};
// @license-end
