(function () {
	TRAVEL.SingleMarkerMap = function (target) {

        var root = target;
        var map;

        var drawMap = function (map, model) {
            var lat = model.lat, lng = model.lng, zoom = model.zoom;
            map.setCenter(new GLatLng(lat, lng), zoom);

            // Create a base icon for all of our markers that specifies the
            // shadow, icon dimensions, etc.
            var baseIcon = {
                image: baseUrl + 'i-wl/map/search-marker.png',
                shadow: baseUrl + 'new-i/s.gif',
                iconSize: new GSize(17, 26),
                shadowSize: new GSize(0, 0),
                iconAnchor: new GPoint(1, 24),
                infoWindowAnchor: new GPoint(13, 3),
                transparent: baseUrl + 'i-wl/map/search-marker-transparent.png',
                imageMap: [3,2, 13,2, 15,4, 15,15, 13,17, 8,17, 1,24, 1,4, 3,2]
            };

            var marker = new GMarker(new GLatLng(lat, lng), {
                // 'title': model.name,
                'icon': new GIcon(baseIcon)
            });
            map.addOverlay(marker);
        };

        
        this.isShown = function() {
            return !!map;
        };

        this.create = function(model) {
            try {
                if (!map) {
                    if (typeof google === "undefined") {
                        TRAVEL.MapLoader.attachObserver('mapLoaded', function () {
                            map = new GMap2(root);
                            map.disableDragging();
                            document.getElementsByTagName("body")[0].onunload = function() { GUnload(); };
                            drawMap(map, model);
                        });
                        TRAVEL.MapLoader.init();
                    }
                } else {
                    drawMap(map, model);
                }
            } catch (exc) {}
        };
    };
})();