// Wait for something before to be ready var readiness = "yes"; function waitForReadiness(nextFn) { if(readiness == "yes") { nextFn(); } else { setTimeout(waitForReadiness(nextFn), 500); } } // open/close module function moduleOpenClose(moduleName, type) { var ctid = moduleName + 'ct'; if(document.getElementById(ctid).style.display == "block" && type != 'open') { setModuleStatus(moduleName, 'false'); document.getElementById(ctid).style.display = 'none'; } else { progressTurnOn(moduleName); for(fnName in fnNames[moduleName]) { readiness = "no"; if(fnNames[moduleName][fnName] != fnNames[moduleName][fnNames[moduleName].length - 1]) { var isitready = "no"; } else { var isitready = "yes" } var fnurl = makeLink('fetch.php?js=mod&module=' + moduleName + '&function=' + fnNames[moduleName][fnName]); getHTTPResponse(function(xmlhttp) { newFn[fnNames[moduleName][fnName]] = eval(xmlhttp.responseText); readiness = isitready; }, fnurl); } var modurl = makeLink('fetch.php?mod=' + moduleName); var initFn = moduleName + "Init"; getHTTPResponse(function(xmlhttp) { XMLToInnerHTML(ctid, '', xmlhttp); document.getElementById(ctid).style.display = 'block'; progressTurnOff(moduleName); }, modurl); setModuleStatus(moduleName, 'true'); waitForReadiness(newFn[initFn]); } }