
var showUnitsInList=1;

function padlength(what){
	var output=(what.toString().length==1)? "0"+what : what;
	return output;
}


function getDateFromTm(tm,offset){ // offset in secs
	var date1=new Date();
	date1.setTime(tm*1000+offset*1000);
	return date1;		
}


function toggleRightPanel()  {
	if ( $("#rightPanel").hasClass('normalPanel')  || $("#rightPanel").hasClass('maxPanel') ) {
	    // minimize !!
		$("#rightPanel").removeClass('normalPanel').removeClass('maxPanel').addClass('minPanel');	
		$("#rightPanelInner").removeClass('normalPanel').removeClass('maxPanel').addClass('minPanel').hide();		
		$("#divButton").removeClass("divButtonNormal").addClass("divButtonMin");
	} else if ( $("#rightPanel").hasClass('minPanel')  ) {
		// put to normal 
		$("#rightPanel").removeClass('maxPanel').removeClass('minPanel').addClass('normalPanel');	
		$("#rightPanelInner").removeClass('maxPanel').removeClass('minPanel').addClass('normalPanel').show();		
		$("#divButton").removeClass("divButtonMin").addClass("divButtonNormal");
	} 
	
}

function displaytime(){
	serverdate=new Date();
	// serverdate.setSeconds(serverdate.getSeconds()+1);
	
	var clientTm=serverdate.getTime();
	clientTm-=tmDiff*1000;
	serverdate.setTime(clientTm);
	// make it UTC 
	// serverdate.setSeconds(-tmDiff);

	// get utc time 
	var tm=Math.floor(serverdate.getTime()/1000);
	//	var datestring=montharray[serverdate.getMonth()]+" "+padlength(serverdate.getDate())+", "+serverdate.getFullYear();
	
	clientTm+=GMToffset*1000;
	serverdate.setTime(clientTm);
	
	// make it 'offset of user'
	// serverdate.setSeconds(GMToffset);
	var timestring=padlength(serverdate.getUTCHours())+":"+padlength(serverdate.getUTCMinutes())+":"+padlength(serverdate.getUTCSeconds());
	
	//var tm=Date.UTC(serverdate.getFullYear(),serverdate.getMonth(),serverdate.getDate(),serverdate.getHours(),serverdate.getMinutes(),serverdate.getSeconds() )/1000-GMToffset ;
	
	// var tm=Math.floor(serverdate.getTime()/1000);
	
	$("#servertime").html(timestring);
	
	if (secsUntilNextUpdate <=-999) {
		$("#nextUpdateTime").html("Updates are stopped");
	} else {
		$("#nextUpdateTime").html(secsUntilNextUpdate+" secs");
		secsUntilNextUpdate--;
	}	

	if (lastTm!=0) {
		var secs_ago=tm-lastTm ;
		$("#ii_timeAgo").html(formatTimeAgo(secs_ago)+ "  ago");
		
		if (secs_ago > 300 && ! delayUpdates && lastTimeInterval!=0 ) {
			delayUpdates=true;
			$("#timeInterval").val("300");
			setUpdateInterval();
		}
	}	
}

function setAutoCenterMap(obj) {
	if  ( $("#autoCenterMap").attr("checked")  ) autoCenterMap=true;
	else autoCenterMap=false;
}

function hideCoords() {
	$("#coords").slideUp(2);
	$("#coordsHide").hide();
}

function getCoords() {
	$("#coords").load('/live_track_ajax.php',
			{ op:"showCoords",lat:$("#i_lat").html(),lon:$("#i_lon").html() }
			).slideDown(2);
	$("#coordsHide").show();
}


function hideWeather() {
	$("#weather").slideUp(2);
	$("#weatherHide").hide();
}

function getWeather() {
	// http://ws.geonames.org/findNearByWeatherJSON?formatted=true&lat=42&lng=-2&style=full
	
	/*
	{"weatherObservation": {
  "clouds": "n/a",
  "weatherCondition": "n/a",
  "observation": "OEMK 230900Z 18004KT CAVOK 39/15 Q1009",
  "windDirection": 180,
  "ICAO": "OEMK",
  "elevation": 310,
  "countryCode": "SA",
  "lng": 40,
  "temperature": "39",
  "dewPoint": "15",
  "windSpeed": "04",
  "humidity": 24,
  "stationName": "Makkah",
  "datetime": "2009-04-23 09:00:00",
  "lat": 21.4333333333333,
  "hectoPascAltimeter": 1009
}}
	*/
	$("#weather").html("loading");	
	
	$.getJSON('http://ws.geonames.org/findNearByWeatherJSON?formatted=true&style=full&callback=?',
			{ "lat":$("#i_lat").html(),"lng":$("#i_lon").html() },
	//	{ },
			function(jsonData){ 

				//$("#infoDiv").html( 'result: '+result); 
				//var jsonData = eval('(' + result + ')');
				var varNames=["stationName","countryCode","datetime",
							"windSpeed",
							"windDirection",
							"clouds",
							"weatherCondition",
							"temperature",
							"humidity",
							"lat","lng","elevation"];
							
				var html='<pre style="font-size:11px;">';
				var i;
				var varName;
				for ( i in varNames) {  
					varName=varNames[i];
					html+=varName+': '+jsonData['weatherObservation'][varName]+'\n';  
				} 
				html+="</pre>";
								
				$("#weather").html(html);						
				$("#weather").slideDown(2);
			}
	);
						
	$("#weatherHide").show();
}


