var Oiola = {
    show_map: function(map_pane)
    {
        map_pane.style.display = "block";
        
        if (GBrowserIsCompatible())
        {
            Oiola.map = new GMap2(map_pane);
            Oiola.map.addControl(new GSmallMapControl());
            Oiola.map.addControl(new GMapTypeControl());
            Oiola.geocoder = new GClientGeocoder();
        }
    },

    show_latlng_str: function(latlng_str, info_text)
    {
        var pair = latlng_str.split(',');
        Oiola.show_latlng(new GLatLng(pair[0], pair[1]), info_text);
    },

    show_latlng: function(latlng, info_text)
    {
        Oiola.map.setCenter(latlng, 13);
        if (Oiola.marker)
        {
            Oiola.marker.setLatLng(latlng);
        }
        else
        {
            Oiola.marker = new GMarker(latlng);
            Oiola.map.addOverlay(Oiola.marker);
        }
        if (info_text)
        {
            Oiola.marker.openInfoWindowHtml(info_text);
        }
    },

    show_address: function(address)
    {
        Oiola.geocoder.getLatLng(
            address,
            function(latlng)
            {
                if (latlng)
                    Oiola.show_latlng(latlng, Oiola.map_info_text);
            }
        );
    },

    /* form utilities */

    set_all_cb: function(el, value)
    {
        var form = el;
        while (form.tagName != 'FORM')
            form = form.parentNode;
        for (var i=0; i < form.length; i++)
        {
            var el = form[i];
            if (el.type == 'checkbox')
                el.checked = value;
        }
    },

    onload: function()
    {
        var map_pane = document.getElementById('map-pane');
        if (map_pane)
        {
            setTimeout(function() {
                Oiola.show_map(map_pane);
                if (Oiola.latlng_str)
                    Oiola.show_latlng_str(Oiola.latlng_str);
            }, 300);
        }
    },

    onunload: function()
    {
        if (Oiola.map)
            GUnload();
    }
};
