var mapviewer;
var timerid;
var curzoom = 17;
var	curcenlat,curcentlon;
var dispmode="S";
var userauth="NNN";
var vlist;
var myFleetid;
var ini_Lat,ini_Lon,ini_swLat,ini_swLon,ini_neLat,ini_neLon;
var mapsrdy = 0;
var timer;
var marker_selected = -1;
var aoiMarkers = new Array();
var aoiMarkers_listener = new Array();
var aoiMarkersPos = new Array();
var marker_id = new Array();
var marker_value = new Array();
var marker_pos = new Array();
var marker_listener = new Array();
var marker_tabs = new Array();
var marker_flags = new Array();

var curMapBounds;
var deficon,almicon;
var xmlHttpAjax, ajaxTokens;
var xmlHttpAoi, aoiTokens;
var	icon_yellow, icon_blue;
var uadevice;

function doLoad(fleetid, auth, pvlist, Lat, Lon, swLat, swLon, neLat, neLon, ua) {
	userauth=auth;
	myFleetid = fleetid;
	vlist = pvlist;
	ini_Lat = Lat;
	ini_Lon = Lon;
	ini_swLat = swLat;
	ini_swLon = swLon;
	ini_neLat = neLat;
	ini_neLon = neLon;
	uadevice = ua;
	
	if (pvlist.length > 0) {
		timer = 17;
		timerid=setTimeout( "refresh()", 1000 );
		dispmode = "S";
		googleLoad(fleetid, Lat, Lon, swLat, swLon, neLat, neLon);
	}
}

function logout() {
	var j;
	for (j=0; j<marker_id.length; j++) {
		GEvent.removeListener(marker_listener[j]);
		mapviewer.removeOverlay(marker_value[j]);
		marker_listener[j] = 0;
		marker_value[j] = 0;
	}
	for (j=0; j<aoiMarkersPos.length; j++) {
		mapviewer.removeOverlay(aoiMarkers[j]);
		GEvent.removeListener(aoiMarkers_listener[j]);
		aoiMarkers_listener[j]=0;
		aoiMarkers[j]=0;
	}
	GUnload();
}

function refresh() {
	if (mapsrdy == 1 && timer == 10) {
		var bounds = mapviewer.getBounds();
		var nelat = curMapBounds.getNorthEast().lat();
		var nelon = curMapBounds.getNorthEast().lng();
		var swlat = curMapBounds.getSouthWest().lat();
		var swlon = curMapBounds.getSouthWest().lng();
		if (curMapBounds.toString()!= bounds.toString()) {
			curMapBounds = bounds;
			getAOIMarkers(myFleetid,nelat, nelon, swlat, swlon);
		}
	}

	if (timer > 0) {
		timer--;
		if (timer > 0) document.getElementById("updtimer").innerHTML = timer.toString();
		else document.getElementById("updtimer").innerHTML = 'Updating ..';
		timerid=setTimeout( "refresh()", 1000 );
		return;
	}
	ajaxFunction("","");
	timerid=setTimeout( "refresh()", 1000 );
	timer = 31;
}

function ackAlarms(sfid,auth) {
	if (auth.charAt(0)=='Y') ajaxFunction(sfid,"ack");
}

function showMaint(sfid,auth) {
	return;
}

function createGoogleTabListener(marker,tabs) {
	var lh = GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowTabsHtml(tabs);
	});
	return lh;
}

