path = "http://www.conne.net/js_libs/"; var ie = (document.all) ? true : false; window.libs = new Object(); var headNode = document.getElementsByTagName("head").item(0); window.xmlqueue = new Array(); window.jsqueue = new Array(); window.stateloaded = 0; var events = new Array(); window.loadEvents = new Array(); JS_LIBS = new Array(); JS_LIBS["std_timeout"] = 500; JS_LIBS["std_interval"] = 50; Array.prototype.remove = function(value) { for (var i = 0; i < this.length; i++) { if (this[i] == value) { this.splice(i,1); return; } } } function compareVersions(ver1, ver2) { var tmpver1 = ver1.split("."); var tmpver2 = ver2.split("."); var result = 0; while (tmpver1.length > 0 && tmpver2.length > 0 && result == 0) { result = (tmpver1.shift() - tmpver2.shift()); } if (tmpver2.length > 0 && tmpver1.length == 0 && result == 0) { while (tmpver2.length > 0) { if (tmpver2.shift() > 0) result = -1; } } return result; } function loadJS(file, callback) { if (!document.getElementById("js_libs_."+file)) { var jsNode = document.createElement("script"); jsNode.id = "js_libs_"+file; jsNode.type = "text/javascript"; if (typeof(callback) == "function") { if (navigator.product == "Gecko") { jsNode.onload = function() { callback(file); } } else { var onReadyStateChange = function( iEvent ) { var e = (iEvent?iEvent:window.event).target?(iEvent?iEvent:window.event).target:(iEvent?iEvent:window.event).srcElement; if (e.readyState=="loaded" || e.readyState=="complete") { callback(file); } } jsNode.onreadystatechange = onReadyStateChange; } } d = new Date(); ms = d.getMilliseconds(); jsNode.src = path+"scripts/loadlib.php?file="+file+"&"+ms; headNode.appendChild(jsNode); } else { callback(file); } } window.pollRequests = new Array(); function poll(variable, time) { if (window.pollRequests[variable][0]) { func = window.pollRequests[variable][1]; xml = xmlResponse.XML[variable]; func(window.pollRequests[variable][0], variable); } else { setTimeout("poll('"+variable+"', "+time+");", time); } } jsNodes = new Array(); function loadXML(xml, callback) { index = jsNodes.length; jsNodes.push(document.createElement("script")); jsNodes[index].id = "js_libs_xml."+xml; jsNodes[index].type = "text/javascript"; if (typeof(callback) == "function") { window.pollRequests[xml] = [false, callback]; poll(xml, 10); } d = new Date(); ms = d.getMilliseconds(); jsNodes[index].src = path+"grabxml.php?f="+xml+"&"+ms; headNode.appendChild(jsNodes[index]); } function using(lib, loadEvents) { if (lib.dependencies) { for (var i = 0; i < lib.dependencies.length; i++) { var dep = "window.libs."+lib.dependencies[i]; var x = eval(dep); using(x); } } for (var i = 0; i < lib.script.length; i++) { if (loadEvents) { for (var i = 0; i < loadEvents.length; i++) { addLoadEvent(lib.script[i], loadEvents[i]); } } window.jsqueue.push(lib.script[i]); loadJS(lib.script[i], fileLoaded); } } function fileLoaded(file) { window.jsqueue.remove(file); if (window.jsqueue.length == 0) { if (_LOAD) { _LOAD(); } } } function loadIndex(version) { window.libs.version = version; loadXML("index", loadFiles); } function loadFiles(xml, index) { elements = xml.getElementsByTagName("f"); for (var i = 0; i < elements.length; i++) { file = elements[i].getAttribute("n"); window.xmlqueue.push(file); } queue = window.xmlqueue; for (var i = 0; i < queue.length; i++) { loadXML(queue[i], loadFunctions); } } function loadFunctions(xml, file) { elements = xml.getElementsByTagName("f"); for (var i = 0; i < elements.length; i++) { lib = elements[i].getAttribute("l").split("."); obj = window.libs; tmpversion = elements[i].getElementsByTagName("v"); if (tmpversion.length > 0) { version = (tmpversion[0].text) ? tmpversion[0].text : tmpversion[0].firstChild.nodeValue; if (compareVersions(window.libs.version, version) >= 0) { var name = ""; for (var j = 0; j < lib.length; j++) { if (!obj[lib[j]]) { obj[lib[j]] = new Object(); obj[lib[j]].name = ((name == "") ? "" : name + ".") + lib[j]; name = obj[lib[j]].name; } obj = obj[lib[j]]; } if (!obj.script) obj.script = new Array(); obj.script.push(elements[i].getAttribute("s")); if (!obj.dependencies) obj.dependencies = new Array(); dependencies = elements[i].getElementsByTagName("u"); for (var j = 0; j < dependencies.length; j++) { if (navigator.product == "Gecko") { obj.dependencies.push(dependencies[j].firstChild.nodeValue); } else obj.dependencies.push(dependencies[j].text); } } } } window.xmlqueue.remove(file); if (window.xmlqueue.length == 0) { try { _INITIALIZE(); } catch(e) { alert("Initialization failed"); } } } function _INITIALIZE() { if (events["initialization"]) { while (events["initialization"].length > 0) { evt = events["initialization"].shift() eval(evt); } } setTimeout("_INITIALIZE()", 500); } function _LOAD() { if (typeof(initialization) != "function") { if (events["load"]) { while (events["load"].length > 0) { loadevt = events["load"].shift(); if (loadevt) { eval(loadevt); } } } } else { setTimeout("_LOAD()", 500); } } function _UNLOAD() { if (events["unload"]) { while (events["unload"].length > 0) { eval(events["unload"].shift()); } } } function addEvent(eventname, func) { if (!events[eventname]) events[eventname] = new Array(); events[eventname].push(func); } /* window.onload=function() { window.stateloaded++; if (window.stateloaded == 2) _LOAD(); } */ window.onunload = _UNLOAD; function xmlObject() { this.XML = new Array(); this.loadXml = function(s, uid) { if(document.implementation && document.implementation.createDocument) { var objDOMParser = new DOMParser(); this.XML[uid] = objDOMParser.parseFromString(s, "text/xml"); } else if (window.ActiveXObject) { this.XML[uid] = new ActiveXObject('MSXML2.DOMDocument.3.0'); this.XML[uid].async = false; this.XML[uid].loadXML(s); } } } function init_() { using(window.libs.serverCommunication); } addEvent("initialization", "init_();"); loadIndex("1.0"); window.jslibloaded = true;