//DAVI ©
//var actW = 230;			// Largeur du calque Flash (à ajuster selon la taille de l'acteur)
var actW = 300;			// Largeur du calque Flash (à ajuster selon la taille de l'acteur)
var actH = 200;			// Hauteur du calque Flash (à ajuster selon la taille de l'acteur)

// Bug de Flash sous Firefox : ne pas mettre 0, 0 : au moins 1 en Y ou alors, il faut augmenter la taille
// dans l'objet flash ci-dessous (uniquemment pour Firefox)
// Pour faire venir l'acteur depuis l'extérieur de l'écran par la droite, on utilise la méthode getWindowW() pour
// avoir la largeur de l'écran.
// Pour faire venir l'acteur depuis l'extérieur de l'écran par le bas, on utilise la méthode getWindowH().
// Pour Firefox : l'acteur DOIT être visible pour se déplacer, il faut donc mettre au moins 1 pixel visible
/*
var actX = getWindowW()-1;			// Position de départ de l'acteur en X
var actY = 490;			// Position de départ de l'acteur en Y
*/
var actX = ((getWindowW()-788)/2)+50;		// Position de départ de l'acteur en X (positif = vers la droite)
var actY = 50;							// Position de départ de l'acteur en Y (positif = vers le bas)*/
var offsetBulleX = 90;					// Décalage de la bulle en X par rapport au coin haut gauche de l'acteur (positif = vers la droite)
var offsetBulleY = 10;					// Décalage de la bulle en Y par rapport au coin haut gauche de l'acteur (positif = vers le bas)

//alert(actX+', '+actY);
var transparent = true;		// Détermine si le fond du flash est transparent ou non (pour le debuggage).
var position = 'absolute';

var scenario = "";
var acteurPresent = 0;
var IE = (navigator.appName.indexOf("Microsoft Internet") !=-1);
var acteur = null;
var bulle = null;
var currentWindow = null;

var i = 0;
var xdrag_abs;		// Abscisse absolue du clic drag
var ydrag_abs;		// Ordonnée absolue du clic drag
var xdrag_rel;		// Abscisse relative au cadre Flashactor du clic drag
var ydrag_rel;		// Ordonnée relative au cadre Flashactor du clic drag

var pasX;			// Pas de déplacement en abscisse (cf .ini)
var pasY;			// Pas de déplacement en ordonnée (cf .ini)
var dragEnable; 	// Détermine si le drag'n drop est autorisé ou non (cf .ini)
var alignScroll;	// Nécessaires pour que l'acteur suive le scroll
var alignOldScrollL = alignOldScrollT = pasH = pasV = 0;	//

var deplace = false;
var ids = new Array();
var id = genereId();

var flashObj = false;
//var liveT_O = t_o = null;
var cpt = 0;
var currentWindow = window;
//-----------------Fonctions d'initialisation de l'acteur-----------------------//
//Ecrire l'objet Flashactor dans le document
function flashActorObject(moteur,bulle,ini,flashvars)
{
	obj = '';
	obj +='<object type="application/x-shockwave-flash" data="'+bulle+'" width="2" height="2" id="bulle" style="position: '+position+'; z-index: 101; display: block; left: '+actX+'px; top: '+actY+'px; margin:0px ">\n';
	obj +='<param name="movie" value="'+bulle+'" />\n';
	obj +='<param name="quality" value="high" />\n';
	obj +='<param name="scale" value="noscale" />\n';
	obj +='<param name="wmode" value="'+(transparent?"transparent":"opaque")+'" />\n';
	obj +='<param name="allowScriptAccess" value="sameDomain" />\n';
	obj +='<param name="swLiveConnect" value="true" />\n';
	obj +='<param name="salign" value="TL" />\n';
	obj +='<param name="FlashVars" value="ID='+ids[0]+'" />\n';
	obj +='Bulle\n';
	obj +='</object>\n\n';

	obj +='<object type="application/x-shockwave-flash" data="'+moteur+'" width="2" height="2" id="acteur" style="position: '+position+'; z-index: 100; display: block; left: '+actX+'px; top: '+actY+'px; margin:0px ">\n';
	obj +='<param name="movie" value="'+moteur+'" />\n';
	obj +='<param name="quality" value="high" />\n';
	obj +='<param name="scale" value="noscale" />\n';
	obj +='<param name="wmode" value="'+(transparent?"transparent":"opaque")+'" />\n';
	obj +='<param name="allowScriptAccess" value="sameDomain" />\n';
	obj +='<param name="swLiveConnect" value="true" />\n';
	obj +='<param name="salign" value="TL" />\n';
	obj +='<param name="FlashVars" value="cheminIni='+ini+(flashvars?'&'+flashvars:'')+'&ID='+ids[0]+'" />';
	obj +='Flashactor\n';
	obj +='</object>\n\n';

	document.write(obj);
}