function getAOIMarkersReady() {
	var i,j;
	var idx=0;
	var tabs;
	var icon;

	if (queryAjaxRequestReady (xmlHttpAoi) == false) return;

	aoiTokens = xmlHttpAoi.responseText.split("\t");
	if (aoiTokens[1]=="none") {
		aoiTokens = null;
		return;
	}
	for (i=0; i<aoiTokens.length; i+=5) {
		if ((i+5) > aoiTokens.length) break;
		var aoiMarkerLat = parseFloat(aoiTokens[i+4]);
		var	aoiMarkerLon = parseFloat(aoiTokens[i+3]);
		var pos = new GLatLng(aoiMarkerLat, aoiMarkerLon);
		var posUrlValue = pos.toUrlValue();

		for (j=0; j<aoiMarkersPos.length; j++) {
			if (aoiMarkersPos[j].toUrlValue() == posUrlValue) break;
		}

		if (j<aoiMarkersPos.length) continue;

		var addr = aoiTokens[i+1].split(",");
		var addrTab=addr[0];
		for (idx=1; idx<addr.length; idx++)
			addrTab += '<br />'+addr[idx];

		tabs = new Array(
			new GInfoWindowTab('Address','<p style="font-size:12px">'+aoiTokens[i]+'<br />'+addrTab+'</p>'),
			new GInfoWindowTab('Position','<p>Lat: '+aoiMarkerLat+' Lon: '+aoiMarkerLon+'</p>')
		);
		icon = getGMarkerIcon (aoiTokens[i+2]);
		aoiMarkers[j] = new GMarker(pos, icon);
		aoiMarkers_listener[j] = createGoogleTabListener(aoiMarkers[j],tabs);
		mapviewer.addOverlay(aoiMarkers[j]);
		aoiMarkersPos[j] = pos;
		icon = null;
		tabs = null;
		pos = null;
	}
	aoiTokens=null;
}

function getAOIMarkers(fleetid,nelat,nelon,swlat,swlon){
	if ((xmlHttpAoi = getXMLObject())==null) return;
	xmlHttpAoi.open("POST","aoi_upd.php",true);
	xmlHttpAoi.onreadystatechange=getAOIMarkersReady;
	xmlHttpAoi.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttpAoi.send( "fleetid="+fleetid+"&nelat="+nelat+"&nelon="+nelon+"&swlat="+swlat+"&swlon="+swlon+"&f=getaoiset&ran="+Math.random());
}

function updateDom (domid,ihtml,icss){
	domid.innerHTML = null;  domid.innerHTML = ihtml; domid.cassName = null; domid.className = icss;
}

function checktxstop(dt){
	var dtime = dt.split(" ");
	var pdate = dtime[0].split("/");
	var sdate = "20"+pdate[2]+"/"+pdate[1]+"/"+pdate[0]+" "+dtime[1];
	var udt = Date.parse(sdate);
	var ctime = new Date();
	if ((ctime.getTime() - udt)>645000)
		return true;
	return false;
}

