﻿
// --------------------------------------------
//  This class is for showing error messages 
//  on the screen.
// --------------------------------------------
var Error = Class.create({ 
    initialize: function() 
    { //resource.lblStage;
        this.WarningIcon = "warning";
        this.CriticalIcon = "stop";
        
        //default url/javascript when clicking on the close button on the error message.
        this.ErrorCloseButtonScript = function() { (new Error()).hideError(); };
        
        this.ErrorMessage = resource.lblGenericError;//"Ett fel uppstod!";
    },

    // --------------------------------------------
    //  This function will check if the session timeout and prints 
    //  the error message that the user must login again.
    //  params: 
    //  useCustomError - if there are a custom error (in json-format) in the response. ( {error: { type: 'error type', description: 'description of the error' }}  )
    // --------------------------------------------
    doErrorResponseCheck: function(requestedUrl, requestParameters, serverResponse, useCustomError) 
    {
        this.userProfileId = CurrentUserProfileId;
            
        if (serverResponse.status == 456) //something got wrong with the session, and it has been ended... 
        {
            this.ErrorCloseButtonScript = function() { document.location='Login.aspx'; };
            
            this.showErrorMessage(resource.lblEndOfSession, this.CriticalIcon, false);
            /*
            new Ajax.Request('ajaxpages/Error.aspx', { 
                method: 'post',
                parameters: { unique: GenerateUniqueValue(), 
                    errorStatus: serverResponse.status, errorStatusText: serverResponse.statusText, errorText: serverResponse.responseText, 
                    profileId: this.userProfileId, requestedUrl: requestedUrl, requestParameters: requestParameters }
            });*/
        }

        else if (serverResponse.status != 200)
        {
            if (useCustomError && serverResponse.responseText.indexOf("error"))
            {
                var errorJSON = serverResponse.responseText.evalJSON();
                
                this.showErrorMessage(this.ErrorMessage + '<span class="font10"><br /><br />' + errorJSON.error.description 
                    + '</span><br /><br /><span class="font8">ErrorCode: ' 
                    + serverResponse.status + ' - ' + serverResponse.statusText + '</span>', 
                    this.WarningIcon, true);
            }
            else
            {
                this.showErrorMessage(this.ErrorMessage + '<br /><span class="font8">ErrorCode: ' 
                    + serverResponse.status + ' - ' + serverResponse.statusText + '</span>', 
                    this.WarningIcon, true);
            }
            new Ajax.Request('ajaxpages/Error.aspx', { 
                method: 'post',
                parameters: { unique: GenerateUniqueValue(), 
                    errorStatus: serverResponse.status, errorStatusText: serverResponse.statusText, errorText: serverResponse.responseText, 
                    profileId: this.userProfileId, requestedUrl: requestedUrl, requestParameters: requestParameters }
            });
        }
    },

    // --------------------------------------------
    //  This function will check if there where any 
    //  errors on the periodical updater.
    // --------------------------------------------
    doPeriodicalErrorResponseCheck: function(serverResponse)
    {
        if (serverResponse.status == 457 || serverResponse.status == 500) //The temp-table has been deleted (does that every night) or server error... 
        {
            this.userProfileId = CurrentUserProfileId;
    
            new Ajax.Request('ajaxpages/Error.aspx', { 
                method: 'post',
                parameters: { unique: GenerateUniqueValue(), 
                    errorStatus: serverResponse.status, errorStatusText: serverResponse.statusText, errorText: serverResponse.responseText, 
                    profileId: this.userProfileId, requestedUrl: 'PeriodicalSearchForUpdates.aspx' },
                    
                onComplete: function()
                {
                    if (serverResponse.status == 457)
                        document.location = "Login.aspx";
                }
            });
        }
    },

    
    // --------------------------------------------
    //  This function updates the error textpanel and shows it 
    //  and the black-background.
    // --------------------------------------------
    showErrorMessage: function(errText, errIcon, showCloseButton)
    {
        $('errorMessage').update(errText);
        $('errorIcon').src = "images/blank.gif";
        $('errorIcon').addClassName('img32x32').addClassName('img' + errIcon.capitalize() + '32');
        
        if (showCloseButton)
        {
            $('errorCloseButtonPanel').show();
            $('errorCloseButton').onclick = this.ErrorCloseButtonScript;
        }
        else
            $('errorCloseButtonPanel').hide();
        
        ShowShadowBackground();
        
        CenterPanel('error', null, true);
    },
    
    // --------------------------------------------
    // --------------------------------------------
    hideError: function()
    {
        $('error').hide();
        HideShadowBackground();
    }
});


