qed_pluginPathNetscape = QED_GenerateURL("../common/",1);
qed_pluginPathIE = "../common/";

qed_onEndData 			= "QEDOnEndData";
qed_onEndAnim 			= "QEDOnEndAnim";
qed_onMouseMove 			= "QEDOnMouseMove";


function QEDOnEndData(str,id)
{

	if (str == QED_GenerateURL("../streams/mechant_anim.q3z"))
	{
		InitMechant();
	}
}
function QEDOnEndAnim(str,id)
{
	if (str == QED_GenerateURL("../streams/space_anim.q3z"))
	{
		Init(id);
		QEDEXSetCallBkOnMouseDownObject(document.Q3DPlayer, "Fire");
		QEDEXSetCallBkOnMouseUpObject(document.Q3DPlayer, "StopFire");
	}
}
function QEDOnMouseMove(x,y)
{
				MouseMove(x,y);
}


var PlayerLoaded=0;
var joue=0;
var LastTimePivote=0;
var LastTimeTourne=0;
var LastTimeTir=0;
var interactEnable=0;
var TimerTir=0;

var NbTirs=9;
var NbEnemie=20;

var tabtire1;
var tabtire2;

var old_x=0;
var old_y=0;

var tire=0;

var Tirencour=0;

var enemie;
var enencour=1;

var TabTrajectoire;

var vit=0.01;
var rotX=0.0;
var rotY=0.0;

var Pold;
var LesTire;

var ExploseEncour=0;
var FumeEncour=0;

var TabExploseOffset;
var TabFumeOffset;

var TimerEnemie;
var TimerExplose01;
var TimerExplose02;
var TimerExplose03;
var TimerExplose04;
var TimerExplose05;

var TimerFume01;
var TimerFume02;
var TimerFume03;
var TimerFume04;
var TimerFume05;

var ModeMechant=0;
var TransparentBouc=0.4;
var Resistance=10;

var Rot_Bone_Dummy01=0;
var Rot_Bone_Dummy100=0;
var End=0;
var Lache=0;
var timerLache;

var ExploseFinal=4;
var Final=0;

var GAGNE=0;


var Xpos=0;
var Ypos=0;

var OldXpos=0;
var OldYpos=0;

var CurCam=0;

