// ***********************************************************************
//     SUPPORTING ROUTINES AND DEFINITIONS
//************************************************************************

//
// General defs.
//

var saved = "";
var MAXEMPLOYEES = 5;
var NODE = 1;
var INDEXING = 2;
var employee = "employee";
var rootNode = "staff";
var pass = "Passed";
var fail = "Failed";
var FIRST = 0;
var SECOND = 1;
var THIRD = 2;
var FOURTH = 3;
var FIFTH = 4;
var SIXTH = 5;
var SEVENTH = 6;
var EIGHT = 7;
var NINETH = 8;
var TENTH = 9;
var ELEVENTH = 10;
var TWELVETH = 11;
var THIRDTEENTH = 12;

var BODY = "BODY";
var TITLE = "TITLE";
var H1 = "H1";
var H2 = "H2";
var H3 = "H3";
var H4 = "H4";
var H5 = "H5";
var H6 = "H6";
var BR = "BR";
var TABLE = "TABLE";
var IMG = "IMG";
var OBJECT = "OBJECT";
var FONT = "FONT";
var BASEFONT = "BASEFONT";
var MAP = "MAP";
var AREA = "AREA";
var P = "P";
var OL = "OL";
var UL = "UL";
var DL = "DL";
var HR = "HR";
var HTML = "HTML";
var HEAD = "HEAD";
var LINK = "LINK";
var META = "META";
var BASE = "BASE";
var FORM = "FORM";
var SELECT = "SELECT";
var OPTION = "OPTION";
var Q = "Q";
var BLOCKQUOTE = "BLOCKQUOTE";
var COL = "COL";
var COLGROUP = "COLGROUP";
var PRE = "PRE";
var DIV = "DIV";
var INS = "INS";
var DEL = "DEL";
var DIR = "DIR";
var APPLET = "APPLET";
var OPTGROUP = "OPTGROUP"
var SCRIPT = "SCRIPT";
var PARAM = "PARAM";
var ISINDEX = "ISINDEX";
var INPUT = "INPUT";
var BUTTON = "BUTTON";
var LABEL = "LABEL";
var TEXTAREA = "TEXTAREA";
var FIELDSET = "FIELDSET";
var ANCHOR = "A";
var FRAMESET = "FRAMESET";
var FRAME = "FRAME";
var IFRAME = "IFRAME";
var LEGEND = "LEGEND";
var MENU = "MENU";
var IFRAME = "IFRAME";
var STYLE = "STYLE";
var LI = "LI"
var SUB = "SUB";
var SUP = "SUP";
var SPAN = "SPAN";
var BDO = "BDO";
var TT = "TT";
var I = "I";
var B = "B";
var U = "U";
var S = "S";
var STRIKE = "STRIKE";
var BIG = "BIG";
var SMALL = "SMALL";
var EM = "EM";
var STRONG = "STRONG";
var DFN = "DFN";
var CODE = "CODE";
var SAMP = "SAMP";
var KBD = "KBD";
var VAR = "VAR";
var CITE = "CITE";
var ACRONYM = "ACRONYM";
var ABBR = "ABBR";
var DT = "DT";
var DD = "DD";
var NOFRAMES = "NOFRAMES";
var NOSCRIPT = "NOSCRIPT";
var ADDRESS = "ADDRESS";
var CENTER = "CENTER";
var TD = "TD";
var TBODY = "TBODY";
var TFOOT = "TFOOT";
var THEAD = "THEAD";
var TR = "TR";
var TH = "TH";

//
// Base URL's for tests depending on specific URL's  
//
// BASE1 - The URI returned by the "referrer" attribute (Document interface).
// BASE2 - The string returned by the "domain" attribute (Document interface).
// BASE3 - The URI returned by the "URL" attribute (Document interface).
// BASE4 - The URI returned by the "codebase" attribute (Applet interface). 
// BASE5 - ThE URI returned by the "codeBase" attribute (Object interface). 
// BASE6 - The URI returned by the "href" attribute (Base interface).
//

 var BASE1 = "HTTP://XW2K.SDCT.ITL.NIST.GOV/BRADY/DOM/XMLTEST/"; 
 var BASE2 = "SDCT.ITL.NIST.GOV";
 var BASE3 = "HTTP://XW2K.SDCT.ITL.NIST.GOV/BRADY/DOM/FILES/TEST.HTML";
 var BASE4 = "HTTP://XW2K.SDCT.ITL.NIST.GOV/BRADY/DOM/FILES/";
 var BASE5 = "HTTP://XW2K.SDCT.ITL.NIST.GOV/BRADY/DOM/";
 var BASE6 = "HTTP://XW2K.SDCT.ITL.NIST.GOV/BRADY/DOM/";

