function tickCamera(glidernumber) {

	if (camerafollow == glidernumber) {
		if (trim(cameratype) == "COCKPIT") {
			
//			logger('cp - Following with '+trim(cameratype)+' view :'+camerafollow);
			
			var camera = ge.getView().copyAsCamera(ge.ALTITUDE_ABSOLUTE);
			var lo = gliders[camerafollow].model.getLocation();
			camera.setAltitude(lo.getAltitude());
			camera.setLatitude(lo.getLatitude());
			camera.setLongitude(lo.getLongitude());
			camera.setHeading(gliders[camerafollow].curdegrees);
			camera.setRoll(gliders[camerafollow].roll*-1);
			camera.setTilt(75);
//			logger(gliders[camerafollow].model.getOrientation.getRoll());
			ge.getView().setAbstractView(camera);
		} else {
			
			
		
//	logger('non cp - Following with '+trim(cameratype)+' view :'+camerafollow);
		
		  var camera = ge.getView().copyAsLookAt(ge.ALTITUDE_ABSOLUTE);
		  var lo = gliders[camerafollow].model.getLocation();
	
		  camera.setAltitude(lo.getAltitude());
		  var mycamangle = camangle;
		  
		  if (trim(cameratype) == "FOLLOWING") {
			  mycamangle=camangle;
		  }
			
		  if (trim(cameratype) == "FIXEDFOLLOW") {
			  mycamangle=gliders[camerafollow].curdegrees+camangle;
		  }	

	
		  var la = ge.createLookAt('');
		  la.set(lo.getLatitude(), lo.getLongitude(),
		         lo.getAltitude(),
		         ge.ALTITUDE_ABSOLUTE,
		         fixAngle(mycamangle+90),
		         camtilt, /* tilt */
		         camrange /* range */         
		         );
	
		  ge.getView().setAbstractView(la);
		}
	}
}


function camadjust(angle,tilt,range) {
	camangle=camangle+angle;
	camtilt=camtilt+tilt;
	camrange=camrange+range;
}


function changetopbanner() {
	

	if (camerafollow > 0)  {

		document.getElementById('current_name').innerHTML=pilotNames[camerafollow];
		document.getElementById('current_pos').innerHTML="Heading to TP"+gliders[camerafollow].n+" ("+(Math.round(gliders[camerafollow].d*10))/10+"km)";
		document.getElementById('current_flag').innerHTML="<img src='/gliding_visuals/images/flags/"+pilotFlags[camerafollow]+".png' alt='Flag' style='vertical-align: bottom;' />";
	} else {
		
		document.getElementById('current_name').innerHTML="OVERVIEW";
		document.getElementById('current_name').innerHTML="CAMERA";
		document.getElementById('current_pos').innerHTML="";
		document.getElementById('current_flag').innerHTML="";
		
	}
		
	
}

