// =============================================================================
// :: JAVASCRIPT TO FLASH :: 
// Auteur : aFaD, postmaster@asidefromaday.com
// Référence : http://zoneflashmx.free.fr/zone_flashmx_intro_javascript_vers_flash964.html
// =============================================================================


// =============================================================================
// Pour dialoguer avec le swf, il faut l'identifier dans la page HTML par son id (identifiant) :
// <object id="monFlash" name ="monFlash" >
// <embed name="monFlash" swLiveConnect="true" id="monFlash">
// </embed>
//</object>
//Pour la balise EMBED, c'est l'attribut name qui va identifier le swf; pour la balise OBJECT, c'est l'attribut id.
//Pour Netscape et Mozilla qui utilisent la balise EMBED il faut que l'attribut swLiveConnect soit à true.
// Il semblerait que pour certain Netscape notamment les version 6, l'id est indispensable sur la balise EMBED.

// Creation de l'objet flashID
var flashID = function(id) {
this.id = id
// Log d'erreur en cas de mauvaise utilisation des paramêtres
var log_erreur = new Array("Erreur","Paramètre faux ou manquant");
// =============================================================================


// =============================================================================
//Macromédia spécifie que le dialogue peut se faire pour les navigateurs cités ci-dessous:
//Netscape Navigator 3.0 - 4.7x, et Netscape 6.2 ou version plus récente. 
//Pour les systèmes Windows 95/98/NT/2000/XP ou MacOS qui doit avoir le LiveConnect et Java-enabled (java actif).
//Internet Explorer 3.0 ou version plus récente. Pour les systèmes windows 95/98/NT/2000/XP seulement si ActiveX est actif. 
//Mozilla et Firefox à partir de la version 7.0.19 du plugin flash (gestion du swLiveConnect implantée)

// localisation de l'objet flashID en fonction du navigateur
if (!document.getElementById && document.all) {
	// IE 4+
	var monswf = document.all[id];
} else if (!document.eval && document.getElementById) {
//} else if (document.getElementById) {
	// Les autres navig
	monswf = window.document.getElementById(id);
	//monswf = window.document.id;
	//monswf = window.document.eval(id);
} else {
	// Les autres navig
	monswf = window.document.eval(id);
}
// =============================================================================
//alert(monswf.name.value);

// =============================================================================

// Cette méthode javascript va vous permettre de jouer l'animation.
this.play = function play() {
	monswf.Play();
}
// Cette méthode javascript va vous permettre de stopper l'animation.
this.stop = function StopPlay() {
	monswf.StopPlay();
}


/*this.retaille = function retaille(format) {
	if(!format){window.alert(log_erreur[1]); return;}
		
	if(format==1){
	lf=550;
	hf=400;
	}else if(format==6){
	lf=450;
	hf=300;
	}else if(format==11){
	lf=350;
	hf=200;
	}
	monswf.width=lf;
	monswf.height=hf;
}*/

//Cette méthode javascript va vous permettre d'aller à une image précise de l'animation swf.
// Nombre, entier compris entre 0 et totalframes.
this.gotoAndStop = function gotoAndStop(frame) {
	if(!frame){window.alert(log_erreur[1]); return;}
	monswf.GotoFrame(frame);
	//this.retaille(frame);
}


this.rouge = function rouge(){
	var ou='1';
	monswf.GotoFrame(ou);
}
this.vert = function vert(){
	var ou='6';
	monswf.GotoFrame(ou);
}
this.bleu = function bleu(){
	var ou='11';
	monswf.GotoFrame(ou);
}

// Cette méthode javascript va vous permettre de savoir si l'animation est stoppée ou pas.  Renvoi True ou False.
this.isPlaying = function isPlaying() {
	return monswf.IsPlaying();
}	
// Cette méthode javascript va vous permettre de retourner à la première image de votre animation swf.	
this.rewind = function rewind() {
	monswf.Rewind();
}
// Cette méthode javascript va vous permettre de connaître une variable de votre animation swf ou d'un clip de votre animation. 
// Exemple : monswf.getVariable('_root.var1'); En considerant que var1 a bien été crée dans l'animation.
this.getVariable = function getVariable(valeur) {
	if(!valeur){window.alert(log_erreur[1]); return;}
	return monswf.GetVariable(valeur);
}
// Cette méthode javascript va vous permettre de transmettre une variable à votre animation swf ou à un clip de votre animation.
this.setVariable = function SetVariable(nom,valeur) {
	if(!nom||valeur==null){window.alert(log_erreur[1]); return;}
	monswf.SetVariable(nom,valeur);
}
// Cette méthode javascript va vous permettre de charger un swf dans un niveau n  (_leveln) de votre animation. 
// Exemple : anim1.LoadMovieNum('anim1.swf',0);
this.loadMovieNum = function loadMovieNum(swf,niveau) {
	if(!swf||niveau==null){window.alert(log_erreur[1]); return;}
		monswf.LoadMovie(niveau, swf);
}

// Cette méthode javascript va vous permettre de connaître le pourcentage de chargement du swf.
this.getBytesLoaded = function getBytesLoaded() {
	return monswf.PercentLoaded();
}
//Cette méthode javascript va vous permettre de zoomer horizontalement et verticalement votre animation swf.
//x, entier entre 0 et 00+ (100 étant la taille normale).
//y, entier entre 0 et 00+ (100 étant la taille normale).
//unite, spécifie l'unité utilisée. 1 pour des pixels, 0 pour des pourcents.
this.pan = function pan(x,y,unite) {
	if(x==null||y==null||unite==null){window.alert(log_erreur[1]); return;}
	monswf.Pan(x,y,unite);
}
// Cette méthode javascript va vous permettre de zoomer une zone précise votre animation swf.
// x1, y1; coordonnés du point haut gauche de la zone à zoomer.
// x2; y2; coordonnés du point bas droit de la zone à zoomer.
this.zoomRect = function SetZoomRect(x1,y1,x2,y2) {
	if(x1==null||y1==null||x2==null||y2==null){window.alert(log_erreur[1]); return;}
		monswf.SetZoomRect(x1*20,y1*20,x2*20,y2*20);
}

// Cette méthode javascript va vous permettre de zoomer votre animation swf.
// nombre, entier entre 0 et 00+ (100 étant la taille normale). Unité en pourcentage.
this.zoom = function Zoom(nombre) {
	if(nombre==null){window.alert(log_erreur[1]); return;}
	monswf.Zoom(nombre);
}
// Cette méthode javascript va vous permettre de connaître le numéro de l'image où se trouve la tête de lecture 
// dans votre animation swf ou dans un clip de votre animation. 	
this.currentFrame = function currentFrame(Clip) {
	if(!Clip){window.alert(log_erreur[1]); return;}
	return monswf.TCurrentFrame(Clip)+1;
}
// Cette méthode javascript va vous permettre de connaître le label de l'image où se trouve la tête de lecture 
// dans votre animation swf ou dans un clip de votre animation. 
this.currentLabel = function currentLabel(Clip) {
	if(!Clip){window.alert(log_erreur[1]); return;}
	return monswf.TCurrentLabel(Clip);
}
// Cette méthode javascript va vous permettre d'aller à une image précise votre animation swf ou dans un clip de votre animation. 
// Exemple : anim1.ClipgotoAndStop('_root.clip1',4); va à l'image 4 du movieclip "clip1" de l'animation.
this.clipgotoAndStop = function clipgotoAndStop(Clip,frame) {
	if(!Clip||!frame){window.alert(log_erreur[1]); return;}
	monswf.TGotoFrame(Clip,frame-1);
}

// Cette méthode javascript va vous permettre d'aller à une étiquette d'image précise votre animation swf ou dans un clip de votre animation. 
// Exemple : anim1.CliplabelgotoAndStop('_root.clip1','label1'); va à l'image "label1" du movieclip "clip1" de l'animation.
this.clipLabelgotoAndStop = function clipLabelgotoAndStop(Clip,label) {
	if(!Clip||!label){window.alert(log_erreur[1]); return;}
	monswf.TGotoLabel(Clip,label);
}
// Cette méthode javascript va vous permettre de jouer votre animation swf ou un clip de votre animation. 
// Exemple : anim1.Clipplay('_root.clip1');
this.clipPlay = function clipPlay(Clip) {
	if(!Clip){window.alert(log_erreur[1]); return;}
	monswf.TPlay(Clip);
}
// Cette méthode javascript va vous permettre de stopper votre animation swf ou un clip de votre animation. 
// Exemple : anim1.Clipstop('_root.clip1');
this.clipStop =	function clipStop(Clip) {
		if(!Clip){window.alert(log_erreur[1]); return;}
		monswf.TStopPlay(Clip);
}

// =============================================================================
// Declaration des propriétés flash pour les fonctions javascript TGetProperty() et TSetProperty()
// Référence : http://zoneflashmx.free.fr/zone_flashmx_proprietes_flash972.html

var proprietes = new Array("_x","_y","_xscale","_yscale","_currentframe","_totalframes","_alpha","_visibility","_width","_height","_rotation","_target","_framesloaded","_name","_droptarget","_url","_highquality","_focusrect","_soundbuftime");
var i;

//Cette méthode javascript va vous permettre de connaître une propriété de flash de votre animation swf ou d'un clip de votre animation. 
// Exemple : anim1.ClipGetProperty('_root.clip1','_x'); reverra la largeur du clip "clip1" de l'animation.
this.clipGetProperty = function clipGetProperty(Clip,valeur) {
		if(!Clip||!valeur){window.alert(log_erreur[1]); return;}
		for(i=0; i<proprietes.length; i++) {
			if(valeur==proprietes[i]) {
				def = i;
				break;
			}
			else {
				def = log_erreur[0];
			}
		}
		if(def!=log_erreur[0]) {
			return monswf.TGetProperty(Clip,def);
		}
		else {
			return log_erreur[1];
		}
	}
// Cette méthode javascript va vous permettre de modifier une propriété de flash de votre animation swf ou d'un clip de votre animation. 
// Exemple : anim1.ClipSetProperty('_root.clip1','_alpha',50); reverra au clip "clip1" un _alpha de 50%.
this.clipSetProperty = function clipSetProperty(Clip,prop,valeur) {
	if(!Clip||!prop||valeur==null){window.alert(log_erreur[1]); return;}
	for(i=0; i<proprietes.length; i++) {
		if(prop==proprietes[i]) {
			def = i;
			break;
		} else {
			def = log_erreur[0];
		}
	}
	if(def!=log_erreur[0]) {
		monswf.TSetProperty(Clip,def,valeur);
	} else {
			window.alert(log_erreur[1]);
	}
}

// Cette méthode javascript va vous permettre de connaître le nombre d'images qui composes votre animation.
this.totalFrames = function totalFrames() { 
	return clipGetProperty('_root','_totalframes');
}

// =============================================================================
// =============================================================================
// =============================================================================
// =============================================================================
}


