//Detection du navigateur 
/* renvoi un objet qui contient comme propriété les noms des navigateurs (ie6, ns4...).
* Chaque propriété est positionnée à VRAI ou FAUX en fonctions du navigateur.
*/
function NavCheck()
{ 
	this.ver=navigator.appVersion
	this.agent=navigator.userAgent
	this.dom=document.getElementById?1:0
	this.opera5=(navigator.userAgent.indexOf("Opera")>-1 && document.getElementById)?1:0
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0; 
	this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
	this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
	this.ie=this.ie4||this.ie5||this.ie6
	this.mac=this.agent.indexOf("Mac")>-1
	this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
	this.ns4=(document.layers && !this.dom)?1:0;
	this.NC=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5)
	return this
}

// Fonctions pour afficher les menus DHTML en fonction d'un objet HTML donné
// v 0.3
function affichMenu(objetReference, calqueMenu, decalageX, decalageY, decalageOutX, decalageOutY)
{
	// Compatibilité Menu AST du bas
	if (!decalageOutX)
		decalageOutX = (-85);
	if (!decalageOutY)
		decalageOutY = (-160);
		
	// Gestion des arguments optionnels
	if (!decalageX)
		decalageX = 0;
	if (!decalageY)
		decalageY = 0;
	
	// Definition des objets calques
	var calqueMenuOut = calqueMenu + "Out";
	var pixel = " px";
	
	// Définition du Navigateur Client
	Navigateur = NavCheck();		
	// Netscape 4
	if(Navigateur.ns4)
	{
		//alert('NETSCAPE 4');
		var menu = window.document.layers[calqueMenu];
		var menuOut = window.document.layers[calqueMenuOut];
		var objet = window.document.layers[objetReference];
	}
	// Internet Explorer
	else if(Navigateur.ie)
	{
		//alert('IE');
		var menu = window.document.all[calqueMenu];
		var menuOut = window.document.all[calqueMenuOut];
		var objet = window.document.all[objetReference];
	}
	// W3C - Navigateur compatible DOM
	else if(Navigateur.dom)
	{
		//alert('DOM');
		var menu = window.document.getElementById(calqueMenu);
		var menuOut = window.document.getElementById(calqueMenuOut);
		var objet = window.document.getElementById(objetReference);
	}
	
	// Recupération des coordonnées
	var posX = findPosX(objet);
	var posY = findPosY(objet);
	
	// Gestion des décalage optionnels
	decalageX = (decalageX*1); // Force un type INTEGER
	decalageY = (decalageY*1); // Force un type INTEGER
	var newPosX = posX + (decalageX);
	var newPosY = posY + (decalageY);
	
	// Positionnement du menu réel
	/*var coordonneesX = newPosX + pixel;
	var coordonneesY = newPosY + pixel;
	menu.style.left = coordonneesX;
	menu.style.top = coordonneesY;*/
	
	// Positionnement du menu de détection de sortie
	posOut_X = newPosX + (decalageOutX);
	posOut_Y = newPosY + (decalageOutY);
	menuOut.style.left = posOut_X + pixel;
	menuOut.style.top = posOut_Y + pixel;
	
	// Affichage du claque
	menu.style.visibility = "visible";
	menuOut.style.visibility = "visible";
}

function cacheMenu(arrayMenus)
{
	Navigateur = NavCheck();
	if (!arrayMenus)
		var menus = new Array('calcCID', 'calcCIDOut');
	else
		var menus = arrayMenus;
	for (bclMenu = 0; bclMenu < menus.length; bclMenu++)
	{
		calqueMenu = menus[bclMenu];
		// Netscape 4
		if(Navigateur.ns4)
			window.document.layers[calqueMenu].style.visibility = "hidden";
		// Internet Explorer
		else if(Navigateur.ie)
			window.document.all[calqueMenu].style.visibility = "hidden";
		// W3C - Navigateur compatible DOM
		else if(Navigateur.dom)
			window.document.getElementById(calqueMenu).style.visibility = "hidden";
	}
}

// Pour connaitre la position horizontale d'un objet obj
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}
// Pour connaitre la position verticale d'un objet obj
function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}


