/* --- Javascripts Utils --- */

/* -------------------------------------- */
/* --- Cache ou Montre un identifiant --- */
/* -------------------------------------- */

function xd_cacheMontreLId(ID) {
	if (document.getElementById(ID).style.display == 'none' || document.getElementById(ID).style.display == '') {
		document.getElementById(ID).style.display = 'block'
	} else {
		document.getElementById(ID).style.display = 'none'
	}
}

function xd_cacheTousLesId(Racine,Debut,Fin) {
	for(i=Debut;i<=Fin;i++) {
		if (document.getElementById(Racine+i)) {
			document.getElementById(Racine+i).style.display = 'none'
		}
	}
}



/* ------------- */
/* --- PopUp --- */
/* ------------- */

function xd_popUpImage(url,largeur,hauteur) {
	window.open(url,'popup','toolbar=0,location=0,directories=0,menuBar=0,scrollbars=0,resizable=1,width='+largeur+',height='+hauteur);
}

function xd_popUp(url,largeur,hauteur) {
	window.open('index.php5?acces='+url,'zoom','toolbar=0,location=0,directories=0,menuBar=0,scrollbars=0,resizable=1,width='+largeur+',height='+hauteur+',left=200,top=200');
}


/* ------------------------------------------------------- */
/* -------- Vérification des formulaires ----------------- */
/* --- Vérifie la nécessité d'un élément du formulaire --- */
/* ------------------------------------------------------- */

// param 1 : id du formulaire à traiter
// param 2 à n : id des champs spéciaux
// --- champ *: champ est nécessaire
// --- champ @: champ doit être une adresse email valide
// --- champ °: champ doit être un nombre
// --- champ !° : champ ne doit pas être un nombre
// --- champ1 || champ2 : soit champ1 soit champ2
// --- champ1 && champ2 : si champ1 est remplie alors champ2 doit l'être aussi
// --- champ ! val : champ doit être différent de val (pour les select)

// exemple d'utilisation
// <input type="button" name="envoyer" id="envoyer" value="envoyer" class="validation" onClick="XD_verifieFormulaire('IDformulaire','nom|*','email|@*','sujet|*','message|*')" />


// Contrainte : chaque champ doit être identifier (ID)

function XD_verifieFormulaire() {

	// récupération des paramètres
	params = XD_verifieFormulaire.arguments;

	messages = new Array();
	erreurs = new Array('');

	lesErreurs = '';

	messages[0]='Champs Obligatoires\n';
	messages[1]='Au moins l\'un des champs ci-dessous est obligatoire\n';
	messages[2]='Les champs suivants doivent être des adresses emails valides\n';
	messages[3]='Les champs suivants doivent être des nombres\n';
	messages[4]='Champs à sélectionner\n';
	messages[5]='Votre sélection implique une autre champ obligatoire\n';

	for (i=1; i<params.length; i+=1) {

		/* --------------------------- */
		/* --- Champs Obligatoires --- */
		/* --------------------------- */
		if (params[i].indexOf('*')!=-1 && document.getElementById(params[i].substr(0,params[i].indexOf('|'))).value=='') {
			elt = params[i].substr(0,params[i].indexOf('|'));
			if (erreurs[0]==undefined || erreurs[0]=='') {
				erreurs[0]=messages[0]+'- '+elt+'\n';
			} else {
				erreurs[0]+='- '+elt+'\n';
			}
		}

		/* ---------------------------- */
		/* --- Doit être un Email ? --- */
		/* ---------------------------- */
		if (params[i].indexOf('@')!=-1) {
			elt = params[i].substr(0,params[i].indexOf('|'));
			if (document.getElementById(elt).value!='') {
				valeur = document.getElementById(elt).value;
				if (valeur.indexOf('@')==-1 || valeur.indexOf('@')<1) {
					// Pas de arrobase @
					if (erreurs[2]==undefined || erreurs[2]=='') {
						erreurs[2]=messages[2]+'- '+elt+'\n';
					} else {
						erreurs[2]+='- '+elt+'\n';
					}
				} else {
					// Pas de domaine ou domaine trop court
					valeurfin = valeur.substr(valeur.indexOf('@'),valeur.length);
					if (valeurfin.indexOf('.')==-1 || valeurfin.indexOf('.')==valeurfin.length-1 || valeurfin.substr(0,valeurfin.indexOf('.')).length<3) {
						if (erreurs[2]==undefined || erreurs[2]=='') {
							erreurs[2]=messages[2]+'- '+elt+'\n';
						} else {
							erreurs[2]+='- '+elt+'\n';
						}
					} else {
						// pas de TLD ou TLD trop court
						if (valeurfin.substr(valeurfin.indexOf('.')+1,valeurfin.length).length<2) {
							if (erreurs[2]==undefined || erreurs[2]=='') {
								erreurs[2]=messages[2]+'- '+elt+'\n';
							} else {
								erreurs[2]+='- '+elt+'\n';
							}
						}
					}
				}
			}
		}


		/* ----------------------------------- */
		/* --- l'un OU l'autre ou les Deux --- */
		/* ----------------------------------- */
		// A améliorer en elt1 ou elt2 ou elt3 ou elt4 ou .... ou eltn

		if (params[i].indexOf('||')!=-1) {
			elt1 = params[i].substr(0,params[i].indexOf('||'));
			elt2 = params[i].substr(params[i].indexOf('||')+2,params[i].length);
			if (document.getElementById(elt1).value=='' && document.getElementById(elt2).value=='') {
				if (erreurs[1]==undefined) {
					erreurs[1]=messages[1]+'- '+elt1+' ou '+elt2+'\n';
				} else {
					erreurs[1]+=elt1+' ou '+elt2+'\n';
				}
			}
		}


		/* --------------------------- */
		/* --- Doit être un Nombre --- */
		/* --------------------------- */
		if (params[i].indexOf('°')!=-1) {
			elt = params[i].substr(0,params[i].indexOf('|'));
			if (isNaN(document.getElementById(elt).value) && document.getElementById(elt).value!='') {
				if (erreurs[3]==undefined || erreurs[3]=='') {
					erreurs[3]=messages[3]+'- '+elt+'\n';
				} else {
					erreurs[3]+='- '+elt+'\n';
				}
			}
		}

		/* ---------------------------------- */
		/* --- Doit être différent de Val --- */
		/* ---------------------------------- */
		if (params[i].indexOf('!')!=-1) {
			elt = params[i].substr(0,params[i].indexOf('!'));
			val = params[i].substr(params[i].indexOf('!')+1,params[i].length);
			if (document.getElementById(elt).options[document.getElementById(elt).selectedIndex].value==val) {
				if (erreurs[4]==undefined || erreurs[4]=='') {
					erreurs[4]=messages[4]+'- '+elt+'\n';
				} else {
					erreurs[4]+='- '+elt+'\n';
				}
			} 
		}

		/* ------------------------------ */
		/* --- si l'un alors l'autre  --- */
		/* ------------------------------ */
		// A REVOIR mettre ELT[CONDITION]VALEUR?vrai
		if (params[i].indexOf('?')!=-1) {
			elt1 = params[i].substr(0,params[i].indexOf('?'));
			elt2 = params[i].substr(params[i].indexOf('?')+1,params[i].length);

			if (document.getElementById(elt1).value!='' && document.getElementById(elt2).value=='') {
				if (erreurs[1]==undefined) {
					erreurs[1]=messages[5]+'- '+elt1+' implique '+elt2+'\n';
				} else {
					erreurs[1]+=elt1+' ou '+elt2+'\n';
				}
			}
		}

		/* -------------------------- */
		/* --- Doit être une Date --- */
		/* -------------------------- */


	}

	for(i=0; i<erreurs.length; i+=1) {
		if (erreurs[i]!=undefined) {
			lesErreurs+=erreurs[i];
		}
	}
	
	if (lesErreurs!='') {
		alert(lesErreurs);
	}
	document.retour = (lesErreurs == '');
}
/* --- FIN VERIFIE FORMULAIRE --- */

