YAHOO.widget.LogMsg=function(a){this.msg=this.time=this.category=this.source=this.sourceDetail=null;
if(a&&(a.constructor==Object)){for(var b in a){if(a.hasOwnProperty(b)){this[b]=a[b]
}}}};
YAHOO.widget.LogWriter=function(a){if(!a){YAHOO.log("Could not instantiate LogWriter due to invalid source.","error","LogWriter");
return
}this._source=a
};
YAHOO.widget.LogWriter.prototype.toString=function(){return"LogWriter "+this._sSource
};
YAHOO.widget.LogWriter.prototype.log=function(a,b){YAHOO.widget.Logger.log(a,b,this._source)
};
YAHOO.widget.LogWriter.prototype.getSource=function(){return this._source
};
YAHOO.widget.LogWriter.prototype.setSource=function(a){if(!a){YAHOO.log("Could not set source due to invalid source.","error",this.toString());
return
}else{this._source=a
}};
YAHOO.widget.LogWriter.prototype._source=null;
YAHOO.widget.LogReader=function(c,a){this._sName=YAHOO.widget.LogReader._index;
YAHOO.widget.LogReader._index++;
this._buffer=[];
this._filterCheckboxes={};
this._lastTime=YAHOO.widget.Logger.getStartTime();
if(a&&(a.constructor==Object)){for(var b in a){if(a.hasOwnProperty(b)){this[b]=a[b]
}}}this._initContainerEl(c);
if(!this._elContainer){YAHOO.log("Could not instantiate LogReader due to an invalid container element "+c,"error",this.toString());
return
}this._initHeaderEl();
this._initConsoleEl();
this._initFooterEl();
this._initDragDrop();
this._initCategories();
this._initSources();
YAHOO.widget.Logger.newLogEvent.subscribe(this._onNewLog,this);
YAHOO.widget.Logger.logResetEvent.subscribe(this._onReset,this);
YAHOO.widget.Logger.categoryCreateEvent.subscribe(this._onCategoryCreate,this);
YAHOO.widget.Logger.sourceCreateEvent.subscribe(this._onSourceCreate,this);
this._filterLogs();
YAHOO.log("LogReader initialized",null,this.toString())
};
YAHOO.lang.augmentObject(YAHOO.widget.LogReader,{_index:0,ENTRY_TEMPLATE:(function(){var a=document.createElement("pre");
YAHOO.util.Dom.addClass(a,"yui-log-entry");
return a
})(),VERBOSE_TEMPLATE:"<p><span class='{category}'>{label}</span> {totalTime}ms (+{elapsedTime}) {localTime}:</p><p>{sourceAndDetail}</p><p>{message}</p>",BASIC_TEMPLATE:"<p><span class='{category}'>{label}</span> {totalTime}ms (+{elapsedTime}) {localTime}: {sourceAndDetail}: {message}</p>"});
YAHOO.widget.LogReader.prototype={logReaderEnabled:true,width:null,height:null,top:null,left:null,right:null,bottom:null,fontSize:null,footerEnabled:true,verboseOutput:true,entryFormat:null,newestOnTop:true,outputBuffer:100,thresholdMax:500,thresholdMin:100,isCollapsed:false,isPaused:false,draggable:true,toString:function(){return"LogReader instance"+this._sName
},pause:function(){this.isPaused=true;
this._timeout=null;
this.logReaderEnabled=false;
if(this._btnPause){this._btnPause.value="Resume"
}},resume:function(){this.isPaused=false;
this.logReaderEnabled=true;
this._printBuffer();
if(this._btnPause){this._btnPause.value="Pause"
}},hide:function(){this._elContainer.style.display="none"
},show:function(){this._elContainer.style.display="block"
},collapse:function(){this._elConsole.style.display="none";
if(this._elFt){this._elFt.style.display="none"
}this._btnCollapse.value="Expand";
this.isCollapsed=true
},expand:function(){this._elConsole.style.display="block";
if(this._elFt){this._elFt.style.display="block"
}this._btnCollapse.value="Collapse";
this.isCollapsed=false
},getCheckbox:function(a){return this._filterCheckboxes[a]
},getCategories:function(){return this._categoryFilters
},showCategory:function(d){var b=this._categoryFilters;
if(b.indexOf){if(b.indexOf(d)>-1){return
}}else{for(var a=0;
a<b.length;
a++){if(b[a]===d){return
}}}this._categoryFilters.push(d);
this._filterLogs();
var c=this.getCheckbox(d);
if(c){c.checked=true
}},hideCategory:function(d){var b=this._categoryFilters;
for(var a=0;
a<b.length;
a++){if(d==b[a]){b.splice(a,1);
break
}}this._filterLogs();
var c=this.getCheckbox(d);
if(c){c.checked=false
}},getSources:function(){return this._sourceFilters
},showSource:function(a){var b=this._sourceFilters;
if(b.indexOf){if(b.indexOf(a)>-1){return
}}else{for(var d=0;
d<b.length;
d++){if(a==b[d]){return
}}}b.push(a);
this._filterLogs();
var c=this.getCheckbox(a);
if(c){c.checked=true
}},hideSource:function(a){var b=this._sourceFilters;
for(var d=0;
d<b.length;
d++){if(a==b[d]){b.splice(d,1);
break
}}this._filterLogs();
var c=this.getCheckbox(a);
if(c){c.checked=false
}},clearConsole:function(){this._timeout=null;
this._buffer=[];
this._consoleMsgCount=0;
var a=this._elConsole;
a.innerHTML=""
},setTitle:function(a){this._title.innerHTML=this.html2Text(a)
},getLastTime:function(){return this._lastTime
},formatMsg:function(d){var e=YAHOO.widget.LogReader,a=this.entryFormat||(this.verboseOutput?e.VERBOSE_TEMPLATE:e.BASIC_TEMPLATE),c={category:d.category,label:d.category.substring(0,4).toUpperCase(),sourceAndDetail:d.sourceDetail?d.source+" "+d.sourceDetail:d.source,message:this.html2Text(d.msg||d.message||"")};
if(d.time&&d.time.getTime){c.localTime=d.time.toLocaleTimeString?d.time.toLocaleTimeString():d.time.toString();
c.elapsedTime=d.time.getTime()-this.getLastTime();
c.totalTime=d.time.getTime()-YAHOO.widget.Logger.getStartTime()
}var b=e.ENTRY_TEMPLATE.cloneNode(true);
if(this.verboseOutput){b.className+=" yui-log-verbose"
}b.innerHTML=a.replace(/\{(\w+)\}/g,function(g,f){return(f in c)?c[f]:""
});
return b
},html2Text:function(a){if(a){a+="";
return a.replace(/&/g,"&#38;").replace(/</g,"&#60;").replace(/>/g,"&#62;")
}return""
},_sName:null,_buffer:null,_consoleMsgCount:0,_lastTime:null,_timeout:null,_filterCheckboxes:null,_categoryFilters:null,_sourceFilters:null,_elContainer:null,_elHd:null,_elCollapse:null,_btnCollapse:null,_title:null,_elConsole:null,_elFt:null,_elBtns:null,_elCategoryFilters:null,_elSourceFilters:null,_btnPause:null,_btnClear:null,_initContainerEl:function(b){b=YAHOO.util.Dom.get(b);
if(b&&b.tagName&&(b.tagName.toLowerCase()=="div")){this._elContainer=b;
YAHOO.util.Dom.addClass(this._elContainer,"yui-log")
}else{this._elContainer=document.body.appendChild(document.createElement("div"));
YAHOO.util.Dom.addClass(this._elContainer,"yui-log");
YAHOO.util.Dom.addClass(this._elContainer,"yui-log-container");
var a=this._elContainer.style;
if(this.width){a.width=this.width
}if(this.right){a.right=this.right
}if(this.top){a.top=this.top
}if(this.left){a.left=this.left;
a.right="auto"
}if(this.bottom){a.bottom=this.bottom;
a.top="auto"
}if(this.fontSize){a.fontSize=this.fontSize
}if(navigator.userAgent.toLowerCase().indexOf("opera")!=-1){document.body.style+=""
}}},_initHeaderEl:function(){var a=this;
if(this._elHd){YAHOO.util.Event.purgeElement(this._elHd,true);
this._elHd.innerHTML=""
}this._elHd=this._elContainer.appendChild(document.createElement("div"));
this._elHd.id="yui-log-hd"+this._sName;
this._elHd.className="yui-log-hd";
this._elCollapse=this._elHd.appendChild(document.createElement("div"));
this._elCollapse.className="yui-log-btns";
this._btnCollapse=document.createElement("input");
this._btnCollapse.type="button";
this._btnCollapse.className="yui-log-button";
this._btnCollapse.value="Collapse";
this._btnCollapse=this._elCollapse.appendChild(this._btnCollapse);
YAHOO.util.Event.addListener(a._btnCollapse,"click",a._onClickCollapseBtn,a);
this._title=this._elHd.appendChild(document.createElement("h4"));
this._title.innerHTML="Logger Console"
},_initConsoleEl:function(){if(this._elConsole){YAHOO.util.Event.purgeElement(this._elConsole,true);
this._elConsole.innerHTML=""
}this._elConsole=this._elContainer.appendChild(document.createElement("div"));
this._elConsole.className="yui-log-bd";
if(this.height){this._elConsole.style.height=this.height
}},_initFooterEl:function(){var a=this;
if(this.footerEnabled){if(this._elFt){YAHOO.util.Event.purgeElement(this._elFt,true);
this._elFt.innerHTML=""
}this._elFt=this._elContainer.appendChild(document.createElement("div"));
this._elFt.className="yui-log-ft";
this._elBtns=this._elFt.appendChild(document.createElement("div"));
this._elBtns.className="yui-log-btns";
this._btnPause=document.createElement("input");
this._btnPause.type="button";
this._btnPause.className="yui-log-button";
this._btnPause.value="Pause";
this._btnPause=this._elBtns.appendChild(this._btnPause);
YAHOO.util.Event.addListener(a._btnPause,"click",a._onClickPauseBtn,a);
this._btnClear=document.createElement("input");
this._btnClear.type="button";
this._btnClear.className="yui-log-button";
this._btnClear.value="Clear";
this._btnClear=this._elBtns.appendChild(this._btnClear);
YAHOO.util.Event.addListener(a._btnClear,"click",a._onClickClearBtn,a);
this._elCategoryFilters=this._elFt.appendChild(document.createElement("div"));
this._elCategoryFilters.className="yui-log-categoryfilters";
this._elSourceFilters=this._elFt.appendChild(document.createElement("div"));
this._elSourceFilters.className="yui-log-sourcefilters"
}},_initDragDrop:function(){if(YAHOO.util.DD&&this.draggable&&this._elHd){var a=new YAHOO.util.DD(this._elContainer);
a.setHandleElId(this._elHd.id);
this._elHd.style.cursor="move"
}},_initCategories:function(){this._categoryFilters=[];
var b=YAHOO.widget.Logger.categories;
for(var a=0;
a<b.length;
a++){var c=b[a];
this._categoryFilters.push(c);
if(this._elCategoryFilters){this._createCategoryCheckbox(c)
}}},_initSources:function(){this._sourceFilters=[];
var b=YAHOO.widget.Logger.sources;
for(var c=0;
c<b.length;
c++){var a=b[c];
this._sourceFilters.push(a);
if(this._elSourceFilters){this._createSourceCheckbox(a)
}}},_createCategoryCheckbox:function(f){var a=this;
if(this._elFt){var c=this._elCategoryFilters;
var d=c.appendChild(document.createElement("span"));
d.className="yui-log-filtergrp";
var e=document.createElement("input");
e.id="yui-log-filter-"+f+this._sName;
e.className="yui-log-filter-"+f;
e.type="checkbox";
e.category=f;
e=d.appendChild(e);
e.checked=true;
YAHOO.util.Event.addListener(e,"click",a._onCheckCategory,a);
var b=d.appendChild(document.createElement("label"));
b.htmlFor=e.id;
b.className=f;
b.innerHTML=f;
this._filterCheckboxes[f]=e
}},_createSourceCheckbox:function(a){var d=this;
if(this._elFt){var b=this._elSourceFilters;
var c=b.appendChild(document.createElement("span"));
c.className="yui-log-filtergrp";
var e=document.createElement("input");
e.id="yui-log-filter"+a+this._sName;
e.className="yui-log-filter"+a;
e.type="checkbox";
e.source=a;
e=c.appendChild(e);
e.checked=true;
YAHOO.util.Event.addListener(e,"click",d._onCheckSource,d);
var f=c.appendChild(document.createElement("label"));
f.htmlFor=e.id;
f.className=a;
f.innerHTML=a;
this._filterCheckboxes[a]=e
}},_filterLogs:function(){if(this._elConsole!==null){this.clearConsole();
this._printToConsole(YAHOO.widget.Logger.getStack())
}},_printBuffer:function(){this._timeout=null;
if(this._elConsole!==null){var c=this.thresholdMax;
c=(c&&!isNaN(c))?c:500;
if(this._consoleMsgCount<c){var a=[];
for(var b=0;
b<this._buffer.length;
b++){a[b]=this._buffer[b]
}this._buffer=[];
this._printToConsole(a)
}else{this._filterLogs()
}if(!this.newestOnTop){this._elConsole.scrollTop=this._elConsole.scrollHeight
}}},_printToConsole:function(m){var c=m.length,i=document.createDocumentFragment(),f=[],e=this.thresholdMin,b=this._sourceFilters.length,h=this._categoryFilters.length,k,n,o,p,j;
if(isNaN(e)||(e>this.thresholdMax)){e=0
}k=(c>e)?(c-e):0;
for(n=k;
n<c;
n++){var q=false;
var l=false;
var g=m[n];
var d=g.source;
var a=g.category;
for(o=0;
o<b;
o++){if(d==this._sourceFilters[o]){l=true;
break
}}if(l){for(o=0;
o<h;
o++){if(a==this._categoryFilters[o]){q=true;
break
}}}if(q){p=this.formatMsg(g);
if(typeof p==="string"){f[f.length]=p
}else{i.insertBefore(p,this.newestOnTop?i.firstChild||null:null)
}this._consoleMsgCount++;
this._lastTime=g.time.getTime()
}}if(f.length){f.splice(0,0,this._elConsole.innerHTML);
this._elConsole.innerHTML=this.newestOnTop?f.reverse().join(""):f.join("")
}else{if(i.firstChild){this._elConsole.insertBefore(i,this.newestOnTop?this._elConsole.firstChild||null:null)
}}},_onCategoryCreate:function(b,c,a){var d=c[0];
a._categoryFilters.push(d);
if(a._elFt){a._createCategoryCheckbox(d)
}},_onSourceCreate:function(b,c,a){var d=c[0];
a._sourceFilters.push(d);
if(a._elFt){a._createSourceCheckbox(d)
}},_onCheckCategory:function(a,c){var b=this.category;
if(!this.checked){c.hideCategory(b)
}else{c.showCategory(b)
}},_onCheckSource:function(a,c){var b=this.source;
if(!this.checked){c.hideSource(b)
}else{c.showSource(b)
}},_onClickCollapseBtn:function(a,b){if(!b.isCollapsed){b.collapse()
}else{b.expand()
}},_onClickPauseBtn:function(a,b){if(!b.isPaused){b.pause()
}else{b.resume()
}},_onClickClearBtn:function(a,b){b.clearConsole()
},_onNewLog:function(b,c,a){var d=c[0];
a._buffer.push(d);
if(a.logReaderEnabled===true&&a._timeout===null){a._timeout=setTimeout(function(){a._printBuffer()
},a.outputBuffer)
}},_onReset:function(b,c,a){a._filterLogs()
}};
if(!YAHOO.widget.Logger){YAHOO.widget.Logger={loggerEnabled:true,_browserConsoleEnabled:false,categories:["info","warn","error","time","window"],sources:["global"],_stack:[],maxStackEntries:2500,_startTime:new Date().getTime(),_lastTime:null,_windowErrorsHandled:false,_origOnWindowError:null};
YAHOO.widget.Logger.log=function(c,i,h){if(this.loggerEnabled){if(!i){i="info"
}else{i=i.toLocaleLowerCase();
if(this._isNewCategory(i)){this._createNewCategory(i)
}}var b="global";
var d=null;
if(h){var a=h.indexOf(" ");
if(a>0){b=h.substring(0,a);
d=h.substring(a,h.length)
}else{b=h
}if(this._isNewSource(b)){this._createNewSource(b)
}}var g=new Date();
var e=new YAHOO.widget.LogMsg({msg:c,time:g,category:i,source:b,sourceDetail:d});
var f=this._stack;
var j=this.maxStackEntries;
if(j&&!isNaN(j)&&(f.length>=j)){f.shift()
}f.push(e);
this.newLogEvent.fire(e);
if(this._browserConsoleEnabled){this._printToBrowserConsole(e)
}return true
}else{return false
}};
YAHOO.widget.Logger.reset=function(){this._stack=[];
this._startTime=new Date().getTime();
this.loggerEnabled=true;
this.log("Logger reset");
this.logResetEvent.fire()
};
YAHOO.widget.Logger.getStack=function(){return this._stack
};
YAHOO.widget.Logger.getStartTime=function(){return this._startTime
};
YAHOO.widget.Logger.disableBrowserConsole=function(){YAHOO.log("Logger output to the function console.log() has been disabled.");
this._browserConsoleEnabled=false
};
YAHOO.widget.Logger.enableBrowserConsole=function(){this._browserConsoleEnabled=true;
YAHOO.log("Logger output to the function console.log() has been enabled.")
};
YAHOO.widget.Logger.handleWindowErrors=function(){if(!YAHOO.widget.Logger._windowErrorsHandled){if(window.error){YAHOO.widget.Logger._origOnWindowError=window.onerror
}window.onerror=YAHOO.widget.Logger._onWindowError;
YAHOO.widget.Logger._windowErrorsHandled=true;
YAHOO.log("Logger handling of window.onerror has been enabled.")
}else{YAHOO.log("Logger handling of window.onerror had already been enabled.")
}};
YAHOO.widget.Logger.unhandleWindowErrors=function(){if(YAHOO.widget.Logger._windowErrorsHandled){if(YAHOO.widget.Logger._origOnWindowError){window.onerror=YAHOO.widget.Logger._origOnWindowError;
YAHOO.widget.Logger._origOnWindowError=null
}else{window.onerror=null
}YAHOO.widget.Logger._windowErrorsHandled=false;
YAHOO.log("Logger handling of window.onerror has been disabled.")
}else{YAHOO.log("Logger handling of window.onerror had already been disabled.")
}};
YAHOO.widget.Logger.categoryCreateEvent=new YAHOO.util.CustomEvent("categoryCreate",this,true);
YAHOO.widget.Logger.sourceCreateEvent=new YAHOO.util.CustomEvent("sourceCreate",this,true);
YAHOO.widget.Logger.newLogEvent=new YAHOO.util.CustomEvent("newLog",this,true);
YAHOO.widget.Logger.logResetEvent=new YAHOO.util.CustomEvent("logReset",this,true);
YAHOO.widget.Logger._createNewCategory=function(a){this.categories.push(a);
this.categoryCreateEvent.fire(a)
};
YAHOO.widget.Logger._isNewCategory=function(b){for(var a=0;
a<this.categories.length;
a++){if(b==this.categories[a]){return false
}}return true
};
YAHOO.widget.Logger._createNewSource=function(a){this.sources.push(a);
this.sourceCreateEvent.fire(a)
};
YAHOO.widget.Logger._isNewSource=function(a){if(a){for(var b=0;
b<this.sources.length;
b++){if(a==this.sources[b]){return false
}}return true
}};
YAHOO.widget.Logger._printToBrowserConsole=function(g){if(window.console&&console.log){var e=g.category;
var f=g.category.substring(0,4).toUpperCase();
var c=g.time;
var d;
if(c.toLocaleTimeString){d=c.toLocaleTimeString()
}else{d=c.toString()
}var b=c.getTime();
var h=(YAHOO.widget.Logger._lastTime)?(b-YAHOO.widget.Logger._lastTime):0;
YAHOO.widget.Logger._lastTime=b;
var a=d+" ("+h+"ms): "+g.source+": ";
if(YAHOO.env.ua.webkit){a+=g.msg
}console.log(a,g.msg)
}};
YAHOO.widget.Logger._onWindowError=function(a,c,d){try{YAHOO.widget.Logger.log(a+" ("+c+", line "+d+")","window");
if(YAHOO.widget.Logger._origOnWindowError){YAHOO.widget.Logger._origOnWindowError()
}}catch(b){return false
}};
YAHOO.widget.Logger.log("Logger initialized")
}YAHOO.register("logger",YAHOO.widget.Logger,{version:"2.6.0",build:"1321"});
