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 |