/* --------------------------------------------------------------------------- */
/* ----------------- Flash Version Detector  v1.2.1  ------------------------- */
// documentation: http://www.dithered.com/javascript/flash_detect/index.html
// license: http://creativecommons.org/licenses/by/1.0/
// code by Chris Nott (chris[at]dithered[dot]com)
// with VBScript code from Alastair Hamilton (now somewhat modified)
/* --------------------------------------------------------------------------- */


function isDefined(property) {
  return (typeof property != 'undefined');
}

var flashVersion = 0;
function getFlashVersion() {
   var latestFlashVersion = 8;
   var agent = navigator.userAgent.toLowerCase(); 
   
   // NS3 needs flashVersion to be a local variable
   if (agent.indexOf("mozilla/3") != -1 && agent.indexOf("msie") == -1) {
      flashVersion = 0;
   }
   
   // NS3+, Opera3+, IE5+ Mac (support plugin array):  check for Flash plugin in plugin array
   if (navigator.plugins != null && navigator.plugins.length > 0) {
      var flashPlugin = navigator.plugins['Shockwave Flash'];
      if (typeof flashPlugin == 'object') { 
         for (var i = latestFlashVersion; i >= 3; i--) {
            if (flashPlugin.description.indexOf(i + '.') != -1) {
               flashVersion = i;
               break;
            }
         }
      }
   }

   // IE4+ Win32:  attempt to create an ActiveX object using VBScript
   else if (agent.indexOf("msie") != -1 && parseInt(navigator.appVersion) >= 4 && agent.indexOf("win")!=-1 && agent.indexOf("16bit")==-1) {
      var doc = '<scr' + 'ipt language="VBScript"\> \n';
      doc += 'On Error Resume Next \n';
      doc += 'Dim obFlash \n';
      doc += 'For i = ' + latestFlashVersion + ' To 3 Step -1 \n';
      doc += '   Set obFlash = CreateObject("ShockwaveFlash.ShockwaveFlash." & i) \n';
      doc += '   If IsObject(obFlash) Then \n';
      doc += '      flashVersion = i \n';
      doc += '      Exit For \n';
      doc += '   End If \n';
      doc += 'Next \n';
      doc += '</scr' + 'ipt\> \n';
      document.write(doc);
   }
      
   // WebTV 2.5 supports flash 3
   else if (agent.indexOf("webtv/2.5") != -1) flashVersion = 3;

   // older WebTV supports flash 2
   else if (agent.indexOf("webtv") != -1) flashVersion = 2;

   // Can't detect in all other cases
   else {
      flashVersion = flashVersion_DONTKNOW;
   }

   return flashVersion;
}

flashVersion_DONTKNOW = -1;

