var is_scale = true;
var InfoCache = new Array();
var resize = true;
function load(lat,lung,zoom,xmlUrl,markerID,MapDivId){
      if(GBrowserIsCompatible()) {
       map = new GMap2(document.getElementById(MapDivId));
        map.setCenter(new GLatLng(lat, lung ), zoom);
		if(zoom>2) resize = false;
		map.addControl(new GMapTypeControl());
	    map.addControl(new GLargeMapControl());
	    map.addControl(new GScaleControl());
		
        geocoder = new GClientGeocoder();
		map.enableScrollWheelZoom();
		addMarkers(xmlUrl,markerID);
      }
    }
 function showAddress(address) {
      if (geocoder) {st(true);
        geocoder.getLatLng(
          address,
          function(point) {st(false);
            if (!point) {
              alert("找不到 "+address);
            } else {
              map.setCenter(point);
              var marker = new GMarker(point);
              map.addOverlay(marker);
              marker.openInfoWindowHtml(address);
			  createMarker(point,point);
            }
          }
        );
      }
    }
function addMarkers(xmlUrl,markerID){
	GDownloadUrl(xmlUrl, function(data, responseCode) {
		  var xml = GXml.parse(data);
		  var markers = xml.documentElement.getElementsByTagName("m");
		  for (var i = 0; i < markers.length; i++) {
			var thismarkerID = markers[i].getAttribute("mID");
			var level = markers[i].getAttribute("l");
			if(  thismarkerID == markerID )
				is_me = true;
			else is_me = false;
			if( markers[i].getAttribute("lat")> -90 ){
			addBatMarker( map,parseFloat(markers[i].getAttribute("lat")),
						parseFloat(markers[i].getAttribute("lng")),
						'',i,thismarkerID,is_me,level);
			}else{
				var clat =( parseFloat(markers[i].getAttribute("tlat")) + parseFloat(markers[i].getAttribute("blat")) )/2;
				var clung =( parseFloat(markers[i].getAttribute("llung")) + parseFloat(markers[i].getAttribute("rlung")) )/2;
				var room=20;
				while( 1 ){
					if( !resize )break;
					map.setCenter(new GLatLng( clat,clung),room);
					  var bounds = map.getBounds();
					  var southWest = bounds.getSouthWest();
					  if( southWest.lng() < parseFloat(markers[i].getAttribute("llung")) ){
						map.setCenter(new GLatLng( clat,clung),(room-1));
						break;
					}
					  if( southWest.lat() < parseFloat(markers[i].getAttribute("blat"))) {
						map.setCenter(new GLatLng( clat,clung),(room-1) );
						break;
					}
					room -- ;
					if( room < 2) break;
					
				}
			}
		  }
		  $("#ajaxs").hide();
		});
}
function addBatMarker(map,lat,lng,curMarkerHtml,order,markerID,is_me,level){
		var point = new GLatLng(lat,lng);
		map.addOverlay(createMarker(point,curMarkerHtml,order,markerID,is_me,level));
	}
function createMarker(point,curMarkerHtml, number,markerID,is_me,level) {
		var icon = new GIcon();
		icon.image = "http://labs.google.com/ridefinder/images/mm_20_blue.png";
		icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		if( level == 1 ) 
			icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
	
		icon.iconSize = new GSize(12, 20);
		icon.shadowSize = new GSize(22, 20);
		icon.iconAnchor = new GPoint(6, 20);
		icon.infoWindowAnchor = new GPoint(5, 1);
		if(is_me) {
			icon.image = "http://www.google.cn/mapfiles/markerO.png";
			icon.iconSize = new GSize(24, 40);
			icon.shadowSize = new GSize(1, 1);
			icon.iconAnchor = new GPoint(6, 20);
		}
		
	  var marker = new GMarker(point,icon);
		  

	  GEvent.addListener(marker, "click", function() {
		if(InfoBaseUrl != null)
		  var url = InfoBaseUrl+'?id='+ markerID;
		  else var url ='';
		  // cache 
		  if(( InfoCache[ markerID ] != null   )&&( InfoCache[ markerID ].length>10 )){
			  marker.openInfoWindowHtml(InfoCache[ markerID ]);
		  }
		  else{
			  marker.openInfoWindowHtml("<div class='loading'>Loading...</div>");
			  $.ajax({
					url: url,
					type: 'GET',
					dataType: 'html',
					timeout: 10000,
					error: function(){
						marker.openInfoWindowHtml("处理超时，请重试！");
					},
					success: function(html){
						marker.openInfoWindowHtml(html);
						InfoCache[ markerID ] = html;
					}
				});
		  }
	  });
	  return marker;
	}    
function Zoom(lat,lung,zoom){
	map.setCenter(new GLatLng(lat, lung), zoom);
}