function hideMoreWaypoints() {
	$("#moreWaypoints").slideUp(2);
	$("#moreWaypointsHide").hide();
}

function getMoreWaypoints() {

	$("#moreWaypoints").load('/live_track_ajax.php',
			{ op:"getNearestWaypoints",lat:$("#i_lat").html(),lon:$("#i_lon").html() }
			).slideDown(2);
	$("#moreWaypointsHide").show();
}

function getCurrentTime(ct) {
   ct=ct/60;
   h=Math.floor(ct/60);
   if (h<10) h="0"+h;
   m=Math.floor(ct % 60);
   if (m<10) m="0"+m;
   return h+":"+m;
}
	
function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	for(var ii = 0; ii < radioLength; ii++) {
		if(radioObj[ii].checked) {
			return radioObj[ii].value;
		}
	}
	return "";
}

function fadeColor( factor ) {
	var Red=255;
	var Green=Math.floor(255*factor);
	var Blue=Math.floor(255*factor);

	var r = "#";
	if(Red < 16) r += "0";
	r += Red.toString(16);

	if(Green < 16)	r += "0";
	r += Green.toString(16);

	if(Blue < 16) r += "0";
	r += Blue.toString(16);

	return r; 
}


function formatTimeAgo(secs) {
	var timeAgo ='';
	

	if (secs>3600*24) {
		timeAgo += " "+  Math.floor(secs/(3600*24)) + " days";
		secs=secs%(3600*24);
	}
	
	if (secs>3600) {
		timeAgo += " "+  Math.floor(secs/3600)+ " hrs";
		secs=secs%3600;
	}
		
	if (secs > 60 ) {
		timeAgo +=" "+  Math.floor(secs/60) + " mins";
		secs=secs%60;
	}	
		
	timeAgo += " "+ (secs) + " secs";


	return timeAgo;	
	
}


/*-------------------------------------------------------------------------------
---------------------------------------------------------------------------------

Updates related functions

---------------------------------------------------------------------------------
-------------------------------------------------------------------------------*/
function setUpdateInterval() {
	lastTimeInterval=timeInterval;
	timeInterval=$("#timeInterval").val()*1000;
	
	$("#timeInterval").stopTime();
	makeUpdates();
	
	if (timeInterval==0) {	
		secsUntilNextUpdate=-999;
	} else {
		secsUntilNextUpdate=timeInterval/1000;
		$("#timeInterval").everyTime(timeInterval,
			function(i) {
				makeUpdates();
			}
		);
	}

}

function initUpdates(){
	running = true;
	
	makeUpdates();
	
	$("#timeInterval").everyTime(timeInterval,
		function(i) {
			makeUpdates();
		}
	);
}

function makeUpdates() {
	$("#loaderDiv").html("<img src='/img/ajax-loader-small.gif'>");
	
	if ( loadedTracksList[activeTrackID]!=null) {
		updateInfo(loadedTracksList[activeTrackID]['info']['username']);
	}
	
	for ( trackID in loadedTracksList ) { 	  	  
	  var usernameOfTrack=loadedTracksList[trackID]['info']['username'];	  	 

	  if ( loadedTracksList[trackID]['control']['trackLine'] == 1 ) {
		  if ( loadedTracksList[trackID]['control']['lastTrackTm']!=1) {
		  	updateTrack(trackID);
		  }
	  }
	  
	  updateLastPoints(usernameOfTrack,trackID,false);
	  
	}
}

