// JavaScript Document
//===========================================================================================
//			CREAR, ELIMINAR O MODIFICAR LOS AVIONES DE UNA ZONA
//===========================================================================================


function CambiosProvinciaPlanes(tships,tinfos)		//QUITARRREN EL SWF
{
	if(GEisopen)
	{
		waitships = tships; 
		waitinfos = tinfos;
		screenOverlayFoto.getOverlayXY().setX(0);
		Terminado();
	}
}

function BorrarProvinciaPlanes(tships)
{
	waitborrarships = tships;
}

function RCambiosProvinciaPlanes()
{
//============================================primero los que haya que borrar
	if(indiceBorrar < borrarships.length)
	{
		currentShip = borrarships[indiceBorrar];
		indiceBorrar++;
		tiemposPlacemark[currentShip.modeS] = 0;
		if(pShipPlacemark[currentShip.modeS] != null)
		{
			ge.getFeatures().removeChild(pShipPlacemark[currentShip.modeS]); 
			pShipPlacemark[currentShip.modeS] = null
		}
		if(trackPlacemark[currentShip.modeS] != null)
		{
			ge.getFeatures().removeChild(trackPlacemark[currentShip.modeS]); 
			trackPlacemark[currentShip.modeS] = null;
		}
		if(modelos3DPlacemark[currentShip.modeS] != null)
		{
			ge.getFeatures().removeChild(modelos3DPlacemark[currentShip.modeS]); 
			modelos3DPlacemark[currentShip.modeS] = null;
		}
	}
//============================================despues los que haya que modificar
    var cambiaTarget = false;
	var cambiaCurso = 0;
	if(indiceMover < rships.length)
	{
		currentShip = rships[indiceMover];
		currentInfo = rinfos[indiceMover];
		tiemposPlacemark[currentShip.modeS] = 8;
		
		groundAltitude = ge.getGlobe().getGroundAltitude(currentShip.latitude, currentShip.longitude);
//		altura = 0.3048*(currentShip.altitude) - groundAltitude;
		altura = 0.27721*(currentShip.altitude) - groundAltitude;
		if(altura < 0) altura = 0;
		currentShip.altitude = altura;
		rships[indiceMover].altitude = altura;
		
		indiceMover++;
//===================================================================		
		if(pShipPlacemark[currentShip.modeS] == null)CreatePeloto("http://www.localizatodo.com/mapa/ge/images/icon_plane.png",currentShip.modeS,currentShip.callSign);
		if(modelos3DPlacemark[currentShip.modeS] == null)NewCreate3dPlacemarkPlane(currentShip);

		var strInfo = "<b><font color='#800000'>"+currentShip.callSign+"<br>"+currentShip.modeS+"</font></b><br><table bgcolor='#d0d0ff' width='220'  ><tr><td  >"+currentInfo+"<br><b>Recibido hace: </b>"+MargenTiempo(currentShip.timeStamp)+"</td></tr></table>"
		strInfo += "<i><a href='#' onclick='BorrarRuta(\""+currentShip.modeS.toString()+"\")' >Borrar ruta</a>        <a href='#' onclick='EncimaAvion("+currentShip.latitude+","+currentShip.longitude+","+currentShip.altitude+","+currentShip.course+",\""+currentShip.modeS.toString()+"\")' >Ver avion</a></i>" 
//		strInfo += "<br>"+altura+ " <br> "+groundAltitude
		descriptores[currentShip.modeS] = strInfo;
//	    pointx = pShipPlacemark[currentShip.modeS].getGeometry();
//		var mover = true;
//		if(pointx != null)
//		{
//			alert(point.getLatitude()+"   "+currentShip.latitude+"\n"+point.getLongitude()+"   "+currentShip.longitude)
//			if((point.getLatitude() == currentShip.latitude)&&(point.getLongitude() == currentShip.longitude)) mover = false;
//		}
//		if(mover)
//		{
			if(modelos3DPlacemark[currentShip.modeS] != null)Move3dPlacemarkPlane(currentShip);
			if(currentShip.modeS == targetAvion)EncimaAvion(currentShip.latitude,currentShip.longitude,currentShip.altitude, currentShip.course,currentShip.modeS)
			if(pShipPlacemark[currentShip.modeS] != null)
			{
				MovePeloto(currentShip.latitude,currentShip.longitude,currentShip.altitude, currentShip.modeS);
				if(mmsiSelected == currentShip.modeS)
				{
					var balloon = ge.getBalloon();
					if(balloon != null)balloon.setContentString(strInfo);
				}
			}
			if((!(  (altura>200)&&(currentShip.speed ==0)  ))&& controlVerTrack)CreateExtrude(currentShip);
//		}
//		else DescriptorPeloto(currentShip.modeS,strInfo)
//		if(currentShip.modeS == targetAvion){ cambiaTarget = true; cambiaCurso = currentShip.course;}
	}
//	if(cambiaTarget) EncimaAvion(targetAvion,cambiaCurso)
	if( (indiceBorrar >= borrarships.length)&&(indiceMover >= rships.length) ) {terminado = true; Terminado();}
}

