function GoogleMapsInitialise()
{
    $(document).trigger('google_maps_loaded');
}

function GoogleMaps(map_id, points)
{
    var map;

    var bounds = new google.maps.LatLngBounds();

    var omlet_hq = new google.maps.LatLng(52.115520, -1.285830);

    this.drawMap = function()
    {
        map = new google.maps.Map(document.getElementById(map_id));

        map.setCenter(omlet_hq);

        map.setZoom(5);
        
        map.mapTypeControl = false;
        
        map.setMapTypeId(google.maps.MapTypeId.ROADMAP);

        if ((typeof(points) !== 'undefined') && (points.length > 0)) {

            for (var key in points) {

                var html = decodeURIComponent(points[key].html || '');

                var icon = decodeURIComponent(points[key].icon);

                this.addPoint(points[key].lat, points[key].lon, html, icon);
            }
        }

        return true;
    }

    this.addPoint = function(lat, lon, html, icon)
    {
        var point = new google.maps.LatLng(lat, lon);

        var cursor = html.length > 0 ? 'pointer' : 'default';

        var marker_image = new google.maps.MarkerImage(icon);

        var marker = new google.maps.Marker({ 'position' : point, 'map' : map, 'icon' : marker_image, 'cursor' : cursor });

        bounds.extend(point);

        if (html.length > 0) {

            var infowindow = new google.maps.InfoWindow({ 'content' : html });

            google.maps.event.addListener(marker, 'click', function() {
                infowindow.open(map, marker);
            });
        }
    }

    this.setCenter = function(lat, lon)
    {
        map.setCenter(new google.maps.LatLng(lat, lon));
    }

    this.zoomToPoints = function()
    {
        if ((typeof(points) !== 'undefined') && (points.length > 0)) {

            map.setCenter(bounds.getCenter());
        }
    }

    this.setZoom = function(zoom)
    {
        map.setZoom(zoom);
    }

    
}
