﻿// JScript File



            var ERROR_CODE_UNHANDLED = 1;

            var ERROR_CODE_BASE = 1000;
            var ERROR_CODE_WEB_SERVICE = (ERROR_CODE_BASE + 1);
            var ERROR_CODE_REGULAR = (ERROR_CODE_BASE + 2);
            var ERROR_CODE_USER_DEFINED = (ERROR_CODE_BASE + 3);
            var ERROR_CODE_UPDATE_PANEL = (ERROR_CODE_BASE + 4);

            Sys.Application.add_load(applicationLoad)

            function applicationLoad(sender, args)
            {
                var mgr = Ajax.Logging.ExceptionManager.getInstance();

                //mgr.addListener(new Ajax.Logging.SysDebugTraceListener());
                //mgr.addListener(new Ajax.Logging.WebServiceTraceListener());
                //mgr.addListener(new Ajax.Logging.DivTraceListener('<br/>', 'divException'));
                mgr.addListener(new Ajax.Logging.AlertTraceListener());
            }

            window.onerror = function(message, url, lineNumber)
            {
                //Since our framework only understand exception we have to convert it
                var e = Error.create(message, {description:message, name:'UnhandledError', lineNumber:lineNumber, url:url});
                Ajax.Logging.ExceptionManager.getInstance().publishException(ERROR_CODE_UNHANDLED, e);

                return true;
            }


            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest);

            function endRequest(sender, args)
            {
                var e = args.get_error();

                if (e != null)
                {
                    Ajax.Logging.ExceptionManager.getInstance().publishException(ERROR_CODE_UPDATE_PANEL, e);
                    args.set_errorHandled(true);
                }
            }

            

            function throwRegularError()
            {
                try
                {
                    //The abc does not exist in the dom tree.
                    document.getElementById('abc').focus();
                }
                catch(e)
                {
                    Ajax.Logging.ExceptionManager.getInstance().publishException(ERROR_CODE_REGULAR, e);
                }
            }

            function throwAjaxError()
            {
                try
                {
                    throw Error.invalidOperation('Cannot invoke this method.');
                }
                catch(e)
                {
                    Ajax.Logging.ExceptionManager.getInstance().publishException(ERROR_CODE_USER_DEFINED, e);
                }
            }

            function throwUnhandledError()
            {
                //Fires the window.onerror event
                arrayDoesNotExists[1000] = 'bla bla';
            }
       