function ajaxFunctionReady() {
	var count=0,pos=0; 
	var i=0, j=0, k, s, ustopped=0;
	var style_css, gps_status;
	var fLat, fLon, pos, label;
	var playalert=false;

	if (queryAjaxRequestReady (xmlHttpAjax) == false) return;

	ajaxTokens = xmlHttpAjax.responseText.split(",");
	count = ajaxTokens.length;
	for (i=0; i<count; i+=10) {
		if (vlist.search(ajaxTokens[i+0])== -1) continue;
		if (ajaxTokens[i+0] < "310000000500") ajaxTokens[i+9] = "0.00";

		if (document.getElementById(ajaxTokens[i+0])) {
			switch (ajaxTokens[i+5]) {
				case '0':
					style_css = "style3_red_bgnd";
					gps_status = "halted";
					break;
				case '1':
				default:
					style_css = "style3_green_bgnd";
					gps_status = "tracking";
					break;
			}
			ustopped = 0;
			if (checktxstop(ajaxTokens[i+1])== true){
				style_css = "style3_yellow_bgnd";
				ustopped = 1;
			}

			fLat = parseFloat(ajaxTokens[i+4]);
			fLon = parseFloat(ajaxTokens[i+3]);
			pos = new GLatLng(fLat,fLon);
			var driver = ajaxTokens[i+7].split(";");

			if (mapsrdy) {
				var engineDetails = '<span style="font-size:14px">'+
					'<br />chasis: <span style="font-weight:900">'+document.getElementById(ajaxTokens[i]+"cha").value+'</span>'+
					'<br />engine: <span style="font-weight:900">'+document.getElementById(ajaxTokens[i]+"eng").value+'</span>'+
					'<br />make: <span style="font-weight:900">'+document.getElementById(ajaxTokens[i]+"man").value+'</span>'+
					'<br />model: <span style="font-weight:900">'+document.getElementById(ajaxTokens[i]+"typ").value+'</span>'+
					'</span>';
				var currentDetails = '<span style="font-size:14px">sfid: <span style="font-weight:900">'+ajaxTokens[i]+'</span>'+
					'<br />reg: <span style="font-weight:900">'+document.getElementById(ajaxTokens[i]+"vh").innerHTML+'</span>'+
					'<br />'+
					'<br />Transmission: <span style="font-weight:900">'+ajaxTokens[i+1]+'</span>'+
					'<br />Longitude: <span style="font-weight:900">'+ajaxTokens[i+3]+'</span>'+
					'<br />Latitude: <span style="font-weight:900">'+ajaxTokens[i+4]+'</span>'+
					'<br />Speed: <span style="font-weight:900">'+ajaxTokens[i+2]+'</span>'+
					'<br />Fuel Guage: <span style="font-weight:900">'+ajaxTokens[i+9]+'&#37;</span>'+
					'</span>';
				var driverDetails = '<span style="font-size:14px">';
				for (k=0; k<driver.length; k++) {
					drivername = driver[k].split("[");
					driverDetails += '<br /><span style="font-weight:900">'+'<a href="fleet_upd_driver.php?name='+drivername[0]+'" target="_blank" >'+driver[k]+'</a></span>';
				}
//				driverDetails += '<br /><a href="fleet_assign_driver.php?vreg='+document.getElementById(ajaxTokens[i]+"vh").innerHTML+'">Assign Driver</a>';
				driverDetails += '</span>';

				var posUrlValue = pos.toUrlValue();
				for (j=0; j<marker_id.length; j++) {
					if (marker_id[j] == ajaxTokens[i]) {
						if (marker_pos[j].toUrlValue() == posUrlValue && marker_flags[j]==ustopped) break;
						GEvent.removeListener(marker_listener[j]);
						mapviewer.removeOverlay(marker_value[j]);
						marker_flags[j] = ustopped;
						if (ustopped == 1) marker_value[j]= new GMarker(pos, icon_yellow);
						else marker_value[j]= new GMarker(pos, G_DEFAULT_ICON);
						marker_tabs[j][0]=null;
						marker_tabs[j][1]=null;
						marker_tabs[j][2]=null;
						marker_tabs[j] = null; 
						marker_tabs[j] = new Array(
							new GInfoWindowTab('Current',currentDetails),
							new GInfoWindowTab('Vehicle',engineDetails),
							new GInfoWindowTab('Driver',driverDetails)
						);

						marker_listener[j] = createGoogleTabListener(marker_value[j],marker_tabs[j]);
						marker_pos[j] = pos;
						mapviewer.addOverlay(marker_value[j]);
						break;
					}
				}
				if (j>=marker_id.length) {
					marker_id[j] = ajaxTokens[i];
					marker_pos[j] = pos;
					marker_flags[j] = ustopped;
					if (ustopped == 1) marker_value[j]= new GMarker(pos, icon_yellow);
					else marker_value[j]= new GMarker(pos, G_DEFAULT_ICON);
					marker_tabs[j] = new Array(
						new GInfoWindowTab('Current',currentDetails),
						new GInfoWindowTab('Vehicle',engineDetails),
						new GInfoWindowTab('Driver',driverDetails)
					);
					marker_listener[j] = createGoogleTabListener(marker_value[j],marker_tabs[j]);
					mapviewer.addOverlay(marker_value[j]);
				}
			}

			var domid;
			document.getElementById(ajaxTokens[i]).className = style_css; 
			domid = document.getElementById(ajaxTokens[i]+"dt");
			updateDom (domid,ajaxTokens[i+1],style_css);
			domid = document.getElementById(ajaxTokens[i]+"sp");
			updateDom (domid,ajaxTokens[i+2],style_css);
			domid = document.getElementById(ajaxTokens[i]+"lon");
			updateDom (domid,ajaxTokens[i+3],style_css);
			domid = document.getElementById(ajaxTokens[i]+"lat");
			updateDom (domid,ajaxTokens[i+4],style_css);
			domid = document.getElementById(ajaxTokens[i]+"gps");
			updateDom (domid,gps_status,style_css);
			domid = document.getElementById(ajaxTokens[i]+"dpt");
			updateDom (domid,ajaxTokens[i+8],style_css);
			domid = document.getElementById(ajaxTokens[i]+"fuel");
			updateDom (domid,ajaxTokens[i+9],style_css);
			
			document.getElementById(ajaxTokens[i]+"vh").className = style_css;
			document.getElementById(ajaxTokens[i]+"sel").className = style_css;

			switch (ajaxTokens[i+6].charAt(0)) {
				case 'A':
					document.getElementById(ajaxTokens[i]+"bel").src = "images/bell.gif";
					document.getElementById(ajaxTokens[i]+"alm").className = "style3_red_bgnd";
					document.getElementById(ajaxTokens[i]+"sta").value = "A";
					document.getElementById(ajaxTokens[i]+"ack").disabled = false;
					document.getElementById(ajaxTokens[i]+"ack").value = "ACK";
					playalert=true;
					if (document.getElementById(ajaxTokens[i]+"snd").value != "X")
						document.getElementById(ajaxTokens[i]+"snd").value = "X";
					break;
				case 'Y':
					document.getElementById(ajaxTokens[i]+"bel").src = "images/bell.gif";
					document.getElementById(ajaxTokens[i]+"alm").className = "style3";
					document.getElementById(ajaxTokens[i]+"sta").value = "K";
					document.getElementById(ajaxTokens[i]+"ack").value = " ... ";
					document.getElementById(ajaxTokens[i]+"ack").disabled = true;
					document.getElementById(ajaxTokens[i]+"snd").value = "X";
					break;
				default:
					document.getElementById(ajaxTokens[i]+"bel").src = "";
					document.getElementById(ajaxTokens[i]+"alm").className = "style3";
					document.getElementById(ajaxTokens[i]+"sta").value = "";
					document.getElementById(ajaxTokens[i]+"ack").value = " ... ";
					document.getElementById(ajaxTokens[i]+"ack").disabled = true;
					document.getElementById(ajaxTokens[i]+"snd").value = "X";
					break;
			}
			switch (ajaxTokens[i+6].charAt(1)) {
				case 'Y':
					document.getElementById(ajaxTokens[i]+"mnt").src = "images/maint.png";
					break;
				default:
					document.getElementById(ajaxTokens[i]+"mnt").src = "";
					break;
			}
		}
	}

	ajaxTokens = null;
	if (playalert == true) document.getElementById("warning").Play();
}

