/*
	JSAPI
	2002 Florian Hoech
	
	jsapi/errortrap.js
	
	Dependencies:
		NONE
*/

if (window.jsapi) {
	jsapi._include("errortrap")
}

function _openerrorwindow(){
	if (window.opener && !window.opener.closed && (typeof window.opener._openerrorwindow=="function" ||
		typeof window.opener._openerrorwindow=="object")) return window.opener._openerrorwindow()
		// Damn IE 6 SP 1 returns "object" type for _openerrorwindow() function
	var url=(window.jsapi?jsapi.basepath:"")+"errors.htm"
	if (!window._errorwindow || _errorwindow.closed) {
		window._errorwindow=window.open(url,"errorwindow","width=600,height=200,location=0,menubar=0,resizable=1,scrollbars=1,status=0,toolbar=0,directories=0,personalbar=0")
	}
	else {
		if (typeof _errorwindow.focus=="function" || typeof _errorwindow.focus=="object") _errorwindow.focus()
		// Damn IE 6 SP 1 returns "object" type for window.focus() function
		_errorwindow.location.href=url
	}
}

window._errorlog=""
window._handleerrors=window.location.protocol=="file:"||window.location.host=="localhost"
window._disabledefaulterrorhandling=true
window.onerror=function(msg,url,ln){
	if (window.opener && !window.opener.closed && (typeof window.opener.onerror=="function" ||
		typeof window.opener.onerror=="object")) return window.opener.onerror(msg,url,ln)
		// Damn IE 6 SP 1 returns "object" type for onerror() handler
	var d=new Date()
	var dy=d.getFullYear?d.getFullYear():d.getYear()
	var dm=d.getMonth()
	var dd=d.getDate()
	var th=d.getHours()
	var tm=d.getMinutes()
	var ts=d.getSeconds()
	var d2=new Date(dy,dm,dd,th,tm,ts)
	var txt=dy+"-"+(dm+1)+"-"+dd+" "+th+":"+tm+":"+ts+":"+(d.getTime()-d2.getTime())
	for (var i=0; i<arguments.length; i++) txt+="|"+arguments[i]
	txt+="\n"
	_errorlog+=txt
	var srch=("\n"+location.search.substr(1).split("&").join("\n")+"\n")
	var debug=srch.indexOf("\ndebug=1\n")>-1||srch.indexOf("\ndebug=true\n")>-1||srch.indexOf("\ndebug\n")>-1
	if (debug || _handleerrors || (window.jsapi && (jsapi.debug || jsapi.handleerrors || (jsapi.console && !jsapi.console.closed)))) {
		if (window.jsapi) {
			jsapi.errorlog+=txt
			if (debug || jsapi.debug || (jsapi.console && !jsapi.console.closed)) {
				if (
					jsapi.console &&
					jsapi.console.document &&
					jsapi.console.document.forms &&
					jsapi.console.document.forms["debug"] &&
					jsapi.console.document.forms["debug"].elements["output"]
				) {
					if (typeof jsapi.console.focus=="function" || typeof jsapi.console.focus=="object") jsapi.console.focus()
					// Damn IE 6 SP 1 returns "object" type for window.focus() function
					jsapi.console.document.forms["debug"].elements["output"].value+=txt
				}
				else jsapi.openconsole()
				//return true
			}
		}
		if (
			(window._errorwindow && !_errorwindow.closed) ||
			(!window.jsapi && (debug || _handleerrors)) ||
			(window.jsapi && !debug && !jsapi.debug && jsapi.handleerrors)
		) {
			_openerrorwindow()
			//return true
		}
		if (
			document.forms["debug"] &&
			document.forms["debug"].elements["output"]
		) document.forms["debug"].elements["output"].value+=txt
	}
	return _disabledefaulterrorhandling
}
window.onunload=function() {
	if (window._errorwindow && !_errorwindow.closed) _errorwindow.close()
}

// EOF