function updateInfo(username){
	$.post('/live_track_ajax.php',{ op:"lastInfo",username:username}, 
		function(result){ 
			var jsonData = eval('(' + result + ')');
			
			// how old is the info ?
			loadedTracksList[ jsonData['trackID'] ]['control']['lastTrackTm']=jsonData['tm'];
			fill_Info(jsonData);			
		}
	);
			
}
function fill_Info(jsonData) {

	for ( varName in jsonData ) {  
	    if ( $("#i_"+varName).length >0 ) {
	    	$("#i_"+varName).html(jsonData[varName]);  
		} else {
			//$("#infoDiv").append("#i_"+varName+" does not exists <BR>");
		}
	}  
	
	var trackID=jsonData['trackID'];
	var trackCat=loadedTracksList[trackID]['info']['gliderType'];
	var trackCatDesc=glider_type_desc[trackCat];
	
	
	for ( varName in loadedTracksList[trackID]['info'] ) {  
	    if ( $("#u_"+varName).length >0 ) {
	    	$("#u_"+varName).html( loadedTracksList[trackID]['info'][varName] );  
		} else {
			//$("#infoDiv").append("#u_"+varName+" does not exists <BR>");
		}
	} 
	
	
	if ( $("#ii_duration").length >0 ) {
	    	$("#ii_duration").html(jsonData['duration']);  
	}
	
	$("#ii_username").html(loadedTracksList[trackID]['info']['username']); 
		
	$("#ii_glider").html(loadedTracksList[trackID]['info']['glider']); 
	
	$("#ii_gliderType").html("<img src='/img/icon_cat_"+trackCat+
							 ".png' align='absmiddle' alt='"+
							 trackCatDesc+"' title='"+trackCatDesc+"'>");
	
	var lastTime=getDateFromTm(jsonData['tm'],GMToffset);
	
	var timestring=padlength(lastTime.getUTCHours())+":"+padlength(lastTime.getUTCMinutes())+":"+padlength(lastTime.getUTCSeconds());
	
	var datestring=lastTime.getUTCFullYear()+"-"+padlength(lastTime.getUTCMonth()+1)+"-"+padlength(lastTime.getUTCDate());	
	// some manual updates :
	$("#ii_last_time").html(timestring);  
	$("#ii_date_time").html(datestring+' '+timestring); 
	
	// $("#ii_date_time").html(jsonData['date']+' '+jsonData['time']);  
}


function updatePos(result,username,trackID,zoomToUser) {	
	if ( loadedTracksList[trackID]['control']['tracked'] == 0 ) {
		return;
	}
	
	if (is2d) {
		for (var i=0; i< loadedTracksList[trackID]['control']['lastPoints'].length; i++) {
		  map.removeOverlay(loadedTracksList[trackID]['control']['lastPoints'][i]);
		}
	}
	
	var jsonData = eval('(' + result + ')');
	var pts = [];
	var pointsNum=jsonData.lat.length;

	if ( loadedTracksList[trackID]['control']['lastTrackTm']==0 ) {		
		 loadedTracksList[trackID]['control']['lastTrackTm']=jsonData.tm[0];
	}
	
	var varioStr;
	for (var i=0; i<pointsNum; i++) {
		var lat=jsonData.lat[i];
		var lon=jsonData.lon[i];
		var alt=jsonData.alt[i];
		var time=jsonData.time[i];
		var speed =jsonData.sog[i];
		
		var label;
		var html ;
		
	
		if ( i == 1 )  {
			var vario=(jsonData.alt[0]-jsonData.alt[1] ) / ( jsonData.tm[0] - jsonData.tm[1]) ;
			vario=Math.floor(vario*10);
			vario/=10;
			
			
			if (showUnitsInList) {
				varioStr=vario+" m/s";	
			} else {
				varioStr=vario;	
			}
			$("#ll_vario_"+trackID).html(varioStr);
			
			if (trackID==activeTrackID) {				
				$("#ii_vario").html(vario);
				if (vario >0 ) {
					$("#ii_vario_img").html('<img src="/img/icon_up.gif" align="top">');
				} else if (vario < 0 ) {
					$("#ii_vario_img").html('<img src="/img/icon_down.gif" align="top">');
				} else {
					$("#ii_vario_img").html('');
				}
			}			
			
			var marker=loadedTracksList[trackID]['control']['marker'];	
			markerSetDescripton(marker," "+html+", "+vario+" m/s");
	
		}
		

		if ( i == 0 )  {
			
			label=username;
			
			html = time+"<br>"+jsonData.alt[i]+"m, "+jsonData.sog[i]+"km/h";
		
			if (showUnitsInList) {
				$("#ll_alt_"+trackID).html(alt+" m");
				$("#ll_speed_"+trackID).html(speed+" km/h");			
			} else {
				$("#ll_alt_"+trackID).html(alt);
				$("#ll_speed_"+trackID).html(speed);							
			}
			
			if (loadedTracksList[trackID]['control']['marker']==null){	
				var point ;
				if (is2d) {
					point = new GLatLng(lat,lon);		
				 	zoom=14;
				} else {
					var altitudeMode;
					if (loadedTracksList[trackID]['info']['typeOfTrack']=='air') {
						altitudeMode=ge.ALTITUDE_ABSOLUTE;
					}else {
						altitudeMode=ge.ALTITUDE_CLAMP_TO_GROUND;
					}
					point = ge.createPoint('');
					point.set(lat,lon,alt,altitudeMode,true,false);
				}

				loadedTracksList[trackID]['control']['marker'] = createMarker(point,label,html,markerBg);	

} 			
			setCurrentPos(trackID,lat,lon,alt,zoomToUser);

		} else {
			if (is2d) {
				lastPoint=new BdccBlock(new GLatLng(lat,lon),fadeColor( i/pointsNum ),html);
				loadedTracksList[trackID]['control']['lastPoints'].push(lastPoint); 
				map.addOverlay(lastPoint );
			}
		}
	}
	
	
				
	
}