function ajaxFunction(sfid,func){ 
	if ((xmlHttpAjax = getXMLObject())== null)  return;
	var url="fleet_upd01.php?fleetid="+myFleetid+"&chk="+Math.random();
	if (sfid.length>0)  url += "&sfack="+sfid;
	if (func.length>0)  url += "&f="+func;
 	xmlHttpAjax.open("GET",url,true);
	xmlHttpAjax.onreadystatechange=ajaxFunctionReady;
 	xmlHttpAjax.send(null);
}

// 		Map Viewer Items

function doReLoad() {
	timer = 17;
	timerid=setTimeout( "refresh()", 1000 );
	dispmode = "S";
	googleReLoad(myFleetid,curcenlat,curcenlon);
}

function SetInitialMapPosition (fleetid,Lat, Lon, swLat, swLon, neLat, neLon) {
	var sw = new GLatLng(swLat,swLon);
	var ne = new GLatLng(neLat,neLon);
	var box = new GLatLngBounds (sw,ne);
	var zl = mapviewer.getBoundsZoomLevel (box);
	mapviewer.setCenter(box.getCenter(),zl);
}
//				Google Satellite Maps are here ..

var LargeMapCon;
var MapTypeCon;
var OverviewMapCon;

function googleLoad(fleetid,nnLat,nnLon,swLat, swLon, neLat, neLon) {
	if (GBrowserIsCompatible()) {
		mapviewer = new GMap2(document.getElementById("mapviewer"));
		LargeMapCon = new GLargeMapControl();
		mapviewer.addControl(LargeMapCon, new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(10,10)));
		MapTypeCon = new GMapTypeControl();
		mapviewer.addControl(MapTypeCon,new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(10, 10)));
		OverviewMapCon = new GOverviewMapControl();
		mapviewer.addControl(OverviewMapCon,new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10, 10)));

		mapviewer.setMapType(G_NORMAL_MAP);

		if (uadevice == "PC") {
			mapviewer.enableScrollWheelZoom();
			mapviewer.enableContinuousZoom();
		}

		SetInitialMapPosition (fleetid,nnLat, nnLon, swLat, swLon, neLat, neLon);

		icon_yellow = new GIcon(G_DEFAULT_ICON);
		icon_yellow.image = "images/Icon/gg_yellow.png";
		icon_blue = new GIcon(G_DEFAULT_ICON);
		icon_blue.image = "images/Icon/gg_blue.png";

		mapsrdy = 1;
		curMapBounds = mapviewer.getBounds();
		getAOIMarkers(fleetid,neLat,neLon,swLat,swLon);
		return true;
	}
	return false;
}

