// JavaScript Document
/* changes--------------------------------------- 
IE6 fix for caching		20070222
23102007 make (taxi) appear next to taxi trakkies correctly (fixed) 
(taxi) green/red and bust/for hire tooltip
=================================================

//---js/engine.js---GW20071217---comment out http request fail
//---js/engine.js---GW20080118---for compass nav control largemapcontrol commented out
//---js/engine.js---GW20080123---replace map controls with customised
//---js/engine.js---GW20080207---remove t-mobile ad
*/

    //<![CDATA[

	
var numTrakkies = 0;

var followMeZoom = 15;

var followTrakkie;
var followMeMode = false;

var markerListened = [];


var  idx = 0; // trekkie index
var	 lat = [];
var	 lng = [];
var  trakkieId = [];

    var map;
 
var ovMap;

var mini;
var timex = 0;
	
var interval;



//============================ load ====================================
// initiallise gmap
//----------------------------------------------------------------------
    function load() {
      if (GBrowserIsCompatible()) {
        //map = new GMap2(document.getElementById("map"));
		map = new GMap2(document.getElementById("map"),{logoPassive:'true'});
        //map.addControl(new GLargeMapControl());
		//map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl());
		ovMap=new GOverviewMapControl();
		map.addControl(ovMap);
		mini=ovMap.getOverviewMap();		
		map.addControl(new google.maps.LocalSearch());

// create a local search control and add it to your map
		var lsc = new google.maps.LocalSearch(); 
		map.addControl(new google.maps.LocalSearch());
		// kml overlay
		var geoXml = new GGeoXml("http://mapgadgets.googlepages.com/cta.kml");
		map.addOverlay(geoXml);

		

        map.setCenter(new GLatLng(mapCenter.lat, mapCenter.lng), mapZoom);
		//GEvent.addListener(map, "moveend", showdata);
		document.getElementById("followme").style.display = "none";
		
		if (window.attachEvent) { 
			window.attachEvent("onresize",function(){ //IE
			var hght=document.documentElement.clientHeight;
			document.getElementById("map").style.height=hght+"px";
			});
			var hght=document.documentElement.clientHeight;
			document.getElementById("map").style.height=hght+"px";

		} else {
			document.getElementById("map").style.height="100%";
			//window.addEventListener("resize", function() {showZooms()}, false);
		}


		interval = 8; // refresh interval in seconds
		trakkies_hidden = false;
		changeBodyClass('loading','standby');
        mainController();

		// remove ad advertController();

		map.enableScrollWheelZoom();

		
      } else {
		alert('Sorry, your browser is not compatable for use with navspy');  
	  }
    }

function hideShowTrakkies() {
	if(trakkies_hidden) {
		trakkies_hidden = false;
		document.getElementById("hideShowTrakkies").innerHTML = "Hide Trakkies";
		for (var i in trakkie) {
			map.addOverlay(trakkie[i]);
		}
	} else {
		trakkies_hidden = true;
		document.getElementById("hideShowTrakkies").innerHTML = "Show Trakkies";
		for (var i in trakkie) {
			map.removeOverlay(trakkie[i]);
		}
	}
}



//-------------------------------------- load end --------------------------------

var http_request = false;
var url = 'import.php'; // ajax target


//============================ mainController ====================================
// main loop
// get data from import
// setup trakkies for map
// load onto map
//--------------------------------------------------------------------------------

function mainController() { // main controller

if(trakkies_hidden) {
	// dont process trakkies
} else { // show trakkies

// --------- get trakkiedata from import table
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...	
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	//rand=parseInt(Math.random()*99999999);
	var r=new Date().getTime();
	url = 'import.php?r='+r;
	http_request.open('GET', url, true);
	http_request.onreadystatechange = loadTrakkieData;
	http_request.send(null);
} // end show trakkies
	setTimeout('mainController()',interval*1000);


}
//---------------------------- end of mainController ------------------------------------

//============================ loadTrakkieData ====================================
//  get trakkie data from XML delivered by import.php and load in arrays
//--------------------------------------------------------------------------------
var numImportTrakkies=0;
var latImport = [];
var lngImport = [];
var userIdImport = [];
var importTaxiDriver = [];
var importTaxiStatus = [];