function updateLastPoints(username,trackID,zoomToUser) {	

	if ( loadedTracksList[trackID]['control']['tracked'] == 0 ) {
		return;
	}
	
	if (running) {
	  $("#loaderDiv").html("<img src='/img/ajax-loader-small.gif'>");
	  $.post("/live_track_ajax.php",{op:"lastPoints",username:username},	
				function(data){					
					updatePos(data,username,trackID,zoomToUser);
					if (secsUntilNextUpdate>-999) {
						secsUntilNextUpdate=timeInterval/1000;
					}	
					$("#loaderDiv").html("<img src='/img/icon_ok.gif'>");
				}, "text"
			 );
	}
}


/*-------------------------------------------------------------------------------
---------------------------------------------------------------------------------

	Load initial Track info from AJAX functions
	
---------------------------------------------------------------------------------
-------------------------------------------------------------------------------*/

function loadMoreTracks(data) {					
	$("#fingMoreTracksList").html("loading... <img src='/img/ajax-loader-small.gif'>");	

	$.post('/live_track_ajax.php',
		{ op:"findTracks",
			lat:loadedTracksList[activeTrackID]['pos']['lat'],
			lon:loadedTracksList[activeTrackID]['pos']['lon'] },
			function(result){ 

				loadTracksFromAjax(result);

				displayTrackList(); 
				$("#fingMoreTracksList").html("Search again for more Tracks...");	
			}
	);	

}


function loadTaskTracks(data) {					
	$("#fingMoreTracksList").html("loading... <img src='/img/ajax-loader-small.gif'>");	

	$.post('/live_track_ajax.php',
		{ op:"findTaskTracks", taskID:taskID},
			function(result){ 
				loadTaskTracksFromAjax(result);
				displayTaskTrackList(); 
				$("#fingMoreTracksList").html("Click to Reload Task");	
			}
	);	

}


function loadTrack(trackID) {					
	$("#fingMoreTracksList").html("loading... <img src='/img/ajax-loader-small.gif'>");	

	$.post('/live_track_ajax.php',
		{ op:"findTracks", trackID:trackID },
			function(result){ 
				loadTracksFromAjax(result);
				displayTrackList(); 
				$("#fingMoreTracksList").html("Load more Tracks...");	
			}
	);	

}

function loadTracksFromAjax(result) {
	//$("#infoDiv").html( 'result: '+result); 
	
	var jsonData = eval('(' + result + ')');	
	if (jsonData.user == null ) {
		return;
	}
	var tracksNum=jsonData.user.length;
	//$("#infoDiv").append( 'tracksNum: '+tracksNum);
	
	var tID=0;
	
	for (var i=0; i<tracksNum; i++) {
		tID=jsonData.ID[i];
		// $("#infoDiv").append( ' tID: '+tID);
		if ( loadedTracksList[tID] !=null ) continue;
		
		loadedTracksList[tID]=[];
		loadedTracksList[tID]['info']=[];
		loadedTracksList[tID]['control']=[];
		loadedTracksList[tID]['pos']=[];
		loadedTracksList[tID]['info']['username']=jsonData.user[i];
		loadedTracksList[tID]['info']['trackID']=tID;
		loadedTracksList[tID]['info']['color']='00ff00';
		
		loadedTracksList[tID]['info']['glider']=jsonData.glider[i];
		loadedTracksList[tID]['info']['gliderType']=jsonData.gliderType[i];
		
		if (jsonData.gliderType[i] & 0x4000 ) 
			loadedTracksList[tID]['info']['typeOfTrack']='ground';
		else 
			loadedTracksList[tID]['info']['typeOfTrack']='air';
	
		// for testing
		//loadedTracksList[tID]['info']['typeOfTrack']='ground';
	
		
		loadedTracksList[tID]['info']['phoneModel']=jsonData.phoneModel[i];
		loadedTracksList[tID]['info']['gpsModel']=jsonData.gpsModel[i];
		loadedTracksList[tID]['info']['clientProgram']=jsonData.clientProgram[i];
		
		loadedTracksList[tID]['info']['takeoffLocation']=jsonData.takeoffLocation[i];
		loadedTracksList[tID]['info']['startTime']=jsonData.startTime[i];
		loadedTracksList[tID]['info']['gmtZone']=jsonData.gmtZone[i];

		loadedTracksList[tID]['control']['loaded']=0;
		loadedTracksList[tID]['control']['tracked']=0;
		loadedTracksList[tID]['control']['trackLine']=0;
		loadedTracksList[tID]['control']['trackPolyLinesNum']=0;
		loadedTracksList[tID]['control']['trackPolyLines']=[];
		loadedTracksList[tID]['control']['lastPoints']=[];
		loadedTracksList[tID]['control']['lastTrackTm']=0;
		loadedTracksList[tID]['control']['marker']=null;
		
		
		loadedTracksList[tID]['pos']['lat']=jsonData.lat[i];
		loadedTracksList[tID]['pos']['lon']=jsonData.lon[i];
		loadedTracksList[tID]['pos']['alt']=jsonData.alt[i];
		loadedTracksList[tID]['pos']['sog']=jsonData.sog[i];
		loadedTracksList[tID]['pos']['vario']=null;
		loadedTracksList[tID]['pos']['tm']=jsonData.tm[i];
		
		
		loadTrackToList(tID);					
	} 

}

