
/*** 
option :
sceneWidth : largeur du flash,
sceneHeight : hateur du flash,
cwidth : largeur du cube,
cheight : hauteur du cube,
cdepth : profondeur du cube
cpositionX, cpositionY, cpositionZ : position camera x, y et z
crotationX, crotationY, crotationZ : position camera x, y et z
objetFRONT, objetBACK, objetLEFT, objetRIGHT, objetTOP, objetBOTTOM : chemin de l'objet qui texture une face (gif, jpg ou flv)
linkFIRST, linkSECOND, linkTHIRD, linkFOURTH : lien de chaque face cliquable
dureePause : durée de pause entre deux mouvements du cube
dureeMvt : temps pour faire pivoter le cube
sensrotauto : sens de rotation du cube : LEFT, RIGHT, BOTTOM, TOP
anglevue : ecart de vue en degre (1 à 90), calcule en fonction du sens de rotation
*****/

var AutoRotation=true;
var AutoRotationTime = new Date().getTime();
var IsHover = false;
var CubeIsRot = false;
var udf = "undefined";
var Timer;

function cube3d(div, AutoRotationloc, option)
{
	versionplayerrequis = '10';
	AutoRotation = AutoRotationloc;
	IsHover = false;
	CubeIsRot = false;
	
	if (typeof option != udf)
	{
		for (i=0; i < option.length; i++)
		{
			var chaine;
			chaine = "" +option[i].split('=')[0]+ " = '"+option[i].split('=')[1];
			for (j=2; j < option[i].split('=').length; j++)
			{
				chaine += '=' + option[i].split('=')[j];
			}
			chaine +="';";
			eval(chaine);
		}
	}
	var version = deconcept.SWFObjectUtil.getPlayerVersion();	
	if (version['major'] >= versionplayerrequis)
	{
		var so = new SWFObject("/cube3d/images/Flash3D.swf", "Flash3D", typeof sceneWidth!=udf?sceneWidth:300, typeof sceneHeight!=udf?sceneHeight:300, versionplayerrequis);
		so.addParam("wmode", "transparent");
		so.addParam("allowScriptAccess", "always");
		so.write(div);
		// initialisation
		setTimeout(function() {
			Swf('Flash3D').CubeSize(typeof cwidth!=udf?cwidth:5, typeof cheight!=udf?cheight:5, typeof cdepth!=udf?cdepth:5); // Taille du cube Largeur / Hauteur / profondeur
			Swf('Flash3D').CameraPosition(typeof cpositionX!=udf?cpositionX:0.1, typeof cpositionY!=udf?cpositionY:2.7, typeof cpositionZ!=udf?cpositionZ:-10); // Position camera gauche-droite / haut-bas / devans-deriere
			Swf('Flash3D').CameraRotation(typeof crotationX!=udf?crotationX:18, typeof crotationY!=udf?crotationY:0, typeof crotationZ!=udf?crotationZ:0); // Rotation camera
			Swf('Flash3D').Rotation(typeof sensrotauto!=udf?sensrotauto:'LEFT', 1, typeof anglevue!=udf?anglevue:25); // rotation de depart 
			AttachObject('FRONT', typeof objetFRONT!=udf?objetFRONT:'');
			AttachObject('BACK', typeof objetBACK!=udf?objetBACK:'');
			AttachObject('LEFT', typeof objetLEFT!=udf?objetLEFT:'');
			AttachObject('RIGHT', typeof objetRIGHT!=udf?objetRIGHT:'');
			AttachObject('TOP', typeof objetTOP!=udf?objetTOP:'');
			AttachObject('BOTTOM', typeof objetBOTTOM!=udf?objetBOTTOM:'');
			
			//MouvementCube(typeof sensrotauto!=udf?sensrotauto:'LEFT',typeof dureePause!=udf?dureePause:5000, typeof dureeMvt!=udf?dureeMvt:1500);
			//document.getElementById('Flash3D').onmouseover = function(){over();}
			//document.getElementById('Flash3D').onmouseout = function(){out();}
			tourne('LEFT');
		
			
		},1000);
	}
}

function over()
{
	// Si je suis pas sur ou le cube OU si il a pas tourné
	if(!IsHover || !CubeIsRot){
		AutoRotation = false;
		IsHover = true;
		//deplacement(3, -10, 3, -9);
		CubeIsRot = Swf('Flash3D').Rotation(typeof sensrotauto!=udf?inverse(sensrotauto):'RIGHT', 300, typeof anglevue!=udf?anglevue:25);
		//CubeIsRot = true;
	}	
}

function out()
{
	// Si je suis sur le cube ET qu'il a tourné
	if (CubeIsRot && IsHover){
		AutoRotationTime = new Date().getTime();
		AutoRotation = true;
		//deplacement(2, -9, 3, -10);
		if(Swf('Flash3D').Rotation(typeof sensrotauto!=udf?sensrotauto:'LEFT', 300, typeof anglevue!=udf?anglevue:25))
		{
			IsHover = false;
			CubeIsRot = false;
		}
	}
}
function deplacement(posYd, posZd, posYa, posZa)
{
	var bfini;
	increment = 0.1;
	if (posYd != posYa)
	{
		if (posYd > posYa){posYd-=increment;}else{posYd+=increment;}
	}
	if (posZd != posZa)
	{
	if (posZd > posZa){posZd-=increment;}else{posZd+=increment;}
	}
	
	Swf('Flash3D').CameraPosition(typeof cpositionX!="undefined"?cpositionX:0, posYd, posZd);
		
	if (arrondir(posYd) != arrondir(posYa) || arrondir(posZd) != arrondir(posZa))
	{
		Timer = setTimeout(function(){deplacement(posYd, posZd, posYa, posZa)},1);
		bfini = false;
	}
	else
	{
		Timer = clearTimeout(Timer);
		bfini = true;
		
	}
	return bfini;
}

