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(4);
var CurMacroIndex=-1;
QEDInit_Tab();
var OldXpos=0;
var OldYpos=0;
var QEDInteract_Cam_Zoom=1;
var QEDInteract_Bone_Trans=1;
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_Cam_Zoom && KeyModifieur == 4)
	{
	  CurMacroIndex=0;
	}
	if(QEDInteract_Bone_Trans)
	{
			if(KeyModifieur == 1 && (boneId == Bone_pied || boneId ==Bone_chapeau))
			{
			   CurMacroIndex=1;
			}
	}
	if(QEDInteract_Bone_Rot)
	{
			if(KeyModifieur == 0 && (boneId == Bone_pied || boneId ==Bone_chapeau))
			{
			  CurMacroIndex=2;
			}
	}
}
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;
		}
	}
}
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_Translate(val1,val2)
{
	translation =new Array(3)
	translation[0]=0;
	translation[1]=0;
	translation[2]=0;
	if(this.Axe1 > -1);
	{
		val=(val1*this.Step*this.Sens1);
		Pos=val+this.Total1;
		if(this.AsMax1 && Pos > this.Max1)
		{
			Pos=this.Max1;
			val=0;
		}
		if(this.AsMin1 && Pos < this.Min1)
		{
			Pos=this.Min1;
			val=0;
		}
		translation[this.Axe1]+=val;
		this.Total1+=val;
	}
	if(this.Axe2 > -1);
	{
		val=(val2*this.Step*this.Sens2);
		Pos=val+this.Total2;
		if(this.AsMax2 && Pos > this.Max2)
		{
			Pos=this.Max2;
			val=0;
		}
		if(this.AsMin2 && Pos < this.Min2)
		{
			Pos=this.Min2;
			val=0;
		}
		translation[this.Axe2]+=val;
		this.Total2+=val;
	}
	QEDEXObject3DAddPosition(document.Q3DPlayer,this.Id,translation[0],translation[1],translation[2]);
}



function _QED_Zoom(val1,val2)
{
	val=(val2*this.Step*this.Sens1);
	if(this.Total1 == "NONE")
	   this.Total1=QEDRQCameraDegFOV(document.Q3DPlayer,this.Id);
	Zoom=val+this.Total1;
	if((this.AsMax1 && Zoom > this.Max1) || (this.AsMin1 && Zoom < this.Min1))
	{
		val=0;
	}
	 QEDEXCameraAddDegFOV( document.Q3DPlayer, this.Id, val );
	this.Total1+=val;
}



function _QED_Set_Interact_Bone_Rot(val)
{
	QEDInteract_Bone_Rot=val;
}



function _QED_Set_Interact_Bone_Trans(val)
{
	QEDInteract_Bone_Trans=val;
}



function _QED_Set_Interact_Cam_Zoom(val)
{
	QEDInteract_Cam_Zoom=val;
}



function QEDInit_Tab()
{
	Tab_Macro[0]=new Object();
	Tab_Macro[0].Id=QEDCurrCamId;
	Tab_Macro[0].Interact=_QED_Zoom;
	Tab_Macro[0].IsCamera=1;
	Tab_Macro[0].Max1=150;
	Tab_Macro[0].Min1=1;
	Tab_Macro[0].Max2=0;
	Tab_Macro[0].Min2=0;
	Tab_Macro[0].Sens1=1;
	Tab_Macro[0].Sens2=1;
	Tab_Macro[0].Total1="NONE";
	Tab_Macro[0].AsMax2=0;
	Tab_Macro[0].AsMin2=0;
	Tab_Macro[0].AsMax1=1;
	Tab_Macro[0].AsMin1=1;
	Tab_Macro[0].Total2=0;
	Tab_Macro[0].Axe1=0;
	Tab_Macro[0].Axe2=-1;
	Tab_Macro[0].Step=0.2;

	Tab_Macro[1]=new Object();
	Tab_Macro[1].Id=Bone_pied;
	Tab_Macro[1].Interact=_QED_Translate;
	Tab_Macro[1].IsCamera=0;
	Tab_Macro[1].Max1=4;
	Tab_Macro[1].Min1=-4;
	Tab_Macro[1].Max2=4;
	Tab_Macro[1].Min2=-4;
	Tab_Macro[1].Sens1=1;
	Tab_Macro[1].Sens2=-1;
	Tab_Macro[1].Total1=0;
	Tab_Macro[1].AsMax2=1;
	Tab_Macro[1].AsMin2=1;
	Tab_Macro[1].AsMax1=1;
	Tab_Macro[1].AsMin1=1;
	Tab_Macro[1].Total2=0;
	Tab_Macro[1].Axe1=0;
	Tab_Macro[1].Axe2=1;
	Tab_Macro[1].Step=0.02;

	Tab_Macro[2]=new Object();
	Tab_Macro[2].Id=Bone_pied;
	Tab_Macro[2].Interact=_QED_Rotate;
	Tab_Macro[2].IsCamera=0;
	Tab_Macro[2].Max1=89;
	Tab_Macro[2].Min1=-89;
	Tab_Macro[2].Max2=89;
	Tab_Macro[2].Min2=-89;
	Tab_Macro[2].Sens1=-1;
	Tab_Macro[2].Sens2=-1;
	Tab_Macro[2].Total1=0;
	Tab_Macro[2].AsMax2=0;
	Tab_Macro[2].AsMin2=0;
	Tab_Macro[2].AsMax1=0;
	Tab_Macro[2].AsMin1=0;
	Tab_Macro[2].Total2=0;
	Tab_Macro[2].Axe1=1;
	Tab_Macro[2].Axe2=0;
	Tab_Macro[2].Step=0.4;

}