function loadTaskTracksFromAjax(result) {
	//$("#infoDiv").html( 'result: '+result); 
	
	var jsonData = eval('(' + result + ')');	
	if (jsonData.user == null ) {
		return;
	}
	var tracksNum=jsonData.user.length;
	//$("#infoDiv").append( 'tracksNum: '+tracksNum);
	
	var tID=0;
	
	for (var i=0; i<tracksNum; i++) {
		tID=jsonData.ID[i];
		// $("#infoDiv").append( ' tID: '+tID);
		if ( loadedTracksList[tID] !=null ) continue;
		
		loadedTracksList[tID]=[];
		loadedTracksList[tID]['info']=[];
		loadedTracksList[tID]['control']=[];
		loadedTracksList[tID]['pos']=[];
		loadedTracksList[tID]['info']['username']=jsonData.user[i];
		loadedTracksList[tID]['info']['name']=jsonData.name[i];
		loadedTracksList[tID]['info']['country']=jsonData.country[i];
		loadedTracksList[tID]['info']['trackID']=tID;
		loadedTracksList[tID]['info']['color']='00ff00';
		
		loadedTracksList[tID]['info']['color']='00ff00';
		loadedTracksList[tID]['info']['color']='00ff00';
						
						
		loadedTracksList[tID]['info']['taskKm']=jsonData.taskKm[i];
		loadedTracksList[tID]['info']['taskTime']=jsonData.taskTime[i];
		loadedTracksList[tID]['info']['taskTp']=jsonData.taskTp[i];
		loadedTracksList[tID]['info']['taskResult']=jsonData.taskResult[i];
		loadedTracksList[tID]['info']['res']=jsonData.res[i];
		
		
		if (jsonData.gliderType[i] & 0x4000 ) 
			loadedTracksList[tID]['info']['typeOfTrack']='ground';
		else 
			loadedTracksList[tID]['info']['typeOfTrack']='air';
	
		// for testing
		//loadedTracksList[tID]['info']['typeOfTrack']='ground';
	
		
		loadedTracksList[tID]['control']['loaded']=0;
		loadedTracksList[tID]['control']['tracked']=0;
		loadedTracksList[tID]['control']['trackLine']=0;
		loadedTracksList[tID]['control']['trackPolyLinesNum']=0;
		loadedTracksList[tID]['control']['trackPolyLines']=[];
		loadedTracksList[tID]['control']['lastPoints']=[];
		loadedTracksList[tID]['control']['lastTrackTm']=0;
		loadedTracksList[tID]['control']['marker']=null;
		
		
		loadedTracksList[tID]['pos']['lat']=jsonData.lat[i];
		loadedTracksList[tID]['pos']['lon']=jsonData.lon[i];
		loadedTracksList[tID]['pos']['alt']=jsonData.alt[i];
		loadedTracksList[tID]['pos']['sog']=jsonData.sog[i];
		loadedTracksList[tID]['pos']['vario']=null;
		loadedTracksList[tID]['pos']['tm']=jsonData.tm[i];
		
		
		loadTrackToList(tID);					
	} 

}

/*-------------------------------------------------------------------------------
---------------------------------------------------------------------------------

	Track list related functions 
	
---------------------------------------------------------------------------------
-------------------------------------------------------------------------------*/

function makeMainTrack(trackID) {
	if (  loadedTracksList[trackID]  == null)  {
		$("#infoBox").html("Track not found in list");			
		return;
	}
	$("#trackList"+activeTrackID+" .tracksListCo2").removeClass('trackedActive');
	$("#trackList"+trackID+" .tracksListCo2").addClass('trackedActive');
	
	activeTrackID=trackID;
	activeUsername=loadedTracksList[trackID]['info']['username'];
	updateInfo(activeUsername);
	
	$("#trackMenu").hide();
}
	
