// // iWeb - iWebDebug.js // Copyright (c) 2007 Apple Inc. All rights reserved. // var debugTabString=" ";var cEscapeMap={"\n":"\\n","\t":"\\t","\'":"\\''","\b":"\\b","\r":"\\r","\f":"\\f","\\":"\\\\"};var gPendingOutput="";function cEscape(s) {var r="";for(var i=0;i0x7e) {r+=('\\u'+('0000'+cc.toString(16)).slice(-4));} else {r+=ch;}} return r;} function cUnescape(s) {throw Unimplemented;} function convertTextForHTML(s) {s=s.replace(/&/g,"&");s=s.replace(/");s=s.replace(/ /g," ");return s;} function debugPrintDiv() {var debugDiv=document.getElementById("debugDiv");if(debugDiv===null) {if(document.body!==null) {debugDiv=document.createElement("div");if(debugDiv) {var debugDivWrapper=document.createElement("div");debugDivWrapper.id="debugDivWrapper";debugDiv.id="debugDiv";var debugDivClearButton=document.createElement("input");debugDivClearButton.title="Clear Debug Area";debugDivClearButton.value="Clear";debugDivClearButton.type="button";debugDivClearButton.onclick=debugClear;debugDiv.innerHTML=gPendingOutput;debugDivWrapper.appendChild(debugDivClearButton);debugDivWrapper.appendChild(debugDiv) document.body.appendChild(debugDivWrapper);}}} if(debugDiv&&debugDiv.initialized!=true) {debugDiv.style.textAlign="left";debugDiv.style.zOrder=0;debugDiv.style.backgroundColor="#ffff99";debugDiv.style.marginTop="10px";debugDiv.style.opacity="1.0";debugDiv.style.fontFamily="Courier";debugDiv.style.fontSize="10pt";debugDiv.style.border="2px solid red";debugDiv.initialized=true;} return debugDiv;} function debugRelocateDiv() {var debugDiv=document.getElementById("debugDiv");if(debugDiv!=null) {debugDiv.parentNode.removeChild(debugDiv);document.body.appendChild(debugDiv);}} function debugClear() {var debugDiv=document.getElementById("debugDiv");if(debugDiv) {debugDiv.innerHTML="";}} function debugPrintHtml(s) {var debugDiv=debugPrintDiv();if(debugDiv) {debugDiv.innerHTML=debugDiv.innerHTML+s;} else {gPendingOutput+=s+"
";}} var debugPrintUsesNSLog=true;function debugPrint(s) {if(debugPrintUsesNSLog&&window.console&&window.console.NSLog) {window.console.NSLog(s);} else {s=convertTextForHTML(String(s));var debugDiv=debugPrintDiv();if(debugDiv) {debugDiv.innerHTML=debugDiv.innerHTML+s+"
";} else {gPendingOutput+=s+"
";}}} function Undefined() {} Undefined.prototype.toString=function() {return"undefined";} function asObject(v) {if(typeof v=="number") {return Number(v);} if(typeof v=="object") {return v;} if(typeof v=="string") {return v;} if(typeof v=="boolean") {return Boolean(v);} if(typeof v=="undefined") {return new Undefined();} debugPrint("### didn't wrap value of type "+typeof v);return null;} function stringWithFormat() {var result="";for(var i=0;i";} else {if(arg.toString!==undefined) {argString=arg.toString();} else {argString="";}}} var pos=result.indexOf("%s");if(pos>=0) {result=result.substr(0,pos)+argString+result.substr(pos+"%s".length);} else {if(i>0) {result+=" ";} result+=argString;}} return result;} var trace=function(){};function print() {debugPrint(stringWithFormat.apply(this,arguments));} function valueTypeString(value) {if(value===null) {return"null";} var valueType=typeof value;if(valueType=="object") {if(value.constructor==Array) {return"Array";} if(value.constructor==Number) {return"Number";} if(value.constructor==String) {return"String";} return"Object";} return valueType;} function isObject(obj) {return obj&&typeof obj=="object";} function isArray(obj) {return isObject(obj)&&obj.constructor==Array;} function isArrayLike(obj) {return isObject(obj)&&obj.constructor===undefined&&obj.length!==undefined&&obj.item!==undefined;} function debugObjectToString(name,obj) {var resultString="";if(arguments.length==1) {obj=arguments[0];name="";} else {name+=" = ";} if(obj===undefined) {resultString+=stringWithFormat("%s(undefined)\n",name);} else if(obj===null) {resultString+=stringWithFormat("%snull\n",name);} else if((obj.constructor)&&obj.constructor==Function) {resultString+=stringWithFormat("%s(function)\n",name);} else if(isArray(obj)) {resultString+=stringWithFormat("%sarray of %s %s [\n",name,obj.length,obj.length==1?"item":"items");for(var i=0;i/g,"
"+debugTabString);return r;} function indentString(s) {var r=debugTabString+s;r=r.replace(/\n/g,"\n"+debugTabString);return r;} function debugValueToString(value,maxLength,parentStack,attributeStack,refs) {var result="";var valueType=valueTypeString(value);if(arguments.length==1) {maxLength=800;} if(parentStack===undefined) {parentStack=[];} if(attributeStack===undefined) {attributeStack=["this"];} if(refs===undefined) {refs={value:"this"};} if(valueType=="null") {result="null";} else if(valueType=="function") {result="(function)";} else if(valueType=="undefined") {result="(undefined)";} else if(valueType=="Object") {if(parentStack.length>2) {result="...";} else {var first=true;var fieldWidth=0;var attrs=Object.keys(value).sort();attrs.forEach(function(attr) {fieldWidth=Math.max(fieldWidth,attr.length);});var newParentStack=parentStack.concat(value);attrs.forEach(function(attr) {var nextMaxLength=maxLength-result.length-2-(attr.length+2);var valueAttrString;var subValue=value[attr];if(typeof subValue!="function") {if(!first) {result=result+", ";} first=false;if(typeof subValue=="object"&&newParentStack.contains(subValue)) {var index=newParentStack.indexOf(value[attr]);valueAttrString="#cycle("+attributeStack[index]+")";} else if(typeof subValue=="object"&&refs[subValue]!==undefined) {valueAttrString="#ref("+refs[subValue]+")";} else {try {var newAttributePath=attributeStack[attributeStack.length-1]+"."+attr;var newAttributeStack=attributeStack.concat(newAttributePath);refs[value[attr]]=newAttributePath;valueAttrString=debugValueToString(value[attr],nextMaxLength,newParentStack,newAttributeStack,refs);} catch(e) {valueAttrString="#exception";}} var newResult=result+attr+": "+valueAttrString;if(newResult.length>maxLength) {result+="...";} else {result=newResult;}}});} result="{"+result+"}";} else if(valueType=="Array") {var arrayLength=value.length;for(var i=0;imaxLength) {result+="...";break;} result=newResult;} result="["+result+"]";} else if(valueType=="number") {result=value.toString();} else if(valueType=="boolean") {result=value.toString();} else if(valueType=="string") {result='"'+value.toString()+'"';} else {result="(UNKNOWN TYPE: "+valueType+")";} return result;} var gFadeElement;var gFadeDelta=0;var gFadeTimeout=0;function nextFadeStep() {var oldOpacity=(gFadeElement.style.opacity-0);if(((gFadeDelta>0)&&(oldOpacitygFadeTarget))) {var newOpacity=gFadeDelta+oldOpacity;gFadeElement.style.opacity=newOpacity;setTimeout(nextFadeStep,gFadeTimeout);} else {gFadeDelta=0;}} function startFadeIn(element) {if(gFadeDelta===0.0) {setTimeout(nextFadeStep,gFadeTimeout);} gFadeElement=element;gFadeTimeout=20;gFadeTarget=1.0;gFadeDelta=0.1;} function startFadeOut(element) {if(gFadeDelta===0.0) {setTimeout(nextFadeStep,gFadeTimeout);} gFadeElement=element;gFadeTimeout=20;gFadeTarget=0.0;gFadeDelta=-0.1;} function onMouseOverDebugMenu() {if(window.event.shiftKey) {var debugMenu=document.getElementById("debugMenu");debugMenu.style.height="";debugMenu.style.width="";startFadeIn(debugMenu);}} function documentResourceURL(ext) {resourceUrl="";htmlUrl=document.URL;while((htmlUrl.length>0)&&(htmlUrl.slice(-5)!=".html")) {htmlUrl=htmlUrl.slice(0,-1);} if(htmlUrl.length>0) {var components=htmlUrl.split("/");var filename=components.pop();filename=filename.slice(0,-5);var folderName=filename+"_files";components.push(folderName);components.push(filename+ext);resourceUrl=components.join("/");} return resourceUrl;} function showCSS() {cssUrl=documentResourceURL(".css");if(cssUrl.length>0) {window.open(cssUrl,"CSS");}} function showJavaScript() {cssUrl=documentResourceURL(".js");if(cssUrl.length>0) {window.open(cssUrl,"JavaScript");}} function closeDebugMenu() {var debugMenu=document.getElementById("debugMenu");debugMenu.style.height="10px";debugMenu.style.width="10px";startFadeOut(debugMenu);} function dumpEntryData() {var myEntryData="not defined";try{myEntryData=entryData;}catch(e){} debugPrintObject(myEntryData);} function dumpEntryURLs() {var myEntryURLs="not defined";try{myEntryURLs=entryURLs;}catch(e){} debugPrintObject(myEntryURLs);} function jsEvalClick() {try {var text=document.getElementById("jstext").value;debugPrint(text);eval(text);} catch(e) {debugPrint("** Exception **");debugPrintObject(e);}} function scriptNodes() {var result=[];var body=document.body;debugPrint(body.tagName);var html=body.parentNode;debugPrint(html.tagName);var head=getFirstChildElementByTagName(html,"HEAD");for(var i=0;iScripts used on this page:
');for(i=0;i0) {inspectorDiv.removeChild(inspectorDiv.childNodes[0]);} var emptyArray=[];for(var index in gRootVariables) {if(emptyArray[index]===undefined) {var thing=eval(gRootVariables[index]);renderInspectorItem(gRootVariables[index],eval(gRootVariables[index]),inspectorDiv,[]);}}} function evalOnKeyUp(e) {if(e.keyIdentifier=="Enter") {jsEvalClick();}} function iWebDebugPanelInit() {var headerLayer=document.body;var debugMenu=document.createElement("div");debugMenu.id="debugMenu";debugMenu.style.backgroundColor="#ffff99";debugMenu.style.position="fixed";debugMenu.style.left="0px";debugMenu.style.top="0px";debugMenu.style.width="10px";debugMenu.style.height="10px";debugMenu.style.padding="10px";debugMenu.style.opacity="0";debugMenu.style.fontFamily="Lucida Grande";debugMenu.style.fontSize="10px";debugMenu.style.zIndex="100";debugMenu.style.overflow="hidden";debugMenu.style.border="1px solid black";debugMenu.onmouseover=onMouseOverDebugMenu;headerLayer.appendChild(debugMenu);var myCommentsVersion="not defined";try{myCommentsVersion=commentJavascriptVersion;}catch(e){} debugMenu.innerHTML="JavaScript Debug Options"+"
"+"
"+"Show Page CSS
"+"Show Page JavaScript
"+"List all scripts
"+"
"+"Show comment entryData
"+"Show comment summaryData
"+"Clear debug output
"+"
"+"
"+"

"+"Comment js version: "+myCommentsVersion;var textArea=document.getElementById('jstext');if(textArea) {textArea.onkeyup=function(e) {if(e.keyIdentifier=="Enter") {try {var text=document.getElementById("jstext").value;debugPrintHtml(text.bold()+"
");eval(text);} catch(e) {debugPrint("** Exception **");debugPrintObject(e);} if(textArea.setSelectionRange) {textArea.setSelectionRange(0,textArea.value.length);} e.cancelBubble=true;}};} renderInspector();}