
var errInterval;
var sLastErr='';
function SKReportError(sMessage,sUrl,iLine,bDirectReport)
{
 var sLogMsg="JS error occured:\n";
 sLogMsg+="Line:"+iLine+"\n";
 sLogMsg+="Url:"+sUrl+"\n";
 sLogMsg+="JSMsg:"+sMessage+"\n";
 sLogMsg+="Time:"+new Date()+"\n";
 sLogMsg+="Browser:"+navigator.userAgent+"\n\n";
var sJSStack='';
 var oCallerFunction=SKReportError.caller;
bDirectReport=typeof(bDirectReport)=='undefined'?false : bDirectReport;
var MAX_LOOP=10;
 var i=0;
 while(oCallerFunction&&i < MAX_LOOP){
 var re=new RegExp("^function (\\w+)","i");
 if(re.test(oCallerFunction)){
 sJSStack=' -> '+RegExp.$1+sJSStack;
}
 oCallerFunction=oCallerFunction.caller;
 i++;
}
sLogMsg+="JSStack:"+sJSStack+"\n";
var oLogFrm=document.getElementById('sk_err');
 if(oLogFrm==null){
 oLogFrm=document.createElement('IFRAME');
 oLogFrm.style.width=1;
 oLogFrm.style.display='none';
 oLogFrm.style.height=1;
 oLogFrm.src='/jslog.html'+(bDirectReport?"?direct_msg="+escape(sLogMsg): "");
 oLogFrm.id="sk_err";
 document.body.insertBefore(oLogFrm,document.body.firstChild);
}
if(!bDirectReport){
 sLastErr+=sLogMsg;
 window.clearInterval(errInterval);
 errInterval=window.setInterval('LogJSErr()',1000);
}
 return false;
}
function LogJSErr(){
 var oLogFrm=document.getElementById('sk_err');
 if(oLogFrm!=null&&oLogFrm.contentWindow.IS_LOADED){
 window.clearInterval(errInterval);
 oLogFrm.contentWindow.LogError(sLastErr);
 sLastErr='';
}
}
window.onerror=SKReportError;