//Charger le Flashactor
function loadFlashactor(scenar)
{
	acteur = getObj('acteur');
/*	acteur.OnReadyStateChange = function(){
		alert(acteur.readyState);
	}*/
	bulle = getObj('bulle');
//	setTimeout("loadRec("+scenar+")", "2000");
//	window.document.onload = loading;
//	window.onload = tmp;
	setTimeout("loadRec('"+scenar+"')", "1000");
}
/*function loading()
{
	setTimeout("loadRec("+scenar+")", 2000);
}*/
function loadRec(scenar)
{
	try
	{
		if(acteur.GetVariable("initFA") == "1")
		{
			dragEnable = (acteur.GetVariable("dragNDrop") == 1);
			pasX = acteur.GetVariable("deplacementXnormal");
			pasY = acteur.GetVariable("deplacementYnormal");
			alignScroll = acteur.GetVariable("alignScroll");
			acteur.SetVariable("bullechoisie",(IE?bulle.movie:bulle.src));
			acteur.SetVariable("Xdebut",parseInt(acteur.style.left));
			acteur.SetVariable("Ydebut",parseInt(acteur.style.top));
			
			if(acteur.GetVariable("moveObj") == 1)
			{
				if (!IE)
				{//NS
				   document.captureEvents(Event.MOUSEDOWN);
				   document.captureEvents(Event.MOUSEMOVE);
				}
				document.onmousedown = drag;
				document.onmouseup = drop;
			}

			if( (scenar != '') ||  (getVar('actPres') == "1") )
			{
				launchActor(scenar);
			}
		}
		else
		{
			window.setTimeout("loadRec('"+scenar+"')",100);
		}
	}
	catch(error)
	{
		window.setTimeout("loadRec('"+scenar+"')",100);
	}
}

//Lancement de l'acteur (scénario d'intro)
function launchActor(scenar)
{
	live();
	if(!acteurPresent)
	{
		var scrollL=getScrollL();
		var scrollT=getScrollT();
		acteurPresent = 1;

		acteur.width = actW;
		acteur.height = actH;

		bulle.width = 1;
		bulle.height = 1;
		
		if(getObj('actPres'))
			getObj('actPres').value = 1;

		if( (scrollL != 0) || (scrollT != 0) )
		{
			acteur.style.left = (parseInt(acteur.style.left) + scrollL) +"px";
			acteur.style.top = (parseInt(acteur.style.top) + scrollT) +"px";
		}
		//Lancement du scénario d'intro
		if(scenar != '')
		{
			playScenario(scenar);
		}
		else
		{
  			clearScenario();
			ajoutScenario("show", "tom");
			envoieScenario();
		}
	}
}
//--------------------------------------------------------------------------//

//-----------------Fonctions de scénario-----------------------//
//Exécution d'une action
function acteurExecute(action, parametre)
{
	if(action != "scenario")
	{
		clearScenario();
		ajoutScenario(action, parametre);
		envoieScenario();
	}
}

//Ajout d'une action au scénario
//par exemple : ajoutScenario('show','nom_acteur_sans_swf');
function ajoutScenario(action,parametre)
{
	scenario += action+'='+parametre+';\n';
}

//Effacer le scénario
function clearScenario()
{
	scenario = "";
}

