﻿
function ErrorManager(iReportTargetUrl)
{
    var This = this;

    // Data members
    This.ReportTargetUrl = null;

    // Events
    This.OnError = new EventHandler();

    // Methods
    This.CreateReport = function(iError)
    {
        var report = '';

        report = report + 'error=' + escape(iError) + '&';
        report = report + '';
    }
    
    This.SendReport = function(iError)
    {
        var httpRequest = new HttpRequest(false);
        var report = This.CreateReport(iError);
        httpRequest.PostRequest(This.ReportTargetUrl, report);
    }

    // Initialize
    {
        // error event handling
        if (window.onerror)
            This.OnError.Add(window.onerror);
        window.onerror = This.OnError.Invoke;

        // report target url
        This.ReportTargetUrl = iReportTargetUrl;
    }
}

var Errors = new ErrorManager();
Errors.OnError.Add(function(e, file, line) { Debug.Trace(e.toString() + ' file: ' + file + ' line: ' + line); });
Errors.OnError.Add(function(e) { throw e; });