function activateTracking(trackID) {
	if (  loadedTracksList[trackID]  == null)  {
		$("#infoBox").html("Track not found in list");			
		return;
	}
	
	// $("#infoDiv").append("Actiave Track "+trackID+"<BR>");	
	
	loadedTracksList[trackID]['control']['tracked']=1;
	loadedTracksList[trackID]['control']['trackLine']=1;
	
	$("#trackList"+trackID+" .toogleTrack").removeClass('notracked');
	$("#trackList"+trackID+" .toogleTrack").addClass('tracked');
	//if ( trackID == activeTrackID ) {
	//	$("#trackList"+trackID+" .tracksListCo2").addClass('trackedActive');
	//}
	$("#trackMenu").hide();

	loadTrackToMap(trackID);
	updateLastPoints(loadedTracksList[trackID]['info']['username'],trackID,true);
}

function deactivateTracking(trackID) {
	if (  loadedTracksList[trackID]  == null)  {
		$("#infoBox").html("Track not found in list");			
		return;
	}
	
	if (   trackID == activeTrackID )  {
		$("#infoBox").html("You cannot De-activate the main track");			
		return;
	}
	
	removeTrackFromMap(trackID);
	removeMarkerFromMap(trackID);
	loadedTracksList[trackID]['control']['tracked']=0;
	loadedTracksList[trackID]['control']['trackLine']=0;	
	
	$("#trackList"+trackID+" .tracksListCo2").removeClass('tracked');
	$("#trackList"+trackID+" .tracksListCo2").removeClass('trackedActive');
	$("#trackList"+trackID+" .tracksListCo2").addClass('notracked');
	$("#trackMenu").hide();
}

function removeTrackFromList(trackID) {
	if (  loadedTracksList[trackID]  == null)  {
		$("#infoBox").html("Track not found in list");			
		return;
	}
	
	if (   trackID == activeTrackID )  {
		$("#infoBox").html("You cannot remove the main track");			
		return;
	}
		
	delete loadedTracksList[trackID]  ;
	loadedTracksListNum--;
	
}

function removeTrack(trackID) {
	if ( loadedTracksListNum<=1) {
		$("#infoBox").html("Cannot remove the only one track of list");		
		return;	
	}
	
	deactivateTracking(trackID);
	removeTrackFromList(trackID);
	
	$("#trackMenu").hide();
	displayTrackList();
}

function loadTrackToList(trackID) {
	if (  loadedTracksList[trackID]  == null)  {
		$("#infoBox").html("Track not found in list");			
		return;
	}
	
	if ( loadedTracksList[trackID]['control']['loaded'] == 1 ) {	   	   
		$("#infoBox").html("track already loaded");
	} else {
		$("#infoBox").html("track loaded OK");
		
		var username=loadedTracksList[trackID]['info']['username'];
		
		loadedTracksList[trackID]['info']['color']=trackColors[trackColorCounter%trackColors.length];
		trackColorCounter++;
		
		loadedTracksList[trackID]['control']['loaded']=1;
		loadedTracksListNum++;
					
	}
}

function createActiveTrackSelect() {
	if (  loadedTracksList  == null)  {
		return;
	}
	var str="Details for <select id='selectActiveTrack' onlick='selectActiveTrack()'>";
	for ( trackID in loadedTracksList ) { 

	  if ( loadedTracksList[trackID]['control']['tracked'] == 1 ) {
		  var username=loadedTracksList[trackID]['info']['username'];	
		  var sel='';
		  if (trackID=activeTrackID) sel='selected';
		  
		  str+="<option "+sel+" value='"+trackID+"'>"+username+"</option>";
	  } 
	}	
	str+="</select>";
	$("#panel_3_header").html(str);
	
}