//Envoi du scénario au moteur Flashactor
function envoieScenario()
{
	if(!acteurPresent)
	{
		launchActor();
	}
	
	try
	{
		if(acteur.GetVariable("persoload"))
		{
//			clearTimeout(t_o);
			envoieScenario2();
		}
		else
		{
/*			if(!t_o)
				t_o = */setTimeout("envoieScenario()",100);
		}
	}
	catch(error)
	{
/*		if(!t_o)
			t_o = */setTimeout("envoieScenario()",100);
	}
	return;
}

function envoieScenario2()
{
	ajoutScenario('stop','');
	acteur.SetVariable("actionpresente","scenariovar");
	acteur.SetVariable("parametrepresent",scenario);
	acteur.SetVariable("letsgodelphi","1");
}

//Chargement d'un scénario texte
function playScenario(scenar)
{
	if(!acteurPresent)
	{
		launchActor();
	}
	
	try
	{
		if(acteur.GetVariable("persoload"))
		{
//			clearTimeout(t_o);
			playScenario2(scenar);
		}
		else
		{
/*			if(!t_o)
			t_o = */setTimeout("playScenario('"+scenar+"')",100);
		}
	}
	catch(error)
	{
/*		if(!t_o)
			t_o = */setTimeout("playScenario('"+scenar+"')",100);
	}
	return;
}

function playScenario2(scenar)
{
	acteur.SetVariable("actionpresente","scenario");
	acteur.SetVariable("parametrepresent",scenar);
	acteur.SetVariable("letsgodelphi","1");
}

function acteurAlert(nomElement, message)
{
/*	if(getVar("actPres") == 1)
	{
		acteur = getObj('acteur');
		bulle = getObj('bulle');
		acteurPresent = 1;
	}
	*/
	if(acteurPresent)
	{
		var x = Math.random();
		var n;
		if((0<=x)&&(x<0.25)){n = 1;}
		else if((0.25<=x)&&(x<0.5)){n = 2;}
		else if((0.5<=x)&&(x<0.75)){n = 3;}
		else{n = 4;}
	
		clearScenario();
		
/*		if(getVar("actPres") == 1)
		{
			ajoutScenario("show", "zebre");
		}*/
		
		//Alignement sur l'objet de formulaire
		alignToObject(nomElement,"LEFT",40,"MIDDLE",30);
	
		switch(n)
		{
			case 1:
				ajoutScenario("play", "cabre");
				break;
			case 2:
				ajoutScenario("play", "secouetete");
				break;
			case 3:
				ajoutScenario("play", "gratgrat");
				break;
			case 4:
				ajoutScenario("play", "gratgrat2");
				break;
			default:
				break;
		}
	
		//Affichage du message d'erreur
		ajoutScenario("speak",'"'+message+'"');
		ajoutScenario("play","restpose");
	
		envoieScenario();
	}
	else
	{
		centreElement(nomElement);
		alert(message);
	}
} 
//---------------------------------------------------------------//

//------------------Fonctions de drag'n drop---------------------//
//PB avec IE : l'acteur passe derrière les éléments "fenêtrés" de IE : principalement les boîtes select
//Capture l'acteur
function drag(e)
{
	if( (dragEnable) && (!deplace) )
	{
		getClic(e);
		
		if( (xdrag_rel >= 0) &&
			(xdrag_rel <= acteur.width) &&
			(ydrag_rel >= 0) &&
			(ydrag_rel <= acteur.height) )
		{
			document.onmousemove = deplacer;
		}
	}
}

//Libère l'acteur
function drop(id)
{
	acteur.SetVariable("Xdebut",parseInt(acteur.style.left));
	acteur.SetVariable("Ydebut",parseInt(acteur.style.top));
	document.onmousemove = null;
}

