var ErrorHandler={messages:[],recur:0,enabled:true,initialize:function(){if(window.console&&!/errorhandler=1/.test(window.location.href)){this.enabled=false;return}window.onerror=function(){ErrorHandler.onWindowError.apply(ErrorHandler,arguments)};var ajreg=function(){if(window.Ajax)Ajax.Responders.register({onException:function(){ErrorHandler.onAjaxError.apply(ErrorHandler,arguments)}})};if(window.Ajax)ajreg();else if(window.addEventListener)window.addEventListener('load',ajreg,null);else if(window.attachEvent)window.attachEvent('onload',ajreg)},clearMessages:function(){this.messages=[]},onWindowError:function(msg,url,line){if(this.recur)return false;this.recur++;var err={type:'runtime',subject:url+':'+line,mess:msg};this.messages.push(err);this.onError(err);this.recur--;return true},onAjaxError:function(req,error){if(!this.enabled)if(window.console){console.error(error);return}else throw(error);this.recur++;var mess;if(typeof(error)=='object'&&error.message&&error.fileName&&error.lineNumber)mess=error.message+' at '+error.fileName+':'+error.lineNumber;else mess=error;var err={type:'comm',subject:req.descString(),mess:mess};this.messages.push(err);this.onError(err);this.recur--},onException:function(e,taint){if(this.recur)return false;if(!this.enabled)if(window.console){console.error(e);return}else throw(e);this.recur++;var err={type:'runtime',taint:taint ? true:false,subject:(e.fileName ? e.fileName+':'+e.lineNumber:'unknown'),mess:(e.message||e.description)};this.messages.push(err);this.onError(err);this.recur--;return true},onError:function(err){if(!this.errorList)this.setupErrorList();var i=this.messages.length;this.errorList.value+=i+') '+this.errToMess(err)+"\n";this.errorList.rows=i>10 ? 10:i;var ekey='err_'+i;this.setFormParm('count',this.messages.length);this.setFormParm(ekey+'_type',err.type);this.setFormParm(ekey+'_taint',err.taint ? 1:0);this.setFormParm(ekey+'_subject',err.subject);this.setFormParm(ekey+'_mess',err.mess)},errToMess:function(err){var mess=(err.type=='runtime' ? 'Runtime':'Cummunication')+' error on '+err.subject+' - '+err.mess;return mess},setFormParm:function(name,val){if(!this.errorForm.elements[name]){var inp=document.createElement('input');inp.type='hidden';inp.name=name;this.errorForm.elements[name]=this.errorForm.appendChild(inp)}this.errorForm.elements[name].value=val},setupErrorList:function(){this.errorForm=document.createElement('form');this.errorForm.method='post';this.errorForm.action='/error_report';this.errorForm.name='errorReport';this.errorForm.style.backgroundColor='#eee';this.errorForm.style.color='#000';this.errorForm.style.border='1px solid #999';this.errorForm.style.padding='4px';this.errorForm.style.margin='10px auto';this.errorForm.style.width='75%';var d=this.errorForm.appendChild(document.createElement('div')).appendChild(document.createTextNode('Error Report:')).parentNode;d.style.fontSize='16px';d.style.lineHeight='18px';d.align='center';this.errorList=this.errorForm.appendChild(document.createElement('textarea'));this.errorList.name='mess';this.errorList.readOnly=true;this.errorList.cols=60;this.errorList.rows=1;this.errorList.value='';this.errorList.style.width='100%';this.errorList.style.border='1px solid #999';this.errorList.style.backgroundColor='#fff';var b=document.createElement('input');b.type='submit';b.value='Submit Error Report';b.style.border='1px solid #999';b.style.cursor='pointer';var d=this.errorForm.appendChild(document.createElement('div')).appendChild(b).parentNode;d.align='center';d.style.padding='2px';this.setFormParm('source','client');this.appendErrorList()},appendErrorList:function(){if(!document.body){setTimeout(ErrorHandler.appendErrorList,100);return}document.body.appendChild(ErrorHandler.errorForm)}};ErrorHandler.initialize();