function arrondir(num)
{
	return Math.round(num*100)/100;
}
//axe : retourne l'axe suivant le sens de rotation
function axe(sens)
{
	var result;
	switch (sens)
	{
		case 'LEFT':case'RIGHT': result = 'Y';break;
		case 'TOP':case'BOTTOM': result = 'X';break;
	}
	return result;
}

//inverse : retourne le sens inverse du sens passe en parametre 
function inverse(sens)
{
	var result;
	switch (sens)
	{
		case 'LEFT': result = 'RIGHT';break;
		case 'RIGHT': result = 'LEFT';break;
		case 'TOP': result = 'BOTTOM';break;
		case 'BOTTOM': result = 'TOP';break;
	}
	return result;
}

// pointeur sur ID
function Swf(pName){
	if(navigator.appName.indexOf("Microsoft") != -1){
		return window[pName];
	}else{
		return document[pName];
	}
}

//attache un objet à une face
function AttachObject(face, object)
{
	if (object.split('.')[1] == 'flv' || object.split('.')[1] == 'swf')
	{
		Swf('Flash3D').AttachVideo(face, object, 215,215);
	}
	else
	{
		Swf('Flash3D').AttachImage(face, object);
	}
	
}
// Rotation
function Rotate(pAxe, tpsrot){
	AutoRotationTime = new Date().getTime();
	if (!tpsrot) tpsrot=1000;
	switch(pAxe){
		case 'LEFT':   Swf('Flash3D').Rotation('LEFT', tpsrot, 90);   break;
		case 'RIGHT':  Swf('Flash3D').Rotation('RIGHT', tpsrot, 90);  break;
		case 'TOP':    Swf('Flash3D').Rotation('TOP', tpsrot, 90);    break;		
		case 'BOTTOM': Swf('Flash3D').Rotation('BOTTOM', tpsrot, 90); break;
	}
}

// Mouvement Cube
function MouvementCube(sensrotation,dureePause,dureeMvt){
	if(Swf('Flash3D').Angle('Y') == 295){
		Swf('Flash3D').VideoPlay('LEFT');
	}
	if(AutoRotation && (AutoRotationTime+parseInt(typeof dureePause!="undefined"?dureePause:5000)) <= new Date().getTime()){
		AutoRotationTime = new Date().getTime();
		Swf('Flash3D').Rotation(typeof sensrotation!="undefined"?sensrotation:'LEFT', typeof dureeMvt!="undefined"?dureeMvt:1500, 180);
	}
	setTimeout(function(){MouvementCube(sensrotation, dureePause,dureeMvt)}, 300)
}

function Actions(){
	switch(Math.round(Math.abs((Swf('Flash3D').Angle(axe(sensrotauto))/90)%4))){
		case 0:
			if(document.domain == "www.monabanq.com"){_hbLink('Face1+Espace+Client','left','0,0,300,300');}
			eval(linkFIRST);
			break;
		case 1:
			if(document.domain == "www.monabanq.com"){_hbLink('Face2+Espace+Personalise','left','0,0,300,300');}
			eval(linkSECOND);
			break;		
		case 2:
			if(document.domain == "www.monabanq.com"){_hbLink('Face3+monabanq+Premiere','left','0,0,300,300');}
			eval(linkTHIRD);
			break;	
		case 3:
			if(document.domain == "www.monabanq.com"){_hbLink('Face4+Espace+Client','left','0,0,300,300');}
			eval(linkFOURTH);
			break;
	};
}

function tourne(sens)
{
		Swf('Flash3D').Rotation(sens,2000, 90);
		IsHover = false;
		CubeIsRot = false;
		Timer = setTimeout(function(){tourne(sens)}, 6000);
}

function voirverso()
{
	Timer = clearTimeout(Timer);
	Swf('Flash3D').Rotation('LEFT',2000, 180);
}

function getCursor(e) {
	e = e || window.event;
	return {'x': e.clientX, 'y': e.clientY};
}

var debutx;

function eonmouseover(e)
{	
	var cursor = getCursor(e);
	debutx = cursor.x;
}

function eonmouseout(e)
{
	Timer = clearTimeout(Timer);
	//tourne('LEFT');
}
function eonmousemove(e)
{
	Timer = clearTimeout(Timer);
	var coeff = 3.5;
	var cursor = getCursor(e);
	var dx = cursor.x - debutx;
	debutx = cursor.x;
	if (dx<0){sens='LEFT';dx=-dx}else{sens='RIGHT'}
	Swf('Flash3D').Rotation(sens,1, dx*coeff);

}

function cubetourne(sens,vitesse)
{
		Swf('Flash3D').Rotation(sens,vitesse, 90);
		IsHover = true;
		CubeIsRot = false;
		Timer = setTimeout(function(){cubetourne(sens,vitesse)}, 1);
}


