//Google Map

//<![CDATA[

var gmarkers = [];

function gMap(container) {
    if (GBrowserIsCompatible()) {
        
        var map = null;
        var geocoder = null;
        var bounds = null;
        var i = 0;
        
        container = (container) ? container : "googlemap";
        
        /*Load Map*/
        this.loadMap = function() {
            map = new GMap2(document.getElementById(container));
            if (document.getElementById(container).offsetHeight > 300) {
                map.addControl(new GLargeMapControl());
                map.enableContinuousZoom();
                map.enableScrollWheelZoom();
            } else {
                map.addControl(new GSmallMapControl());
            }
            map.setCenter(new GLatLng(0, 0), 0);
            bounds = new GLatLngBounds();
            geocoder = new GClientGeocoder();
        }
        
        /*Process Points*/
        this.pointProcess = function(infoContent, zoomlevel, point) {
            var marker = new GMarker(point);
            map.addOverlay(marker);
            bounds.extend(point);
            map.setCenter(bounds.getCenter());
            //map.setCenter(point, zoomlevel);
            if (zoomlevel == null) {
                map.setZoom(map.getBoundsZoomLevel(bounds));
            } else {
                map.setZoom(zoomlevel);
            }
            if (infoContent.length > 0) { /*marker.openInfoWindowHtml(infoContent);*/
                GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(infoContent); });
                gmarkers[i] = marker; i++; return marker;
            }
        }
        
        /*Add Point*/
        this.addPoint = function(infoContent, address, zoomlevel, latcoord, longcoord) {
            infoContent = (infoContent) ? infoContent : "";
            address = (address) ? address : null;
            zoomlevel = (zoomlevel) ? zoomlevel : null;
            latcoord = (latcoord) ? latcoord : null;
            longcoord = (longcoord) ? longcoord : null;

            if (geocoder && address != null) {
                geocoder.getLatLng(address, function(point) {
                    if (!point) { /*alert(address + " not found");*/
                    } else {
                        gMap.pointProcess(infoContent, zoomlevel, point);
                    }
                });
            } else {
                var point = new GLatLng(latcoord, longcoord);
                gMap.pointProcess(infoContent, zoomlevel, point);
            }
        }
        
    }
}
//]]>