function coreErrorhandler( sUrl, bIsOffline )
{
	this.bIsOffline		=	bIsOffline;
	this.oHttpObject	=	null;
	this.sUrl			=	sUrl;
}

coreErrorhandler.prototype.triggerError		=	function( sDescription, sPage, iLine, iChar )
{
	var sIssue = new String( 'Javascript error: \n\nDescription: '+ sDescription +'\nPage: '+ sPage +'\nLine: '+ iLine +'\nCharacter: '+ iChar +' \n\nUseragent: '+ navigator.userAgent )
	if( true === this.bIsOffline )
	{
		alert( sIssue );
	}
	else
	{
		if( null === this.oHttpObject )
		{
			this.oHttpObject = this.getHttpObject();
		}
		
		if( false !== this.oHttpObject )
		{
			var sParams = 'code=500&type=jserror&issue=' + encodeURIComponent( sDescription ) + '&page=' + encodeURIComponent( sPage ) + '&line=' + iLine + '&char=' + encodeURIComponent( iChar ) + '&useragent=' + encodeURIComponent(navigator.userAgent);
			
			this.oHttpObject.open( 'POST', this.sUrl, true );
			this.oHttpObject.setRequestHeader("X-Requested-With", "XMLHttpRequest" );
			this.oHttpObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			this.oHttpObject.setRequestHeader("Content-length", sParams.length);
			this.oHttpObject.setRequestHeader("Connection", "close");

			this.oHttpObject.send( sParams ); //&type=jserror&issue=' + encodeURIComponent( sDescription ) ); +'&page='+encodeURIComponent( sPage )+'&line='+iLine+'&char='+encodeURIComponent( iChar )+'&useragent='+encodeURIComponent(navigator.userAgent) ) );
		}
	}
	
	return true;
}

coreErrorhandler.prototype.getHttpObject	=	function()
{
	var oHttpRequest = false;
	
	if ("undefined" !== typeof(window.XMLHttpRequest))
	{
		oHttpRequest = new XMLHttpRequest();

		if ("undefined" !== typeof(oHttpRequest.overrideMimeType))
		{
			oHttpRequest.overrideMimeType('text/xml');
		}
	}
	else if ("undefined" !== typeof(window.ActiveXObject))
	{
		try
		{
			oHttpRequest	=	new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				oHttpRequest	=	new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{
				// Browser does not support Ajax
				return false;
			}
		}
	}
	return oHttpRequest;
}

function jsTriggerError(sDescription, sPage, iLine, iChar)
{
	/*
	 *	Some ignores:
	 */
	if( 
		sDescription.indexOf('Location.toString') !== -1 ||
		sPage.indexOf('sifr.js') !== -1 
	)
	{
		return true
	}
	
	return oErrorhandler.triggerError(sDescription, sPage, iLine, iChar);
}
