 var map, skyLayerManager, menuVersionN = 0;
        var kmlOverlay = null, planetKmlOverlay = null, constOverlay = null;  // Simplify: there will be only one or zero + 1 or 0 planets
        function gotoInit() {
            map.setCenter(new GLatLng(69.35708, 30.9375), 7);
        }
        function loadSky() {
            resizeMap();
            var initLat = 69.35708;
            var initLng = -30.9375;
            var initZoom = 7;
            var initOpacity = { 'Spitzer': 0, 'ChandraXO': 0, 'Galex': 0, 'IRAS': 0, 'WMAP': 0, 'Cassini': 0 };
            var initSlide = 1, lmIndex = -1, loIndex = -1;
            try {
                var urlInfo = document.location.toString().split('#');
                if (urlInfo.length == 2) {
                    var zoomInfo = urlInfo[1].split('&');
                    for (var i = 0; i < zoomInfo.length; i++) {
                        var varInfo = zoomInfo[i].split('=');
                        if (varInfo.length == 2) {
                            switch (varInfo[0]) {
                                case 'latitude': initLat = parseFloat(varInfo[1]); break;
                                case 'longitude': initLng = parseFloat(varInfo[1]); break;
                                case 'zoom': initZoom = parseFloat(varInfo[1]); break;
                                case 'Spitzer': initOpacity['Spitzer'] = parseFloat(varInfo[1]); break;
                                case 'ChandraXO': initOpacity['ChandraXO'] = parseFloat(varInfo[1]); break;
                                case 'Galex': initOpacity['Galex'] = parseFloat(varInfo[1]); break;
                                case 'IRAS': initOpacity['IRAS'] = parseFloat(varInfo[1]); break;
                                case 'WMAP': initOpacity['WMAP'] = parseFloat(varInfo[1]); break;
                                case 'Cassini': initOpacity['Cassini'] = parseFloat(varInfo[1]); break;
                                case 'slide': initSlide = parseInt(varInfo[1]); break;
                                case 'mI': lmIndex = parseInt(varInfo[1]); break;
                                case 'oI': loIndex = parseInt(varInfo[1]); break;
                            }
                        }
                    }
                }
            } catch (ex) {
            }
            if (GBrowserIsCompatible()) {
                map = new GMap2(document.getElementById("map"), { logoPassive: true });
                map.enableContinuousZoom();
                map.setCenter(new GLatLng(initLat, -initLng), initZoom);
                map.addControl(new GMapTypeControl());
                map.addControl(new GLargeMapControl());

                generateSkyMap(map, getSkyTileLayer());

                skyLayerManager = new SkyLayerManager(map);
               
            }
            resizeMap();
            var layers = ['Spitzer', 'ChandraXO', 'Galex', 'IRAS', 'WMAP', 'Cassini'];
            for (var ln = 0; ln < layers.length; ln++) {
                var ln_ = layers[ln];
                if (initOpacity[ln_] > 0 && initOpacity[ln_] <= 100)
                    skyLayerManager.setOpacity(ln_, initOpacity[ln_]);
            }
            if (skyContentMenu[initSlide] === undefined) {
                createSlide(1);
                if (lmIndex > -1 && loIndex > -1) {
                    clickedMenu(lmIndex, loIndex);
                }
            } else {
                createSlide(initSlide);
            }
            resizeMap();
            // Set center after first resize to the wanted center
            map.setCenter(new GLatLng(initLat, -initLng), initZoom);
        }
        function generateSkyUrl() {
            var url = document.location.toString().split('#');
            url = url[0];
            url += '#latitude=' + map.getCenter().lat().toString() + '&';
            url += 'longitude=' + (-map.getCenter().lng().toString()).toString() + '&';
            url += 'zoom=' + map.getZoom().toString() + '&';
            var layers = ['Spitzer', 'ChandraXO', 'Galex', 'IRAS', 'WMAP', 'Cassini'];
            for (var ln = 0; ln < layers.length; ln++) {
                url += layers[ln] + '=' + skyLayerManager.getOverlayOpacity(layers[ln]).toFixed(2) + '&';
            }
            url += 'slide=' + currentMenuSlide + '&mI=' + lastClickedMenu[0] + '&oI=' + lastClickedMenu[1];
            document.location = url;
        }
        function popUpPrint(URL) {
            var print = window.open(URL, 'print', 'toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=1');
        }
        function printPopUp() {
            var zoom = map.getZoom();
            var bounds = map.getBounds();
            var swbound = bounds.getSouthWest();
            var nebound = bounds.getNorthEast();
            var projection = map.getCurrentMapType().getProjection();
            var swPixel = projection.fromLatLngToPixel(swbound, zoom);
            var nePixel = projection.fromLatLngToPixel(nebound, zoom);
            var x0 = Math.floor(swPixel.x / 256);
            var y0 = Math.floor(nePixel.y / 256);
            var x1 = Math.floor(nePixel.x / 256);
            var y1 = Math.floor(swPixel.y / 256);
            popUpPrint('print.html#' + x0 + ',' + x1 + ',' + y0 + ',' + y1 + ',' + zoom);
        }
        function centerKML() {
            var center = map.getCenter();
            document.location = 'http://maps.google.com/maps?output=kml&q=sky:' +
                          center.lat().toString() + ',' + (-center.lng()).toString();
        }
        function checkMapSize() {
            if (map) {
                map.checkResize();
                // Set the center to the current center, this way moveend will fire
                map.setCenter(map.getCenter(), map.getZoom());
            }
        }
        function moveSliderHeader() {
            try {
                var slider = document.getElementById("slider");
                var sliderPos = getPosition(slider);
                var left = parseInt(slider.scrollLeft) + 2;
                var sliderHeader = document.getElementById("sliderHeader");
                sliderHeader.style.left = left.toString() + 'px';
            } catch (ex) {
            }
        }