//Intercepte les coordonnées du clic de drag (absolues et relatives par rapport au cadre Flashactor)
function getClic(e)
{
	var scrollL = getScrollL();
	var scrollT = getScrollT();

	if (IE) //NS
	{//L'événement est positionné par rapport au bord haut de la page visible
		xdrag_abs = event.x + scrollL;
		ydrag_abs = event.y + scrollT;
	}
	else
	{//L'événement est positionné par rapport au haut du document
		xdrag_abs = e.pageX;
		ydrag_abs = e.pageY;
	}

	xdrag_rel = xdrag_abs - parseInt(acteur.style.left);
	ydrag_rel = ydrag_abs - parseInt(acteur.style.top);
}

//Déplace l'acteur en fonction du mouvement de la souris
function deplacer(e) 
{
	var scrollL = getScrollL();
	var scrollT = getScrollT();
	var windowW = getWindowW();
	var windowH = getWindowH();

	// avec IE, on utilise l'objet "event"
	if (IE) 
	{
		x = event.x + scrollL - xdrag_rel;
		y = event.y + scrollT - ydrag_rel;
	}
	// avec Netscape, Mozilla, on utilise l'événement "e" en argument 
	else
	{
		x = e.pageX - xdrag_rel;
		y = e.pageY - ydrag_rel;
	}
	
	x = Math.max(0, x);
	x = Math.min(x, windowW-acteur.width);
	acteur.style.left = x+"px";

	y = Math.max(0, y);
	y = Math.min(y, windowH-acteur.height);
	acteur.style.top = y+"px";
	
	deplacerBulle(parseInt(acteur.style.left),parseInt(acteur.style.top));
} 

//Déplace la bulle en fonction du mouvement de l'acteur
function deplacerBulle(acteurX, acteurY)
{
	var scrollL = getScrollL();
	var scrollT = getScrollT();
	var windowW = getWindowW();

	if(acteurY - parseInt(bulle.height) <= scrollT)
	{//Si l'acteur est trop près du bord haut de la fenêtre
		if(acteurX + parseInt(bulle.width) + parseInt(acteur.width) > windowW)
		{//Si l'acteur est dans le coin haut droit de la fenêtre
			bulle.style.left = acteurX - parseInt(bulle.width) + "px";
			bulle.style.top = scrollT + "px";//alert('1');
		}
		else
		{//l'acteur est n'importe où près du bord haut de la fenêtre
		 // on décale la bulle sur le côté droit de l'acteur et on limite l'ordonnée de la bulle à 0
			bulle.style.left = acteurX + parseInt(acteur.width) + "px";
			bulle.style.top = scrollT + "px";//alert('2');
		}
	}
	else
	{
		if(IE)
			windowW += scrollL;
		if(acteurX + parseInt(bulle.width) > windowW)
		{//l'acteur est n'importe où près du bord droit de la fenêtre
		 // on décale la bulle sur la gauche du perso, mais elle continue à le suivre en ordonnée
		 // pas nécessaire sous firefox
			bulle.style.left = windowW - parseInt(bulle.width) +"px";
			bulle.style.top = acteurY - parseInt(bulle.height) + "px";//alert('3');
		}
		else
		{//l'acteur est bien au milieu de la fenêtre
			bulle.style.left = Math.min(acteurX + offsetBulleX, getWindowW()-parseInt(bulle.width)) + "px";
			bulle.style.top = acteurY + offsetBulleY - parseInt(bulle.height) + "px";//alert('4');
		}
	}
//	window.status = bulle.style.left + ", "+bulle.style.left;
}


//---------------------------------------------------------------//