function loadTrakkieData() {
	try {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			if (window.ActiveXObject) { // code for IE
				var doc=new ActiveXObject("Microsoft.XMLDOM");
				doc.async="false";
				text=http_request.responseText;
				doc.loadXML(text);
			 } else {                   // code for Mozilla, Firefox, Opera, etc.
				var parser=new DOMParser();
				var doc=parser.parseFromString(http_request.responseText,"text/xml");
			 }

			var xmldoc = doc.documentElement;
			rec=0;
			text="";
			latImport = [];
			lngImport = [];
			userIdImport = [];
			importTaxiDriver = [];
			importTaxiStatus = [];


			while(xmldoc.getElementsByTagName('user_id').item(rec).firstChild.nodeValue != "end_of_data" && xmldoc.getElementsByTagName('user_id').item(rec).firstChild.nodeValue != "console_inactive") {
				userIdImport[rec]=xmldoc.getElementsByTagName('user_id').item(rec).firstChild.nodeValue;
				latImport[rec]=xmldoc.getElementsByTagName('lat').item(rec).firstChild.nodeValue;
				lngImport[rec]=xmldoc.getElementsByTagName('lng').item(rec).firstChild.nodeValue;
				importTaxiDriver[rec]=xmldoc.getElementsByTagName('taxidriver').item(rec).firstChild.nodeValue;
				importTaxiStatus[rec]=xmldoc.getElementsByTagName('taxistatus').item(rec).firstChild.nodeValue;
				//if(userIdImport[rec] == "Dillon") { // just to test trakkie - remove later
					//document.getElementById("testbox").innerHTML = userIdImport[rec] + " stat:" + importTaxiStatus[rec];
				//}
				//showLatLng(latImport[rec], lngImport[rec]);
				rec++;
			}
			if(xmldoc.getElementsByTagName('user_id').item(rec).firstChild.nodeValue == "console_inactive") {
					//alert('console INACTIVE !!!!');
					document.getElementById("data1").innerHTML = 'console INACTIVE !!!!';	
			} else {
				//showImportData();
				//trakkiesActive();
				numImportTrakkies = rec;
				putDataOnGmap();
			}
			
		} else {
			//alert('http_request FAIL');
		}
	}
	} catch(e) {}

}
//-------------------------------end of loadTrakkieData -------------------------------------------------
 	 function showImportData() {
			var i;
			var data1 = "";
			for(i in userIdImport) {
				//data1 += userIdImport[i] + ' : ' + latImport[i] + ' : ' + lngImport[i] + '<br />';
				data1 += userIdImport[i] + '<br />';
			}
			//document.getElementById("data1").innerHTML = data1;
			document.getElementById("activetrakkies").innerHTML = data1;
	 }



//============================ putDataOnGmap ====================================
// put loaded trakkie data on map
//--------------------------------------------------------------------------------
function putDataOnGmap() {
	lat= [];
	lng= [];

	updateCurrTrakkies();
	setupTrakkies();
	trackTrakkies();

	if(getTrakkie != '') {
		findTrakkie();
		getTrakkie = '';
	}
	if(getLat != '' && getLng != '') {
		findLocation();
		getLat = '';
		getLng= '';
		getMsg = '';
	}

}
//-------------------------------end of putDataOnGmap -------------------------------------------------

//============================ updateCurrTrakkies ====================================
// update position data for exiting trakkies
// scan all import data, if already matching userId set importid to zero so new marker not created
//--------------------------------------------------------------------------------
function updateCurrTrakkies() {
	getTrakkieTime();
	
	for(var i in userIdImport) {
		for(var j in trakkie) {
			//alert("userId="+userIdImport[i]);
			//alert("trakkieId="+trakkie[j].id);
			
			if(userIdImport[i] == trakkie[j].userId) {
				userIdImport[i] = 0;
				trakkie[j].lat = latImport[i];
				trakkie[j].lng = lngImport[i];
				trakkie[j].taxiDriver = importTaxiDriver[i];
				trakkie[j].taxiStatus = importTaxiStatus[i];
				trakkie[j].info = trakkieTime;
				if(trakkie[j].taxiDriver==1) {
					if(trakkie[j].taxiStatus==1) {
						trakkie[j].info = 'Taxi FOR HIRE';
					} else {
						trakkie[j].info = 'Taxi BUSY';
					}
				}
					
				//alert('lat[0]='+lat[0]);
				break;
			}
		}
	}


}
//-------------------------------end of updateCurrTrakkies -------------------------------------------------


var markers = [];
var trakkie = [];
var icon = [];


