  	var mapComments = null;
  	//var legend = null;

  	//..Global Constants
  	var MAX_USERS_TO_SHOW = 2000;
	
    //..Global variables................................................
    var map = null;
    var mgr = null;
    var batch = [];
    var iconAll = null;
    var icon1 = null;
    var icon2 = null;
    

	//..setupUserMap.....................................................
    function setupUserMap() {
    //..Debug
    //alert("setupUserMap Start");
    mapComments = document.getElementById("mapComments");
    mapComments.innerHTML = 'Loading live statistics. It might take a few seconds. Please wait ... ';
   	
   	//legend = document.getElementById("legend");
   	//legend.innerHTML = "";
    
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));

        //map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(45, 0), 1);
        //map.enableDoubleClickZoom();
        
        //..Show satellite map on alternate days
        var d = new Date();
        d = d.getDate();
        if(d%2 == 1){
			map.setMapType(G_SATELLITE_TYPE);
        }
        else{
			//..Do nothing
        }
        
        window.setTimeout(setupUserMarkers, 0);       
        
      }
      
    //..Debug
    //alert("setupUserMap End");      
    }

	//..getUserIcon.....................................................
    function getUserIcon(i) {
    //..Debug
    //alert("getUserIcon Start");
    //mapComments.innerHTML = i;
    if(i<5){
		if (!icon1) {
			icon1 = new GIcon();
			icon1.image = "http://www.makelogic.com/images/mark05.gif";
			//icon1.image="http://www.makelogic.com/images/redRightArrow.gif";
			icon1.iconSize = new GSize(10, 10);
			icon1.iconAnchor = new GPoint(0, 0);
			//icon1.infoWindowAnchor = new GPoint(16, 0);
			//icon1.shadow = "markermanager/" + IMAGES[i] + "-shadow.png";
			icon1.shadowSize = new GSize(0, 0);
			
			//..legend
			//legend.innerHTML += '<img src="'+icon1.image+'" alt="Latest Users"/> Latest Users<br/>';
		}
		return icon1;
      }
      else if(i<100){
		if (!icon2) {
			icon2 = new GIcon();
			//icon2.image = "http://www.makelogic.com/images/menuArrow.gif";
			icon2.image="http://www.makelogic.com/images/mark03.gif";
			icon2.iconSize = new GSize(3, 3);
			icon2.iconAnchor = new GPoint(0, 0);
			//icon2.infoWindowAnchor = new GPoint(16, 0);
			//icon2.shadow = "markermanager/" + IMAGES[i] + "-shadow.png";
			icon2.shadowSize = new GSize(0, 0);
			
			//..legend
			//legend.innerHTML += '<img src="'+icon2.image+'" alt="Old Users"/> Old Users</br>';
		}
		return icon2;
      }
      else{
      		if (!iconAll) {
			iconAll = new GIcon();
			iconAll.image = "http://www.makelogic.com/images/mark02.gif";
			//iconAll.image="http://www.makelogic.com/images/redRightArrow.gif";
			iconAll.iconSize = new GSize(3, 3);
			iconAll.iconAnchor = new GPoint(0, 0);
			//iconAll.infoWindowAnchor = new GPoint(16, 0);
			//iconAll.shadow = "markermanager/" + IMAGES[i] + "-shadow.png";
			iconAll.shadowSize = new GSize(0, 0);

			//..legend
			//legend.innerHTML += '<img src="'+iconAll.image+'" alt="Older Users"/> Older Users</br>';
		}
		return iconAll;
      }
    }

	
	//..setupUserMarkers...................................................
    function setupUserMarkers() {
    //..Debug
    //alert("setupUserMarkers Start");
     
      
      //..Download the Data XML File using AJAX
    	GDownloadUrl("http://www.makelogic.com/stats/UserIPData.xml", function(data, responseCode) {

			//..Debug
    		//alert("Data Download Complete. Beginning the marker processing");
			
  			var xml = GXml.parse(data);
  			
			var markers = xml.documentElement.getElementsByTagName("marker");
  			
			var noOfUsersToShow=MAX_USERS_TO_SHOW;
  
			if(noOfUsersToShow > markers.length){
				noOfUsersToShow = markers.length;
			}

			if(noOfUsersToShow < 0){
				noOfUsersToShow = 0;
			}
			
			//..legend
			//legend.innerHTML = 'About '+noOfUsersToShow+ ' users are shown in this map<br/>';

			var tempLat = "";
			var tempLng = "";
			
			for (var i = 0; i < noOfUsersToShow ; ++i) {
				
				tempLat = parseFloat(markers[i].getAttribute("lat"));
				tempLng = parseFloat(markers[i].getAttribute("lng"));
				
				//..Check if any one is Not A Number
				if(isNaN(tempLat) || isNaN(tempLng)){
					//..Debug
					//mapComments.innerHTML = mapComments.innerHTML+"<br>"+i+ " -> <b>ERROR . Not A Number.</b>";
					continue;
				}
				//var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
				//				parseFloat(markers[i].getAttribute("lng")));
				
				var point = new GLatLng(tempLat,tempLng);
				batch.push(new GMarker(point, { icon: getUserIcon(i), clickable:false }));
				//..Debug
				//mapComments.innerHTML = mapComments.innerHTML+"<br>"+i+ " -> "+point;
			}

			//var mgrOptions = { borderPadding: 50, maxZoom: 15, trackMarkers: true };
			//mgr = new GMarkerManager(map, mgrOptions);

			mgr = new GMarkerManager(map);
			mgr.addMarkers(batch,0,10);
			mgr.refresh();
			
			//..Debug
    		//alert("Data Download Complete. Marker processing complete");
    		mapComments.innerHTML = "Plot based on live statistics";
    		
		});

    //..Debug
    //alert("setupUserMarkers End");
    }