// Détecter le type de navigateur client
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
jsVersion = 1.1;
// Programme d'assistance JavaScript requis pour détecter les informations de version du plug-in Flash Player
function JSGetSwfVer(i){
	// Version NS/Opera >= 3 rechercher le plug-in Flash dans le tableau des plug-ins
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      		var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			descArray = flashDescription.split(" ");
			tempArrayMajor = descArray[2].split(".");
			versionMajor = tempArrayMajor[0];
			versionMinor = tempArrayMajor[1];
			if ( descArray[3] != "" ) {
				tempArrayMinor = descArray[3].split("r");
			} else {
				tempArrayMinor = descArray[4].split("r");
			}
      		versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
            flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
      	} else {
			flashVer = -1;
		}
	}
	// MSN/WebTV 2.6 prend en charge Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 prend en charge Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// La version antérieure de WebTV prend Flash 2 en charge
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	// Détection impossible dans tous les autres cas
	else {
		
		flashVer = -1;
	}
	return flashVer;
} 
// Si elle est appelée sans paramètres,
// cette fonction renvoie une valeur en virgule flottante indiquant la version Flash Player ou 0.0 
// ex : Flash Player 7r14 renvoie 7.14
// Si appelé avec reqMajorVer, reqMinorVer, reqRevision renvoie true si cette version ou une version ultérieure est disponible
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) 
{
 	reqVer = parseFloat(reqMajorVer + "." + reqRevision);
   	// Examiner les versions pour détecter la plus récente	
	for (i=25;i>0;i--) {	
		if (isIE && isWin && !isOpera) {
			versionStr = VBGetSwfVer(i);
		} else {
			versionStr = JSGetSwfVer(i);		
		}
		if (versionStr == -1 ) { 
			return false;
		} else if (versionStr != 0) {
			if(isIE && isWin && !isOpera) {
				tempArray         = versionStr.split(" ");
				tempString        = tempArray[1];
				versionArray      = tempString .split(",");				
			} else {
				versionArray      = versionStr.split(".");
			}
			versionMajor      = versionArray[0];
			versionMinor      = versionArray[1];
			versionRevision   = versionArray[2];
			
			versionString     = versionMajor + "." + versionRevision;   // 7.0r24 == 7.24
			versionNum        = parseFloat(versionString);
        	// est la révision.principale >= révision.principale demandée ET la version mineure >= mineure demandée
			if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) {
				return true;
			} else {
				return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );	
			}
		}
	}	
	return (reqVer ? false : 0.0);
}

