<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- evaluator.html"
From "JavaScript Bible" 6th Edition by Danny Goodman
http://www.dannyg.com
Copyright 2007 Danny Goodman. All Rights Reserved.
-->
<html id="myHTML">
<head id="myHead">
<title id="myTitle">The Evaluator</title>
<style id="myStyle" disabled="disabled" type="text/css">
#myP {font-weight:bold}
em {color:green}
</style>
<script id="myScript" type="text/javascript">
// global variables to play with
var a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;
var hasNNSecurity = (typeof netscape != "undefined");
var rng; // W3C DOM Range
function init() {
if (document.createRange) {
rng = document.createRange();
rng.setStartBefore(document.body);
rng.setEndAfter(document.body);
}
}
function doIt(form){
if (form.security.checked && hasNNSecurity) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead")
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite")
}
form.output.value = eval(form.input.value)
if (form.security.checked && hasNNSecurity) {
netscape.security.PrivilegeManager.revertPrivilege("UniversalBrowserRead")
netscape.security.PrivilegeManager.revertPrivilege("UniversalBrowserWrite")
netscape.security.PrivilegeManager.revertPrivilege("UniversalXPConnect");
}
if (document.compatMode) {
status = "Mode:" + document.compatMode;
}
}
function sortText(a, b) {
return ((a.name < b.name) ? -1 : 1)
}
function showProps(form) {
var objName = form.inspector.value
var obj = eval(objName)
var msg1 = "PROPERTIES\n", msg2 = "\nMETHODS\n"
var delim = (form.tabbed.checked) ? String.fromCharCode(9) : "="
var data = new Array()
if (form.security.checked && hasNNSecurity) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead")
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite")
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
for (var i in obj) {
status = i
// work around bug in IE
switch (i) {
case "domain" :
data[data.length] = {name:(objName + "." + i), value:"unknown", type:"unknown"}
break
case "parentRule" :
data[data.length] = {name:(objName + "." + i), value:"unknown", type:"unknown"}
break
default :
data[data.length] = {name:(objName + "." + i), value:obj[i], type:typeof obj[i]}
}
}
data.sort(sortText)
for (var j=0; j < data.length; j++) {
if (data[j].type == "function") {
if (form.tabbed.checked) {
msg2 += data[j].name + delim + data[j].name + "()\n"
} else {
msg2 += data[j].name + "=function " + data[j].name + "()\n"
}
} else {
if (form.tabbed.checked) {
msg1 += data[j].name + delim + data[j].value + delim + " |" + data[j].type +"|\n"
} else {
msg1 += data[j].name + "=" + data[j].value + " |" + data[j].type +"|\n"
}
}
}
if (form.security.checked && hasNNSecurity) {
netscape.security.PrivilegeManager.revertPrivilege("UniversalBrowserRead")
netscape.security.PrivilegeManager.revertPrivilege("UniversalBrowserWrite")
netscape.security.PrivilegeManager.revertPrivilege("UniversalXPConnect");
}
form.output.value = msg1 + msg2
if (typeof form.output.scrollTop != "undefined") {
form.output.scrollTop = 0;
}
}
function evalIfReady(form, evt) {
evt = (evt) ? evt : (window.event) ? window.event : "";
if (evt) {
var theKey = (evt.which) ? evt.which : evt.keyCode;
if (theKey == 13) {
doIt(form);
return false;
}
}
return true;
}
function showPropsIfReady(form, evt) {
evt = (evt) ? evt : (window.event) ? window.event : "";
if (evt) {
var theKey = (evt.which) ? evt.which : evt.keyCode;
if (theKey == 13) {
showProps(form);
return false;
}
}
return true;
}
function walkChildNodes(objRef, n) {
var obj
if (objRef) {
if (typeof objRef == "string") {
obj = document.getElementById(objRef)
} else {
obj = objRef
}
} else {
obj = (document.body.parentElement) ?
document.body.parentElement : document.body.parentNode
}
var output = ""
var indent = ""
var i, group, txt
if (n) {
for (i = 0; i < n; i++) {
indent += "+---"
}
} else {
n = 0
output += "Child Nodes of <" + obj.tagName
output += ">\n=====================\n"
}
group = obj.childNodes
for (i = 0; i < group.length; i++) {
output += indent
switch (group[i].nodeType) {
case 1:
output += "<" + group[i].tagName
output += (group[i].id) ? " ID=" + group[i].id : ""
output += (group[i].name) ? " NAME=" + group[i].name : ""
output += ">\n"
break
case 3:
txt = group[i].nodeValue.substr(0,15)
output += "[Text:\"" + txt.replace(/[\r\n]/g,"<cr>")
if (group[i].nodeValue.length > 15) {
output += "..."
}
output += "\"]\n"
break
case 8:
output += "[!COMMENT!]\n"
break
default:
output += "[Node Type = " + group[i].nodeType + "]\n"
}
if (group[i].childNodes.length > 0) {
output += walkChildNodes(group[i], n+1)
}
}
return output
}
function walkChildren(objRef, n) {
var obj
if (objRef) {
if (typeof objRef == "string") {
obj = document.getElementById(objRef)
} else {
obj = objRef
}
} else {
obj = document.body.parentElement
}
var output = ""
var indent = ""
var i, group
if (n) {
for (i = 0; i < n; i++) {
indent += "+---"
}
} else {
n = 0
output += "Children of <" + obj.tagName
output += ">\n=====================\n"
}
group = obj.children
for (i = 0; i < group.length; i++) {
output += indent + "<" + group[i].tagName
output += (group[i].id) ? " ID=" + group[i].id : ""
output += (group[i].name) ? " NAME=" + group[i].name : ""
output += ">\n"
if (group[i].children.length > 0) {
output += walkChildren(group[i], n+1)
}
}
return output
}
</script>
</head>
<body bgcolor="white" οnlοad="init()">
<form οnsubmit="return false">
<fieldset id="myFIELDSET">
<legend id="myLEGEND">The Evaluator</legend>
<p>Enter an expression to evaluate (<input type="checkbox"
name="security" />Use NN Code Base Security):<br />
<input type="text" name="input" size="80" οnkeypress=
"return evalIfReady(this.form, event)" /> <input type=
"button" value="Evaluate" οnclick="doIt(this.form)" /></p>
<p>Results: (<input type="checkbox" name="tabbed" checked>Use tab delimiters)<br />
<textarea name="output" cols="80" rows="6" wrap="virtual"></textarea>
</p>
<p>Enter a reference to an object:<br />
<input type="text" name="inspector" size="80" hidefocus="hidefocus"
οnkeypress="return showPropsIfReady(this.form, event)" />
<input type="button" value="List Properties" οnclick=
"showProps(this.form)" /></p>
</fieldset>
</form><!--
BEGIN SAMPLE HTML ELEMENTS
-->
<p id="myP">Now is the time for <em id="myEM">all</em> good men
to come to the aid of their country.</p>
<table id="myTable" cellpadding="10" border="2">
<caption id="myCap">
This is a table caption.
</caption>
<colgroup id="myCol" span="3"></colgroup>
<thead id="myTHEAD">
<tr>
<th><font id="myFont" size="4">Quantity</font></th>
<th id="myTH">Description</th>
<th>Price</th>
</tr>
</thead>
<tbody bgcolor="salmon" id="myTBODY">
<tr align="center">
<td width="200">4</td>
<td id="myTD" style="filter:blur(add=true, direction=225)">
Primary Widget</td>
<td>$14.96</td>
</tr>
<tr id="myTR">
<td>10</td>
<td style="filter:blur(add=true, direction=225)">Secondary
Widget</td>
<td id="myTD2">$114.96</td>
</tr>
</tbody>
</table>
<form name="myForm2" id="myForm2">
<select id="mySelect" name="aSelect" multiple="multiple" size="4">
<option value="Larry Fine">
Larry
</option>
<option>
Moe
</option>
<option>
Curly
</option>
</select>
<p><input type="checkbox" id="myCheckbox" />Sample Checkbox</p>
<fieldset id="form2set1">
<legend id="form1set1legend">Choose the Desired
Performance</legend> <input type="radio" name="speed" id=
"speed1" /><label for="speed1">Fastest (lower
quality)</label><br />
<input type="radio" name="speed" id="speed2" /><label for=
"speed2">Slower (best quality)</label>
</fieldset>
</form><br />
<div id="myDIV" style=
"position:absolute; top:350; left:550; width:60px; border:5px ridge green; padding:5px; margin:5px">
This is a positioned element with a whole bunch of text in it.
</div>
<p><img name="myIMG" src="desk1.gif" id="myIMG" alt="" /></p>
</body>
</html>
<!-- evaluator.html"
From "JavaScript Bible" 6th Edition by Danny Goodman
http://www.dannyg.com
Copyright 2007 Danny Goodman. All Rights Reserved.
-->
<html id="myHTML">
<head id="myHead">
<title id="myTitle">The Evaluator</title>
<style id="myStyle" disabled="disabled" type="text/css">
#myP {font-weight:bold}
em {color:green}
</style>
<script id="myScript" type="text/javascript">
// global variables to play with
var a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;
var hasNNSecurity = (typeof netscape != "undefined");
var rng; // W3C DOM Range
function init() {
if (document.createRange) {
rng = document.createRange();
rng.setStartBefore(document.body);
rng.setEndAfter(document.body);
}
}
function doIt(form){
if (form.security.checked && hasNNSecurity) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead")
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite")
}
form.output.value = eval(form.input.value)
if (form.security.checked && hasNNSecurity) {
netscape.security.PrivilegeManager.revertPrivilege("UniversalBrowserRead")
netscape.security.PrivilegeManager.revertPrivilege("UniversalBrowserWrite")
netscape.security.PrivilegeManager.revertPrivilege("UniversalXPConnect");
}
if (document.compatMode) {
status = "Mode:" + document.compatMode;
}
}
function sortText(a, b) {
return ((a.name < b.name) ? -1 : 1)
}
function showProps(form) {
var objName = form.inspector.value
var obj = eval(objName)
var msg1 = "PROPERTIES\n", msg2 = "\nMETHODS\n"
var delim = (form.tabbed.checked) ? String.fromCharCode(9) : "="
var data = new Array()
if (form.security.checked && hasNNSecurity) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead")
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite")
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
for (var i in obj) {
status = i
// work around bug in IE
switch (i) {
case "domain" :
data[data.length] = {name:(objName + "." + i), value:"unknown", type:"unknown"}
break
case "parentRule" :
data[data.length] = {name:(objName + "." + i), value:"unknown", type:"unknown"}
break
default :
data[data.length] = {name:(objName + "." + i), value:obj[i], type:typeof obj[i]}
}
}
data.sort(sortText)
for (var j=0; j < data.length; j++) {
if (data[j].type == "function") {
if (form.tabbed.checked) {
msg2 += data[j].name + delim + data[j].name + "()\n"
} else {
msg2 += data[j].name + "=function " + data[j].name + "()\n"
}
} else {
if (form.tabbed.checked) {
msg1 += data[j].name + delim + data[j].value + delim + " |" + data[j].type +"|\n"
} else {
msg1 += data[j].name + "=" + data[j].value + " |" + data[j].type +"|\n"
}
}
}
if (form.security.checked && hasNNSecurity) {
netscape.security.PrivilegeManager.revertPrivilege("UniversalBrowserRead")
netscape.security.PrivilegeManager.revertPrivilege("UniversalBrowserWrite")
netscape.security.PrivilegeManager.revertPrivilege("UniversalXPConnect");
}
form.output.value = msg1 + msg2
if (typeof form.output.scrollTop != "undefined") {
form.output.scrollTop = 0;
}
}
function evalIfReady(form, evt) {
evt = (evt) ? evt : (window.event) ? window.event : "";
if (evt) {
var theKey = (evt.which) ? evt.which : evt.keyCode;
if (theKey == 13) {
doIt(form);
return false;
}
}
return true;
}
function showPropsIfReady(form, evt) {
evt = (evt) ? evt : (window.event) ? window.event : "";
if (evt) {
var theKey = (evt.which) ? evt.which : evt.keyCode;
if (theKey == 13) {
showProps(form);
return false;
}
}
return true;
}
function walkChildNodes(objRef, n) {
var obj
if (objRef) {
if (typeof objRef == "string") {
obj = document.getElementById(objRef)
} else {
obj = objRef
}
} else {
obj = (document.body.parentElement) ?
document.body.parentElement : document.body.parentNode
}
var output = ""
var indent = ""
var i, group, txt
if (n) {
for (i = 0; i < n; i++) {
indent += "+---"
}
} else {
n = 0
output += "Child Nodes of <" + obj.tagName
output += ">\n=====================\n"
}
group = obj.childNodes
for (i = 0; i < group.length; i++) {
output += indent
switch (group[i].nodeType) {
case 1:
output += "<" + group[i].tagName
output += (group[i].id) ? " ID=" + group[i].id : ""
output += (group[i].name) ? " NAME=" + group[i].name : ""
output += ">\n"
break
case 3:
txt = group[i].nodeValue.substr(0,15)
output += "[Text:\"" + txt.replace(/[\r\n]/g,"<cr>")
if (group[i].nodeValue.length > 15) {
output += "..."
}
output += "\"]\n"
break
case 8:
output += "[!COMMENT!]\n"
break
default:
output += "[Node Type = " + group[i].nodeType + "]\n"
}
if (group[i].childNodes.length > 0) {
output += walkChildNodes(group[i], n+1)
}
}
return output
}
function walkChildren(objRef, n) {
var obj
if (objRef) {
if (typeof objRef == "string") {
obj = document.getElementById(objRef)
} else {
obj = objRef
}
} else {
obj = document.body.parentElement
}
var output = ""
var indent = ""
var i, group
if (n) {
for (i = 0; i < n; i++) {
indent += "+---"
}
} else {
n = 0
output += "Children of <" + obj.tagName
output += ">\n=====================\n"
}
group = obj.children
for (i = 0; i < group.length; i++) {
output += indent + "<" + group[i].tagName
output += (group[i].id) ? " ID=" + group[i].id : ""
output += (group[i].name) ? " NAME=" + group[i].name : ""
output += ">\n"
if (group[i].children.length > 0) {
output += walkChildren(group[i], n+1)
}
}
return output
}
</script>
</head>
<body bgcolor="white" οnlοad="init()">
<form οnsubmit="return false">
<fieldset id="myFIELDSET">
<legend id="myLEGEND">The Evaluator</legend>
<p>Enter an expression to evaluate (<input type="checkbox"
name="security" />Use NN Code Base Security):<br />
<input type="text" name="input" size="80" οnkeypress=
"return evalIfReady(this.form, event)" /> <input type=
"button" value="Evaluate" οnclick="doIt(this.form)" /></p>
<p>Results: (<input type="checkbox" name="tabbed" checked>Use tab delimiters)<br />
<textarea name="output" cols="80" rows="6" wrap="virtual"></textarea>
</p>
<p>Enter a reference to an object:<br />
<input type="text" name="inspector" size="80" hidefocus="hidefocus"
οnkeypress="return showPropsIfReady(this.form, event)" />
<input type="button" value="List Properties" οnclick=
"showProps(this.form)" /></p>
</fieldset>
</form><!--
BEGIN SAMPLE HTML ELEMENTS
-->
<p id="myP">Now is the time for <em id="myEM">all</em> good men
to come to the aid of their country.</p>
<table id="myTable" cellpadding="10" border="2">
<caption id="myCap">
This is a table caption.
</caption>
<colgroup id="myCol" span="3"></colgroup>
<thead id="myTHEAD">
<tr>
<th><font id="myFont" size="4">Quantity</font></th>
<th id="myTH">Description</th>
<th>Price</th>
</tr>
</thead>
<tbody bgcolor="salmon" id="myTBODY">
<tr align="center">
<td width="200">4</td>
<td id="myTD" style="filter:blur(add=true, direction=225)">
Primary Widget</td>
<td>$14.96</td>
</tr>
<tr id="myTR">
<td>10</td>
<td style="filter:blur(add=true, direction=225)">Secondary
Widget</td>
<td id="myTD2">$114.96</td>
</tr>
</tbody>
</table>
<form name="myForm2" id="myForm2">
<select id="mySelect" name="aSelect" multiple="multiple" size="4">
<option value="Larry Fine">
Larry
</option>
<option>
Moe
</option>
<option>
Curly
</option>
</select>
<p><input type="checkbox" id="myCheckbox" />Sample Checkbox</p>
<fieldset id="form2set1">
<legend id="form1set1legend">Choose the Desired
Performance</legend> <input type="radio" name="speed" id=
"speed1" /><label for="speed1">Fastest (lower
quality)</label><br />
<input type="radio" name="speed" id="speed2" /><label for=
"speed2">Slower (best quality)</label>
</fieldset>
</form><br />
<div id="myDIV" style=
"position:absolute; top:350; left:550; width:60px; border:5px ridge green; padding:5px; margin:5px">
This is a positioned element with a whole bunch of text in it.
</div>
<p><img name="myIMG" src="desk1.gif" id="myIMG" alt="" /></p>
</body>
</html>