function displayTrackList() {
	if (  loadedTracksList  == null)  {
		$("#infoBox").html("Track List is empty");			
		return;
	}
	$("#loadedTracksList").html('');
	
	for ( trackID in loadedTracksList ) { 
	  	  
	  var username=loadedTracksList[trackID]['info']['username'];	  	 
	  var color=loadedTracksList[trackID]['info']['color'];
	  var trackedClass;
	  var trackLineChecked='';

	  if ( loadedTracksList[trackID]['control']['trackLine'] == 1 ) {
		  trackLineChecked="'checked'";
	  }
	  
	  if ( loadedTracksList[trackID]['control']['tracked'] == 1 ) {
		  trackedClass=' tracked ';
		  if ( trackID == activeTrackID ) {
		 	 trackedClass+=' trackedActive ';
		  }	
	  } else{
		  trackedClass='';
	  }
	  
	  
	  var varioStr='';
	  if (loadedTracksList[trackID]['pos']['vario']!=null) {
	  	varioStr=loadedTracksList[trackID]['pos']['vario']+" m/sec";
	  } else {
		varioStr='-';
	  }
	  // trackedClass=' tracked ';
	  var str="<div id='trackList"+trackID+"' class='trackListItem'>"+
		 "<div class='trackListSpan tracksListCo1'>&nbsp;"+
		 "<span class='colorPicker'><span>"+
		 "<input id='geColor"+trackID+"' name='geColor"+trackID+"' class='geColor' type='text' size=2 value='#"+color+"' />"+
		 
		 "</span></span> "+
		 "<div class='trackListUsername'>"+username+"</div>"+
		 
		 
  		 "</div>"+
		 "<div class='trackListSpan tracksListCo2"+trackedClass+"'>"+
		  "<div style='padding-bottom:1px; padding-top:2px; height:7px;'>"+
			// "<img src='/img/icon_x_white.gif' class='removeTrack'>"+
		  "</div>"+
		 "</div>"+
		 
		 "<div class='trackListSpan  tracksListCo3'>"+
		 "<div style='padding-bottom:1px; padding-top:2px;' id='ll_alt_"+trackID+"'>"+
		 loadedTracksList[trackID]['pos']['alt']+" m"+
		 "</div></div>"+
		 
		  "<div class='trackListSpan  tracksListCo4'>"+
		 "<div style='padding-bottom:1px; padding-top:2px;' id='ll_vario_"+trackID+"'>"+varioStr+
		 "</div></div>"+
		 
		  "<div class='trackListSpan  tracksListCo5'>"+
		 "<div style='padding-bottom:1px; padding-top:2px;' id='ll_speed_"+trackID+"'>"+
		 loadedTracksList[trackID]['pos']['sog']+" km/h"+
		 "</div></div>"+		
		 
		 "</div>";
	
			
		
		$("#loadedTracksList").append(str);
		$('#geColor'+trackID).colorPicker(); 		
		
		//$('#geColor'+trackID).change(changeTrackColor);			
		var tid=trackID;
		
		$('#geColor'+trackID).bind("change",{"trackID":tid},changeTrackColor);
		
	}	
	
	
}



function displayTaskTrackList() {
	if (  loadedTracksList  == null)  {
		$("#infoBox").html("Track List is empty");			
		return;
	}
	$("#loadedTracksList").html('');
	
	for ( trackID in loadedTracksList ) { 
	  	  
	  var username=loadedTracksList[trackID]['info']['username'];	
      var name=loadedTracksList[trackID]['info']['name'];	
	
	  var color=loadedTracksList[trackID]['info']['color'];
	  var trackedClass;
	  var trackLineChecked='';
	  var trackedLineClass='';

	  if ( loadedTracksList[trackID]['control']['trackLine'] == 1 ) {
		   trackLineChecked="'checked'";
		   trackedLineClass=' lineTracked ';
	  } else {
		   trackedLineClass=' notracked ';
	  }
	  
	  if ( loadedTracksList[trackID]['control']['tracked'] == 1 ) {
		  trackedClass=' tracked ';
		  //if ( trackID == activeTrackID ) {
		  //	 trackedClass+=' trackedActive ';
		  //}	
	  } else{
		  trackedClass=' notracked ';
	  }
	  
	  
	  var varioStr='';
	  if (loadedTracksList[trackID]['pos']['vario']!=null) {
	  	varioStr=loadedTracksList[trackID]['pos']['vario'];
	  } else {
		varioStr='-';
	  }
	  // trackedClass=' tracked ';
	  var str="<div id='trackList"+trackID+"' class='trackListItem' >"+
		 "<div class='trackListSpan tracksListCo1'  abbr='"+loadedTracksList[trackID]['info']['taskResult']+"' "+
				" alt='"+loadedTracksList[trackID]['info']['taskTime']+"' title='"+loadedTracksList[trackID]['info']['taskKm']+"'>&nbsp;"+
		 
		 "<span class='colorPicker'><span>"+
		 "<input id='geColor"+trackID+"' name='geColor"+trackID+"' class='geColor' type='text' size=2 value='#"+color+"' />"+
		 
		 "</span></span> "+
		 "<div class='trackListUsername'>"+name+"</div>"+
		 
		 
  		 "</div>"+
		 "<div class='trackListSpan toogleTrack tracksListCo2"+trackedClass+"'>"+
		  "<div style='padding-bottom:1px; padding-top:2px; height:7px;'>"+
			// "<img src='/img/icon_x_white.gif' class='removeTrack'>"+
		  "</div>"+
		 "</div>"+
		 
		 "<div class='trackListSpan toogleTrackLine tracksListCo2"+trackedLineClass+"'>"+
		  "<div style='padding-bottom:1px; padding-top:2px; height:7px;'>"+
			// "<img src='/img/icon_x_white.gif' class='removeTrack'>"+
		  "</div>"+
		 "</div>"+
		 
		 "<div class='trackListSpan  tracksListCo7'>"+
		 "<div style='padding-bottom:1px; padding-top:2px;' id='ll_dis_"+trackID+"'>"+
		 loadedTracksList[trackID]['info']['res']+
		 "</div></div>"+
		 
		 /*
		 		loadedTracksList[tID]['info']['taskKM']=jsonData.taskKm[i];
		loadedTracksList[tID]['info']['taskTime']=jsonData.taskTime[i];
		loadedTracksList[tID]['info']['taskTp']=jsonData.taskTp[i];
		loadedTracksList[tID]['info']['taskResult']=jsonData.taskResult[i];
		*/
		
		 "<div class='trackListSpan  tracksListCo3'>"+
		 "<div style='padding-bottom:1px; padding-top:2px;' class='alt' id='ll_alt_"+trackID+"'>"+
		 loadedTracksList[trackID]['pos']['alt']+
		 "</div></div>"+
		 
		  "<div class='trackListSpan tracksListCo4'>"+
		 "<div style='padding-bottom:1px; padding-top:2px;' class='vario' id='ll_vario_"+trackID+"'>"+varioStr+
		 "</div></div>"+
		 
		  "<div class='trackListSpan  tracksListCo5'>"+
		 "<div style='padding-bottom:1px; padding-top:2px;' class='speed' id='ll_speed_"+trackID+"'>"+
		 loadedTracksList[trackID]['pos']['sog']+
		 "</div></div>"+		
		 
		 "</div>";
	
			
		
		$("#loadedTracksList").append(str);
		$('#geColor'+trackID).colorPicker(); 		
		
		//$('#geColor'+trackID).change(changeTrackColor);			
		var tid=trackID;
		
		$('#geColor'+trackID).bind("change",{"trackID":tid},changeTrackColor);
		
	}	
	sortTaskList();
}