function trakkies() { // prototype for GMarker
	this.name = "glyn";
	//this.title = "glyn";
	this.id = 0; // id as in trakkie array object index
	this.userId = 0; // user id as in database
	this.followMe = false;
	this.listened = false;
	this.info;
	this.lat;
	this.lng;
	this.marked = false;
	this.taxiDriver = 0;
	this.taxiStatus = 0;
	
}
var trakkieTime;

function getTrakkieTime() {
	var d = new Date()
	var tHours = d.getHours();
	var tMins = d.getMinutes();
	var tSecs = d.getSeconds();
	trakkieTime = tHours + ':' + tMins + ':' + tSecs;
	
	
}

//============================ setupTrakkies ====================================
// create overlays for new trakkies
//--------------------------------------------------------------------------------

    function setupTrakkies() {
		//alert('setup trakkies start');
      var baseIcon = new GIcon();

      baseIcon.iconSize = new GSize(20, 34);
      baseIcon.iconAnchor = new GPoint(15,25);
      baseIcon.infoWindowAnchor = new GPoint(10,10);
	  	baseIcon.shadow = "images/icons/shadow50.png";

		baseIcon.shadowSize = new GSize(37, 34);
		baseIcon.image = "images/icons/marker.png";

      var taxiIcon = new GIcon();

      taxiIcon.iconSize = new GSize(50, 26);
      taxiIcon.iconAnchor = new GPoint(15,25);
      taxiIcon.infoWindowAnchor = new GPoint(10,10);
	  taxiIcon.image = markerIcon('taxibusy');


      var forhireIcon = new GIcon();

      taxiIcon.iconSize = new GSize(50, 26);
      taxiIcon.iconAnchor = new GPoint(15,25);
      taxiIcon.infoWindowAnchor = new GPoint(10,10);
	  taxiIcon.image = markerIcon('taxiforhire');


      var busIcon = new GIcon();

      busIcon.iconSize = new GSize(42, 14);
      busIcon.iconAnchor = new GPoint(15,25);
      busIcon.infoWindowAnchor = new GPoint(10,10);
	  busIcon.image = markerIcon('bus');

      var vanIcon = new GIcon();

      vanIcon.iconSize = new GSize(46, 26);
      vanIcon.iconAnchor = new GPoint(15,25);
      vanIcon.infoWindowAnchor = new GPoint(10,10);
	  vanIcon.image = markerIcon('van');

      var hiroIcon = new GIcon();

      hiroIcon.iconSize = new GSize(25, 35);
      hiroIcon.iconAnchor = new GPoint(15,25);
      hiroIcon.infoWindowAnchor = new GPoint(10,10);
	  hiroIcon.image = markerIcon('hiro');


      var yvanIcon = new GIcon();

      yvanIcon.iconSize = new GSize(46, 26);
      yvanIcon.iconAnchor = new GPoint(15,25);
      yvanIcon.infoWindowAnchor = new GPoint(10,10);
	  yvanIcon.image = markerIcon('yvan');


      var bikeIcon = new GIcon();

      bikeIcon.iconSize = new GSize(40, 32);
      bikeIcon.iconAnchor = new GPoint(15,25);
      bikeIcon.infoWindowAnchor = new GPoint(10,10);
	  bikeIcon.image = markerIcon('bike');

      var drstrangeIcon = new GIcon();

      drstrangeIcon.iconSize = new GSize(20, 34);
      drstrangeIcon.iconAnchor = new GPoint(15,25);
      drstrangeIcon.infoWindowAnchor = new GPoint(10,10);
	  drstrangeIcon.image = markerIcon('drstrange');
	  
	  
		for (var i in userIdImport) {
			if(userIdImport[i] == 0) {
				continue;
			}

			idx = numTrakkies;
			numTrakkies++;

			var currTrakkie = userIdImport[i];
			
			//getTrakkieTime();
			var trakkieTitle = currTrakkie;
			
			if(importTaxiDriver[i]=='1') {
				icon = new GIcon(taxiIcon);
			} else if(importTaxiDriver[i]=='2') {
				icon = new GIcon(busIcon);
			} else if(importTaxiDriver[i]=='3') {
				icon = new GIcon(vanIcon);
			} else if(importTaxiDriver[i]=='4') {
				icon = new GIcon(hiroIcon);
			} else if(importTaxiDriver[i]=='5') {
				icon = new GIcon(yvanIcon);
			} else if(importTaxiDriver[i]=='6') {
				icon = new GIcon(bikeIcon);
			} else if(importTaxiDriver[i]=='7') {
				icon = new GIcon(drstrangeIcon);

			} else {
				icon = new GIcon(baseIcon);
			}

			
			trakkies.prototype =  new GMarker(new GLatLng(latImport[i], lngImport[i]),{ title: trakkieTitle, icon: icon , zIndexProcess:morder});
			

			trakkie[idx] = (new trakkies());
			trakkie[idx].id=idx;
			trakkie[idx].lat=latImport[i];
			trakkie[idx].lng=lngImport[i];

		  	trakkie[idx].userId = userIdImport[i];
		  	trakkie[idx].name = userIdImport[i];
			trakkie[idx].info = userIdImport[i];
			trakkie[idx].taxiDriver = importTaxiDriver[i];
			trakkie[idx].taxiStatus = importTaxiStatus[i];
			
			map.addOverlay(trakkie[idx]);
			trakkie[idx].listened = false;
			

		}
		
    }
