qed_pluginPathNetscape = QED_GenerateURL("../common/",1);
qed_pluginPathIE = "../common/";

qed_onError 			= "QEDOnError";
qed_onEndData 			= "QEDOnEndData";
qed_onMouseEnterObject 			= "QEDOnMouseEnterObject";
qed_onMouseExitObject 			= "QEDOnMouseExitObject";
qed_onMouseDownObject 			= "QEDOnMouseDownObject";
qed_onMouseUpObject 			= "QEDOnMouseUpObject";
qed_onMouseMove 			= "QEDOnMouseMove";


var interactEnable=1;
var Tab_Macro=new Array(2);
var CurMacroIndex=-1;
QEDInit_Tab();
var OldXpos=0;
var OldYpos=0;
var QEDInteract_Bone_Rot=1;


function QEDOnError(id,contextString)
{
	var str ="";
	switch(id)
	{
		case 100 :
			str ="3D API NOT FOUND";
			break;
		case 200:
			str ="INIT ENGINE FAILED";
			break;
		case 300:
			str ="NOT ENOUGH MEMORY";
			break;
		case 400:
			str ="URL NOT FOUND";
			break;
		case 500:
			str ="SOUND ERROR";
			break;
		default:
			str ="UNKNOWN ERROR";
	}
	alert(str + " : " + contextString);


}
function QEDOnEndData(str,id)
{
	QEDEXMeshMouseEventSetDown(document.Q3DPlayer, Bone_pied, -2, 1, "");
	QEDEXMeshMouseEventSetUp(document.Q3DPlayer, Bone_pied, -2, 1, "");
	QEDEXMeshMouseEventSetLeave(document.Q3DPlayer, Bone_pied, -2, 1, "");
	QEDEXMeshMouseEventSetEnter(document.Q3DPlayer, Bone_pied, -2,1, "");
}
function QEDOnMouseDownObject(boneId,subobjId,KeyModifieur)
{
	CurMacroIndex=-1;
	if(QEDInteract_Bone_Rot)
	{
			if(KeyModifieur == 0 && (boneId == Bone_pied || boneId ==Bone_chapeau))
			{
			  CurMacroIndex=0;
			}
	}
}
function QEDOnMouseUpObject(boneId,subobjId,KeyModifieur)
{
	CurMacroIndex=-1;
}
function QEDOnMouseMove(x,y)
{
	if (interactEnable > 0)
	{
		if (interactEnable==1)
		{
			OldXpos = x;
			OldYpos = y;
			interactEnable = 2;
		}
		else
		{
			valx = x-OldXpos;
			valy = y-OldYpos;
	       if(CurMacroIndex != -1)
	       {
             Tab_Macro[CurMacroIndex].Interact(valx,valy);
	       }
			OldXpos = x;
			OldYpos = y;
		}
	}
				SetOld(x,y);
	CalculInertie(x,y);
}
function QEDOnMouseEnterObject(boneId,subobjId,KeyModifieur)
{
		QEDEXSetCursor(document.Q3DPlayer,"1");
}
function QEDOnMouseExitObject(boneId,subobjId,KeyModifieur)
{
		QEDEXSetCursor(document.Q3DPlayer,"0");
}


function _QED_Rotate(val1,val2)
{
	rotation =new Array(3)
	rotation[0]=0;
	rotation[1]=0;
	rotation[2]=0;
	if(this.Axe1 > -1);
	{
		val=(val1*this.Step*this.Sens1);
		Rot=val+this.Total1;
		if(this.AsMax1 && Rot > this.Max1)
		{
			Rot=this.Max1;
			val=0;
		}
		if(this.AsMin1 && Rot < this.Min1)
		{
			Rot=this.Min1;
			val=0;
		}
		rotation[this.Axe1]+=val;
		this.Total1+=val;
	}
	if(this.Axe2 > -1);
	{
		val=(val2*this.Step*this.Sens2);
		Rot=val+this.Total2;
		if(this.AsMax2 && Rot > this.Max2)
		{
			Rot=this.Max2;
			val=0;
		}
		if(this.AsMin2 && Rot < this.Min2)
		{
			Rot=this.Min2;
			val=0;
		}
		rotation[this.Axe2]+=val;
		this.Total2+=val;
	}
	QEDEXObject3DAddRotation(document.Q3DPlayer,this.Id,rotation[0],rotation[1],rotation[2],this.IsCamera);
}



function _QED_Set_Interact_Bone_Rot(val)
{
	QEDInteract_Bone_Rot=val;
}



function QEDInit_Tab()
{
	Tab_Macro[0]=new Object();
	Tab_Macro[0].Id=Bone_pied;
	Tab_Macro[0].Interact=_QED_Rotate;
	Tab_Macro[0].IsCamera=0;
	Tab_Macro[0].Max1=89;
	Tab_Macro[0].Min1=-89;
	Tab_Macro[0].Max2=89;
	Tab_Macro[0].Min2=-89;
	Tab_Macro[0].Sens1=-1;
	Tab_Macro[0].Sens2=-1;
	Tab_Macro[0].Total1=0;
	Tab_Macro[0].AsMax2=0;
	Tab_Macro[0].AsMin2=0;
	Tab_Macro[0].AsMax1=0;
	Tab_Macro[0].AsMin1=0;
	Tab_Macro[0].Total2=0;
	Tab_Macro[0].Axe1=1;
	Tab_Macro[0].Axe2=0;
	Tab_Macro[0].Step=0.4;

}


var Timer=0;
var OldRotX=0;
var OldRotY=0;

var OldPosInerX=0;
var OldPosInerY=0;
var Asdown=0;
var AsUp=0;

var inertieForce=100;function Inertie()
{
	PoidX=Math.abs(OldRotX/inertieForce);
	PoidY=Math.abs(OldRotY/inertieForce);

	if(OldRotX >0.1)
		OldRotX-=PoidX;
	else
	{
		if(OldRotX < -0.1)
			OldRotX+=PoidX;
		else
			OldRotX=0;
	}

	if(OldRotY > 0.1)
		OldRotY-=PoidY;
	else
	{
		if(OldRotY < -0.1)
			OldRotY+=PoidY;
		else
			OldRotY=0;
	}
	if(OldRotX ==0 &&OldRotY ==0 )
	{
		clearTimeout(Timer);
		return;
	}


	QEDEXObject3DAddRotation(document.Q3DPlayer,Bone_pied ,-OldRotY,-OldRotX,0);
	Timer = setTimeout("Inertie();" ,1);
}
function StopTime()
{
	clearTimeout(Timer);
}
function SetOld(x,y)
{
if (interactEnable==1)
{
	OldPosInerX = x;
	OldPosInerY = y;
}
else
{

	valx = x-OldPosInerX;
	valy = y-OldPosInerY;

       if(CurMacroIndex != -1)
       {
	OldRotX=valx;
	OldRotY=valy;
	}

	OldPosInerX = x;
	OldPosInerY = y;
}
}
function CalculInertie(x,y)
{
       if(CurMacroIndex != -1)
       {

		StopTime()
		Inertie()
	}
}
function setInertieForce(f)
{
inertieForce=f;
}