function showCam(camera,extras) {

	// FORCE alt sorting
	//sortMode = "alt";


	var def=camera.def;
	cameratype=camera.type;

	if (trim(cameratype) == "VIDEO" && trim(lastdef) == trim(def)) {
		//	logger('ignoring new camera as is VIDEO and same as before: '+def);

	} else {
		
		ge.getOptions().setFlyToSpeed(4.0);
		lastdef=def;
		if (Math.round(camera.pilot) > 0)  {camerafollow=camera.pilot;}

		var mySplitResult = def.split("|");

		if (cameratype == "FOLLOWING") {
			
			try {
				camtilt=Math.round(mySplitResult[0]);
				camrange=Math.round(mySplitResult[1]);
				camangle=Math.round(mySplitResult[2]);
				maxtraillength=Math.round(mySplitResult[3]);
				labeloffset=Math.round(mySplitResult[4]);
				labelscale=Math.round(mySplitResult[5]);
				aircraftscale=Math.round(mySplitResult[6]);	
				
				//layer_borders=Boolean(mySplitResult[7]);
				//layer_buildings=Boolean(mySplitResult[8]);
				//layer_buildings_low_resolution=Boolean(mySplitResult[9]);
				layer_roads=trim(mySplitResult[10]);
				//layer_terrain=Boolean(mySplitResult[11]);
				
				// never change sort mode!!!
				//sortMode=trim(mySplitResult[12]);
				layer_heatmap=trim(mySplitResult[13]);
				layer_grey=trim(mySplitResult[14]);
			} catch (err) {}

			swapvideo('map3d','');


		} else if (cameratype == "FIXEDFOLLOW") {

			try {
				camtilt=Math.round(mySplitResult[0]);
				camrange=Math.round(mySplitResult[1]);
				camangle=Math.round(mySplitResult[2]);
				maxtraillength=Math.round(mySplitResult[3]);
				labeloffset=Math.round(mySplitResult[4]);
				labelscale=Math.round(mySplitResult[5]);
				aircraftscale=Math.round(mySplitResult[6]);	
				//layer_borders=Boolean(mySplitResult[7]);
				//layer_buildings=Boolean(mySplitResult[8]);
				//layer_buildings_low_resolution=Boolean(mySplitResult[9]);
				layer_roads=trim(mySplitResult[10]);
				//layer_terrain=Boolean(mySplitResult[11]);
				
				// never change sort mode!!!
				//sortMode=trim(mySplitResult[12]);
				layer_heatmap=trim(mySplitResult[13]);
				layer_grey=trim(mySplitResult[14]);
			} catch (err) {}
		
			swapvideo('map3d','');	


		} else if (cameratype == "FIXED") {
	
			try {		
				camtilt=Math.round(mySplitResult[0]);
				lookatrange=Math.round(mySplitResult[1]);
				lookatangle=Math.round(mySplitResult[2]);
				
				maxtraillength=Math.round(mySplitResult[3]);
				labeloffset=Math.round(mySplitResult[4]);
				labelscale=Math.round(mySplitResult[5]);
				aircraftscale=Math.round(mySplitResult[6]);	
				
				//layer_borders=Boolean(mySplitResult[7]);
				//layer_buildings=Boolean(mySplitResult[8]);
				//layer_buildings_low_resolution=Boolean(mySplitResult[9]);
				layer_roads=trim(mySplitResult[10]);
				//layer_terrain=Boolean(mySplitResult[11]);	
			
				lookatx=Math.round(mySplitResult[12]*1000000000)/1000000000;
				lookaty=Math.round(mySplitResult[13]*1000000000)/1000000000;
				lookatz=Math.round(mySplitResult[14]);
				
				lookattilt=Math.round(mySplitResult[15]*100000)/100000;
				camroll=Math.round(mySplitResult[16]*100000)/100000;
				
				camx=Math.round(mySplitResult[17]*1000000000)/1000000000;
				camy=Math.round(mySplitResult[18]*1000000000)/1000000000;
				camz=Math.round(mySplitResult[19]);
				// never change sort mode!!!
				//sortMode=trim(mySplitResult[20]);
				layer_heatmap=trim(mySplitResult[21]);
				layer_grey=trim(mySplitResult[22]);
			} catch (err) {}
		
			//	logger('putting fixed view to camera: '+lookatx+' '+lookaty+' '+lookatrange);	

			var camera = ge.getView().copyAsCamera(ge.ALTITUDE_ABSOLUTE);

			camera.setLatitude(camx);
			camera.setLatitude(camy);
			camera.setAltitude(camz);
			camera.setRoll(camroll);

	
			var la = ge.createLookAt('');
			la.set(lookatx, lookaty,
			         lookatz,
			         ge.ALTITUDE_ABSOLUTE,
			         fixAngle(lookatangle),
			         lookattilt, /* tilt */
			         lookatrange /* range */         
			         );

			ge.getView().setAbstractView(la);
		
	
			camerafollow=0;
			swapvideo('map3d','');	
		} else if (cameratype == "VIDEO") {

			var service="streaming";
			videofile=mySplitResult[0];
			swapvideo('video',videofile,service,'rtmp');
		
		} else if (cameratype == "LIVE") {
			var service="live";
			videofile=mySplitResult[0];
			swapvideo('video',videofile,service,'rtsp');
		
		} else if (cameratype == "COCKPIT") {
			swapvideo('cockpit');
	
		} else if (cameratype == "HTML") {
		
			htmlfile=mySplitResult[0];			
			swapvideo('html',htmlfile);
		} else {
			
		}

		ge.getOptions().setFlyToSpeed(ge.SPEED_TELEPORT);

//	ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, layer_borders);
//	ge.getLayerRoot().enableLayerById(ge.LAYER_BUILDINGS, layer_buildings);
//	ge.getLayerRoot().enableLayerById(ge.LAYER_BUILDINGS_LOW_RESOLUTION, layer_buildings_low_resolution);
//	ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, layer_roads);
//	ge.getLayerRoot().enableLayerById(ge.LAYER_TERRAIN, layer_terrain);
//	ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, layer_borders);

	}

	changetopbanner();

	// if we want the grey overlay on, then add
	if (layer_grey == "true") {	
		ge.getFeatures().appendChild(greyoverlay);
	} else {
		ge.getFeatures().removeChild(greyoverlay);
	}


	// if we want the roads overlay on, then add
	if (layer_roads == "true") {	
		ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, true);
	} else {
		ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, false);
	}

}