// ------------------------------------ end ofsetupTrakkies-----------------------------------------------
var tp;
var posneg = 0;
// ****** followme functions *****

	 function trakkiesInView() {
		var data3 = "";
		var tivFilter = "";
		var tivTrakkie = "";
		var tivFilterLen = 0;
		tivFilter = document.getElementById("tiv_filter").value;
		tivFilter = tivFilter.toLowerCase();
		tivFilterLen = tivFilter.length;

		for (var i in trakkie) {
			if(viewArea.contains(trakkie[i].getPoint())) {
				tivTrakkie = trakkie[i].name.toLowerCase();		
				if(tivFilterLen == 0 || tivTrakkie.indexOf(tivFilter) == 0) {
					data3 += '<span class="trakkie_rollover" onClick="markTrakkie(' + i + ')">'+trakkie[i].name + isTrakkieTaxi(i) + '</span><br />';
				}
			}
		}
		document.getElementById("trakkies").innerHTML = data3;
		//alert(data3);
	 }
//-------------------------------------------------------------------------------------

	function isTrakkieTaxi(t) { // return taxi label
		var taxi;
		if(trakkie[t].taxiDriver=='1') {
			if(trakkie[t].taxiStatus=='1') {
				taxi = '<font color="#00FF00">(taxi)</font>';
			} else {
				taxi = '<font color="#FF4646">(taxi)</font>';
			}
		} else if(trakkie[t].taxiDriver=='2') {  // really a bus !!
			if(trakkie[t].name == 'Jebba') {
				taxi = '<font color="#33FFFF">(bus 43)</font>';
			} else if(trakkie[t].name == 'Mick') {
				taxi = '<font color="#33FFFF">(bus 171)</font>';
			}
		} else if(trakkie[t].taxiDriver=='3') {  // really a van !!
			taxi = '<font color="#cccccc">(UPS)</font>';
		} else if(trakkie[t].taxiDriver=='5') {  // really a van !!
			taxi = '<font color="#cccccc">(DHL)</font>';
		} else if(trakkie[t].taxiDriver=='6') {  // really a van !!
			taxi = '<font color="#ccccff">(Pizza Hut)</font>';
		} else if(trakkie[t].taxiDriver=='7') {  // really a van !!
			taxi = '<font color="#ccccff">(Mystic)</font>';

		} else {
			taxi = '';
		}
		return taxi;
	}

 	 function trakkiesActive() {
			var data1 = "";
			var taFilter = "";
			var taTrakkie = "";
			var taFilterLen = 0;
			taFilter = document.getElementById("ta_filter").value;
			taFilter = taFilter.toLowerCase();
			taFilterLen = taFilter.length;

			for(var i in trakkie) {
				taTrakkie = trakkie[i].name.toLowerCase();	
				if(taFilterLen == 0 || taTrakkie.indexOf(taFilter) == 0) {
					data1 += '<span class="trakkie_rollover" onClick="markTrakkie(' + i + ')" title="' + trakkie[i].info + '">'+trakkie[i].name + isTrakkieTaxi(i) + '</span><br />';
				/*	data1 += '<span class="trakkie_rollover" id="tam_' +  trakkie[i].name + '"><img src="images/icons/i/mobile_on.png" height="16" width="16" alt="online mobile"></span><span class="trakkie_rollover" id="taw_' +  trakkie[i].name + '"><img src="images/icons/i/web_on.png" height="16" width="16" alt="offline web"></span><span class="trakkie_rollover" onClick="markTrakkie(' + i + ')"> '+trakkie[i].name + '</span><br />'; */
				}
			}
			//document.getElementById("data1").innerHTML = data1;
			document.getElementById("activetrakkies").innerHTML = data1;
	 }