var TimeFire=0;function Init(id)
{
	QEDEXObject3DShow(document.Q3DPlayer,Bone_effet1 ,0); 
	QEDEXObject3DShow(document.Q3DPlayer,Bone_effet2 ,0);
	QEDEXObject3DShow(document.Q3DPlayer,Bone_mire2  ,0);
	QEDEXLightEnable( document.Q3DPlayer, Light_Omni01, 1 );
	QEDEXLightEnable( document.Q3DPlayer, Light_Omni02, 1 );
	QEDEXLightSetIntensity(document.Q3DPlayer,Light_Omni01,0 )
	QEDEXLightSetIntensity(document.Q3DPlayer,Light_Omni02,0 )

	QEDEXLightSetIntensity(document.Q3DPlayer,Light_Omni03,2);

	tabtire1=QEDRQObject3DPosition(document.Q3DPlayer,Bone_canon1 )
	tabtire2=QEDRQObject3DPosition(document.Q3DPlayer,Bone_canon2 )


	rotX=0;
	rotY=0;

	enemie = new Array(20);
	for(i=0;i<20;i++)
		enemie[i]=0;

	Pold=new Array(20);
	for(i=0;i<20;i++)
	{
		Pold[i]=new Array(3);
		for(j=0;j<3;j++)
		{
			Pold[i][j]=0;
		}
	}

	LesTire=new Array(20);
	for(i=0;i<20;i++)
		LesTire[i]=0;

	Encour=new Array(20);
	for(i=0;i<20;i++)
		Encour[i]=0;

	TabTrajectoire=new Array(20);
	for(i=0;i<20;i++)
	{
		TabTrajectoire[i]=new Array(3);
		TabTrajectoire[i][0]=new Array(3);
		TabTrajectoire[i][1]=new Array(3);
		TabTrajectoire[i][2]=new Array(3);
		TabTrajectoire[i][3]=new Array(3);
		Trajectoire(i);
	}

	TimerCollision();
	InitOffcet()
	LanceEnemie();
	TimerEnnemie();

	window.status="Nbs Tir = "+NbTirs;

	for(i=0;i<5;i++)
	{
		QEDEXObject3DSetScale(document.Q3DPlayer,NumExplose(i),40,40,40)
		QEDEXObject3DSetScale(document.Q3DPlayer,NumFume(i),20,20,20)
	}

	for(i=0;i<20;i++)
	{
		QEDEXObject3DSetScale(document.Q3DPlayer,NumEnemie(i),3,3,3)
	}
	Level1(1);
	Level2(0);
	Perdu(0);
	Gagne(0);

	End=1;
	Rot_Bone_Dummy01  =QEDRQObject3DRotation(document.Q3DPlayer,Bone_Dummy01);
	Rot_Bone_Dummy100 =QEDRQObject3DRotation(document.Q3DPlayer,Bone_Dummy100);
	interactEnable=1;
}
function InitOffcet()
{
	TabExploseOffset = new Array(5);
	for(i=0;i<5;i++)
	{
		TabExploseOffset[i]=new Array(2);
		TabExploseOffset[i][0]=0;
		TabExploseOffset[i][1]=0.125;	
	}
	TabFumeOffset = new Array(5);
	for(i=0;i<5;i++)
	{
		TabFumeOffset[i]=new Array(2);
		TabFumeOffset[i][0]=0;
		TabFumeOffset[i][1]=0.25;	
	}
}
function Fire(boneId,subobjId,KeyModifieur)
{
switch(KeyModifieur)
{
	case 0:
   {
	if( joue==0)
		return;
	d = new Date();
	time = d.getTime();
	timepass=time-LastTimeTir;
	if(timepass < 100)
		return;

	if(NbTirs > 0)
	{
		if(tire)
		{
			Fire1();
			tire=0;
		}
		else
		{
			Fire2();
			tire=1;
		}
	}
	else
	{
		Perdu(1);
		return;
	}
	
	LastTimeTir=d = new Date();
	TimeFire=setTimeout("Fire(0,0,0);",100); 
    }break;
	
	case 1:
    {
	SetCamera(1);
    }break;

	case 2:
    {
	SetCamera(2);
    }break;

	case 4:
    {
	SetCamera(3);
    }break;
}
}
function Fire1()
{
	if(Tirencour == 21)
		Tirencour = 0;

	Tirencour += 1;
	if(LesTire[Tirencour] == 1)
		return;

	ObjectTire=NumberObjectTir(Tirencour);
	ArretTire(Tirencour)

QEDEXBeginBloc(document.Q3DPlayer)

	time = QEDRQSceneTime(document.Q3DPlayer);

	dest = QEDRQObject3DPositionGlobal(document.Q3DPlayer,Bone_Box01 )
	dep = QEDRQObject3DPositionGlobal(document.Q3DPlayer,Bone_canon1 )

	QEDEXObject3DShow(document.Q3DPlayer,ObjectTire,1); 

	QEDEXObject3DSetRotation(document.Q3DPlayer,ObjectTire,90+Rot_Bone_Dummy01[0],Rot_Bone_Dummy100[1],0)

	QEDEXObject3DShow(document.Q3DPlayer,Bone_effet1,1)

	QEDEXLightAnimNewIntensity(document.Q3DPlayer,Light_Omni01, 0)
	QEDEXLightAnimAddKeyIntensity(document.Q3DPlayer,Light_Omni01, time,2)
	QEDEXLightAnimAddKeyIntensity(document.Q3DPlayer,Light_Omni01, time+0.1,0)

	QEDEXObject3DAnimNewScale(document.Q3DPlayer,Bone_effet1, 0)
	QEDEXObject3DAnimAddKeyScale(document.Q3DPlayer,Bone_effet1, time,0,0,0)
	QEDEXObject3DAnimAddKeyScale(document.Q3DPlayer,Bone_effet1, time+0.1,2,2,2)
	QEDEXObject3DAnimAddKeyScale(document.Q3DPlayer,Bone_effet1, time+0.15,0,0,0)

	QEDEXObject3DAnimNewPosition(document.Q3DPlayer,Bone_canon1 , 0)
	QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,Bone_canon1 , time,tabtire1[0],tabtire1[1],tabtire1[2]+0.05)
	QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,Bone_canon1 , time+0.25,tabtire1[0],tabtire1[1],tabtire1[2])

//	QEDEXObject3DShow(document.Q3DPlayer,ObjectTire ,1); 
	QEDEXObject3DAnimNewPosition(document.Q3DPlayer,ObjectTire, 0)
	QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,ObjectTire, time,dep[0],dep[1],dep[2])
	QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,ObjectTire, time+1,dest[0],dest[1],dest[2])
