libpbr2

You don't need this unless you're planning on writing a script that runs alongside Replay Rewrite.

Este script não deve ser instalado diretamente. Este script é uma biblioteca de outros scripts para incluir com o diretório meta // @require https://update.greasyfork.org/scripts/1371/3533/libpbr2.js

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

// ==UserScript==
// @name           libpbr2
// @description    You don't need this unless you're planning on writing a script that runs alongside Replay Rewrite.
// @include        http://www.goallineblitz.com/game/replay.pl?game_id=*&pbp_id=*
// @copyright      2009, pabst
// @license        (CC) Attribution Share Alike; http://creativecommons.org/licenses/by-sa/3.0/
// @version        13.11.25
// ==/UserScript==

var fieldLayerZ = 0;
var lowerDecalLayerZ = 64;
var lineLayerZ = 128;
var middleDecalLayerZ = 192;
var playerLayerZ = 255;
var upperDecalLayerZ = 768;
var iconOverlayLayerZ = 1024;

var startLimit = 0;
var lockTime = 0;

function importPBP(address, page) {
    console.log("inserting pbp");
    var pbp = document.getElementById("pbp");
    pbp.style.visibility = "hidden";
    pbp.style.display = "none";
    var string = page.responseText.replace(/<img/g,"<div").replace(/\/img/g,"/div>");
    string = string.slice(string.indexOf('<div id="content">'));
    string = string.slice(0,string.indexOf('<div id="footer">'));
    pbp.innerHTML = string;
/*
	var code = page.responseText.split('<body onload="loadInbox()">')[1];
	code = code.replace(/<script /g,"<crap ");
	code = code.replace(/<\/script>/g,"/crap>");
	code = code.replace(/<link /g,"<crap ");
    pbp.innerHTML = code;
*/
}

function init(needsPBP) {
//    console.log("init");
    if (startLimit == 0) {
        startLimit++;
        addToActive();
    	activate();
    }

    if (needsPBP == true) {
        var pbptag = document.createElement("div");
        pbptag.setAttribute("id","pbp");

        var pbp = document.getElementById("pbp");
        if (pbp == null) {
            document.body.appendChild(pbptag);

            var href = window.location.toString();
            href = href.replace("replay.pl","game.pl");
            var idx = href.indexOf("&pbp_id");
            href = href.slice(0,idx) + "&mode=pbp";

            console.log("loading pbp");
            getInetPage(href, importPBP);
            return;
        }
        else if (pbp.childNodes.length == 0) {
            console.log("waiting for pbp");
            setTimeout(init, 300);
            return;
        }
    }
    
	if (document.getElementById("rrplay") == null) {
        if (startLimit >= 10) return;
        startLimit++;
		setTimeout(init, 300);
		return;
	}
    else {
        var rrplay = document.getElementById("rrplay");
        rrplay.addEventListener("change",function(e) { activate(e) }, false);
    }
}

function deinit() { }

function addToActive() {
//    console.log("addToActive");
    var list = document.getElementById("active_list");
    if (list == null) {
//    	console.log("addToActive: "+scriptName+" waiting");
        if (startLimit < 10) {
            startLimit++;
        	setTimeout(addToActive,1000);
        }
    	return;
   	}

    var div = document.createElement("div");
    div.innerHTML = scriptName+" : "+scriptVersion;
    list.appendChild(div);

    if (GM_getValue) {
        var data = GM_getValue(scriptName);
        if (data == null) {
            GM_setValue(scriptName,0+"\t"+scriptVersion);
            data = GM_getValue(scriptName);
        }

        var date = parseInt(data.split("\t")[0]);
        var ver = data.split("\t")[1];
        console.log("Checking for update : "+scriptName+" ("+date+") ("+ver+")");

        var delay = 12*60*60*1000;
        if (((new Date()).getTime() -  parseInt(date)) > delay) {
            console.log("checking for new version");
            GM_getInetPage(scriptWebpage.replace("/show/","/source/") + ".meta.js", updateCheck);
        }
        else if (ver != scriptVersion) {
            console.log("using local version");
            updateCheck(null, null, ver);
        }
        else {
            console.log("too soon to check");
        }
    }
}

function lock(e) {
    console.log("locked "+scriptName);
    lockTime = new Date();

	var pd = unsafeWindow.play_data;
	if (pd == null) {
		console.log("no play_data: turn flash replays off?");
	}

    var rrplay;
    if (e == null) {
        rrplay = document.getElementById("rrplay");
    }
    else {
        rrplay = e.target;
    }
    if (rrplay == null) {
        console.log("rrplay == null");
        return;
    }

    var div = document.createElement("div");
    div.setAttribute("id",scriptName);
    rrplay.appendChild(div);
}