//------------------Fontions de placement formulaire---------------------//
// Aligner sur l'objet obj
// Hpos :	position horizontale ('LEFT', 'CENTER', ou 'RIGHT')
// Hoffset :	décalage supplémentaire (positif -> vers la droite)
// Vpos :	position verticale ('TOP', 'MIDDLE', 'BOTTOM')
// Voffset :	décalage supplémentaire (positif -> vers le haut)
function alignToObject(objectName, Hpos, Hoffset, Vpos, Voffset)
{
	var object = getElement(objectName);
	var objTop = getObjY(object);
	var objLeft = getObjX(object);
	var width = object.offsetWidth;
	var height = object.offsetHeight;
	var actLeft, actTop;

	centreElement(object);

	switch(Hpos)
	{
		case 'LEFT':
			actLeft = objLeft - parseInt(acteur.width) + Hoffset;
			break;
			
		case 'CENTER':
			actLeft = objLeft - (parseInt(acteur.width) / 2) + (width / 2) + Hoffset;
			break;
		
		case 'RIGHT':
			actLeft = objLeft + width + Hoffset;
			break;
	}
	
	switch(Vpos)
	{
		case 'TOP':
			actTop = objTop - parseInt(acteur.height) - Voffset;
			break;
			
		case 'MIDDLE':
			actTop = objTop + (height / 2) - (parseInt(acteur.height) / 2) - Voffset;
			break;
			
		case 'BOTTOM':
			actTop = objTop + height - Voffset;
			break;
	}

//	acteurExecute("walk", actLeft+", "+actTop);
	ajoutScenario("walk", actLeft+","+actTop);
}

//Centre l'élément de formulaire qui a généré une alerte dans l'écran
function centreElement(obj)
{
	var AppName = navigator.appName.toLowerCase();
	var AppVer = parseFloat(navigator.appVersion);

	if (!(AppName.indexOf("netscape") != -1 && AppVer >= 4.0 && AppVer <= 4.99))
	{
		if(obj!=null)
		{ 
			objY = getObjY(obj);
			if (AppName.indexOf("netscape") != -1 && AppVer >= 5.0 )
			{
				deltaY=objY-(window.screenY+window.innerHeight/2+window.outerHeight  - window.innerHeight);
			}
			else
			{
				deltaY=objY-(window.screenTop+document.body.clientHeight/2);		
			}	
	 	}
 		else
 		{
 			return;
	 	}
	}
	else
	{
		var ancre=objname+"_anchor";
		var ancreR=ancre+"_r";
		if(document.anchors[ancre]!=null)
		{
			objY=document.anchors[ancre].y+window.screenY + window.outerHeight  - window.innerHeight;
			deltaY=objY-(window.screenY+window.innerHeight/2+window.outerHeight  - window.innerHeight);
		}
		else
		{
		return
		}
	}
	this.scroll(1,deltaY);
}
//------------------------------------------------------------------//
//-------------------Fonctions utilitaires---------------------//
//Obtenir l'abscisse d'un objet
function getObjX(obj)
{
	var curleft = 0;
	if (document.getElementById || document.all)
	{	
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;	
		}
		if (IE)
		{
			curleft = curleft /*+ document.body.scrollLeft */+ currentWindow.screenLeft;
		}
		else
		{
			curleft = curleft /*+ document.body.scrollLeft */+ currentWindow.screenX + window.outerWidth  - window.innerWidth;
		}		
	}
	else if (document.layers)
		curleft += obj.x;
		
	return curleft;
}

//Obtenir l'ordonnée d'un objet
function getObjY(obj)
{
	var curtop = 0;
	if (document.getElementById || document.all)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (document.layers)
	{
		curtop += obj.y;
	}	
	return curtop;
}

//Obtenir un élément de formulaire
function getElement(objname)
{
	var frames = window.frames.length;
	if(frames>0)
	{
		for(i=0;i<frames;i++)
		{
			for(j=0;j<top.document.frames[i].document.forms.length;j++)
			{
				for(k=0;k<top.document.frames[i].document.forms[j].length;k++)
				{        
					if(top.document.frames[i].document.forms[j].elements(k).name == objname)
					{
						currentWindow = top.document.frames[i];
						return top.document.frames[i].document.forms[j].elements(k);
					}
				}
			}
			for(j=0;j<top.document.frames[i].document.images.length;j++)
			{    
				if(top.document.frames[i].document.images[j].name == objname)
				{      
					currentWindow = top.document.frames[i];
					return top.document.frames[i].document.images[j];
				}
			}
		}
	}
	else
	{
		currentWindow = window;
		for(j=0;j<document.forms.length;j++)
		{
			for(k=0;k<document.forms[j].length;k++)
			{        
				if(document.forms[j].elements[k].name == objname)
				{
					return document.forms[j].elements[k];
				}
			}
		}
		for(j=0;j<document.images.length;j++)
		{    
			if(document.images[j].name == objname)
			{      
				return document.images[j];
			}
		}
	}
	currentWindow = null;
	return null;
}

