var debugWindow=null;function debug(text,reverse){if(debugWindow==null)
return;time="-";if(reverse){$('debug').innerHTML=time+" "+text+"<br>"+$('debug').innerHTML;debugWindow.getContent().scrollTop=0;}
else{$('debug').innerHTML+=time+" "+text+"<br>";debugWindow.getContent().scrollTop=10000;}}
function hideDebug(){if(debugWindow){debugWindow.destroy();debugWindow=null;}}
function showDebug(bShow){if(debugWindow==null){debugWindow=new Window('debug_window',{className:'dialog',width:250,height:100,right:4,bottom:42,zIndex:1000,opacity:1,showEffect:Element.show,resizable:true,title:"Debug"})
debugWindow.getContent().innerHTML="<style>#debug_window .dialog_content {background:#000;}</style> <div id='debug'></div>";date=new Date;date.setMonth(date.getMonth()+3);}
if(typeof bShow=='undefined'||bShow)debugWindow.show()}
function clearDebug(){if(debugWindow==null)
return;$('debug').innerHTML="";}
function $E(data){var el;if('string'==typeof data){el=document.createTextNode(data);}else{el=document.createElement(data.tag);delete(data.tag);if('undefined'!=typeof data.children){if('string'==typeof data.children||'undefined'==typeof data.children.length){el.appendChild($E(data.children));}else{for(var i=0,child=null;'undefined'!=typeof(child=data.children[i]);i++){el.appendChild($E(child));}}
delete(data.children);}
for(attr in data){el[attr]=data[attr];}}
return el;}
var Debug={inspectOutput:function(container,within){within=within||debugWindow.getContent()
if(debugWindow==null)
return;within.appendChild(container)},inspect:function(object){var cont=$E({tag:"div",className:"inspector"})
Debug.inspectObj(object,cont)
debugWindow.getContent().appendChild(cont)},inspectObj:function(object,container){for(prop in object){Debug.inspectOutput(Debug.inspectable(object,prop),container)}},inspectable:function(object,prop){cont=$E({tag:'div',className:'inspectable',children:[prop+" value: "+object[prop]]})
cont.toInspect=object[prop]
Event.observe(cont,'click',Debug.inspectClicked,false)
return cont},inspectClicked:function(e){Debug.inspectContained(Event.element(e))
Event.stop(e)},inspectContained:function(container){if(container.opened){container.parentNode.removeChild(container.opened)
delete(container.opened)}else{sibling=container.parentNode.insertBefore($E({tag:"div",className:"child"}),container.nextSibling)
if(container.toInspect)
Debug.inspectObj(container.toInspect,sibling)
container.opened=sibling}}}
var inspect=Debug.inspect;