// JavaScript Document
var informationTree = null;
var menu = null;
var objectManager = null;
var plane = null;
var render = null;
var terraExplorer = null;
var terrain = null;
var container=null;

var angle_cam=-89;

var BoolTransAV=false;
var BoolTransAR=false;
var BoolTransD=false;
var BoolTransG=false;
var BoolMonte=false;
var BoolDescendre=false;
var BoolTourneD=false;
var BoolTourneG=false;
var BoolZoomPlus=false;
var BoolZoomMoins=false;
var boolCacher_tree=false;
var boolCacher_outils=false;
var pass=false;

var DeltaHeight=0;
var DeltaYaw=0;
var signe=1;
var totalPitch=0;
var recupval="";
var coefftrans=200;
var coeffpitch=0.4;
var coeffyaw=0.8;
var coeffzoom=2;

var m_DeltaXS=0;
var m_DeltaYS=0;
var m_MvtX=0;
var m_MvtY=0;
var m_MvtZ=0;

var SiblingItemID=0;
//var IDCAM=0;
var ObjectID2="";
var nom_obj="";
var recupnom="";
//MessageObjvar =null;
//var MessageText="";

var i=0;
var loc_vid="";
var indice=0;
var idtimer;
var idtimer_load_tree;
var idtimer_reload_tree;
var idtimer_load_outils;
var idtimer_reload_outils;

function InitTerraExplorer() {
	
	informationTree = document.getElementById("TE").Interface("IInformationTree5");	
	menu = document.getElementById("TE").Interface("IMenu");
	objectManager = document.getElementById("TE").Interface("IObjectManager3");
	plane = document.getElementById("TE").Interface("IPlane3");
	render = document.getElementById("TE").Interface("IRender4");
	terraExplorer = document.getElementById("TE").Interface("ITerraExplorer5");
	terrain = document.getElementById("TE").Interface("ITerrain3");
	container = document.getElementById("TE").Interface("IContainer2");
}



function TE::OnloadFinished()
{		GetNextFly();
}






function TE::OnFrame() {
	UpdatePosition();
				
	if ((BoolTransAV == true) || (BoolTransG == true) || (BoolTransD == true) || (BoolTransAR == true))
	{
    
           if (BoolTransAV == true)
			{       m_DeltaXS = 0;
					m_DeltaYS = -coefftrans; //m_DeltaYS - 10;
			}
            else if( BoolTransG == true)
            {   m_DeltaXS = -coefftrans;
					m_DeltaYS = 0;
			}
            else if(BoolTransD == true)
            {   m_DeltaXS = coefftrans;
				m_DeltaYS = 0;
			}
            else
             {  m_DeltaXS = 0;
			 	m_DeltaYS = coefftrans;
			 }
           
            
			 
            m_MvtX = -m_DeltaYS * Math.sin((180 - avYaw) * Math.PI/180);
            m_MvtY = m_DeltaYS * Math.cos((180 - avYaw) * Math.PI/180);
            m_MvtX = m_MvtX - (m_DeltaXS * Math.cos((180 - avYaw) * Math.PI/180));
            m_MvtY = m_MvtY - (m_DeltaXS * Math.sin((180 - avYaw) * Math.PI/180));
            
            m_MvtX = m_MvtX * (plane.Height / 100000)
            m_MvtY = m_MvtY * (plane.Height / 100000)
         
            plane.MovePosition(m_MvtX, m_MvtY, 0, 0,0, 0, 0, 0, 2048+1024+128+64+56);//3258);
		}

		
		if (BoolMonte == true)
		{
       		DeltaPitch=coeffpitch;
			plane.MovePosition ( 0, 0, 0, 0, DeltaPitch, 0, 0, 0,2048+1024+256+7); //3383);
		}
        if (BoolDescendre == true)
		
         { 	DeltaPitch=-coeffpitch;
			plane.MovePosition ( 0, 0, 0, 0, DeltaPitch, 0, 0, 0,2048+1024+256+7);
	     }
		if (BoolTourneD == true)
		 {
			 DeltaYaw=coeffyaw;
			 plane.MovePosition ( 0, 0, 0, DeltaYaw, 0, 0, 0, 0,2048+1024+256+7); //3383);
		  
		  }
		  if (BoolTourneG == true)
		  {
			 DeltaYaw=-coeffyaw;
		  	 plane.MovePosition( 0, 0, 0, DeltaYaw, 0, 0, 0, 0, 2048+1024+256+7);
		  }
		  
		  if ((BoolZoomPlus == true) || (BoolZoomMoins == true))
          {  if (BoolZoomPlus == true )
              { m_DeltaYS = -(plane.Height*coeffzoom)/100;}
              else
              { m_DeltaYS = (plane.Height*coeffzoom)/100;}
		  
               m_MvtX = -m_DeltaYS * Math.sin((180 - avYaw) * Math.PI/180);
               m_MvtY = m_DeltaYS * Math.cos((180 - avYaw) * Math.PI/180);
			   totalPitch = avPitch + AvCAMERA_PITCH - 360;
               m_MvtZ = -Math.sqrt((m_MvtX * m_MvtX) + (m_MvtY * m_MvtY)) * Math.tan(totalPitch * Math.PI/180);
           
		   if((m_MvtX != 0) && (m_MvtY != 0))
            { 
         		if (m_DeltaYS>0)
				{signe=1;}
				else
				{signe=-1;}

					m_MvtX = (m_MvtX*signe*m_DeltaYS)/m_MvtZ; 
					m_MvtY = (m_MvtY*signe*m_DeltaYS)/m_MvtZ;
					m_MvtZ = -m_DeltaYS*signe;

			   if(m_DeltaYS<0)
			   {plane.MovePosition( m_MvtX, m_MvtY, m_MvtZ, 0, 0, 0, 0, 0,2048+1024+128+64+56);}
				else
				{plane.MovePosition( m_MvtX, m_MvtY,-m_MvtZ, 0, 0, 0, 0, 0,  2048+1024+128+64+56);}
			}
		   } 
 }
 