//Obtenir une variable passée par l'url
function getVar(nomVariable)
{ 
    var infos = location.href.substring(location.href.indexOf("?")+1, location.href.length)+"&" 
    if (infos.indexOf("#")!=-1) 
        infos = infos.substring(0,infos.indexOf("#"))+"&" 
    var variable=0 
    { 
        nomVariable = nomVariable + "=" 
        var taille = nomVariable.length 
        if (infos.indexOf(nomVariable)!=-1) 
            variable = infos.substring(infos.indexOf(nomVariable)+taille,infos.length).substring(0,infos.substring(infos.indexOf(nomVariable)+taille,infos.length).indexOf("&")) 
    } 
    return variable 
}

//Donne le déplacement horizontal courant de la fenêtre
function getScrollL()
{
	if(IE)
	{
		if (document.documentElement)
		{
			scrollL = document.documentElement.scrollLeft;
		}
		else
		{
			scrollL = document.body.scrollLeft;
		}
	}
	else
	{
		scrollL = window.pageXOffset;
	}
	return scrollL;
}

//Donne le déplacement vertical courant de la fenêtre
function getScrollT()
{
	if(IE)
	{
		if (document.documentElement)
		{
			scrollT = document.documentElement.scrollTop;
		}
		else
		{
			scrollT = document.body.scrollTop;
		}
	}
	else
	{
		scrollT = window.pageYOffset;
	}
	return scrollT;
}

//Donne la largeur courante de la fenêtre
function getWindowW()
{
	if(window.innerHeight)
	{
		windowW = window.innerWidth;
	}
	else
	{
		if (document.documentElement && document.documentElement.clientWidth)
		{
			windowW = document.documentElement.clientWidth;
		}
		else
		{
			windowW = document.body.clientWidth;
		}
	}
	return windowW;
}

function getWindowH()
{
	if(window.innerHeight)
	{
		windowH = window.innerHeight;
	}
	else
	{
		if (document.documentElement && document.documentElement.clientHeight)
		{
			windowH = document.documentElement.clientHeight;
		}
		else
		{
			windowH = document.body.clientHeight;
		}
	}
	return windowH;
}

//Obtenir le nom d'un élement HTML
function getName(inOBJ)
{
	return inOBJ.name;
}

//Obtenir un objet HTML
/*function getObj(objId)
{
	if (IE)
	{//IE
		return document.getElementById(objId);
	}
	else
	{//NS
		return window.document.getElementsByName(inID).item(0);
	}
}*/
/*
function getObj(objId)
{
  if (window.document[objId]) 
  {alert(1+', '+objId);
      return window.document[objId];
  }
  
  if (navigator.appName.indexOf("Microsoft Internet")==-1)
  {alert(2+', '+objId);
    if (document.embeds && document.embeds[objId]){
      return document.embeds[objId];alert('2bis'+', '+objId);
	}
    return document.getElementById(objId);
  }
  else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
  {alert(3+', '+objId);
    return document.getElementById(objId);
  }
}*/


function getObj(objId)
{
  	if (window.document[objId]) {//alert(1);
		return window.document[objId];
	}
    else if(document.getElementById) {//alert(2);
		return document.getElementById(objId);
	}
    else if(document.all) {//alert(3);
		return document.all[objId];
	}
    else if(document.layers) {//alert(4);
		return this._getLayer(objId);
	}
    else if(document.forms) {
        if(document.forms[elmID]) {//alert(5);
			return document.forms[objId];
		}
        else {
            for(var i=0; i<document.forms.length; i++) {
                if(document.forms[i][objId]) {//alert(6);
                    return document.forms[i][objId];
                }
            }
        }
    }
    else {return null;}
}


