3
var cXMLHttpRequest = window.XMLHttpRequest || function() {
4
return new ActiveXObject("Microsoft.XMLHTTP");
9
function fGetUriComponents(sUri) {
10
var aResult = hUriCache[sUri] ||(hUriCache[sUri] = sUri.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/));
11
return [aResult[1], aResult[3], aResult[5], aResult[6], aResult[8]];
14
function fResolveUri(sUri, sBaseUri) {
15
if (sUri == '' || sUri.charAt(0) == '#')
18
var aUri = fGetUriComponents(sUri);
19
if (aUri[0]) // scheme
22
var aBaseUri = fGetUriComponents(sBaseUri);
23
aUri[0] = aBaseUri[0]; // scheme
27
aUri[1] = aBaseUri[1];
30
if (aUri[2].charAt(0) != '/') {
31
var aUriSegments = aUri[2].split('/'),
32
aBaseUriSegments = aBaseUri[2].split('/');
33
aBaseUriSegments.pop();
35
var nBaseUriStart = aBaseUriSegments[0] == '' ? 1 : 0;
36
for (var nIndex = 0, nLength = aUriSegments.length; nIndex < nLength; nIndex++) {
37
if (aUriSegments[nIndex] == '..') {
38
if (aBaseUriSegments.length > nBaseUriStart)
39
aBaseUriSegments.pop();
41
aBaseUriSegments.push(aUriSegments[nIndex]);
46
if (aUriSegments[nIndex] != '.')
47
aBaseUriSegments.push(aUriSegments[nIndex]);
49
if (aUriSegments[--nIndex] == '..' || aUriSegments[nIndex] == '.')
50
aBaseUriSegments.push('');
51
aUri[2] = aBaseUriSegments.join('/');
57
aResult.push(aUri[0]);
59
aResult.push(aUri[1]);
61
aResult.push(aUri[2]);
63
aResult.push(aUri[3]);
65
aResult.push(aUri[4]);
67
return aResult.join('');
70
function fAssemble(descriptor) {
72
var oRequest = new cXMLHttpRequest;
73
oRequest.open("GET", descriptor, false);
78
for (var n = 0, files = oRequest.responseText.split(/\n/g), file; n < files.length; n++) {
79
if ((file = files[n].replace(/^\s+/, "").replace(/\s+$/, "")) != '' && file.substr(0, 1) != "#") {
80
file = fResolveUri(file, descriptor);
81
if (file.match(/.files$/))
82
source[source.length] = fAssemble(file);
84
oRequest.open("GET", file, false);
86
source[source.length] = oRequest.responseText;
90
return source.join("\n");
94
var scripts = document.getElementsByTagName("script"),
95
self = scripts[scripts.length-1],
96
match = self.src.match(/\?path=(.+)$/);
99
self.parentNode.removeChild(self);
102
var code = fAssemble(match[1] + ".files");
105
var oScript = document.getElementsByTagName("head")[0].appendChild(document.createElement("script"));
106
oScript.type = "text/javascript";
b'\\ No newline at end of file'