//-------------------------------------------------------------------------------------
	function findTrakkie() { // find trakkie from header input on entry to site (query string)
		var trakkieFound = false;
		for(var i in trakkie) {
			taTrakkie = trakkie[i].name.toLowerCase();	
			if(taTrakkie == getTrakkie) {
				markTrakkie(i);
				dashboardZoomIn();
				trakkieFound = true;
			}

		}
		if(!trakkieFound) {
			if(getTrakkieLastLat != '') {
				var idx = trakkie.length;
				trakkies.prototype =  new GMarker(new GLatLng(getTrakkieLastLat, getTrakkieLastLng),{ title: getTrakkie, icon: icon , zIndexProcess:morder});
			

				trakkie[idx] = (new trakkies());

				trakkie[idx].id=idx;
				trakkie[idx].lat=getTrakkieLastLat;
				trakkie[idx].lng=getTrakkieLastLng;

		  		trakkie[idx].userId = getTrakkie;
		  		trakkie[idx].name = getTrakkie;
				trakkie[idx].info = getTrakkie;
				map.addOverlay(trakkie[idx]);
				trakkie[idx].listened = false;
				markTrakkie(idx);
				dashboardZoomIn();
				trakkieFound = true;


			} else {
				alert('sorry '+getTrakkie+' not currently active on navspy');	
			}
		}
		
	
	}
	
	function findLocation() {
		map.setCenter(new GLatLng(getLat, getLng),15);	
		if(getMsg != '') {
			map.openInfoWindow(map.getCenter(),
                           document.createTextNode(getMsg));
		}
		
	}
//-------------------------------------------------------------------------------------
	var dashTrakkie;
	var trakkieWebsite;
	function markTrakkie(j) {
		var off = false;
		var currTrakkie = trakkie[j].name;
		if(off) {

		if(trakkie[j].marked) {
			if(trakkie[j].taxiDriver == '1') {
				setDashTaxiStatus(j);
				if(trakkie[j].taxiStatus > 0) {
					trakkie[j].setImage(markerIcon('taxiforhire'));
				} else {
					trakkie[j].setImage(markerIcon('taxibusy'));					
				}
				
			} else {
				trakkie[j].setImage(markerIcon('normal'));
			}
			trakkie[j].marked = false;
		} else {
			//for(var i in trakkie) {
			//	map.removeOverlay(trakkie[i]);
			//	if(i != j) {
			//		map.addOverlay(trakkie[i]);
			//	}
			//}
			//map.addOverlay(trakkie[j]);	
			setDashTaxiStatus(j);
			if(trakkie[j].taxiDriver == '1') {						
				if(trakkie[j].taxiStatus > 0) {
					trakkie[j].setImage(markerIcon('taxiforhirefollow'));
				} else {
					trakkie[j].setImage(markerIcon('taxibusyfollow'));
				}
			} else {
				trakkie[j].setImage(markerIcon('normalfollow'));
			}
			trakkie[j].marked = true;			
		}
		} // mark trakkies off
		
		if(trakkie[j].taxiDriver == '1') {
			// ***** this may be a temp solution - stop client from ordering another taxi
			if(lastTaxi.length > 0 && lastTaxi != trakkie[j].name) {
				if(!confirm('You already previously ordered a taxi from ' + lastTaxi + '\nPlease confirm that you wish to order another taxi by clicking OK')) {
					return;
				} else {
					lastTaxi = '';	
				}
			}
				
			setDashTaxiStatus(j)
			dashboardOff();
			tdashboardOn();
			document.getElementById("tdash_taxi_driver").innerHTML = trakkie[j].name;
			document.getElementById("tdash_taxi_mug_shot").innerHTML = '<img src="images/faces/' + trakkie[j].name.toLowerCase() + '.png" />';
			//alert(document.getElementById("tdash_taxi_mug_shot").innerHTML);
		} else {
			tdashboardOff();
			dashboardOn();
			document.getElementById("dashtname").innerHTML = trakkie[j].name
		}
		trakkieWebsite = '';
		dashTrakkie = j; 
	
	}
	
