// JavaScript Document
// DESENVOLVED BY VAFINANCIALS MODS BY LUCAS ROQUEFORT AND H&#205;GOR FONSECA

//setup all vars for data processing
	var FileName = "markers.php";
	var ImagesLocation = "http://www.starflightvirtual.co.cc/";
	var RedImgs;
	var UPDATERATE = 30; //update rate set to 30 seconds
	var c = UPDATERATE-1;
	var bgclr = "";
	var barclr = "";
	var rcls = "rowb";
	var x;
	var xm;
	var map;
	var allrows = "";
	var img = "";
	//var ptable = "";
	var prow = [];
	var gmarks = [];
	var phtmls = [];
	var dt = [];
	var dn = [];
	var lt = [];
	var ln = [];
	var at = [];
	var an = [];
	var vpres = [];
	var imgs = [];
	var csigns = [];
	var tails = [];
	var acids = [];
	var aclds = [];
	var flnms = [];
	var deics = [];
	var arics = [];
	var souls = [];
	var cargs = [];
	var ftims = [];
	var lats = [];
	var lons = [];
	var hdgs = [];
	var attds = [];
	var iasps = [];
	var tasps = [];
	var gspds = [];
	var machs = [];
	var emils = [];
	var mflws = [];
	var status = [];
	var i = 0;
	var xi = 0;
	var displayedMarkers = new Array();
	
	//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 =  "O MAPA RECARREGA EM " + String(x) + " SEGUNDOS." ;
	   	t=setTimeout("timedCount()",1000);
	};
	
	//removes the map overlays except the weather overlay
	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;
	}
	
	//loads the map and sets up the controls
	function loadMap(){
		if (GBrowserIsCompatible()) {        
    		map = new GMap2(document.getElementById("map"));
			map.setCenter(new GLatLng(-16.88, -54.22), 4);
			map.addControl(new GMapTypeControl());
			map.setUIToDefault();
			map.enableDoubleClickZoom();
			map.enableContinuousZoom();
			map.setUIToDefault();
			map.setMapType(G_PHYSICAL_MAP);
    		timedCount();
			
			/*
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
    		map.setCenter(new GLatLng(-16.88, -54.22), 4);
    		map.enableDoubleClickZoom();
			map.enableContinuousZoom();
			map.setUIToDefault();
			map.setMapType(G_HYBRID_MAP);
    		timedCount();
			*/
    	}
    }
							//MINHA
					function drawroute(dt,dn,ln,lt,at,an)
					{
					var waypointsg = new Array();
					var f = new GLatLng(dt,dn);
					waypointsg.push(f);
					var a = new GLatLng(ln,lt);
					waypointsg.push(a);
					var waypointsr = new Array();
					var a = new GLatLng(ln,lt);
					waypointsr.push(a);
					var t = new GLatLng(at,an);
					waypointsr.push(t);
					var polyOptions = {geodesic:true};
					routeWaypointsg = new GPolyline(waypointsg, '#FF9900', 3, 1.0, polyOptions);
					routeWaypointsr = new GPolyline(waypointsr, '#FFFFFF', 3, 1.0, polyOptions);
					map.addOverlay(routeWaypointsg);
					map.addOverlay(routeWaypointsr);
					}
					
					
	//creates all the markers and html for the pop up windows
	function createMarker(dt, dn, ln, lt, at, an, point, index, pophtml, vp, im, cs, tn, ac, ar, fn, di, ai, so, ca, ft, lt, ln, hd, al, ia, ta, gs, ma, em, mf, st) {
		var icon = new GIcon();
		var nhdg = Number(hd);
		var myalt = Number(al);
		
		//decide which color to use for the icon
		//if(st == "Climbing"){
		//	RedImgs = "red/";
		//}else if(st == "Decending"){
		//	RedImgs = "green/";
		//}else if(st == "Cruising"){
		//	RedImgs = "orange/";
		//}else{
		//	RedImgs = "black/";
		//}
		
		RedImgs = "azul/";
		//decide which pic to use for the icon
		
		icon.image = ImagesLocation + RedImgs + "tracking.png";

				
		icon.iconSize = new GSize(19, 19);
		icon.iconAnchor = new GPoint(9, 9);
		icon.infoWindowAnchor = new GPoint(9, 16);
		
		var marker = new GMarker(point, icon);
		
		GEvent.addListener(marker, "click", function() { 
			marker.openInfoWindowHtml(pophtml);
			drawroute(markers[i].getAttribute("dt"),markers[i].getAttribute("dn"),markers[i].getAttribute("lt"),markers[i].getAttribute("ln"),markers[i].getAttribute("at"),markers[i].getAttribute("an"));
		        
		        var madrid = new GLatLng(dt, dn);
                        var barcelona = new GLatLng(at, an);
                        var polyline = new GPolyline([madrid, barcelona], "#0000dd", 6, 0.4);
                        map.addOverlay(polyline);
		
		var depolyline = GPolyline();
		var arpolyline = GPolyline();

                        var depoint = [
				new GLatLng(markers[i].getAttribute("dt"), markers[i].getAttribute("dn")), point
				];
			var arpoint = [
				point, new GLatLng(markers[i].getAttribute("at"), markers[i].getAttribute("an"))
				];
		
			var dpoint = new GLatLng(markers[i].getAttribute("dt"), markers[i].getAttribute("dn"));
			var apoint = new GLatLng(markers[i].getAttribute("at"), markers[i].getAttribute("an"));
		
			var dmarker = new GMarker(dpoint, icona);
			var amarker = new GMarker(apoint, iconb);
		
			depolyline = new GPolyline(depoint, '#FFFFFF', 1, 0.7);
			arpolyline = new GPolyline(arpoint, '#00FF00', 1, 0.7);
			
			map.addOverlay(depolyline);
			map.addOverlay(arpolyline);
			
			GEvent.addListener(marker, 'infowindowopen', function() { drawroute(dt,dn,ln,lt,at,an); });
                        GEvent.addListener(marker, 'infowindowclose', function() { map.removeOverlay(routeWaypointsg); map.removeOverlay(routeWaypointsr); }); 

		
		});
		
		



	        dt[xm] = dt;
		dn[xm] = dn;
		ln[xm] = lt;
		lt[xm] = ln;
		at[xm] = at;
		an[xm] = an;
		gmarks[xm] = marker;
		phtmls[xm] = pophtml;
		vpres[xm] = vp;
		imgs[xm] = im;
		csigns[xm] = cs;
		tails[xm] = tn;
		acids[xm] = ac;
		aclds[xm] = ar;
		flnms[xm] = fn;
		deics[xm] = di;
		arics[xm] = ai;
		souls[xm] = so;
		cargs[xm] = ca;
		ftims[xm] = ft;
		lats[xm] = lt;
		lons[xm] = ln;
		hdgs[xm] = hd;
		attds[xm] = al;
		iasps[xm] = ia;
		tasps[xm] = ta;
		gspds[xm] = gs;
		machs[xm] = ma;
		emils[xm] = em;
		mflws[xm] = mf;
		status[xm] = st;
		displayedMarkers[xm] = marker;
		xm++;
		return marker;
	}
	
	function resetAllVars(){
	        dt = [];
	        dn = [];
	        ln = [];
	        lt = [];
	        at = [];
	        an = [];
		vpres = [];
		imgs = [];
		csigns = [];
		tails = [];
		acids = [];
		aclds = [];
		flnms = [];
		deics = [];
		arics = [];
		souls = [];
		cargs = [];
		ftims = [];
		lats = [];
		lons = [];
		hdgs = [];
		attds = [];
		iasps = [];
		tasps = [];
		gspds = [];
		machs = [];
		emils = [];
		mflws = [];
		status = [];
		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(lats[i], lons[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("lt")), parseFloat(markers[i].getAttribute("ln")));
				var tmiles = 0;
				var mflwn = 0;
				var mdest = 0;
				var pdis = "";
				
				tmiles = markers[i].getAttribute("em");
				mdest = tmiles - eval(markers[i].getAttribute("mf"));
				mflwn = tmiles - mdest;
				if(markers[i].getAttribute("st") != "1"){
					if(mflwn > 0){
						pflwn = 100 - Math.round((mdest / tmiles) * 100);
						if(pflwn > 10){
							pdis = pflwn + "%";
						}
						if(pflwn > 100){
							pdis = "100%";
						}
					}else{
						pflwn = 0;
						pdis = "";
					}
				}else{
					pflwn = 0;
					pdis = "";
				}
				
				var stat = markers[i].getAttribute("st");
				var fltstat = "";
				
				if(stat == "0"){
					bgclr = "#FADADA";
					barclr = "#D43C3C";
					fltstat = "Desembarque";
				}else if(stat == "1"){
					bgclr = "#FADADA";
					barclr = "#D43C3C";
					fltstat = "Embarque";
				}else if(stat == "2"){
					bgclr = "#FFEED5";
					barclr = "#CC7A00";
					fltstat = "Taxi para a Pista";
				}else if(stat == "3"){
					bgclr = "#C2F0C2";
					barclr = "#009600";
					fltstat = "Decolando";
				}else if(stat == "4"){
					bgclr = "#C2F0C2";
					barclr = "#009600";
					fltstat = "Em Ascens&#227;o";
				}else if(stat == "5"){
					bgclr = "#C2F0C2";
					barclr = "#009600";
					fltstat = "Em Cruzeiro";
				}else if(stat == "6"){
					bgclr = "#C2F0C2";
					barclr = "#009600";
					fltstat = "Em Descida";
				}else if(stat == "7"){
					bgclr = "#C2F0C2";
					barclr = "#009600";
					fltstat = "Pousando";
				}else if(stat == "8"){
					bgclr = "#FFFFFF";
					barclr = "#333333";
					fltstat = "Taxi para o Gate";
				}else if(stat == "9"){
					bgclr = "#FADADA";
					barclr = "#D43C3C";
					fltstat = "No Gate";
				}
				
				//if(markers[i].getAttribute("im") == "0"){
				//img = "";
				//}else{
				//	img = "http://www.voeazulvirtual.com.br/" + markers[i].getAttribute("im");
				//}
				
				//popup html code
				pophtml = "<table cellpadding=\"0\" width=\"300\" border=\"0\">";
				pophtml += "<tr class=\"phdr\"><td width=\"128\" valign=\"top\"><img src=" + markers[i].getAttribute("im") + "></td>";
    			pophtml += "<td width=\"162\" align=\"right\" valign=\"bottom\">" + markers[i].getAttribute("pn") + "&nbsp;&nbsp;</td></tr>";
				pophtml += "<tr><td colspan=\"2\"><table cellpadding=\"0\" width=\"100%\" border=\"0\">";
      			pophtml += "<tr><td width=\"23%\" class=\"pra\">Aeronave:</td><td colspan=\"3\" class=\"prb\">" + markers[i].getAttribute("ar") + "&nbsp;&nbsp;</td></tr>";        		
				pophtml += "<tr><td width=\"23%\" class=\"pra\">Voo:</td><td width=\"27%\" class=\"prb\">" + markers[i].getAttribute("fn") + " &nbsp;&nbsp;</td>";
				pophtml += "<td class=\"pra\">Origem/Destino:</td><td class=\"prb\">" + markers[i].getAttribute("ia") + "&nbsp;&nbsp;</td></tr>";
      			pophtml += "<tr><td class=\"pra\">Altitude:</td><td class=\"prb\">" + markers[i].getAttribute("al") + " ft&nbsp;&nbsp;</td>";
				pophtml += "<td class=\"pra\">Proa:</td><td class=\"prb\">" + markers[i].getAttribute("hd") + "&nbsp;&nbsp;</td></tr>";
				pophtml += "<tr><td class=\"pra\">Matr&#237;cula:</td><td class=\"prb\">" + markers[i].getAttribute("ma") + "&nbsp;&nbsp;</td>";
        		pophtml += "<td class=\"pra\">GS:</td><td class=\"prb\">" + markers[i].getAttribute("gs") + " kts&nbsp;&nbsp;</td></tr>";
				pophtml += "<tr><td class=\"pra\">EET:</td><td class=\"prb\">" + markers[i].getAttribute("ft") + " hrs&nbsp;&nbsp;</td>";      			
      			pophtml += "<td class=\"pra\">POB:</td><td width=\"27%\" class=\"prb\">" + markers[i].getAttribute("so") + "&nbsp;&nbsp;</td></tr>";        		
      			pophtml += "<tr><td height=\"18\" colspan=\"2\" class=\"pra\">NM Voadas:</td><td colspan=\"2\" class=\"prb\">" + markers[i].getAttribute("mf") + "&nbsp;&nbsp;</td></tr>";
      			pophtml += "<tr><td height=\"18\" colspan=\"2\" class=\"pra\">NM Restantes:</td><td colspan=\"2\" class=\"prb\">" + mdest + "&nbsp;&nbsp;</td></tr>";
      			pophtml += "<tr><td class=\"pra\">Situa&#231;&#227;o:</td><td class=\"prb\">" + fltstat + "&nbsp;&nbsp;</td>";
      			pophtml += "<td class=\"pra\">Rede:</td><td width=\"27%\" class=\"prb\">" + markers[i].getAttribute("rede") + "&nbsp;&nbsp;</td></tr>";
    			pophtml += "</table></td></tr></table>";
				
				var marker = createMarker(
				        markers[i].getAttribute("dt"),
				        markers[i].getAttribute("dn"),
				        markers[i].getAttribute("lt"),
				        markers[i].getAttribute("ln"),
				        markers[i].getAttribute("at"),
				        markers[i].getAttribute("an"),				        
					point, 
					i, 
					pophtml,
					markers[i].getAttribute("vp"),
					markers[i].getAttribute("im"),
					markers[i].getAttribute("cs"), 
					markers[i].getAttribute("tn"), 
					markers[i].getAttribute("ac"), 
					markers[i].getAttribute("ar"),
					markers[i].getAttribute("fn"), 
					markers[i].getAttribute("di"), 
					markers[i].getAttribute("ai"),
					markers[i].getAttribute("so"),
					markers[i].getAttribute("ca"),
					markers[i].getAttribute("ft"),
					markers[i].getAttribute("lt"),
					markers[i].getAttribute("ln"),
					markers[i].getAttribute("hd"),
					markers[i].getAttribute("al"),
					markers[i].getAttribute("ia"),
					markers[i].getAttribute("ta"),
					markers[i].getAttribute("gs"),
					markers[i].getAttribute("ma"),
					markers[i].getAttribute("em"),
					markers[i].getAttribute("mf"),
					markers[i].getAttribute("st")
				);
				
				//var latfrom = markers[i].getAttribute("dt");
				//var lonfrom = markers[i].getAttribute("dn");
				//var latactual = markers[i].getAttribute("lt");
				//var lonactual = markers[i].getAttribute("ln");
				//var latto = markers[i].getAttribute("at");
				//var lonto = markers[i].getAttribute("an");
				
				
					//MINHA
					function drawroute(latfrom,lonfrom,latactual,lonactual,latto,lonto)
					{
					var waypointsg = new Array();
					var f = new GLatLng(latfrom,lonfrom);
					waypointsg.push(f);
					var a = new GLatLng(latactual,lonactual);
					waypointsg.push(a);
					var waypointsr = new Array();
					var a = new GLatLng(latactual,lonactual);
					waypointsr.push(a);
					var t = new GLatLng(latto,lonto);
					waypointsr.push(t);
					var polyOptions = {geodesic:true};
					routeWaypointsg = new GPolyline(waypointsg, '#FF9900', 3, 1.0, polyOptions);
					routeWaypointsr = new GPolyline(waypointsr, '#FFFFFF', 3, 1.0, polyOptions);
					map.addOverlay(routeWaypointsg);
					map.addOverlay(routeWaypointsr);
					}
					
					   
		
				
				map.addOverlay(marker);
				
				if(rcls == "rowb"){
					rcls = "rowa";
				}else{
					rcls = "rowb";
				}
				
				prow[i] = "<tr class=\"" + rcls + "\" onmouseover=\"this.className='hvr'\" onmouseout=\"this.className='" + rcls + "'\" onclick=\"tclick(" + i + ")\">";
      			/*prow[i] += "<td width=\"8%\" align=\"left\">" + markers[i].getAttribute("tn") + " (" + markers[i].getAttribute("ac") + ")</td>";*/
      			prow[i] += "<td width=\"20%\" align=\"left\">" + markers[i].getAttribute("pn") + "</td>";
      			prow[i] += "<td width=\"10%\" align=\"left\">" + markers[i].getAttribute("di") + "</td>";
      			prow[i] += "<td width=\"10%\" align=\"left\">" + markers[i].getAttribute("ai") + "</td>";
      			prow[i] += "<td width=\"15%\" align=\"left\">";
				prow[i] += "<table border='0' width='98%' height='15px' cellspacing='0' cellpadding='0' bgcolor='" + bgclr + "'>";
				prow[i] += "<tr><td align='left'><table border='0' align='left' width='" + pflwn + "%' height='15px' cellspacing='0' cellpadding='0' bgcolor='" + barclr + "'>";
				prow[i] += "<tr><td align='center'><font face='Tahoma' size='1' color='#FFFFFF'>" + pdis + "</font></td></tr></table></td>";
				prow[i] += "</tr></table></td>";
      			/*prow[i] += "<td width=\"10%\" align=\"center\">" + markers[i].getAttribute("hd") + "</td>";*/
      			prow[i] += "<td width=\"5%\" align=\"center\">" + markers[i].getAttribute("gs") + "</td>";
      			prow[i] += "<td width=\"5%\" align=\"center\">" + markers[i].getAttribute("al") + "</td>";
      			prow[i] += "<td width=\"10%\" align=\"right\"><div align=\"center\">" + fltstat + "</div></td></tr>";
				
				allrows += prow[i];
			}
			
			var ptable = "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\">";
    			ptable += "<tr class=\"hdr\">";
      			/*ptable += "<td width=\"8%\" align=\"left\">EQUIPAMENTO</td>";*/
      			ptable += "<td width=\"20%\" align=\"left\">TRIPULANTE</td>";
      			ptable += "<td width=\"10%\" align=\"left\">ORIGEM</td>";
      			ptable += "<td width=\"10%\" align=\"left\">DESTINO</td>";
      			ptable += "<td width=\"15%\" align=\"left\">PROGRESSO</td>";
      			/*ptable += "<td width=\"10%\" align=\"center\">HEADING</td>";*/
      			ptable += "<td width=\"5%\" align=\"center\">GS</td>";
      			ptable += "<td width=\"5%\" align=\"center\">ALTITUDE</td>";
      			ptable += "<td width=\"10%\" align=\"right\"><div align=\"center\">SITUA&#199;&#195;O</div></td></tr>";
			
			window.document.getElementById("ptab").innerHTML = ptable + allrows + "</table>";

			ptable = "";
			allrows = "";
			
		});
	}
