$(document).ready(function(){
    Regio._emouse = {
        pageX: 0,
        pageY: 0
    };
    $("#map-inner").mousemove(function(e){
        Regio._emouse.pageX = e.pageX;
        Regio._emouse.pageY = e.pageY;
    });
});
function initMap(callback){
    var that_callback = callback ||
    function(){
    };
    Regio._LoadModule('map', ['map-inner'], function(){
        that_callback();
    });
}

$(function(){
    Regio._emouse = {
        pageX: 0,
        pageY: 0
    };
    
    if (!Regio._Modules) 
        Regio._Modules = {};
    if (!Regio._ModulesLoaded) 
        Regio._ModulesLoaded = {};
    
    Regio._State = new Regio.URLState();
    
    Regio._LoadModule = function(module, params, callback, forceLoad){
        var forceLoad = forceLoad || false;
        var args = arguments;
        if (Regio._Modules[module] && (!Regio._ModulesLoaded[module] || forceLoad)) {
            if (typeof params == "function") {
                Regio._Modules[module].apply(this, []);
                Regio._ModulesLoaded[module] = true;
                params();
            }
            else {
                Regio._Modules[module].apply(this, params ? params : []);
                Regio._ModulesLoaded[module] = true;
                if (callback) 
                    callback();
            };
                    }
    };
    Regio._myOnClick = false;
    
    Regio._addOnClick = function(args){
        
    	if (Regio._myOnClick) {
            Regio._Map.listeners.removeByFunction(Regio._myOnClick);
        }
        Regio._myOnClick = function(params){
            if (params && params.layerId) {
                var objectOnMap = Regio._Map.call('layers.getObjectDescriptor', params.layerId, params.objectId);
                if (objectOnMap && objectOnMap.releaseBehaviour && objectOnMap.releaseBehaviour.content) {
                    Regio._showToolTip(objectOnMap.releaseBehaviour.content, Regio._emouse);
                }
            }
        };
        Regio._Map.addCallback("objects.onClick", Regio._myOnClick);
    };
    
    Regio._preloadToolTip = function(tooltipID){
        var subEventId = "";
        var orig = tooltipID;
        if (tooltipID.indexOf("#") != -1) {
            var i = tooltipID.indexOf("#");
            subEventId = tooltipID.substring(i + 1, tooltipID.length);
            var tooltipID = tooltipID.substring(0, i);
        }
        
        $('<div class="tooltip" rel="' + orig + '"></div>').appendTo($("#divTooltip").parent());
        replaceContainerAsync(env.CMS_tooltipURL, ".tooltip[rel='" + orig + "']", {
            'objectId': tooltipID,
            'subEventId': subEventId
        }, function(){
            $(".tooltip[rel='" + orig + "']").find("p.close a").click(function(){
                $(".tooltip[rel='" + orig + "']").hide();
            });
            hoverImage();
        });
        
    };
    Regio._showToolTip = function(tooltipID, emouse){
        var preset = $(".tooltip[rel='" + tooltipID + "']");
        var tooltipSelector = $("#divTooltip");
        if (preset.length == 1) {
            tooltipSelector = preset;
            preset.show();
        }
        else {
            tooltipSelector.hide().empty();
            var subEventId = "";
            
            if (tooltipID.indexOf("#") != -1) {
                var i = tooltipID.indexOf("#");
                subEventId = tooltipID.substring(i + 1, tooltipID.length);
                var tooltipID = tooltipID.substring(0, i);
            }
            replaceContainerAsync(env.CMS_tooltipURL, "#divTooltip", {
                'objectId': tooltipID,
                'subEventId': subEventId
            }, function(){
                $("#divTooltip").find("p.close a").click(function(){
                    $("#divTooltip").hide();
                    
                });
                hoverImage();
            });
        }
        tooltipSelector.show().css("left", emouse.pageX - tooltipSelector.width() - 11 + "px").css("top", emouse.pageY - 79 + "px");
    };
    
    Regio._Modules['map'] = function(elementId, components){
        var confUrl = 'confUrl=' + env.MAP_confURL + "%3F";
        if (components && components == "loadLayers") {
            confUrl = confUrl + "showLayers=true";
        }
        var map = Regio._Map = new MapCat.Component(elementId, {
            src: env.PARAM_regio.static_files_prefix + '/ft/map.swf',
            vars: confUrl + '&bgcolor=0x738aa0&bgalpha=0&cur_map=0' +
            // add initial coords if defined in state
            (Regio._State && Regio._State('e') && Regio._State('n') ? '&center_e=' + Regio._State('e') + '&center_n=' + Regio._State('n') : '') +
            // add initial zoom if defined in state
            (Regio._State && Regio._State('z') ? '&init_zoom=' + Regio._State('z') : '') +
            // add tile server
            (Regio._State && Regio._State('tsrv') ? '&cur_map=' + Regio._State('tsrv') : ''),
            width: '100%',
            height: '100%',
            id: elementId + "map",
            wmode: 'opaque'
        
        });
        
        map.ready(function(){
			
            map.broadcast('mapcat.addComponent', 'zoomBar', env.PARAM_regio.static_files_prefix+"ft/components/zoomBar/zoomBar.swf"); 
			map.broadcast('mapcat.addComponent', 'mapScale', env.PARAM_regio.static_files_prefix+'ft/components/mapScale/mapScale.swf');
            map.broadcast('measureWin.setVisibility', false);
        });
        
        $('[switchMap]').click(function(){
            if (!$(this).parents('dd').is('.active')) {
                map.broadcastOnReady('tiles.selectServer', $(this).attr('switchMap'));
                $('[switchMap]').parents('dd').removeClass("active");
                $(this).parents('dd').addClass("active");
            }
            return false;
        });
        
        $('[switchMap]').parents('dd').removeClass("active");
        map.ready(function(){
            $('[switchMap=' + map.call("map.getMapState").cur_map + ']').parents('dd').addClass("active");
        });
        
        // fix IE titlebar bug, CL task 104017 
        map.addCallback("map.onClick", function () { if ($.browser.msie) { document.title = unescapeHtml(env.APP_title); }});
    }
    
    
});