QEDEXEndBloc(document.Q3DPlayer)
		NbTirs -=1;
		window.status="Nbs Tir = "+NbTirs;
}
function Fire2()
{
	if(Tirencour == 21)
		Tirencour = 0;

	Tirencour += 1;
	if(LesTire[Tirencour] == 1)
		return;

	ObjectTire=NumberObjectTir(Tirencour);
	ArretTire(Tirencour)

QEDEXBeginBloc(document.Q3DPlayer)

	time = QEDRQSceneTime(document.Q3DPlayer);

	dest = QEDRQObject3DPositionGlobal(document.Q3DPlayer,Bone_Box01 )
	dep = QEDRQObject3DPositionGlobal(document.Q3DPlayer,Bone_canon2 )

	QEDEXObject3DShow(document.Q3DPlayer,ObjectTire,1); 
	QEDEXObject3DSetRotation(document.Q3DPlayer,ObjectTire,90+Rot_Bone_Dummy01[0],Rot_Bone_Dummy100[1],0)

	QEDEXObject3DShow(document.Q3DPlayer,Bone_effet2,1)

	QEDEXLightAnimNewIntensity(document.Q3DPlayer,Light_Omni02, 0)
	QEDEXLightAnimAddKeyIntensity(document.Q3DPlayer,Light_Omni02, time,2)
	QEDEXLightAnimAddKeyIntensity(document.Q3DPlayer,Light_Omni02, time+0.1,0)

	QEDEXObject3DAnimNewScale(document.Q3DPlayer,Bone_effet2, 0)
	QEDEXObject3DAnimAddKeyScale(document.Q3DPlayer,Bone_effet2, time,0,0,0)
	QEDEXObject3DAnimAddKeyScale(document.Q3DPlayer,Bone_effet2, time+0.1,2,2,2)
	QEDEXObject3DAnimAddKeyScale(document.Q3DPlayer,Bone_effet2, time+0.15,0,0,0)

	QEDEXObject3DAnimNewPosition(document.Q3DPlayer,Bone_canon2 , 0)
	QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,Bone_canon2 , time,tabtire2[0],tabtire2[1],tabtire2[2]+0.05)
	QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,Bone_canon2 , time+0.25,tabtire2[0],tabtire2[1],tabtire2[2])

//	QEDEXObject3DShow(document.Q3DPlayer,ObjectTire ,1); 
	QEDEXObject3DAnimNewPosition(document.Q3DPlayer,ObjectTire , 0)
	QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,ObjectTire , time,dep[0],dep[1],dep[2])
	QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,ObjectTire , time+1,dest[0],dest[1],dest[2])

