﻿Ext.namespace("TwentyFour.Scripts.Weather");

TwentyFour.Scripts.Weather.MapManager = function()
{
    function displayLoadedMap(imageId,imageObj,navContainerId)
    {
        resetImage(imageId,imageObj.src);
        imageObj = null;
        if (navContainerId)
            $(navContainerId).show();        
    }
    
    function displayAbortedMap(imageId,navContainerId)
    {
        resetImage(imageId,"images/no_map_image.jpg");
        if (navContainerId)
            $(navContainerId).show();          
    }
    
    function resetImage(imageId,src)
    {
        if ($(imageId) != null)
            $(imageId).dom.src = src;
    }
    
    return{       
        displayMap : function(renderLocation, mapName, regionPrefix, navContainerId){ 
        
            // hide navigation (if available - only one map at a time)
            if (navContainerId)
                $(navContainerId).hide();
                
            var imageId = 'loadingMapImage_' + mapName + regionPrefix;
        
            if ($(imageId) != null)
                $(imageId).remove();
            $(renderLocation).update('<div id="divMapImage" class="divMapImage wraptocenter"><span></span><img id="' + imageId + '" src="images/loading_map.gif"/></div>');
        
            var imageObj = new Image();
            imageObj.id = "loadingImage";
            
            imageObj.onload = function(){displayLoadedMap(imageId, imageObj,navContainerId);}
            imageObj.onabort = function(){displayAbortedMap(imageId,navContainerId);};
            imageObj.onerror = function(){displayAbortedMap(imageId,navContainerId);};
            imageObj.src = 'DisplayMap.aspx?mapName=' + mapName + '&regionPrefix=' + regionPrefix + '&t=' + new Date().getTime();
        }
    };
};