//
// Exception codes
//

 var EOL = String.fromCharCode(13,10);
 var INDEX_SIZE_ERR = "The offset must be 0 or a positive number " +
		      "that is not greater than the number of " +
                      "characters in the data." + EOL;
 var DOMSTRING_SIZE_ERR = " ";
 var HIERARCHY_REQUEST1_ERR = "This operation can not be performed with a " +
                              "Node of type ATTRIBUTE." + EOL;
 var HIERARCHY_REQUEST2_ERR = "Inserting a Node or its ancestor under itself " +
                              "is not allowed." + EOL;
 var WRONG_DOCUMENT_ERR = " ";
 var INVALID_CHARACTER_ERR  = "A name contained an invalid character." + EOL;
 var NOT_DATA_ALLOWED_ERR = " ";
 var NO_MODIFICATION_ALLOWED_ERR = "Attempt to modify a read-only node." + EOL;
 var NOT_FOUND1_ERR = "Invalid procedure call or argument";
 var NOT_FOUND2_ERR = "Insert position Node must be a Child of the Node to " +
                      "insert under." + EOL;
 var NOT_FOUND3_ERR = "The parameter Node is not a child of this Node." + EOL;
 var NOT_SUPPORTED_ERR = " ";
 var INUSE_ATTRIBUTE_ERR = "Attributes must be removed before adding them " +
                           "to a different node." + EOL;

//
// nodeType values
//

var ELEMENT_NODE = 1;
var ATTRIBUTE_NODE = 2;
var TEXT_NODE = 3;
var CDATA_SECTION_NODE = 4;
var ENTITY_REFERENCE_NODE = 5;
var ENTITY_NODE = 6;
var PROCESSING_INSTRUCTION_NODE = 7;
var COMMENT_NODE = 8;
var DOCUMENT_NODE = 9;
var DOCUMENT_TYPE_NODE = 10;
var DOCUMENT_FRAGMENT_NODE = 11;
var NOTATION_NODE = 12;

function set_description(description) { this.description = description; }
function set_expected (expected) { this.expected = expected;}
function set_actual (actual) { this.actual = actual; }

function set_toString()
{
  document.write("name = "+this.name+"
"); document.write("Description = "+this.description+"
"); document.write("Expected Value = "+this.expected+"
"); document.write("Actual Value = "+this.actual+"
"); } function testResults(name) { // get the name of the calling function this.name = name; // // define some methods // this.description = set_description; this.expected = set_expected; this.actual = set_actual; // this.toString = set_toString; } function getDOMDocument() { return masterDoc; } function getHTMLDocument() { return testdoc; } function getFramesetDocument() { return framesetdoc; } function getDOMHTMLDocument() { return HTMLDoc; } function getnoDTDXMLDocument() { return noDTDXMLObject; } function getOriginalDOMDocument() { return originalDoc; } function getOtherDOMDocument() { return otherDoc; } function createNode(type,data) { var node = ""; switch(type) { case ATTRIBUTE_NODE: node = getDOMDocument().createAttribute(data); break; case CDATA_SECTION_NODE: node = getDOMDocument().createCDATASection(data); break; case ELEMENT_NODE: node = getDOMDocument().createElement(data); break; case ENTITY_REFERENCE_NODE: node = getDOMDocument().createEntityReference(data); break; case TEXT_NODE: node = getDOMDocument().createTextNode(data); break; default: break; } return node; } function resetData() { getDOMDocument().removeChild(getDOMDocument().documentElement); getDOMDocument().appendChild(getOriginalDOMDocument().documentElement.cloneNode(true)); } function resetHTMLData() { newdoc = new originalHTMLDocument(HTML); testdoc = newdoc.cloneNode(true); } function getRootNode() { return getDOMDocument().documentElement; } function HTMLNodeObject(args) { var tagName = arguments[0]; var one = 1; var two = 2; var nodeList=""; if (tagName==FRAMESET || tagName==FRAME) nodeList = framesetdoc.getElementsByTagName(tagName); else nodeList = testdoc.getElementsByTagName(tagName); if (arguments.length == one) this.node = nodeList.item(FIRST); else if (arguments.length == two) this.node = nodeList.item(arguments[SECOND]); } function originalHTMLDocument(arg) { var tagName = arg; var one = 1; var two = 2; nodeList = originaldoc.getElementsByTagName(tagName); this.node = nodeList.item(FIRST).cloneNode(true); return this.node; } function getTableCaption(table) { return table.caption; } function getTableHead(table) { return table.tHead; } function getTableFoot(table) { return table.tFoot; } function nodeObject(args) { var tagName = employee; var one = 1; var two = 2; var nodeList = ""; nodeList = getRootNode().getElementsByTagName(tagName); parentNode = nodeList.item(arguments[FIRST]); if (arguments.length == one) this.node = parentNode; else if (arguments.length == two) this.node = getElement(getSubNodes(parentNode),arguments[SECOND]); this.attributes = getAttributes(this.node); this.subNodes = getSubNodes(this.node); } function getSubNodes(node) { return node.getElementsByTagName("*"); } function getElement(subNodes,elementAt) { return subNodes[elementAt]; } function getAttributes(node) { return node.attributes; } function getDocType() { return getDOMDocument().childNodes(SECOND); } function getEntity(name) { return getDocType().entities.getNamedItem(name); } function getNotation(name) { return getDocType().notations.getNamedItem(name); }