//Obtenir la position du clic de souris
function getPosSouris(e)
{
	if (document.documentElement && document.documentElement.scrollTop)
	{
		scroll_top = document.documentElement.scrollTop;
		scroll_left = document.documentElement.scrollLeft;
	}
	else
	{
		scroll_top = document.body.scrollTop;
		scroll_left = document.body.scrollLeft;
	}
	x = (!IE) ? e.pageX : event.x + scroll_left;
	y = (!IE) ? e.pageY : event.y + scroll_top;
}

//Génère un identifiant unique (pour la connexion entre un acteur et sa bulle
function genereId()
{
	var id = (Math.random()).toString().substring(2);
							  
	if(!inArray(id,ids))
	{
		ids.push(id);
		return id;
	}
	else
		genereId();
}

//cherche un élément dans un tableau
function inArray(id, tab)
{
	for(var i=0;i<tab.length;i++)
	{
		if(tab[i] == id)
		{
			return true;
		}
	}
	return false;
}
//----------------------------------------------//

//--------------Fonctions flash-------------------//
//Déplace l'objet Flash à la position (x, y)
//Cette fonction est appelée par Flashactor lors d'un walk pour exécuter un déplacement vertical
function moveY(yF)
{
	if(!deplace)
	{
		var yD = parseFloat(acteur.style.top);
		var direction;
//		var pas = 10;
		deplace = true;
		acteur.SetVariable("finDeplacement","0");
		
		if(yD<=yF)
			direction = 1;
		else
			direction = -1;

		moveYrec(yD, yF,direction,pasY);
	}
}

function moveYrec(yD, yF, direction, pas)
{
	if(yD!=yF)
	{
		pas = Math.min(pas, Math.abs(parseInt(acteur.style.top) - yF) );
		yD = (direction * pas) + yD;
		acteur.style.top = Math.round(yD) + "px";
		deplacerBulle(parseInt(acteur.style.left), yD);

		setTimeout("moveYrec("+yD+", "+yF+", "+direction+", "+pas+")",10);
	}
	else
	{
		acteur.SetVariable("Xdebut",parseInt(acteur.style.left));
		acteur.SetVariable("Ydebut",parseInt(acteur.style.top));
		acteur.SetVariable("finDeplacement","1");
		deplace = false;
		return;
	}
}

//Cette fonction est appelée par Flashactor lors d'un walk pour exécuter un déplacement non vertical
function moveXY(xF, yF)
{
	if(!deplace)
	{
		var xD = parseFloat(acteur.style.left);
		var yD = parseFloat(acteur.style.top);
		var direction;
//		var pas = 10;
		deplace = true;
		acteur.SetVariable("finDeplacement","0");
		
		var a = (yF - yD) / (xF - xD);
		if(xD<=xF)
			direction = 1;
		else
			direction = -1;

		moveXYrec(a, xD, yD, xF, yF, direction, pasX);
	}
}

function moveXYrec(a, xD, yD, xF, yF, direction, pas)
{
	if(xD!=xF)
	{
		pas = Math.min(pas, Math.abs(parseInt(acteur.style.left) - xF) );
		xD = (direction * pas) + xD;
		yD = (direction * a * pas) + yD;
		acteur.style.left = Math.round(xD) + "px";
		acteur.style.top = Math.round(yD) + "px";
		deplacerBulle(xD, yD);
		
		setTimeout("moveXYrec("+a+", "+xD+", "+yD+", "+xF+", "+yF+", "+direction+", "+pas+")",10);
	}
	else
	{
		acteur.SetVariable("Xdebut",parseInt(acteur.style.left));
		acteur.SetVariable("Ydebut",parseInt(acteur.style.top));
		acteur.SetVariable("finDeplacement","1");
		deplace = false;
		return;
	}
}

//Cette fonction est appelée par Flashactor lors d'un placeAt 
function place(x, y)
{
	acteur.SetVariable("placesend","0");
	acteur.style.left = (parseFloat(x) + getScrollL()) + "px";
	acteur.style.top = (parseFloat(y) + getScrollT()) + "px";
	acteur.SetVariable("Xdebut",x);
	acteur.SetVariable("Ydebut",y);
	deplacerBulle(x, y);
}