function Exit()
{	
	
 	//Menu (57602);
	informationTree = null;	
	menu = null;
	objectManager = null;
	plane = null;
	render = null;
	terraExplorer = null;
	terrain = null;
	container = null;
	idtimer=null;
}


function avancer()
{BoolTransAV=true;}

function stop_avance()
{BoolTransAV=false;}

function reculer()
{BoolTransAR=true;}

function stop_recule()
{BoolTransAR=false;}

function droite()
{BoolTransD=true;}

function stop_droite()
{BoolTransD=false;}

function gauche()
{BoolTransG=true;}

function stop_gauche()
{BoolTransG=false;}

function monter()
{BoolMonte=true;}

function stop_monter()
{BoolMonte=false;}

function descendre()
{BoolDescendre =true;}

function stop_descendre()
{BoolDescendre =false;}

function rot_droite()
{BoolTourneD=true;}

function stop_rot_droite()
{BoolTourneD=false;}

function rot_gauche()
{BoolTourneG=true;}

function stop_rot_gauche()
{BoolTourneG=false;}

function zoom_plus()
{BoolZoomPlus=true;}

function stop_zoom_plus()
{BoolZoomPlus=false;
}

function zoom_moins()
{BoolZoomMoins=true;
	
}

function stop_zoom_moins()
{BoolZoomMoins=false;}


function stop_bt()
{ 
BoolTransAV=false;
BoolTransAR=false;
BoolTransD=false;
BoolTransG=false;
BoolMonte=false;
BoolDescendre=false;
BoolTourneD=false;
BoolTourneG=false;
BoolZoomPlus=false;
BoolZoomMoins=false;
}

function route_play()
{
	menu.Invoke(1011);
}

function route_pause()
{
	menu.Invoke(34002);
}

function route_stop()
{
	menu.Invoke(1010);
}


function abspath()
{
	var abspath = unescape(window.location.href);
	index=abspath.lastIndexOf("/");
	abspath = abspath.substring(0,index);

	if(abspath.substring(0,1) == "/")
		abspath = abspath.substring(1,abspath.length)

	for (var i=abspath.length-1; i>=0; i--)
	{
	  if (abspath.substring(i,i+1) == "\\")
	  {
		 abspath = abspath.substring(0,i);
		 break;
	  }
	}
	var reg=new RegExp("file:///", "g");
	abspath=abspath.replace(reg,"");
        return(abspath);
}
