function find_us() {
    var map_viewer = new MapViewer();
    return false;
}

var MapViewer = new Class({
    initialize: function() {
        this.is_viewing = true;

        // Creation of HTML elements
        var body = $('soul-body');
        this.overlay = new Element('div', {'id': 'map-overlay'}).inject(body);
        this.overlay.setOpacity(0.7);
        this.core = new Element('div', {'id': 'map-core'}).inject(body);
        this.closer = new Element('a', {'id': 'map-closer', 'href': '#', 'text': 'Close', 'class': 'graphical'}).inject(this.core);
        this.map_top = new Element('div', {'id': 'map-top'}).inject(this.core);
        this.map_content = new Element('div', {'id': 'map-content'}).inject(this.core);
        this.map_bottom = new Element('div', {'id': 'map-bottom'}).inject(this.core);
        this.map_canvas = new Element('div', {'id': 'map-canvas'}).inject(this.map_content);

        // Creation of Google map
        var soul_storage = new GLatLng(40.762, -73.950);
        var warehouse = new GLatLng(40.74855, -73.9555);
        this.map = new GMap2($('map-canvas'));
        this.map.setCenter(soul_storage, 14);
        this.map.setUIToDefault();
        this.map.removeMapType(G_PHYSICAL_MAP);
        this.map.removeMapType(G_HYBRID_MAP);
        this.map.setMapType(G_SATELLITE_MAP);

        // Addition of icons/markers to Google map
        var icon = new GIcon(G_DEFAULT_ICON);
        this.map.addOverlay(new GMarker(soul_storage, icon, true));
        var jersey = new GIcon(G_DEFAULT_ICON);
        jersey.image = '/assets/images/base/map-jersey.png';
        jersey.shadow = null;
        jersey.iconSize = new GSize(375, 61);
        jersey.iconAnchor = new GPoint(0, 0);
        this.map.addOverlay(new GMarker(warehouse, jersey, true));

        // Automatic clean up event
        var auto_clean_event = function() { this.auto_clean(); };
        this.bound_auto_clean_event = auto_clean_event.bind(this);
        window.addEvent('unload', this.bound_auto_clean_event);

        // Destruction
        var destroy_event = function() { this.destroy(); };
        this.bound_destroy_event = destroy_event.bind(this);
        this.closer.addEvent('click', this.bound_destroy_event);
        this.overlay.addEvent('click', this.bound_destroy_event);
    },

    auto_clean: function() {
        if (this.is_viewing) GUnload();
    },

    destroy: function(e) {
        new Event(e).stop();
        this.auto_clean();
        this.is_viewing = false;
        window.removeEvent('unload', this.bound_auto_clean_event);
        this.core.dispose();
        this.overlay.dispose();
    }
});