function BorrarRuta(brmodeS)
{
	if(trackPlacemark[brmodeS] != null)ge.getFeatures().removeChild(trackPlacemark[brmodeS]); 
}

function EncimaAvion(ealatitude,ealongitude,eaaltitude,eacourse,eamodeS)
{
	targetAvion = eamodeS;
	CalculaAnguloCamara(eacourse);
	lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
	var alturaojo = 6000;
	var bajoavion = 200;
	if(eaaltitude < 30){alturaojo = 400;bajoavion=0;}
	lookAt.set(ealatitude,ealongitude,eaaltitude-bajoavion,ge.ALTITUDE_RELATIVE_TO_GROUND,(anguloCamara+45)%360,45,alturaojo*escalaGeneral);
	ge.getView().setAbstractView(lookAt);
	ge.setBalloon(null);
}

function ExternalSelectTargetAvion(targetModeS)
{
	targetAvion = targetModeS;
}
//===========================================================================================
var avionCargado = 0;

function NewCreate3dPlacemarkPlane(objeto)
{
	if(avionCargado != 1)
	{
		if(avionCargado == 0) avionCargado = 1;
		google.earth.fetchKml(ge, "http://www.localizatodo.com/mapa/ge/modelos/airbus_a300.kmz", function (kmlObjectm) {kmlFinishedLoading33(kmlObjectm,objeto);}); 
	}	
}

function kmlFinishedLoading33(kmlObjectx,objeto)
{
	var kmlObjetoLista = kmlObjectx.getFeatures().getChildNodes();
	var modeloAvion = kmlObjetoLista.item(1).getGeometry();
	escala = ge.createScale('');
	escala.set(10,10,10)
	modeloAvion.setScale(escala)
	modeloAvion.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND);


	modelos3DPlacemark[objeto.modeS] = ge.createPlacemark('');
	modelos3DPlacemark[objeto.modeS].setName(objeto.callSign);
	modelos3DPlacemark[objeto.modeS].setVisibility(false);
	ge.getFeatures().appendChild(modelos3DPlacemark[objeto.modeS]);
	modelos3DPlacemark[objeto.modeS].setGeometry(modeloAvion);
	
	Move3dPlacemarkPlane(objeto)
	
	if(avionCargado == 1)
	{
		avionCargado = 2;
		CargaRestoAviones();
	}
/*	
	modeloAvion.onClickEventEnabled(true);
	google.earth.addEventListener(modeloAvion, 'click', function(event) {
		event.preventDefault();
		var balloon = ge.createHtmlStringBalloon('');
		balloon.setFeature(event.getTarget());
		balloon.setMaxWidth(350);
		balloon.setContentString(descriptores[objeto.modeS]);
		ge.setBalloon(balloon);
		mmsiSelected = objeto.modeS;
	  });
*/
}

function CargaRestoAviones()
{
	for(var ix=0;ix<rships.length;ix++)
	{
		currentShip = rships[ix];
		if(modelos3DPlacemark[currentShip.modeS] == null) NewCreate3dPlacemarkPlane(currentShip); 
	}
}


function Move3dPlacemarkPlane(objeto)
{
	var modelo = modelos3DPlacemark[objeto.modeS].getGeometry();
	var location = modelo.getLocation();
	location.setLatitude(objeto.latitude);
	location.setLongitude(objeto.longitude);
	location.setAltitude(objeto.altitude);
	if(objeto.altitude < 300)modelo.getScale().set(escalaGeneral*10,escalaGeneral*10,escalaGeneral*10);
	else modelo.getScale().set(escalaGeneral*60,escalaGeneral*60,escalaGeneral*60);
	orientacion = modelo.getOrientation();
	orientacion.setHeading(objeto.course); 
	if(controlVerModelos) modelos3DPlacemark[objeto.modeS].setVisibility(true)
}

function CreateExtrude(objeto)
{

	if(trackPlacemark[objeto.modeS] == null)
	{
		trackPlacemark[objeto.modeS] = ge.createPlacemark('');
		
		trackPlacemark[objeto.modeS].setStyleSelector(ge.createStyle(''));
		var lineStyle = trackPlacemark[objeto.modeS].getStyleSelector().getLineStyle();
		lineStyle.setWidth(2);
		lineStyle.getColor().set('c0ffffff');  // 6600ffff aabbggrr format
		lineStyle.setColorMode(ge.COLOR_RANDOM);  // 6600ffff aabbggrr format
		var polyStyle = trackPlacemark[objeto.modeS].getStyleSelector().getPolyStyle();
		polyStyle.getColor().set('80ffffff');  // 6600ffff aabbggrr format

		lineString = ge.createLineString('');
		lineString.setExtrude(true);
		lineString.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND);
		lineString.setTessellate(true);
		
		trackPlacemark[objeto.modeS].setGeometry(lineString);
		ge.getFeatures().appendChild(trackPlacemark[objeto.modeS]);
	}
	else lineString = trackPlacemark[objeto.modeS].getGeometry();
	lineString.getCoordinates().pushLatLngAlt(objeto.latitude, objeto.longitude, objeto.altitude);
}