// Fonctions qui vérifie si les formulaires sont remplis -------------------------------------------------------------------------------------------------------
// Version : 1.3 (15/07/2003)
// Si array "arrayToTest" n'existe pas, tous les champs du formulaire "formulaire" sont testé.
// Necessite les fonctions colorErreur() et colorNormal()
function verifFormulaire(formulaire, arrayChToTest, getReturn)
{
	if (!getReturn)
		getReturn = false;	
	if(arrayChToTest) // seulemnt les champs du tableau arrayChToTest sont à tester
	{
		var box = new Array();
		for(bclChToTest=0; bclChToTest < arrayChToTest.length; bclChToTest++)
		{
			// Reconstruction des objets à partir des string passer dans le tableau
			box[bclChToTest] = eval("window.document."+formulaire.name+"."+arrayChToTest[bclChToTest]);
		}
	}
	else // Tous les champs seront testés
	{
		box = formulaire.elements;
	}
	formErreur = false;
	regXp = /^[a-zA-Z0-9]*\*$/;
	
	for (bclChamps=0; bclChamps < box.length; bclChamps++)
	{
		// Reinitialisation de l'aspect du champs
		colorNormal(box[bclChamps]);
		
		// Test des champs textes
		if ((box[bclChamps].value == "" || box[bclChamps].value == "Non renseigné !!!")&& box[bclChamps].name.match(regXp)==null) // si le champs est vide
		{
			colorErreur(box[bclChamps]);			
			if (box[bclChamps].type != "password" && box[bclChamps].type != "select-one")
				box[bclChamps].value = "Non renseigné !!!";
			formErreur = true;
		}
		// Pour tester les mot de passe, attention le champs de confirmation de mot de passe
		// doit être placé juste derriere le 1er champs du mot de passe. (pas d'element de formulaire
		// entre les deux !!!)
		else if (box[bclChamps].type == "password") // si le champs est le mot de passe
		{
			if (box[bclChamps].value != box[bclChamps+1].value)
			{
				alert ('les mot de passe ne sont pas identiques !');
				return;
			}
		}
		else if (box[bclChamps].name == "chMail") // si le champs est le mail
		{
			result = box[bclChamps].value.match(/^[a-zA-Z0-9\-\_\.]*@[a-zA-Z0-9\-\_\.]*\.[a-zA-Z]{2,4}$/);
			if (result == null)
			{
				colorErreur(box[bclChamps]);
				box[bclChamps].value = "e-mail incorrect !!!";
				formErreur = true;
			}				
		}
		// Test des champs SELECT (valeur par défaut ModeliXe = #)
		else if (box[bclChamps].type == "select-one" && box[bclChamps].value == "#")
		{
			colorErreur(box[bclChamps]);
			formErreur = true;
		}
	}
	if (formErreur == false)
	{
		formulaire.submit();
		if (getReturn == true) return true;
	}
	else
	{
		alert ("Vérifiez que les champs du formulaire\ndont le fond est rouge sont bien remplis...");
		if (getReturn == true) return false;
	}
}
// Fonction utiliser par la vérification de formulaire pour mettre en évidence les erreurs
function colorErreur(elementDuForm)
{
	//elementDuForm.style.border = "1px";
	//elementDuForm.style.borderStyle = "solid";
	//elementDuForm.style.borderColor = "#FF0000";
	elementDuForm.style.backgroundColor = "#FFDDDD";
}
function colorNormal(elementDuForm)
{
	elementDuForm.style.backgroundColor = "#FFFFFF";
}
// Fin fonction de vérification de formulaire générique--------------------------------------------------------------------------------------------------------------------

// Fonction d'enregistrement de la mailing Liste
function saveMail(formulaire, popupWidth, popupHeigth)
{
	var chMail = formulaire.chMail.value;
	if (formulaire.radioAbon[0].checked == true)
		var radioAbon = formulaire.radioAbon[0].value;
	else
		var radioAbon = formulaire.radioAbon[1].value;
	// Ouverture de la popup de suavegarde
	eval ("window.open('mailingListe/mailingListe.php?chMail=" + chMail + "&radioAbon=" + radioAbon + "', 'mailingListe','width=" + popupWidth + ", height=" + popupHeigth + "');");
	// Reinitialisation du formulaire
	formulaire.chMail.value = "";
	formulaire.radioAbon[1].checked = false;
	formulaire.radioAbon[0].checked = true;
}


// Fonctions propores à Dreamweaver -------------------------------------------------------------------
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_nbGroup(event, grpName) { //v6.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up);
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == "down") {
    nbArr = document[grpName];
    if (nbArr)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
      nbArr[nbArr.length] = img;
  } }
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
// -- FIN Fonctions propores à Dreamweaver -------------------------------------------------------------