function unlock() {
    var time = new Date() - lockTime;
    console.log("unlocked : "+scriptName+" : "+time.toFixed(0)+"ms");
    var div = document.getElementById(scriptName);
    if (div != null) div.parentNode.removeChild(div);
}

function updateCheck(address, page, v) {
   console.log("updateCheck : loaded "+address);
   var version = null;
   if (address != null) {
//	   console.log(page.responseText);
       version = page.responseText.split("@version")[1];
       version = version.split("/")[0];
       version = version.replace(/^\s*|\s*$/g,"");
//	   console.log("'"+version+"'");
       GM_setValue(scriptName,(new Date().getTime().toString())+"\t"+version);
   }
   else {
       version = v;
   }

   if (scriptVersion != version) {
       var div = document.getElementById("active_list");
       for (var i=0; i<div.childNodes.length; i++) {
           var c = div.childNodes[i];
           if (c.innerHTML.indexOf(scriptName) == 0) {
               c.innerHTML +=" &nbsp;(";
               var a = document.createElement("a");
               a.href = scriptWebpage;
               a.innerHTML = version+" available";
               c.appendChild(a);
               c.innerHTML +=")";
           }
       }
   }
}

function arraySum(arr,start) {
	var total = 0;
	for (var i=start; i<arr.length; i++) {
		total += arr[i];
	}
	return total;
}

function fixEscapedText(str) {
	var s = str;
	while (s.indexOf('"') != -1) {
		s = s.replace('"',"&quot;");
	}
	while (s.indexOf("'") != -1) {
		s = s.replace("'","&#39;");
	}
	return s;
}

function trim(str) {
	var s = str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
	return s.replace(/\n/," ");
}

function setCookie(c_name, value) {
	var strs = new Array();
	var v = btoa(escape(value));
	if (GM_setValue != null) {
		GM_setValue(c_name,v);
		//console.log("writing gmValue ("+value.length+" --> "+v.length+") :"+c_name+" ==> "+v);
	}
	else {
		var cw = c_name + "=" + v +";";
		document.cookie = cw;
		//console.log("writing cookie ("+value.length+" --> "+v.length+") :"+c_name+" ==> "+v);
	}
}

function getCookie(c_name) {
	if (GM_getValue != null) {
		var s = GM_getValue(c_name,"");
//		console.log(c_name+" --> '"+s+"'");
		return unescape(atob(s));
	}
	else {
		var start = document.cookie.indexOf(c_name+"=");
		if (start != -1) {
			console.log(document.cookie);
			var s = document.cookie.slice(start+(c_name+"=").length);
			s = s.slice(0,s.indexOf(";"));
			var c = s;
//			console.log(c_name+" --> '"+s+"'");
			return unescape(atob(s));
		}
		else {
			console.log("cookie not set");
		}
	}
	return null;
}

function rangeCheck(arr, i) {
	if (i < 0) return false;
	if (i >= arr.length) return false;
	return true;
}

function findChild(id,node) {
	if (node.id+"" == id+"") {
		return node;
	}
	//for each (var c in node.childNodes) {
	for (var i=0; i<node.childNodes.length; i++) {
		var c = node.childNodes[i];
		var r = findChild(id,c);
		if (r != null) {
			return r;
		}
	}
	return null;
}

function getInetPage(address, func, target) {
    console.log("getInetPage : "+address);
    var req = new XMLHttpRequest();
	req.open( 'GET', address, true );
	req.onreadystatechange = function() {
		if (target != null) {
			var d = ["..","...","."];
			var str = target.innerHTML.split(" ");
			target.innerHTML = str[0]+" "+d[str[1].length-1];
    	}
	};
	req.onload = function() {
		if (this.status != 200) {
			alert("pbr gm script: Error "+this.status+" loading "+address);
		}
		else {
			console.log("loaded: "+address)
			func(address,this);
		}
	};

	req.send(null);
	return req;
}

function GM_getInetPage(address, func, target) {
    console.log("GM_getInetPage : "+address);
    GM_xmlhttpRequest({
        method: 'GET',
        url: address,
        headers: {
            'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
            'Accept': 'application/atom+xml,application/xml,text/xml',
        },
        onload: function(page) {
                console.log("loaded: "+address)
                func(address,page);
        }
    });
}