I've finished =]
You only need to make three "changes" (
note, you MUST have the 2008-01-02 version of Sidki's config pack):
-overwrite the old proxjs-min.js file (in Proxomitron Naoko-4\html\sidki_h_2008-01-02) (I recommend backing it up)
-overwrite the old proxjs-full.js file (in Proxomitron Naoko-4\html\sidki_h_2008-01-02) (I recommend backing this up as well)
-import the new
"Header Top Add: Initial JS Code" filter (and disable/delete the old filter)
The two JS files:
proxjs-min.js (Size: 19.96 KB / Downloads: 921)
proxjs-full.js (Size: 65.33 KB / Downloads: 806)
The updated filter:
Code:
[Patterns]
Name = "Header Top Add: Initial JS Code 7.11.29 (ccw! !mos) [...] (d.r) [ku]"
Active = TRUE
URL = "$TYPE(htm)(^$TST(hOrigUA=ncsa mosaic*))"
Limit = 16
Match = "(^(^<ProxHdrTop>))$STOP()$TST(volat=(*.headok:)\71.\8)$SET(volat=\72.\8)"
""
"$SET(jsVarsB="
"$TST(flag=*.size_b:[#1:*].*)"
"$TST(jsVarsB=(*$toDo: )\7(0|$SET(5=+)([^,]+)\6) \8)"
"\7\6\564\8"
")"
"$SET(5=$TST(tFrameset=*) $_frameset: 1,)"
""
"$SET(8=full)($TST(keyword=*.i_level:((1$SET(8=min)|[2-9])(.[0-9])+&&\6).*)|$SET(6=null))"
"($OHDR(Referer:( ) \2)|)((^$TST(keyword=*.i_ua:*))$OHDR(User-Agent:( ) \3)|)"
"($TST(hOrigUA=mozilla/4.[1-9]*)$SET(8=min)|$SET(4= id=\\"proxScrLink\\"))"
Replace = "<textarea id="prxJsVarsSidki" style="display: none !important;">"
"$_cfg: "$GET(cfg)", $_level: \6,\5 "
"$_xns: document.documentElement ? document.documentElement.namespaceURI : null,"
"$GET(jsVarsT)"
"$GET(jsVarsB)"
"|||"
"ncFrom>>>"$ESC(\2)"___ncWith>>>"\3""
"</textarea>"
"<script type="text/javascript" src="http://local.ptron/sidki_h_$GET(cfg)/proxjs-\8.js"></script>"
"$SET(jsVarsB=)$SET(jsVarsT=)"
Technical Details:
The following will be injected at the top of every page you visit:
Code:
<textarea id="prxJsVarsSidki" style="display: none !important;">$_cfg: "2008-01-02", $_level: 4, $_xns: document.documentElement ? document.documentElement.namespaceURI : null,_titTime: "15:04:42", _titMod: "16 Sep 2008 16:58", _catchBoxes: 10, _catchErrors: 6, _catchRnd: 20, $css: 4, $toDo: 1+2+4+8+32+64, $stopMe: 1+2+4+8, $popUp: 1+2+4+8, $toButton: 1+2+8|||ncFrom>>>""___ncWith>>>"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)"</textarea><script type="text/javascript" src="http://local.ptron/sidki_h_2008-01-02/proxjs-full.js"></script>
I've coded a "parser" in the proxjs-min.js and proxjs-full.js files, to create and populate the necessary object(s) using the variables in the hidden textarea (lines ~11 to ~53).
The parser:
- creates the necessary objects
- reads the variables and values from the first textarea on the page
- splits the content into two sections, prxO.oSet and prxO.oNce
- parses and populates the prxO.oSet keys and values
- parses and populates the prxO.oNce keys and values
You can view the JS files themselves to read up on the comments I've included so that you can better understand the code and the reasoning behind it.
I haven't tested it extensively (yet); I just wanted to share this with everyone

Thanks.
Here's the new code I've coded for both the JS files (just FYI, you don't have to continue reading this post):
Code:
/* ====================================
Create and populate "prxO" object with variables [ku]
==================================== */
function trim(stringToTrim) { // function from http://www.somacon.com/p355.php => thank you!
return stringToTrim.replace(/^\s+|\s+$/g,"");
}
// Initialize prxO object, with two nested objects (oSet and oNce)
var prxO = {oSet: {},
oNce: {}};
// Get variables
var prxJsCfg = document.getElementsByTagName("textarea")[0].innerHTML;
// Sort variables into prxO.oSet and prxO.oNce variables
prxJsCfg = prxJsCfg.split("|||"); // split prxO.oSet and prxO.oNce variables
// Split prxO.oSet keys + values
prxJsCfg_oSet = prxJsCfg[0].split(",");
for (a=0; a < prxJsCfg_oSet.length; a++) {
oSetVal = prxJsCfg_oSet[a].split(":");
if (oSetVal.length > 2) { // There are ":"s in the key value, so we need to combine all the split values together; this problem is caused by $_xns, _titTime, _titMod and maybe more).
oSetValFinal = "";
for (b=1; b < oSetVal.length; b++) { // b starts from 1 because oSetVal[0] = the key name
oSetValFinal += oSetVal[b] + ":"; // merge all the values together, appending the ":" at the end for each value
}
oSetValFinal = oSetValFinal.slice(0, -1); // remove the last ":" from the appended value string (fixes "14:11:00": to be "14:11:00")
} else {
oSetValFinal = oSetVal[1];
}
prxO.oSet[trim(oSetVal[0])] = trim(oSetValFinal); // populate prxO.oSet object
}
// Split prxO.oNce keys + values
prxJsCfg_oNce = prxJsCfg[1].split("___"); // need to split by "___" because the User Agent could have comma(s)
for (a=0; a < prxJsCfg_oNce.length; a++) {
oSetVal = prxJsCfg_oNce[a].split(">>>"); // need to split by ">>>" because the two keys may contain URLs
prxO.oNce[trim(oSetVal[0])] = trim(oSetVal[1]); // populate prxO.oNce object
}