| 1 |
/* cbe_debug.js $Revision: 0.11 $ |
| 2 |
* CBE v4.19, Cross-Browser DHTML API from Cross-Browser.com |
| 3 |
* Copyright (c) 2002 Michael Foster (mike@cross-browser.com) |
| 4 |
* Distributed under the terms of the GNU LGPL from gnu.org |
| 5 |
*/ |
| 6 |
var cbeIDE=new Object(), cbeDebugObj=new Object(), cbeRefWin=null, cbeRefWinName='cbeRefWin', cbeDebugWin=null, cbeDebugWinName='cbeDebugWindow', cbeDebugSelected=null, cbeMMSL = false; |
| 7 |
function cbeMouseMoveStatus() { |
| 8 |
if (cbeMMSL) { document.cbe.removeEventListener('mouseMove', cbeMMStatusListener, false); cbeMMSL = false; } |
| 9 |
else { |
| 10 |
if (window.opera) window.defaultStatus=""; |
| 11 |
document.cbe.addEventListener('mouseMove', cbeMMStatusListener, false); |
| 12 |
cbeMMSL = true; |
| 13 |
} |
| 14 |
} |
| 15 |
function cbeMMStatusListener(e) { |
| 16 |
if (e.cbeTarget) window.status = 'MOUSE:' + ' X: ' + e.pageX + ' Y: ' + e.pageY + ' OBJECT:' + ' ID: ' + e.cbeTarget.id + ' P: ' + e.cbeTarget.parentNode.id + ' L: ' + e.cbeTarget.left() + ' T: ' + e.cbeTarget.top() + ' X: ' + e.cbeTarget.pageX() + ' Y: ' + e.cbeTarget.pageY() + ' Z: ' + e.cbeTarget.zIndex() + ' W: ' + e.cbeTarget.width() + ' H: ' + e.cbeTarget.height() + ' B: ' + e.cbeTarget.background(); |
| 17 |
} |
| 18 |
function cbeMUListener(e) { cbeDebugSetSelected(e.cbeTarget.id); } |
| 19 |
function cbeDebugSetSelected(id) { |
| 20 |
if (cbeDebugWin) if (cbeDebugWin.closed) cbeDebugWindow(); |
| 21 |
if (id == window.cbeWindowId) cbeDebugSelected = window.cbe; |
| 22 |
else if (id == window.cbeDocumentId) cbeDebugSelected = document.cbe; |
| 23 |
else cbeDebugSelected = cbeGetElementById(id).cbe; |
| 24 |
if (!cbeDebugSelected) cbeDebugSelected = window.cbe; |
| 25 |
} |
| 26 |
function cbeDebugWindow(sBaseUrl) { |
| 27 |
if (cbeDebugWin) { |
| 28 |
cbeDebugWin.close(); cbeDebugWin = null; document.cbe.removeEventListener('mouseUp', cbeMUListener, false); |
| 29 |
return; |
| 30 |
} |
| 31 |
cbeIDEInit(); |
| 32 |
if (!sBaseUrl) { sBaseUrl = window.cbeBasePath ? cbeBasePath : ""; } |
| 33 |
cbeDebugSetSelected(window.cbeWindowId); |
| 34 |
var features = "width="+cbeIDE.dw+",height="+cbeIDE.dh+",scrollbars=1,resizable=1"; |
| 35 |
if (document.layers) features += ",screenx="+cbeIDE.dx+",screeny="+cbeIDE.dy; |
| 36 |
else features += ",left="+cbeIDE.dx+",top="+cbeIDE.dy; |
| 37 |
window.cbeDebugWin = window.open(sBaseUrl + "cbe_debug.html", cbeDebugWinName, features); |
| 38 |
cbeDebugWin.resizeTo(cbeIDE.dw, cbeIDE.dh); |
| 39 |
cbeDebugWin.moveTo(cbeIDE.dx,cbeIDE.dy); |
| 40 |
document.cbe.addEventListener('mouseUp', cbeMUListener, false); |
| 41 |
cbeDebugObj.cmdLine = ""; |
| 42 |
cbeDebugUpdate(); |
| 43 |
} |
| 44 |
function cbeRefWindow(sBaseUrl) { |
| 45 |
if (window.cbeRefWin) { cbeRefWin.close(); cbeRefWin = null; return; } |
| 46 |
cbeIDEInit(); |
| 47 |
if (!sBaseUrl) { sBaseUrl = window.cbeBasePath ? cbeBasePath : ""; } |
| 48 |
var features = "width="+cbeIDE.rw+",height="+cbeIDE.rh+",scrollbars=1,resizable=1"; |
| 49 |
if (document.layers) features += ",screenx="+cbeIDE.rx+",screeny="+cbeIDE.ry; |
| 50 |
else features += ",left="+cbeIDE.rx+",top="+cbeIDE.ry; |
| 51 |
window.cbeRefWin = window.open(sBaseUrl + "cbe_reference.html", cbeRefWinName, features); |
| 52 |
cbeRefWin.resizeTo(cbeIDE.rw, cbeIDE.rh); |
| 53 |
cbeRefWin.moveTo(cbeIDE.rx, cbeIDE.ry); |
| 54 |
} |
| 55 |
function cbeTileWindows() { cbeIDEInit(); cbeDebugWindow(); if (!cbeDebugWin) {cbeDebugWindow();} window.resizeTo(cbeIDE.aw, cbeIDE.ah); window.moveTo(cbeIDE.ax, cbeIDE.ay); } |
| 56 |
function cbeIDEInit() { |
| 57 |
cbeIDE.dx = 0; cbeIDE.dy = 0; cbeIDE.dw = 200; cbeIDE.dh = screen.availHeight - 10; // Debug Window |
| 58 |
cbeIDE.rh = Math.round(screen.availHeight / 2); cbeIDE.rw = screen.availWidth - cbeIDE.dw; cbeIDE.rx = 0; cbeIDE.ry = cbeIDE.rh - 10; // Reference Window |
| 59 |
cbeIDE.ax = cbeIDE.dw; cbeIDE.ay = 0; cbeIDE.aw = screen.availWidth - cbeIDE.dw - 10; cbeIDE.ah = screen.availHeight - 10; // Application Window |
| 60 |
} |
| 61 |
function cbeDebugUpdate() { |
| 62 |
if (cbeDebugWin) { if (!cbeDebugWin.closed) setTimeout("cbeDebugUpdate()", 750); } |
| 63 |
if (cbeDebugObj.cmdLine.length) { var tmp = cbeDebugObj.cmdLine; cbeDebugObj.cmdLine = ""; eval(tmp); } |
| 64 |
cbeDebugObj.id = cbeDebugSelected.id; |
| 65 |
cbeDebugObj.left = cbeDebugSelected.left(); |
| 66 |
cbeDebugObj.top = cbeDebugSelected.top(); |
| 67 |
cbeDebugObj.zIndex = cbeDebugSelected.zIndex(); |
| 68 |
cbeDebugObj.pageX = cbeDebugSelected.pageX(); |
| 69 |
cbeDebugObj.pageY = cbeDebugSelected.pageY(); |
| 70 |
cbeDebugObj.offsetLeft = cbeDebugSelected.offsetLeft(); |
| 71 |
cbeDebugObj.offsetTop = cbeDebugSelected.offsetTop(); |
| 72 |
cbeDebugObj.scrollLeft = cbeDebugSelected.scrollLeft(); |
| 73 |
cbeDebugObj.scrollTop = cbeDebugSelected.scrollTop(); |
| 74 |
cbeDebugObj.width = cbeDebugSelected.width(); |
| 75 |
cbeDebugObj.height = cbeDebugSelected.height(); |
| 76 |
cbeDebugObj.visibility = cbeDebugSelected.visibility(); |
| 77 |
cbeDebugObj.color = cbeDebugSelected.color(); |
| 78 |
cbeDebugObj.background = cbeDebugSelected.background(); |
| 79 |
cbeDebugObj.childNodes = cbeDebugSelected.childNodes; |
| 80 |
cbeDebugObj.firstChild = cbeDebugSelected.firstChild ? cbeDebugSelected.firstChild.id : null; |
| 81 |
cbeDebugObj.lastChild = cbeDebugSelected.lastChild ? cbeDebugSelected.lastChild.id : null; |
| 82 |
cbeDebugObj.parentNode = cbeDebugSelected.parentNode ? cbeDebugSelected.parentNode.id : null; |
| 83 |
cbeDebugObj.previousSibling = cbeDebugSelected.previousSibling ? cbeDebugSelected.previousSibling.id : null; |
| 84 |
cbeDebugObj.nextSibling = cbeDebugSelected.nextSibling ? cbeDebugSelected.nextSibling.id : null; |
| 85 |
} |
| 86 |
function cbeDebugMsg(sMsg) { if (cbeDebugWin) { if (!cbeDebugWin.closed) { cbeDebugWin.setMsg(sMsg); } } } |
| 87 |
function cbeShowProps(obj, obj_name, showValues) { |
| 88 |
var i = null, win = null, result = "", objType = "", objValue = " "; |
| 89 |
if (!obj) { alert("obj is null"); return; } |
| 90 |
if (!obj_name) { if (obj.nodeName) obj_name = obj.nodeName; else obj_name = "this"; } |
| 91 |
result = "<head><title>Property Viewer</title>\n" +"</head>\n" +"<body bgcolor='#bbbbbb'>\n" +"<form>\n" +"<input type='button' value='Close' onclick='window.close()'>\n" +"</form>\n" +"<h3>" + obj_name + " Properties:</h3>\n" +"<table border='1' bgcolor='#eeeeee'><tr><th>Property</th><th>Type</th><th>Value</th></tr>\n"; |
| 92 |
for (i in obj) { |
| 93 |
objType = typeof(obj[i]); |
| 94 |
if (showValues) { |
| 95 |
if (objType.indexOf('string') != -1 && obj[i] == "") objValue = " "; |
| 96 |
else if (objType.indexOf('object') != -1) objValue = "..."; |
| 97 |
else if (objType.indexOf('function') != -1) objValue = "..."; |
| 98 |
else if (i.indexOf('HTML') != -1) objValue = "..."; |
| 99 |
else if (i.indexOf('erText') != -1) objValue = "..."; |
| 100 |
else if (i.indexOf('domain') != -1) objValue = "..."; |
| 101 |
else {objValue = obj[i];} |
| 102 |
} |
| 103 |
result += "<tr><td>" + obj_name + "." + i + "</td><td>" + objType + "</td><td>" + objValue + "</td></tr>\n"; |
| 104 |
} |
| 105 |
result += "</table><br>" +"<form>\n" +"<input type='button' value='Close' onclick='window.close()'>\n" +"</form>\n" +"</body></html>"; |
| 106 |
var features = "width=600,height=440,scrollbars=1,resizable=1"; |
| 107 |
if (document.layers) features += ",screenX=0,screenY=0"; |
| 108 |
else features += ",left=0,top=0"; |
| 109 |
win = window.open("", "PropertyViewerWindow", features); win.document.write(result); win.document.close(); |
| 110 |
return false; |
| 111 |
} |
| 112 |
function cbeShowParentChain(child) { |
| 113 |
var s = "", parent = child; |
| 114 |
while (parent) { |
| 115 |
s += "id: " |
| 116 |
+ (parent.id || "null") |
| 117 |
+ " tag: " + (parent.tagName || parent.nodeName || "null") |
| 118 |
+ "\n"; |
| 119 |
parent = cbeGetParentElement(parent); |
| 120 |
} |
| 121 |
alert(s); |
| 122 |
} |
| 123 |
var cbeDebugJsLoaded = true; |
| 124 |
// End cbe_debug.js |