QEDEXEndBloc(document.Q3DPlayer)
		NbTirs -=1;
		window.status="Nbs Tir = "+NbTirs;
}
function ArretTire(num)
{
	LesTire[num] = 1;

	switch(num)
	{
	case 0: setTimeout("TireMort(0)",1000); break;
	case 1: setTimeout("TireMort(1)",1000); break;
	case 2: setTimeout("TireMort(2)",1000); break;
	case 3: setTimeout("TireMort(3)",1000); break;
	case 4: setTimeout("TireMort(4)",1000); break;
	case 5: setTimeout("TireMort(5)",1000); break;
	case 6: setTimeout("TireMort(6)",1000); break;
	case 7: setTimeout("TireMort(7)",1000); break;
	case 8: setTimeout("TireMort(8)",1000); break;
	case 9: setTimeout("TireMort(9)",1000); break;
	case 10: setTimeout("TireMort(10)",1000); break;
	case 11: setTimeout("TireMort(11)",1000); break;
	case 12: setTimeout("TireMort(12)",1000); break;
	case 13: setTimeout("TireMort(13)",1000); break;
	case 14: setTimeout("TireMort(14)",1000); break;
	case 15: setTimeout("TireMort(15)",1000); break;
	case 16: setTimeout("TireMort(16)",1000); break;
	case 17: setTimeout("TireMort(17)",1000); break;
	case 18: setTimeout("TireMort(18)",1000); break;
	case 19: setTimeout("TireMort(19)",1000); break;
	}
}
function TireMort(num)
{
	QEDEXObject3DShow(document.Q3DPlayer,NumberObjectTir(num),0); 
	LesTire[num] = 0;
}
function SetCamera(val)
{
	switch(val)
	{
	case 1:
	{
		QEDEXObject3DShow(document.Q3DPlayer,Bone_mire2  ,0);
		QEDEXObject3DShow(document.Q3DPlayer,Bone_mire1  ,1);
		QEDEXSceneSetCurrentCamera(document.Q3DPlayer,Cam_Camera01 );
		break;
	}
	case 2:
	{
		QEDEXObject3DShow(document.Q3DPlayer,Bone_mire2  ,1);
		QEDEXObject3DShow(document.Q3DPlayer,Bone_mire1  ,0);
		QEDEXSceneSetCurrentCamera(document.Q3DPlayer,Cam_Camera02 );
		break;
	}
	case 3:
	{
		QEDEXObject3DShow(document.Q3DPlayer,Bone_mire2  ,0);
		QEDEXObject3DShow(document.Q3DPlayer,Bone_mire1  ,0);
		QEDEXSceneSetCurrentCamera(document.Q3DPlayer,Cam_Camera03 );
		break;
	}
	}
	CurCam=val;
}
function NumDumPos(num)
{
	switch(num)
	{
	case 0:Object = Bone_Dummy22 ; break;
	case 1:Object = Bone_Dummy23 ; break;
	case 2:Object = Bone_Dummy24 ; break;
	case 3:Object = Bone_Dummy25 ; break;
	case 4:Object = Bone_Dummy26 ; break;
	case 5:Object = Bone_Dummy27 ; break;
	case 6:Object = Bone_Dummy28 ; break;
	case 7:Object = Bone_Dummy29 ; break;
	case 8:Object = Bone_Dummy30 ; break;
	case 9:Object = Bone_Dummy31 ; break;
	case 10:Object= Bone_Dummy32 ; break;
	case 11:Object= Bone_Dummy33 ; break;
	case 12:Object= Bone_Dummy34 ; break;
	case 13:Object= Bone_Dummy35 ; break;
	case 14:Object= Bone_Dummy36 ; break;
	case 15:Object= Bone_Dummy37 ; break;
	}
	return Object;
}
function NumEnemieDummy(num)
{
	switch(num)
	{
	case 1:Object = Bone_Dummy02 ; break;
	case 2:Object = Bone_Dummy03 ; break;
	case 3:Object = Bone_Dummy04 ; break;
	case 4:Object = Bone_Dummy05 ; break;
	case 5:Object = Bone_Dummy06 ; break;
	case 6:Object = Bone_Dummy07 ; break;
	case 7:Object = Bone_Dummy08 ; break;
	case 8:Object = Bone_Dummy09 ; break;
	case 9:Object = Bone_Dummy10 ; break;
	case 10:Object = Bone_Dummy11 ; break;
	case 11:Object = Bone_Dummy12 ; break;
	case 12:Object = Bone_Dummy13 ; break;
	case 13:Object = Bone_Dummy14 ; break;
	case 14:Object = Bone_Dummy15 ; break;
	case 15:Object = Bone_Dummy16 ; break;
	case 16:Object = Bone_Dummy17 ; break;
	case 17:Object = Bone_Dummy18 ; break;
	case 18:Object = Bone_Dummy19 ; break;
	case 19:Object = Bone_Dummy20 ; break;
	case 20:Object = Bone_Dummy21 ; break;
	}
	return Object;
}
function NumEnemie(num)
{
	switch(num)
	{
	case 1:Object = Bone_cible01  ; break;
	case 2:Object = Bone_cible02  ; break;
	case 3:Object = Bone_cible03  ; break;
	case 4:Object = Bone_cible04  ; break;
	case 5:Object = Bone_cible05  ; break;
	case 6:Object = Bone_cible06  ; break;
	case 7:Object = Bone_cible07  ; break;
	case 8:Object = Bone_cible08  ; break;
	case 9:Object = Bone_cible09  ; break;
	case 10:Object = Bone_cible10  ; break;
	case 11:Object = Bone_cible11  ; break;
	case 12:Object = Bone_cible12  ; break;
	case 13:Object = Bone_cible13  ; break;
	case 14:Object = Bone_cible14  ; break;
	case 15:Object = Bone_cible15  ; break;
	case 16:Object = Bone_cible16  ; break;
	case 17:Object = Bone_cible17  ; break;
	case 18:Object = Bone_cible18  ; break;
	case 19:Object = Bone_cible19  ; break;
	case 20:Object = Bone_cible20  ; break;
	}
	return Object;
}
function NumExplose(num)
{
	switch(num)
	{
	case 0:Object = Bone_explose01   ; break;
	case 1:Object = Bone_explose02   ; break;
	case 2:Object = Bone_explose03   ; break;
	case 3:Object = Bone_explose04   ; break;
	case 4:Object = Bone_explose05   ; break;
	}
	return Object;
}
function NumFume(num)
{
	switch(num)
	{
	case 0:Object = Bone_fume01    ; break;
	case 1:Object = Bone_fume02    ; break;
	case 2:Object = Bone_fume03    ; break;
	case 3:Object = Bone_fume04    ; break;
	case 4:Object = Bone_fume05    ; break;
	}
	return Object;
}
function NumTexture(num,bool)
{
	if(bool)
	{
		switch(num)
		{
		case 0:explose1(); break;
		case 1:explose2(); break;
		case 2:explose3(); break;
		case 3:explose4(); break;
		case 4:explose5(); break;
		}
	}
	else
	{
		switch(num)
		{
		case 0:fume1(); break;
		case 1:fume2(); break;
		case 2:fume3(); break;
		case 3:fume4(); break;
		case 4:fume5(); break;
		}
	}
}
function NumberObjectTir(num)
{
	switch(num)
	{
		case 0:Object = Bone_tir01  ;break;
		case 1:Object = Bone_tir02 ;break;
		case 2:Object = Bone_tir03 ;break;
		case 3:Object = Bone_tir04 ;break;
		case 4:Object = Bone_tir05 ;break;
		case 5:Object = Bone_tir06 ;break;
		case 6:Object = Bone_tir07 ;break;
		case 7:Object = Bone_tir08 ;break;
		case 8:Object = Bone_tir09 ;break;
		case 9:Object = Bone_tir10 ;break;
		case 10:Object = Bone_tir11 ;break;
		case 11:Object = Bone_tir12 ;break;
		case 12:Object = Bone_tir13 ;break;
		case 13:Object = Bone_tir14 ;break;
		case 14:Object = Bone_tir15 ;break;
		case 15:Object = Bone_tir16 ;break;
		case 16:Object = Bone_tir17 ;break;
		case 17:Object = Bone_tir18 ;break;
		case 18:Object = Bone_tir19 ;break;
		case 19:Object = Bone_tir20 ;break;
	}
	return Object;
}
function Trajectoire(num)
{
	rand=Math.random();
	rand=parseInt(rand*15);
	TabTrajectoire[num][0]=QEDRQObject3DPosition(document.Q3DPlayer,NumDumPos(rand) );

	rand=Math.random();
	rand=parseInt(rand*15);

	TabTrajectoire[num][1]=QEDRQObject3DPosition(document.Q3DPlayer,NumDumPos(rand) );

	rand=Math.random();
	rand=parseInt(rand*15);

	TabTrajectoire[num][2]=QEDRQObject3DPosition(document.Q3DPlayer,NumDumPos(rand) );

	rand=Math.random();
	rand=parseInt(rand*15);

	TabTrajectoire[num][3]=QEDRQObject3DPosition(document.Q3DPlayer,NumDumPos(rand) );
}
function LanceEnemie()
{
	for(i=0;i<20;i++)
	{
		object=NumEnemieDummy(i);
		
		tab=TabTrajectoire[i];

		tab0=tab[0];
		tab1=tab[1];
		tab2=tab[2];
		tab3=tab[3];

		QEDEXBeginBloc(document.Q3DPlayer);

		QEDEXObject3DSetPosition(document.Q3DPlayer,object,tab0[0],tab0[1],tab0[2])

		time = QEDRQSceneTime(document.Q3DPlayer);

		QEDEXObject3DAnimNewPosition(document.Q3DPlayer,object , 0);
		QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,object , time,tab0[0],tab0[1],tab0[2]);
		QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,object , time+5,tab1[0],tab1[1],tab1[2]);
		QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,object , time+5,tab1[0],tab1[1],tab1[2]);
		QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,object , time+15,tab2[0],tab2[1],tab2[2]);

		QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,object , time+15,tab2[0],tab2[1],tab2[2]);
		QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,object , time+20,tab3[0],tab3[1],tab3[2]);

		QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,object , time+20,tab3[0],tab3[1],tab3[2]);
		QEDEXObject3DAnimAddKeyPosition(document.Q3DPlayer,object , time+25,tab0[0],tab0[1],tab0[2]);

		QEDEXObject3DAnimNewRotation(document.Q3DPlayer,object, 0)
		QEDEXObject3DAnimAddKeyRotationAdd(document.Q3DPlayer,object, time,0,0,0);
		QEDEXObject3DAnimAddKeyRotationAdd(document.Q3DPlayer,object, time+5,180,0,180);
		QEDEXObject3DAnimAddKeyRotationAdd(document.Q3DPlayer,object, time+10,180,180,0);
		QEDEXObject3DAnimAddKeyRotationAdd(document.Q3DPlayer,object, time+15,0,180,180);
		QEDEXObject3DAnimAddKeyRotationAdd(document.Q3DPlayer,object, time+20,90,0,180);
		QEDEXObject3DAnimAddKeyRotationAdd(document.Q3DPlayer,object, time+25,0,0,0);

		QEDEXEndBloc(document.Q3DPlayer);
	}
}
function TimerEnnemie()
{
	TimerEnemie=setTimeout("TimerEnnemie();LanceEnemie()",25000);
}
function InitDumMechant()
{
	for(i=0;i<20;i++)
	{
		object=NumEnemie(i);
		QEDEXObject3DSetPosition(document.Q3DPlayer,object,0,0,0)
	}
}
function TimerMechantLache()
{
	object=NumEnemieDummy(Lache);
	if(Lache >19)
	{
		clearTimeout(timerLache);
		return;
	}
	enemie[Lache]=0;
	tab=QEDRQObject3DPositionGlobal( document.Q3DPlayer,Bone_Cylinder01);
	QEDEXObject3DShow(document.Q3DPlayer,object,1)
	QEDEXObject3DSetPosition(document.Q3DPlayer,object,tab[0],tab[1],tab[2])

	timerLache=setTimeout("TimerMechantLache()",3000);

	Lache +=1;
	NbEnemie+=1;
	
}
function CacheCible()
{
	for(i=0;i<20;i++)
	{
		QEDEXObject3DShow(document.Q3DPlayer,NumEnemie(i),0)
	}
}
function Collision(Po,Pd,Pc,radius)
{
	Pd=Normalise( Pd[0]-Po[0] , Pd[1]-Po[1] , Pd[2]-Po[2]);

	A= (Pd[0]*Pd[0]) + (Pd[1]*Pd[1]) + (Pd[2]*Pd[2]);
	
	B= 2*( (Pd[0]*(Po[0]-Pc[0])) + (Pd[1]*(Po[1]-Pc[1])) + (Pd[2]*(Po[2]-Pc[2])) );

	C= (Po[0]-Pc[0])*(Po[0]-Pc[0]) + (Po[1]-Pc[1])*(Po[1]-Pc[1]) + (Po[2]-Pc[2])*(Po[2]-Pc[2]) - radius*radius;

	if( (B*B - 4*A*C) >=0 )
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
function Normalise(x,y,z)
{
	norm=Math.sqrt( (x*x)+(y*y)+(z*z) )
	tab = new Array(3);
	tab[0]=x/norm;
	tab[1]=y/norm;
	tab[2]=z/norm;
	return tab;
}
function TimerCollision()
{
	setTimeout("TimerCollision();ParseCollision()",250);
}
function ParseCollision()
{
	if(!joue)
		return;

	po=new Array(3);

	for(i=0;i<20;i++)
	{
		if( LesTire[i] == 1)
		{
			po= QEDRQObject3DPositionGlobal( document.Q3DPlayer,NumberObjectTir(i) );
			for(j=0;j<20;j++)
			{
				if(enemie[j] == 0)
				{
					pc=QEDRQObject3DPositionGlobal( document.Q3DPlayer,NumEnemie(j) );
					if( Collision(po,Pold[i],pc,0.8) == 1)
					{
						Explose(pc[0],pc[1],pc[2])

						QEDEXObject3DShow(document.Q3DPlayer,NumEnemie(j),0)
						QEDEXObject3DShow(document.Q3DPlayer,NumberObjectTir(i),0)
						NbTirs+=10;
						window.status=NbTirs;
						enemie[j] = 1;
						NbEnemie-=1;
						if(NbEnemie < 1 )
						{
							AfficheMechant()
							Level2(1)
							return;

						}
					}
				}
			}
			if(ModeMechant == 1)
			{
				pm=QEDRQObject3DPositionGlobal( document.Q3DPlayer,Bone_Cylinder01);
				if( Collision(po,Pold[i],pm,1.8) == 1)
				{
					Resistance -= 1;
					BouclierTouche();
					Fume(pm[0],pm[1],pm[2])
					if(Resistance < 0)
					{
						TransparentBouc += 0.1;
						QEDEXMaterialSetTransparency(document.Q3DPlayer,Mat_Material__291 , TransparentBouc)
						Resistance = 4;
					}
					if(TransparentBouc > 1.0)
					{
						QEDEXObject3DShow(document.Q3DPlayer,Bone_Sphere01  ,0)
						ModeMechant = 2;
						Resistance = 40;
					}
					//return;
				}

			}
			if(ModeMechant == 2)
			{
				if( Collision(po,Pold[i],pm,1.6) == 1)
				{
					ExploseEncour+=1;
					if(ExploseEncour > 4)
					{
						ExploseEncour=0;
					}

					Fume(pm[0],pm[1],pm[2])

					Resistance -= 1;
					if(Resistance < 0)
					{
						Final=1;
					}

				}
			}

		}
		Pold[i]=po;
	}

	if(Final)
	{
		if(ExploseFinal<0)
		{
			Explose(pm[0],pm[1],pm[2])
			QEDEXObject3DShow(document.Q3DPlayer,Bone_Cylinder01  ,0)
			GAGNE=1;
		}
		Explose(pm[0],pm[1],pm[2])
		ExploseFinal-=1;
	}
	if(GAGNE)
		Gagne(1);
}
function BouclierTouche()
{
	time = QEDRQSceneTime(document.Q3DPlayer);

	QEDEXShapeAnimNewPercent(document.Q3DPlayer,Shap_Sphere01_shape , 0);
	QEDEXShapeAnimKeyPercent(document.Q3DPlayer,Shap_Sphere01_shape , time,0);
	QEDEXShapeAnimKeyPercent(document.Q3DPlayer,Shap_Sphere01_shape , time+0.1,1);
	QEDEXShapeAnimKeyPercent(document.Q3DPlayer,Shap_Sphere01_shape , time+0.2,0);
}
function AfficheMechant()
{
	clearTimeout(TimerEnemie);
	CacheCible()
	LoadStreamMechant()
	
}
function Explose(x,y,z)
{
	ExploseEncour+=1;
	if(ExploseEncour > 4)
	{
		ExploseEncour=0;
	}
	explose=NumExplose(ExploseEncour);

	QEDEXObject3DShow(document.Q3DPlayer,explose,1)
	QEDEXObject3DSetPosition(document.Q3DPlayer,explose,x,y,z)
	QEDEXObject3DSetRotation(document.Q3DPlayer,explose,90+Rot_Bone_Dummy01[0],Rot_Bone_Dummy100[1],0)

	NumTexture(ExploseEncour,1);
}
function Fume(x,y,z)
{
	FumeEncour+=1;
	if(FumeEncour > 4)
	{
		FumeEncour=0;
	}
	explose=NumFume(FumeEncour);

	QEDEXObject3DShow(document.Q3DPlayer,explose,1)
	QEDEXObject3DSetPosition(document.Q3DPlayer,explose,x,y,z)
	QEDEXObject3DSetRotation(document.Q3DPlayer,explose,90+Rot_Bone_Dummy01[0],Rot_Bone_Dummy100[1],0)

	NumTexture(FumeEncour,0);
}
function AnimTextureExplose(texture,object,num)
{
	tab=TabExploseOffset[num]

//	alert(tab[0]+" "+tab[1])
	if(tab[0] == 1)
	{
		tab[1] += 0.125;
		tab[0] = 0;
	}
	tab[0] +=0.125
	if(tab[1] > 1)
	{
		QEDEXObject3DShow(document.Q3DPlayer,object,0)
		KillTimerExplose(object);
		return;
	}
	QEDEXTextureSetOffset(document.Q3DPlayer,texture, tab[0],tab[1])
}
function AnimTextureFume(texture,object,num)
{
	tab=TabFumeOffset[num]

//	alert(tab[0]+" "+tab[1])
	if(tab[0] == 1)
	{
		tab[1] += 0.25;
		tab[0] = 0;
	}
	tab[0] +=0.25
	if(tab[1] > 1)
	{
		QEDEXObject3DShow(document.Q3DPlayer,object,0)
		KillTimerExplose(object);
		return;
	}
	QEDEXTextureSetOffset(document.Q3DPlayer,texture, tab[0],tab[1])
}
function explose1()
{
	TimerExplose01=setTimeout("explose1()",1);
	AnimTextureExplose(Tex_Map__18,Bone_explose01,0);
}
function explose2()
{
	TimerExplose02=setTimeout("explose2()",1);
	AnimTextureExplose(Tex_Map__15,Bone_explose02,1);
}
function explose3()
{
	TimerExplose03=setTimeout("explose3()",1);
	AnimTextureExplose(Tex_Map__16,Bone_explose03,2);
}
function explose4()
{
	TimerExplose04=setTimeout("explose4()",1);
	AnimTextureExplose(Tex_Map__17,Bone_explose04,3);
}
function explose5()
{
	TimerExplose05=setTimeout("explose5()",1);
	AnimTextureExplose(Tex_Map__19,Bone_explose05,4);
}
function fume1()
{
	TimerFume01=setTimeout("fume1()",1);
	AnimTextureFume(Tex_Material__30,Bone_fume01 ,0);
}
function fume2()
{
	TimerFume02=setTimeout("fume2()",1);
	AnimTextureFume(Tex_Material__31,Bone_fume02 ,1);
}
function fume3()
{
	TimerFume03=setTimeout("fume3()",1);
	AnimTextureFume(Tex_Material__32,Bone_fume03 ,2);
}
function fume4()
{
	TimerFume04=setTimeout("fume4()",1);
	AnimTextureFume(Tex_Material__33,Bone_fume04 ,3);
}
function fume5()
{
	TimerFume05=setTimeout("fume5()",1);
	AnimTextureFume(Tex_Material__34,Bone_fume05 ,4);
}
function KillTimerExplose(object)
{
	switch(object)
	{
		case Bone_explose01:
		{
			clearTimeout(TimerExplose01);
			TabExploseOffset[0][0]=0;
			TabExploseOffset[0][1]=0.125;

			break;
		}
		case Bone_explose02:
		{
			clearTimeout(TimerExplose02);
			TabExploseOffset[1][0]=0;
			TabExploseOffset[1][1]=0.125;
			break;
		}
		case Bone_explose03:
		{
			clearTimeout(TimerExplose03);
			TabExploseOffset[2][0]=0;
			TabExploseOffset[2][1]=0.125;
			break;
		}
		case Bone_explose04:
		{
			clearTimeout(TimerExplose04);
			TabExploseOffset[3][0]=0;
			TabExploseOffset[3][1]=0.125;
			break;
		}
		case Bone_explose05:
		{
			clearTimeout(TimerExplose05);
			TabExploseOffset[4][0]=0;
			TabExploseOffset[4][1]=0.125;
			break;
		}


		case Bone_fume01 :
		{
			clearTimeout(TimerFume01);
			TabFumeOffset[0][0]=0;
			TabFumeOffset[0][1]=0.25;

			break;
		}
		case Bone_fume02 :
		{
			clearTimeout(TimerFume02);
			TabFumeOffset[1][0]=0;
			TabFumeOffset[1][1]=0.25;
			break;
		}
		case Bone_fume03 :
		{
			clearTimeout(TimerFume03);
			TabFumeOffset[2][0]=0;
			TabFumeOffset[2][1]=0.25;
			break;
		}
		case Bone_fume04 :
		{
			clearTimeout(TimerFume04);
			TabFumeOffset[3][0]=0;
			TabFumeOffset[3][1]=0.25;
			break;
		}
		case Bone_fume05 :
		{
			clearTimeout(TimerFume05);
			TabFumeOffset[4][0]=0;
			TabFumeOffset[4][1]=0.25;
			break;
		}

	}
}
function StartGame()
{
	PlayerLoaded=1;

	datastream="space_data";
	animstream="space_anim";

	if (qed_streamerHost==null)
	{
		datastream += ".q3z";
		animstream += ".q3z";
	}
	else
	{
		datastream += ".q3s";
		animstream += ".q3s";
	}

	QEDEXSetStream(document.Q3DPlayer,QED_GenerateURL("../streams/"+datastream));
	QEDEXAddStream(document.Q3DPlayer,QED_GenerateURL("../streams/"+animstream));
}
function Level1(val)
{
	QEDEXObject3DSetPosition(document.Q3DPlayer,Bone_level1,0,0,-10);

	QEDEXObject3DShow(document.Q3DPlayer,Bone_level1 ,val)
	QEDEXObject3DShow(document.Q3DPlayer,Bone_mire2  ,0);
	QEDEXObject3DShow(document.Q3DPlayer,Bone_mire1  ,0);

	if(val) 
	{
		setTimeout("Level1(0)",3000);
		joue=0;
	}
	else 
	{
		joue=1;
		if(CurCam==0) 	
			QEDEXObject3DShow(document.Q3DPlayer,Bone_mire1  ,1);
		if(CurCam==2) 	
			QEDEXObject3DShow(document.Q3DPlayer,Bone_mire2  ,1);
	}
}
function Level2(val)
{
	QEDEXObject3DSetPosition(document.Q3DPlayer,Bone_level2,0,0,-10);

	QEDEXObject3DShow(document.Q3DPlayer,Bone_level2 ,val)
	QEDEXObject3DShow(document.Q3DPlayer,Bone_mire2  ,0);
	QEDEXObject3DShow(document.Q3DPlayer,Bone_mire1  ,0);

	if(val)
	{
		setTimeout("Level2(0)",3000);
		joue=0;
	}
	else 
	{
		joue=1;

		if(CurCam==0) 	QEDEXObject3DShow(document.Q3DPlayer,Bone_mire1  ,1);
		if(CurCam==1) 	QEDEXObject3DShow(document.Q3DPlayer,Bone_mire2  ,1);
	}
}
function Perdu(val)
{
	QEDEXObject3DSetPosition(document.Q3DPlayer,Bone_over,0,0,-10);

	QEDEXObject3DShow(document.Q3DPlayer,Bone_over ,val)
	QEDEXObject3DShow(document.Q3DPlayer,Bone_mire2  ,0);
	QEDEXObject3DShow(document.Q3DPlayer,Bone_mire1  ,0);
	joue=0;
}
function Gagne(val)
{
	QEDEXObject3DSetPosition(document.Q3DPlayer,Bone_win,0,0,-10);

	QEDEXObject3DShow(document.Q3DPlayer,Bone_win,val)
	QEDEXObject3DShow(document.Q3DPlayer,Bone_mire2  ,0);
	QEDEXObject3DShow(document.Q3DPlayer,Bone_mire1  ,0);
	joue=0;
}
function LoadStreamMechant()
{
	animstream="mechant_anim";

	if (qed_streamerHost==null)
	{
		animstream += ".q3z";
	}
	else
	{
		animstream += ".q3s";
	}

	QEDEXSetStreamEx(document.Q3DPlayer,QED_GenerateURL("../streams/"+animstream),1,1,1);
}
function MouseMove(x,y)
{
	if (interactEnable > 0)
	{
		if (interactEnable==1)
		{
			OldXpos = x;
			OldYpos = y;
			interactEnable = 2;
		}
		else
		{
			valx = x-OldXpos;
			valy = y-OldYpos;
			Rot_Bone_Dummy01[0]+=valy/3;
			Rot_Bone_Dummy100[1]+=valx/3;
			if(Rot_Bone_Dummy01[0] < -10)
				Rot_Bone_Dummy01[0]=-10;
			if(Rot_Bone_Dummy01[0] >89)
				Rot_Bone_Dummy01[0]=89;

	 		QEDEXObject3DSetRotation(document.Q3DPlayer,Bone_Dummy01,Rot_Bone_Dummy01[0],Rot_Bone_Dummy01[1],Rot_Bone_Dummy01[2]);
			QEDEXObject3DSetRotation(document.Q3DPlayer,Bone_Dummy100,Rot_Bone_Dummy100[0],Rot_Bone_Dummy100[1],Rot_Bone_Dummy100[2]);
			OldXpos = x;
			OldYpos = y;
		}
	}
}
function StopFire()
{
clearTimeout(TimeFire);
}
function InitMechant()
{
	QEDEXMaterialSetTransparency(document.Q3DPlayer,Mat_Material__291, TransparentBouc)
	ModeMechant=1;
	InitOffcet()
	InitDumMechant();
	TimerMechantLache();
}