function setDashTaxiStatus(j) {
		//alert(document.getElementById("tdash_taxi_driver").innerHTML + ':' + trakkie[j].name);
		if(trakkie[j].taxiStatus > 0) {
			if( document.getElementById("tdash_taxi_driver").innerHTML == trakkie[j].name) {
				document.getElementById("tdash_taxi_status").style.color = '#00FF00';
				document.getElementById("tdash_taxi_status").innerHTML = 'FOR HIRE'; 
			}
		} else {
			if( document.getElementById("tdash_taxi_driver").innerHTML == trakkie[j].name) {
					document.getElementById("tdash_taxi_status").style.color = '#FF0000';
					document.getElementById("tdash_taxi_status").innerHTML = 'BUSY';
			}
			
		}

}
//-------------------------------------------------------------------------------------

function setTaxiIcon(i) {
		if(trakkie[i].taxiDriver == '1') {
				if(trakkie[i].taxiStatus > 0) {
					trakkie[i].setImage(markerIcon('taxiforhire'));
					if( document.getElementById("tdash_taxi_driver").innerHTML == trakkie[i].name) {
						document.getElementById("tdash_taxi_status").innerHTML = 'FOR HIRE';
						document.getElementById("tdash_taxi_status").style.color = '#00FF00';
					}
				} else {
					trakkie[i].setImage(markerIcon('taxibusy'));
					if( document.getElementById("tdash_taxi_driver").innerHTML == trakkie[i].name) {
						document.getElementById("tdash_taxi_status").innerHTML = 'BUSY';
						document.getElementById("tdash_taxi_status").style.color = '#FF0000';
					}
				}
						
		}		
	
	
}


//**************************************************************************
// trackttrakkie - main trakkie functions
//=========================================================================


	 function trackTrakkies() {
			
			if(followMeMode) { // follow me
				tp = new GLatLng(trakkie[followTrakkie].lat, trakkie[followTrakkie].lng);
					//map.panTo(tp);
					map.setCenter(tp, followMeZoom);
				trakkie[followTrakkie].setPoint(tp);
				setTaxiIcon(followTrakkie);
			} else { // global scan


				viewArea = map.getBounds();

				
				dispidx = 1;
				trakkiesInView();
				trakkiesActive();
				
				
				for (var i in trakkie) {
					
					if(viewArea.contains(trakkie[i].getPoint())) {
						setTaxiIcon(i);
						trakkie[i].setPoint(new GLatLng(trakkie[i].lat, trakkie[i].lng));
						trakkie[i].title = 'glyn';
						if(!trakkie[i].listened) {
							GEvent.addListener(trakkie[i], "click", followMeOn);
							trakkie[i].listened = true;
							
						}
					} else {
						GEvent.clearListeners(trakkie[i], "click");	
						trakkie[i].listened = false;
					}
				}


			} // end if followme mode

			//setTimeout('follow()',1000);


	 } // end follow


	function gotoTrakkie(j) {
		var msg = "<b>"+ trakkie[j].name + "</b><br />" + "<span onClick='map.setZoom(17)'>zoom in</span><br />Click on marker to Follow Me";
		trakkie[j].openInfoWindowHtml(msg);
		map.setCenter(new GLatLng(trakkie[j].lat, trakkie[j].lng), 14);	
	
	}
	


	function doZoom(j) {
		map.setZoom(16);
		
	}
	


