//urls
var urlPrefix="http://xw2k.sdct.itl.nist.gov/brady/ecma/ECMA/";
var urlResultWindow=urlPrefix+"ECMAUtils/result-window.html";
var urlXML=urlPrefix+"files/staff.xml";
var urlXMLNS=urlPrefix+"files/staffNS.xml";
var urlHTML=urlPrefix+"files/staff.html";
var urlNoDTD=urlPrefix+"files/nodtdstaff.xml";
var urlNoVersion=urlPrefix+"files/noversion.xml";
var urlTests=urlPrefix+"run_tests.html";
//timer values
var time_between_load_window_and_test=000; //1000; //it must be greater enough the document to be loaded
var time_between_each_test=00; //1500; //it must be greater enough not to allowed
//two tests being executed at the same time
var resultWindow;
var functions; //test functions
var theSize; //number of test functions
var number_of_functions_already_handled;
var number_of_documents_already_loaded; //equals 0 or 1
var results = new Array();
var resultFrame;
var frameType = new Array();
var documentFrame;
var isNS = (navigator.appName == "Netscape")||(navigator.appName == "Mozilla");
var isIE = navigator.appName.indexOf("Microsoft") != -1;
var aXObj0;
var aXObj1;
/* opens a new windows to write the results */
function init(){
documentFrame = parent.frames["output"];
resultFrame = parent.frames["output"].frames["result"];
resultFrame.document.write("
");
number_of_functions_already_handled=0;
/* get names of every test functions */
functions=names;
theSize=functions.length;
if(isIE){
aXObj0 = new ActiveXObject("Microsoft.XMLDOM");
aXObj0.async=false;
aXObj0.preserveWhiteSpace=true;
aXObj0.validateOnParse=false;
aXObj1 = new ActiveXObject("Microsoft.XMLDOM");
aXObj1.async="false";
aXObj1.preserveWhiteSpace=true;
aXObj1.validateOnParse=false;
}
}
/* gets a document and launch a test */
function go() {
number_of_documents_already_loaded = 0;
if(number_of_functions_already_handled0){
resultFrame.document.write(results[number_of_functions_already_handled-1]+"
");
}
evalTest(-1);
}else{ //that is the last test
resultFrame.document.write(results[number_of_functions_already_handled-1]+"
");
}
}
/* launch a test with the document that has already be stored, and recursively launches another test */
function evalTest(number_of_the_function_to_test){
var res;
if(number_of_the_function_to_test>=0){ // we just evaluate one test
number_of_functions_already_handled=number_of_the_function_to_test;
}
number_of_documents_already_loaded=0;
var temp=functions[number_of_functions_already_handled];
//try{
res=temp+"()";
res=eval(res);
if(res!=1){
assertTrue(false,functions[number_of_functions_already_handled]);
}
//} catch(e){alert("error, exception thrown "+e.message);}
if(number_of_the_function_to_test<0){
number_of_functions_already_handled++;
setTimeout('go()',time_between_each_test);
}else{
setTimeout('resultFrame.document.write(results[number_of_functions_already_handled]+"
");',time_between_each_test);
}
}
/* return a new window stored in the windows array */
function loadDocument(name,modif) {
var frameName;
var documentType = retrieveType(name);
if(isIE) {
var aXObj = eval("aXObj"+number_of_documents_already_loaded);
theUrl=eval("url"+documentType);
aXObj.load(theUrl);
if(aXObj.parseError.errorCode!=0) alert(aXObj.parseError.reason);
frameType[number_of_documents_already_loaded] = aXObj;
}
if(isNS){
if(modif){
frameName = documentType+"NotModified";
documentFrame.frames[frameName].location.href=eval("url"+documentType);
}
else { //the document won't be modified
frameName = documentType;
}
frameType[number_of_documents_already_loaded] = documentFrame.frames[frameName];
}
number_of_documents_already_loaded++;
}
function retrieveType(documentName) {
if(documentName=="staff"){
return "XML";
}else if(documentName=="staffNS"){
return "XMLNS";
}else if (documentName=="html"){
return "HTML";
}else if (documentName=="nodtdstaff"){
return "NoDTD";
}else{
return "NoVersion";
}
}
/* retrieves a new XML document */
function getDocument(name,modif){
var documentFrame;
if ((number_of_documents_already_loaded==2) &&(frameType[0]==null)){
documentFrame=frameType[1];
} else {
documentFrame=frameType[0];
frameType[0]=null;
}
if (isIE) return documentFrame;
if (isNS) return documentFrame.document;
return null;
}
function assertTrue(test,testName) {
var i = retrievePosition(testName);
if(test) {
results[i]=functions[i]+" ok!";
}
else{
results[i]=functions[i]+" error!";
}
}
function retrievePosition(testName){
notFound=true;
for(i=0;(i