	var FileName = "whdata.php";
	var UPDATERATE = 25; //update rate set to 25 seconds
	var c = UPDATERATE-1;
	var x;
	var xm;
	var map;
	var allconn = "";
	var allrows = "";
	var prow = [];
	var crow = [];
	var gmarks = [];
	var phtmls = [];
	var vpres = [];
	var cs = [];
	var ac = [];
	var dicao = [];
	var aicao = [];
	var alt = [];
	var tas = [];
	var trans = [];
	var lat = [];
	var lon = [];
	var serv = [];
	var rte = [];
	var i = 0;
	var xi = 0;
	var cls = "rdat";
	var ccls = "rdat";
	var displayedMarkers = new Array();
	
	//document.tileHost = 'gima.weather.com';
	
	//timer to refresh marker data
	function timedCount() {
		c = c + 1;
		if(c == UPDATERATE) {
			loadMapData(FileName);
			c = 0;
		};
		x = UPDATERATE-c;
	   	window.document.getElementById("nupdate").innerHTML = "&nbsp;&nbsp;" +String(x) + " 秒内刷新服务器在线情况" ;
	   	t=setTimeout("timedCount()",1000);
	};
	
	function removeMarkers(map, arrayName)
	{
		// Get the map data
		try {
			var markers = eval(arrayName);
			if (!markers) return false;
		} catch (err) {
			return false;
		}
		
		// Remove the map data, either an array or a single element
		if (isNaN(markers.length))
			map.removeOverlay(markers);
		else if (markers.length > 0) {
			for (var x = 0; x < markers.length; x++)
				map.removeOverlay(markers[x]);
		}
			
		displayedMarkers[arrayName] = false;
		return true;
	}
	
	function loadMap(){
		if (GBrowserIsCompatible()) {        
    		map = new GMap2(document.getElementById("map"));
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
    		map.setCenter(new GLatLng(0.000000, 0.000000), 1);
    		map.enableDoubleClickZoom();
			map.enableContinuousZoom();
			//var rC = new WXOverlayControl(getTileOverlay("radar"), "Radar", new GSize(70, 7));
			//var srC = new WXOverlayControl(getTileOverlay("satrad"), "Sat/Rad", new GSize(142, 7));
			//var sC = new WXOverlayControl(getTileOverlay("sat"), "Infrared", new GSize(214, 7));
			//map.addControl(rC);
			//map.addControl(srC);
			//map.addControl(sC);
			//map.addControl(new WXClearControl(new GSize(286, 7)));
    		timedCount();
    	}
    }
    
    //creates all the markers and html for the pop up windows
	function createMarker(point, index, pophtml, csign, acrft, deicao, aeicao, altude, taspd, transpnd, plat, plon, server, route) {
		var icon = new GIcon();
		icon.image ="aircraft.png";
		icon.iconSize = new GSize(25, 25);
		icon.iconAnchor = new GPoint(12, 12);
		icon.infoWindowAnchor = new GPoint(9, 16);
		
		var marker = new GMarker(point, icon);
		
		GEvent.addListener(marker, "click", function() { 
			marker.openInfoWindowHtml(pophtml);
		});

		gmarks[xm] = marker;
		phtmls[xm] = pophtml;
		cs[xm] = csign;
		ac[xm] = acrft;
		dicao[xm] = deicao;
		aicao[xm] = aeicao;
		alt[xm] = altude;
		tas[xm] = taspd;
		trans[xm] = transpnd;
		lat[xm] = plat;
		lon[xm] = plon;
		serv[xm] = server;
		rte[xm] = route;
		displayedMarkers[xm] = marker;
		
		xm++;
		return marker;
	}
	
	function resetAllVars(){
		prow = [];
		gmarks = [];
		phtmls = [];
		cs = [];
		ac = [];
		dicao = [];
		aicao = [];
		alt = [];
		tas = [];
		trans = [];
		lat = [];
		lon = [];
		serv = [];
		rte = [];
		x = 0;
		xm = 0;
		i = 0;
	}
	
	// This function picks up the click and opens the corresponding info window and centers the map on the marker
	function tclick(i) {
		gmarks[i].openInfoWindowHtml(phtmls[i]);
		map.setCenter(new GLatLng(lat[i], lon[i]));
	};
	
	//refresh the markers and data for the map and table
	function loadMapData(fName){
		//map.clearOverlays();
		removeMarkers(map, 'displayedMarkers');
		resetAllVars();
		
		GDownloadUrl(fName, function(data, responseCode) {  
			var xml = GXml.parse(data);  
			var markers = xml.documentElement.getElementsByTagName("marker");
			
			//sets up the markers and the table rows 
			for (var i = 0; i < markers.length; i++) {    
				var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lon")));
				
				//setup the popup html table
				pophtml = "<table border='0' width='400' cellspacing='1' cellpadding='0' bgcolor='#000000'>";
				pophtml += "<tr>";
				pophtml += "<td class='lhdr' width='48'>&nbsp;呼号:</td><td class='rdatb' width='69'>&nbsp;" + markers[i].getAttribute("cs") + "</td>";
				pophtml += "<td class='lhdr' width='46'>&nbsp;姓名:</td><td class='rdatb' width='121'>&nbsp;" + markers[i].getAttribute("rn") + "</td>";
				pophtml += "<td class='lhdr' width='47'>&nbsp;机型:</td><td class='rdatb' width='62'>&nbsp;" + markers[i].getAttribute("pac") + "</td>";
				pophtml += "</tr>";
				pophtml += "<tr>";
				pophtml += "<td class='lhdr' width='48'>&nbsp;离站:</td><td class='rdatb' width='69'>&nbsp;" + markers[i].getAttribute("dicao") + "</td>";
				pophtml += "<td class='lhdr' width='46'>&nbsp;到站:</td><td class='rdatb' width='121'>&nbsp;" + markers[i].getAttribute("aicao") + "</td>";
				pophtml += "<td class='lhdr' width='47'>&nbsp;高度:</td><td class='rdatb' width='62'>&nbsp;" + markers[i].getAttribute("alt") + "</td>";
				pophtml += "</tr>";
				pophtml += "<tr>";
				pophtml += "<td class='lhdr' width='48'>&nbsp;速度:</td><td class='rdatb' width='69'>&nbsp;" + markers[i].getAttribute("tas") + "</td>";
				pophtml += "<td class='lhdr' width='60'>&nbsp;飞行类型:</td><td class='rdatb' width='121'>&nbsp;" + markers[i].getAttribute("ptype") + "</td>";
				pophtml += "<td class='lhdr' width='47'>&nbsp;应答机:</td><td class='rdatb' width='62'>&nbsp;" + markers[i].getAttribute("tpnd") + "</td>";
				pophtml += "</tr>";
				pophtml += "<tr>";
			    pophtml += "<td class='lhdr' width='48'>&nbsp;航程:</td><td class='rdatb' width='349' colspan='5'>&nbsp;" + markers[i].getAttribute("rte") + "</td>";
				pophtml += "</tr>";
				pophtml += "<tr>";
				pophtml += "<td class='lhdr' width='48'>&nbsp;服务器:</td><td class='rdatb' width='349' colspan='5'>&nbsp;" + markers[i].getAttribute("serv") + "</td>";
				pophtml += "</tr>";
				pophtml += "</table>";
				
				var marker = createMarker(
					point, 
					i, 
					pophtml,
					markers[i].getAttribute("cs"),
					markers[i].getAttribute("pac"), 
					markers[i].getAttribute("dicao"), 
					markers[i].getAttribute("aicao"), 
					markers[i].getAttribute("alt"),
					markers[i].getAttribute("tas"), 
					markers[i].getAttribute("tpnd"), 
					markers[i].getAttribute("lat"), 
					markers[i].getAttribute("lon"),
					markers[i].getAttribute("serv"),
					markers[i].getAttribute("rte")
				);
				
				map.addOverlay(marker);
				
				if(markers[i].getAttribute("ct") == "PILOT"){
				
					if(cls == "rdatb"){
						cls = "rdat";
					}else{
						cls = "rdatb";
					}
				
					prow[i] = "<tr>";
					prow[i] += "<td class='" + cls + "' align='left' width='13%'><a class='rdat' href='javascript:tclick(" + i + ")'>&nbsp;" + markers[i].getAttribute("cs") + "</a></td>";
					prow[i] += "<td class='" + cls + "' align='left' width='20%'>&nbsp;" + markers[i].getAttribute("rn") + "</td>";
					prow[i] += "<td class='" + cls + "' align='left' width='13%'>&nbsp;" + markers[i].getAttribute("dicao") + "</td>";
					prow[i] += "<td class='" + cls + "' align='left' width='13%'>&nbsp;" + markers[i].getAttribute("aicao") + "</td>";
					prow[i] += "<td class='" + cls + "' align='left' width='13%'>&nbsp;" + markers[i].getAttribute("ptype") + "</td>";
					prow[i] += "<td class='" + cls + "' align='left' width='13%'>&nbsp;" + markers[i].getAttribute("tas") + "</td>";
					prow[i] += "<td class='" + cls + "' align='left' width='13%'>&nbsp;" + markers[i].getAttribute("alt") + "</td>";
					prow[i] += "</tr>";
				
					allrows += prow[i];
					
				}else{
				
					if(ccls == "rdatb"){
						ccls = "rdat";
					}else{
						ccls = "rdatb";
					}
					
					var fac = markers[i].getAttribute("fac");
					
					if(fac == "OBS"){
						fac = "Observer";
					}else if(fac == "FSS"){
						fac = "Flight Service Station";
					}else if(fac == "CLR"){
						fac = "Clearence Delivery";
					}else if(fac == "GND"){
						fac = "Ground Control";
					}else if(fac == "TWR"){
						fac = "Tower Control";
					}else if(fac == "APP"){
						fac = "Approach Control";
					}else if(fac == "CTR"){
						fac = "Center Control";
					}
					
					crow[i] = "<tr>";
					crow[i] += "<td class='" + cls + "' align='left' width='25%'><a class='rdat' href='javascript:tclick(" + i + ")'>&nbsp;" + markers[i].getAttribute("cs") + "</a></td>";
					crow[i] += "<td class='" + cls + "' align='left' width='25%'>&nbsp;" + markers[i].getAttribute("rn") + "</td>";
					crow[i] += "<td class='" + cls + "' align='left' width='13%'>&nbsp;" + fac + "</td>";
					crow[i] += "<td class='" + cls + "' align='left' width='13%'>&nbsp;" + markers[i].getAttribute("freq") + "</td>";
					crow[i] += "</tr>";
					
					allconn += crow[i];
					
				}
					
			}
			
			var ptable = "<table border='0' width='100%' cellspacing='0'>";
			ptable += "<tr>";
			ptable += "<td class='rhdr' align='left' width='13%'>&nbsp;呼号</td>";
			ptable += "<td class='rhdr' align='left' width='20%'>&nbsp;姓名</td>";
			ptable += "<td class='rhdr' align='left' width='13%'>&nbsp;离站</td>";
			ptable += "<td class='rhdr' align='left' width='13%'>&nbsp;到站</td>";
			ptable += "<td class='rhdr' align='left' width='13%'>&nbsp;飞行类型</td>";
			ptable += "<td class='rhdr' align='left' width='13%'>&nbsp;速度</td>";
			ptable += "<td class='rhdr' align='left' width='13%'>&nbsp;高度</td>";
			ptable += "</tr>";
			
			var ctable = "<table border='0' width='100%' cellspacing='0'>";
			ctable += "<tr>";
			ctable += "<td class='rhdr' align='left' width='13%'>&nbsp;呼号</td>";
			ctable += "<td class='rhdr' align='left' width='20%'>&nbsp;姓名</td>";
			ctable += "<td class='rhdr' align='left' width='13%'>&nbsp;管理类型</td>";
			ctable += "<td class='rhdr' align='left' width='13%'>&nbsp;频率</td>";
			ctable += "</tr>"; 
				
			window.document.getElementById("ptab").innerHTML = ptable + allrows + "</table>";
			window.document.getElementById("ctab").innerHTML = ctable + allconn + "</table>";

			ptable = "";
			allrows = "";
			ctable = "";
			allconn = "";
			
		});
	}