function googleReLoad(fleetid,nnLat,nnLon) {
	if (GBrowserIsCompatible()) {
		mapviewer = new GMap2(document.getElementById("mapviewer"));
		mapviewer.setCenter(new GLatLng (nnLat,nnLon),curzoom);

		LargeMapCon = new GLargeMapControl();
		mapviewer.addControl(LargeMapCon, new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(10,10)));
		MapTypeCon = new GMapTypeControl();
		mapviewer.addControl(MapTypeCon,new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(10, 10)));
		OverviewMapCon = new GOverviewMapControl();
		mapviewer.addControl(OverviewMapCon,new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10, 10)));
		mapviewer.setMapType(G_NORMAL_MAP);

		curMapBounds = mapviewer.getBounds();
		mapsrdy = 1;

		getAOIMarkers(fleetid,
		curMapBounds.getNorthEast().lat(),
		curMapBounds.getNorthEast().lng(),
		curMapBounds.getSouthWest().lat(),
		curMapBounds.getSouthWest().lng());
		return true;
	}
	return false;
}

function do_dispmode(dtype) {
	return;
}

function rbselect (sfid) {
	var j,m = marker_selected;
	if (m >= 0) {
		GEvent.removeListener(marker_listener[m]);
		mapviewer.removeOverlay(marker_value[m]);
		if (marker_flags[m] == 1) marker_value[m]= new GMarker(marker_pos[m], icon_yellow);
		else marker_value[m]= new GMarker(marker_pos[m], G_DEFAULT_ICON);
		marker_listener[m] = createGoogleTabListener(marker_value[m],marker_tabs[m]);
		mapviewer.addOverlay(marker_value[m]);
	}
	for (j=0; j<marker_id.length; j++) {
		if (marker_id[j] == sfid) break;
	}
	if (j >= marker_id.length) return;

	GEvent.removeListener(marker_listener[j]);
	mapviewer.removeOverlay(marker_value[j]);
	marker_value[j]= new GMarker(marker_pos[j], icon_blue);
	marker_listener[j] = createGoogleTabListener(marker_value[j],marker_tabs[j]);
	mapviewer.addOverlay(marker_value[j]);
	marker_selected = j;
}