//Donne les position en X et Y du calque Flashactor au flash pour le déplacer
/*function getXY()
{
	acteur.SetVariable("Xdebut",parseInt(acteur.style.left));
	acteur.SetVariable("Ydebut",parseInt(acteur.style.top));
}*/

//Redimensionne la hauteur de la bulle
function setBulleHeight(hauteur)
{
	var h = parseInt(hauteur);
	var bulleX = parseInt(bulle.style.left);
	var bulleY = parseInt(bulle.style.top);
	var acteurX = parseInt(acteur.style.left);
	var acteurY = parseInt(acteur.style.top);
	
	if(bulle.width == 1)
	{
		bulle.width = 200;
	}
	
	bulle.height = h;
	deplacerBulle(acteurX, acteurY);
}


function live()
{
	if(alignScroll != 0)
	{
		pasH = Math.abs(getScrollL() - alignOldScrollL);
		if(alignOldScrollL < getScrollL())
		{//Scroll vers la droite
			acteur.style.left = (parseInt(acteur.style.left) + pasH) + "px";
		}
		else
		{
			if(alignOldScrollL > getScrollL())
			{
				//Scroll vers la gauche
				acteur.style.left = (parseInt(acteur.style.left) - pasH) + "px";
			}
		}
		
		pasV = Math.abs(getScrollT() - alignOldScrollT);
		if(alignOldScrollT < getScrollT())
		{//Scroll vers le bas
			acteur.style.top = (parseInt(acteur.style.top) + pasV) + "px";
		}
		else 
		{
			if(alignOldScrollT > getScrollT())
			{//Scroll vers le haut
				acteur.style.top = (parseInt(acteur.style.top) - pasV) + "px";
			}
		}
//		alert(pasH+', '+pasV);
		alignOldScrollL = getScrollL();
		alignOldScrollT = getScrollT();
	}
//	window.status=alignScroll;

	try
	{
		try{
			if(acteur.GetVariable("movesendY") == "1")
			{//Bouger en Y
				moveY(acteur.GetVariable("Yfin"));
			}}catch(error){}
		try{
			if(acteur.GetVariable("movesendXY") == "1")
			{//Bouger en X et Y
				moveXY(acteur.GetVariable("Xfin"), acteur.GetVariable("Yfin"));
			}}catch(error){}
		try{
			if(acteur.GetVariable("placesend") == "1")
			{//Se placer à un endroit
				place(acteur.GetVariable("nouvellepositionX"), acteur.GetVariable("nouvellepositionY"));
			}}catch(error){}
		try{
			if((acteur.GetVariable("_root.actorexit") == "1") && acteurPresent ==1 )
			{//Modifier la gauteur de la bulle (seulement si l'acteur est affiché)
				acteur.width = 2;
				acteur.height=2;
				acteur.style.left="0px";
				acteur.style.top="0px";
				bulle.width=2;
				bulle.height=2;
				bulle.style.left="0px";
				bulle.style.top="0px";
				acteur.SetVariable("_root.actorexit","0");
				acteur.SetVariable("_root.bulle.hauteur_sent","0");				
			}}catch(error){}
		try{
			if((bulle.GetVariable("_root.bulle.hauteur_sent") == "1") && acteurPresent ==1 )
			{//Modifier la gauteur de la bulle (seulement si l'acteur est affiché)
				setBulleHeight(bulle.GetVariable("_root.bulle.hauteurbulle"));
			}}catch(error){}
		try{
			if(acteur.GetVariable("acteurShow") == "0")
			{//Cacher l'acteur
				acteur.width = 1;
				acteur.height = 1;
				bulle.width = 1;
				bulle.height = 1;
				acteurPresent = 0;
				acteur.SetVariable("acteurShow","1");
//				acteur.SetVariable("persoload","0");
			}}catch(error){}
		window.setTimeout("live()",100);
	}
	catch(error)
	{
		window.setTimeout("live()",100);
	}	
}

//----------------------------------------------------------//
//FIN DAVI ©