
var camera={
	roll:0,
	range:80000,
	alti:2000,
	head:0,
	h_old:0,
	lat:45.99565,
	lng:6.933,
	tilt:5,
	accu:0,
	zoom:1,
	offset:0,
	type_of_view:1,
	rc:0.105
};
var Position_cam=new Array; // Suite de pointà l'approche
var idx_approche=0;

function Camera() {
	
	
	
	if (camera.type_of_view==2) {
 	
			
		  // Vue depuis l'helico. First person view
		 var lookAt = ge.getView().copyAsCamera(ge.ALTITUDE_ABSOLUTE);
		lookAt.setLatitude(camera.lat);
		lookAt.setLongitude(camera.lng);
		lookAt.setHeading (camera.head)   ;
		lookAt.setTilt(camera.tilt);
		lookAt.setRoll (-camera.roll);
		lookAt.setAltitude (2+camera.alti )   ;	
		ge.getView().setAbstractView(lookAt);
	} else {
		
		 var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_ABSOLUTE);
		lookAt.setLatitude(camera.lat);
		lookAt.setLongitude(camera.lng);
		lookAt.setRange(camera.range);
		lookAt.setTilt(camera.tilt);
		lookAt.setAltitude (2+camera.alti )   ;
		lookAt.setHeading ((camera.head)%360)   ;
		ge.getView().setAbstractView(lookAt);
		
	}	
		
}
function get_alti_camera(){
	var camera_ = ge.getView().copyAsCamera(ge.ALTITUDE_RELATIVE_TO_GROUND);
	return camera_.getAltitude () 

}
function get_range_cam() {
	 var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_ABSOLUTE);
	 range_camera=lookAt.getRange();
	
	 document.getElementById("disp").innerHTML=Math.floor(range_camera)+ " head:"+Math.floor(head_camera);
	 
}
function objet_position(range,head,tilt){
	this.range=range;
	this.head=head;
	this.tilt=tilt;
}
function cam_view(ct){
	camera.type_of_view=ct;
	for (var i=1;i<5;i++) {
		var c="cam_v"+i;
		document.getElementById(c).style.backgroundColor="";
	}
	c="cam_v"+ct;
	document.getElementById(c).style.backgroundColor="#4825b5";
	
	switch(camera.type_of_view){
		case 1:
		camera.offset=0;
		break;
		case 2:
		camera.offset=0;
		break;
		case 3:
		camera.offset=90;
		break;
		case 4:
		camera.offset=-90;
		break;
	}
	if (scene.update_on==false && scene.approche==false) { // On est à l'arret
			camera.h_old=camera.head;
			camera.accu=0;
			camera.rc=0.03;
			rotation_cam();
	}
												
												
}
function rotation_cam() {// Rotation de la cam, helo à l'arret
			
				camera.head=camera.rc*(camera.h_old+camera.offset)+(1-camera.rc)*camera.head;
				Camera();
				if (scene.update_on==false && scene.approche==false && camera.accu++<60) setTimeout("rotation_cam();",50);
}

//Liste des points approche camera a l'init
Position_cam.push(new objet_position(60000,0,10)); 
Position_cam.push(new objet_position(50000,90,55)); 
Position_cam.push(new objet_position(40000,170,60));   
Position_cam.push(new objet_position(20000,210,65)); 
Position_cam.push(new objet_position(2000,220,75));
Position_cam.push(new objet_position(1000,220,80)); //Descend ds la valée sur chalet
Position_cam.push(new objet_position(200,220,81));
Position_cam.push(new objet_position(70,350,83));
Position_cam.push(new objet_position(50,370,85));
Position_cam.push(new objet_position(40,370,88));
Position_cam.push(new objet_position(40,370,88));

function approche_camera() {
	
	var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
	if (idx_approche==0) camera.range=lookAt.getRange();
	
			idx_lat=0;
			helico.lat=lati[0] ;
			helico.lng=lngi[0];
			helico.heading=90;
			camera.alti_avion_old=ge.getGlobe().getGroundAltitude(helico.lat,helico.lng);
			helico.alti=camera.alti_avion_old;
	
			var alti_cons=3000; if (idx_approche>4) alti_cons=camera.alti_avion_old+2;			
			camera.head=camera.rc*Position_cam[idx_approche].head+(1-camera.rc)*camera.head;
			camera.range=camera.rc*Position_cam[idx_approche].range+(1-camera.rc)*camera.range;
			camera.tilt=camera.rc*Position_cam[idx_approche].tilt+(1-camera.rc)*camera.tilt;
			camera.alti=camera.rc*alti_cons+(1-camera.rc)*camera.alti;
			camera.lat=camera.rc*helico.lat+(1-camera.rc)*camera.lat;
			camera.lng=camera.rc*helico.lng+(1-camera.rc)*camera.lng;
			camera.accu=camera.rc+(1-camera.rc)*camera.accu;

	 	
		
		  if (idx_approche<Position_cam.length-1) {
			  if ( camera.accu>0.8 ) {  //Test accumulateur approche et respect range .depend chargement GE
				  ge.getOptions().setFlyToSpeed(ge.SPEED_TELEPORT);
				  idx_approche++;
				  camera.accu=0;
			}
			
			
				
		} else {
			if (lookAt.getRange()<100 && helico.alti<1400 && helico.alti>1300) 	setTimeout("arrivee();",500);
						
		}
		
		if(idx_approche>0)  mise_jour_position (); 
		 if (scene.approche) setTimeout("approche_camera();",50);
}
function arrivee(){
	scene.approche=false;
	screenOverlay.setVisibility(false);	
	camera.alti_avion_old=camera.alti;
	cligno_run_pause();
	
}