function swapvideo(panel,url,service,protocol) {

	logger('swapping to panel :'+panel+' service :'+service);

	document.getElementById('vidoverlay').style.visibility="hidden";

	document.getElementById('map3d').style.visibility="hidden";

	
	try { document.getElementById('audioContainer').style.visibility="hidden"; } catch(err) {}
	try { document.getElementById('htmlContainer').innerHTML="";} catch(err) {}

	try {
		document.getElementById('htmlContainer').style.width="1px";
		document.getElementById('htmlContainer').style.height="1px";
	} catch(err) {}
	
	try {
		document.getElementById('contentFrame').style.visibility="hidden";
		document.getElementById('htmlContainer').style.visibility="hidden";
	} catch (err) {}

	
	if (panel == 'video') {
		document.getElementById('vidoverlay').style.visibility="visible";	
		ge.getWindow().setVisibility(false);
	
		var flashvars = {};
		flashvars.linkfromdisplay = "true";
		flashvars.autostart = "true";
		flashvars.height = "385";
		flashvars.width = "600";
		flashvars.repeat = "true";
		flashvars.displayheight = "385";
		flashvars.displaywidth = "600";
		flashvars.controlbar = "none";
		flashvars.icons = "false";
		flashvars.file = "http://" + escape("rrr.sz.xlcdn.com/?user=Yellowbrick&file="+url+"&ref=" + document.location.href + "&type="+service+"&service=wowza&protocol="+protocol+"&port=80&output=smil");
		//flashvars.file = escape(url);
		flashvars.type = "vdox";
		var params = {};
		params.menu = "true";
	
		params.allowscriptaccess = "always";
		params.allowfullscreen = "false";
		var attributes = {};
		attributes.id = "vidoverlay";
		attributes.name = "vidoverlay";
		swfobject.embedSWF("/gliding_visuals/images/player.swf?" + (Math.round(1000 * Math.random())), "vidoverlay", "600", "385", "8","expressInstall.swf", flashvars, params, attributes);
		
		player = document.getElementById('vidoverlay');
	
		// player.addModelListener("JWPLAYER_PLAYER_STATE","endVideo");
	}
	
	if (panel == 'map3d') {
		ge.getWindow().setVisibility(true);
		document.getElementById('map3d').style.visibility="visible";	
	
		try {
			player.sendEvent("STOP","true");
		} catch (err) {}
	}
	
	if (panel == 'html') {
		document.getElementById('htmlContainer').style.visibility="visible";	
		document.getElementById('htmlContainer').innerHTML="<iframe width='622' height='385' id='contentFrame' frameborder='0' src='"+url+"?rnd="+tcf+"' style='overflow-x: hidden;overflow-y: scroll;'></iframe>";	


		document.getElementById('htmlContainer').style.width="622px";
		document.getElementById('htmlContainer').style.height="385px";

		try {
			window.frames['contentFrame'].document.location.href = url;
		} catch (err) {}	

		try {
			player.sendEvent("STOP","true");
		} catch (err) {}
	}

	if (panel == 'audio') {
		document.getElementById('audioContainer').style.visibility="visible";	
		try {
			player.sendEvent("STOP","true");
		} catch (err) {}
	}

	if (panel == 'cockpit') {
		ge.getWindow().setVisibility(true);

		document.getElementById('map3d').style.visibility="visible";

		try {
			player.sendEvent("STOP","true");
		} catch (err) {}
	}	
}