// --------------------- followme on -------------------------------

 	 function followMeOn() { //  followme mode for this trakkie
	 
		for(i in trakkie) {
			if(i == this.id) {
	 			markTrakkie(i);
				GEvent.clearListeners(trakkie[i], "click");
				trakkie[i].listened = false;
			} else {
				if(trakkie[i].listened == false) {
					GEvent.addListener(trakkie[i], "click", followMeOn);	
					trakkie[i].listened = true;
				}
				
			}
		}
		
		
		
		
	 	//document.getElementById("trakkies").style.display = "none";
		document.getElementById("followme").style.display = "block";
		for(i in trakkie) {

				GEvent.clearListeners(trakkie[i], "click");
				trakkie[i].listened = false;

		}

		this.followMe = true;
		followMeMode = true;
		followTrakkie = this.id;
		document.getElementById("trackIndicator").innerHTML = '** tracking **';
		map.disableDragging();
		map.setZoom(followMeZoom);
		GEvent.addListener(map, "click", followMeOff);
		//document.getElementById("fm2").innerHTML = trakkie[followTrakkie].name;
		//document.getElementById("fm3").innerHTML = trakkie[followTrakkie].info;
		
	}


 	 function followMeOff() { //  followme mode for this trakkie
	 
	 
	 
	 	//document.getElementById("trakkies").style.display = "block";
		document.getElementById("followme").style.display = "none";
		followMeMode = false;
		this.followMe = false;
		for (i in trakkie) {
			GEvent.clearListeners(trakkie[i], "click");
		}
		document.getElementById("trackIndicator").innerHTML = 'track';
		map.enableDragging();
		map.setZoom(mapZoom);

		//dispInfo("followme off");		
	}


 	 function showdata() {
		var center = map.getCenter();
		var zoom = map.getZoom();
		a = center.toString();
		b = a.split(",");
		c = b[0].split("(");
		d = b[1].split(")");
		latc = c[1];
		lngc = d[0];
		
			document.getElementById("dashmaplat").innerHTML = latc;
		  document.getElementById("dashmaplng").innerHTML = lngc;
		  
		  //document.getElementById("zoomOnMap").innerHTML = zoom.toString();		 		 
	 }

function gotoRome() {
		followMeMode = false;
		for (i in trakkie) {
			GEvent.clearListeners(trakkie[i], "click");
		}
		map.enableDragging();

	map.setCenter(new GLatLng(41.900232768420246, 12.392578125), 10);		
	
}

function gotoLondon() {
		followMeMode = false;
		for (i in trakkie) {
			GEvent.clearListeners(trakkie[i], "click");
		}
		map.enableDragging();

	map.setCenter(new GLatLng(51.4978433510224, -0.12325286865234375), 12);		
	
}

function gotoUK() {
		followMeMode = false;
		for (i in trakkie) {
			GEvent.clearListeners(trakkie[i], "click");
		}
		map.enableDragging();

	map.setCenter(new GLatLng(54.749990970226925, -3.1201171875), 5);		
	
}

function gotoItalia() {
		followMeMode = false;
		for (i in trakkie) {
			GEvent.clearListeners(trakkie[i], "click");
		}
		map.enableDragging();

	map.setCenter(new GLatLng(41.900232768420246, 12.392578125), 6);		
	
}

function gotoEurope() {
		followMeMode = false;
		for (i in trakkie) {
			GEvent.clearListeners(trakkie[i], "click");
		}
		map.enableDragging();

	map.setCenter(new GLatLng(50.40151532278236, 12.392578125), 4);		
	
}

function gotoWorld() {
		followMeMode = false;
		for (i in trakkie) {
			GEvent.clearListeners(trakkie[i], "click");
		}
		map.enableDragging();

	map.setCenter(new GLatLng(0, 0), 2);		
	
}


function gotoSouthKen() {
		followMeMode = false;
		for (i in trakkie) {
			GEvent.clearListeners(trakkie[i], "click");
		}
		map.enableDragging();

	map.setCenter(new GLatLng(51.49565252945547, -0.17998695373535156), 14);		
	
}


function changeBodyClass(from, to) {
document.body.className = document.body.className.replace(from, to);
return false;
}

function morder(marker,b) {
        return 1;
}

function markerIcon(iconType) {
	var iconImage;
	switch(iconType) {
		case('normal'):
			iconImage = "images/icons/marker.png";
			break;
		case('normalfollow'):
			iconImage = "images/icons/marker_follow1.png";
			break;


		case('taxibusy'):
			iconImage = "images/icons/taxi_busy.png";
			break;

		case('taxiforhire'):
			iconImage = "images/icons/taxi_for_hire.png";
			break;

		case('taxibusyfollow'):
			iconImage = "images/icons/taxi_busy_follow.png";
			break;

		case('taxiforhirefollow'):
			iconImage = "images/icons/taxi_for_hire_follow.png";
			break;

		case('bus'):
			iconImage = "images/icons/bus.png";
			break;

		case('van'):
			iconImage = "images/icons/van.png";
			break;

		case('yvan'):
			iconImage = "images/icons/van_yellow.png";
			break;


		case('hiro'):
			iconImage = "images/icons/hiro.png";
			break;


		case('bike'):
			iconImage = "images/icons/biker.png";
			break;

		case('drstrange'):
			iconImage = "images/icons/drstrange.png";
			break;


		default:
			iconImage = "images/icons/marker.png";
			break;

	}
	return iconImage;
}


	  
    //]]>
