var map ;
var gmarkers = [] ;
var markerClusterer = null;

var baseIconV = new GIcon(G_DEFAULT_ICON);
baseIconV.iconSize = new GSize(13, 20);
baseIconV.shadowSize = new GSize(13, 30);
baseIconV.iconAnchor = new GPoint(6, 20);
baseIconV.infoWindowAnchor = new GPoint(6, 1);
//baseIconV.imageMap = [1,1,1,20,13,20,13,1]; 
baseIconV.image = "/wddw.2011/images/red.png" ;
baseIconV.shadow = "/wddw.2011/images/shadow.png" ;

function gmapload( rss, id ) {
	if( GBrowserIsCompatible( ) ) {
		map = new GMap2( document.getElementById( id ), G_MAPMAKER_HYBRID_MAP ) ;
    	map.setCenter( new GLatLng( 20.0, -35.0 ), 2 ) ;
    	map.setMapType( G_MAPMAKER_NORMAL_MAP ) ; // USE MAP MAKER AS DEFAULT
		map.addControl( new GMapTypeControl() ) ;
		map.removeMapType( G_NORMAL_MAP ) ; // NO MORE GOOGLE MAPS...
		map.removeMapType( G_HYBRID_MAP ) ; // NO MORE GOOGLE MAPS...
		map.addMapType(G_MAPMAKER_NORMAL_MAP); // USE MAP MAKER !
		map.addMapType(G_MAPMAKER_HYBRID_MAP);  // USE MAP MAKER !
		var topRight = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(100,10));
		_mPreferMetric = true; 
		var scale = new GLargeMapControl3D();
		map.addControl( scale ) ;
		//map.enableScrollWheelZoom( ) ;
		populateMarkers( rss ) ;
  	}
}
function populateMarkers( rss ) {
	GDownloadUrl( rss, function(data) {
		clearmarkers( ) ;
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName("item");
		var im = 0 ;
		for( var i = 0; i < markers.length; i++ ) {
//			var info = markers[i].getElementsByTagName( "description" )[0].firstChild.nodeValue ;
                var info = "<div class='window_content'><h3><a href='" + $("link",markers[i]).text()+ "'>" + $("title",markers[i]).text() + "</a></h3></div>";

//			var info = markers[i].getElementsByTagName( "description" )[0].textContent ;
			var geo_lat = markers[i].getElementsByTagName( "geo_lat" )[0] ;
			if( geo_lat != null ) {
				var lat = geo_lat.firstChild.nodeValue ;
				var lon = markers[i].getElementsByTagName( "geo_long" )[0].firstChild.nodeValue ;
				var icon = "/wddw.2011/images/red.png" ;
				var geo_icon = markers[i].getElementsByTagName( "geo_icon" )[0] ;
				if( geo_icon != null ) {
					icon = geo_icon.firstChild.nodeValue ;
				}
	            var point = new GLatLng( parseFloat( lat ), parseFloat( lon ) ) ;
	            var marker = createMarker( icon, point, i, info );
	            gmarkers[im] = marker;
	            im++;
            }
		}
		markerClusterer = new MarkerClusterer(map, gmarkers,{maxZoom:10} ) ;
		fitMap( ) ;
	} ) ;
}
function fitMap( ) {
	if( gmarkers.length > 0 ) {
		var bounds = new GLatLngBounds();
		for( var i = 0; i < gmarkers.length ; i++ ) {
			if( gmarkers[ i ] != null ) {
				var point = gmarkers[ i ].getPoint( ) ;
				bounds.extend( point ) ;
			}
		}
		var level = map.getBoundsZoomLevel( bounds ) ;
		map.setZoom( level ) ;
		map.setCenter( bounds.getCenter( ) ) ;
	}
}
function createMarker( icon, point, number, info ) {
	var thisIcon ;
	thisIcon = new GIcon( baseIconV ) ;
	thisIcon.image = icon ;
	markerOptions = { icon:thisIcon };
	var marker = new GMarker( point, markerOptions ) ;
	marker.value = number;
	GEvent.addListener(marker, "click", function() {
		var myHtml = info ;
		map.openInfoWindowHtml(point, myHtml);
	} ) ;
	return marker;
}
function clearmarkers( ) {
	gmarkers = [] ;
	if( markerClusterer != null ) {
		markerClusterer.clearMarkers();
	}
}