function sortTaskList() {
	$(".tracksListColHeader").removeClass('sortSelectedHeader');
	
	if (sortListBy=='result') {
		$(".trackListItem").tsort("[abbr!=GOAL]",{order:"desc",attr:"title",place:"end"});
		$(".trackListItem").tsort("[abbr=GOAL]",{order:"asc",attr:"alt",place:"start"});
		$(".tracksListCo7.tracksListColHeader").addClass('sortSelectedHeader');
	} else if (sortListBy=='name') {
		$(".trackListItem").tsort("[class=trackListUsername]",{order:"asc"});
		$(".tracksListCo1.tracksListColHeader").addClass('sortSelectedHeader');
	} else if (sortListBy=='country') {
			
		$(".tracksListCo10.tracksListColHeader").addClass('sortSelectedHeader');
	} else if (sortListBy=='vario') {	
		$(".trackListItem").tsort("[class=vario]",{order:"desc"});
		$(".tracksListCo4.tracksListColHeader").addClass('sortSelectedHeader');
	} else if (sortListBy=='alt') {		
		$(".trackListItem").tsort("[class=alt]",{order:"desc"});	
		$(".tracksListCo3.tracksListColHeader").addClass('sortSelectedHeader');
	} else if (sortListBy=='speed') {		
		$(".trackListItem").tsort("[class=speed]",{order:"desc"});
		$(".tracksListCo5.tracksListColHeader").addClass('sortSelectedHeader');
	}

}

/*-------------------------------------------------------------------------------
---------------------------------------------------------------------------------

	Track display/actions  related functions 
	
---------------------------------------------------------------------------------
-------------------------------------------------------------------------------*/


function setDisplayTrack(trackID) {

	if  ( loadedTracksList[trackID]['control']['trackLine']==0  ) {
		loadedTracksList[trackID]['control']['trackLine']=1;
		loadTrackToMap(trackID);
	} else {
		loadedTracksList[trackID]['control']['trackLine']=0;
		removeTrackFromMap(trackID);		
	}
	$("#trackMenu").hide();
}


function taskTrackLineShow(trackID) {
	if (  loadedTracksList[trackID]  == null)  {		
		return;
	}
	
	loadedTracksList[trackID]['control']['trackLine']=1;
	$("#trackList"+trackID+" .toogleTrackLine").removeClass('notracked');
	$("#trackList"+trackID+" .toogleTrackLine").addClass('lineTracked');
	loadTrackToMap(trackID);
}

function taskTrackLineHide(trackID) {
	if (  loadedTracksList[trackID]  == null)  {		
		return;
	}
	
	loadedTracksList[trackID]['control']['trackLine']=0;
	$("#trackList"+trackID+" .toogleTrackLine").addClass('notracked');
	$("#trackList"+trackID+" .toogleTrackLine").removeClass('lineTracked');
	removeTrackFromMap(trackID);		
}
