/*debut du rollover sur les images*/
function MM_swapImgRestoreboutton(bbnumber) { //v3.0
  if(buffimg[bbnumber]!=1)
  {
    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_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.0
  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 && document.getElementById) x=document.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];}
}
/*fin du rollover sur les images*/

/*ouverture des popup*/
function openpopup(page, x, y, scroll)
{
	var top=(screen.height-y)/2;
	var left=(screen.width-x)/2;
	window.open(page, "", "toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars="+scroll+",resizable=0,top="+top+",left="+left+",width="+x+",height="+y);
}

/*met une valeur d'une liste déroulante vers un  textearéa*/
function txtliste(txt, valeur)
{
	texte = eval(txt);//prend l'objet
	
	if(texte.value!="") // saut de ligne si il y a besoins
		valeur ="\n"+valeur;

	texte.value += valeur
}

//vide les champs
function vide(champsa, champsb)
{
	champsa=eval("document."+champsa);
	champsb=eval("document."+champsb);
	if(champsa.value!="")
		champsb.value="";
}

function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

/*longueur de champs text
liste des paramètres :
	txt : champs à test svt this
	max: nombre de charactère maximum
	aff: zone d'affiche du nombres de charactère restant*/
function maxlength(txt,max,aff)
{
	reste=max-txt.value.length;
	if(reste<=0)
	{
		reste=0;
		alert("vous etes limités à "+max+" charactères");
		txt_ok=txt.value.substring(0,max);
		txt.value=txt_ok;
	}
	document.getElementById(aff).innerHTML="Il vous reste "+reste+" caractère(s)";
}

/*fonction d'ouverture de popup de transfer ftp
liste des paramètres
	dest	: répetoire de destination du fichiers
	form	: formulaire en traitement
	ftp	: nom du champs ftp à modifier
	fichier	: nom du champs file à bloquer*/
function ftp_popup(dest, form, ftp, fichier)
{
	/*début de l'interdiction de copier par le champs file*/
	fichier = eval("document."+form+"."+fichier);	// objet fichier à bloqué
	fichier.disabled=true;				// bloquage de champs
	/*fin de l'interdiction de copier par le champs file*/
	
	/*début de prise en compte du ftp*/
	ftp = eval("document."+form+"."+ftp);
	ftp.value=1;
	/*fin de prise en compte du ftp*/
	
	openpopup(dest, 500, 500, 1);	// ouverture de la popup ftp
}

/* fonction de passage d'une liste à une autre
liste des paramètres :
	form	: nom du formulaire de la page
	source	: nom de la liste source
	dest	: nom de la liste destination
	liste	: champs avec la liste de tous les éléments choisi
	action	: action sur la liste
	message	: message d'erreur en cas de non sélection*/
function change_liste(form, source, dest, liste, action, message)
{
	/* début de la création des variables locales */
	var obj_source = eval("document."+form+"."+source);
	var obj_dest = eval("document."+form+"."+dest);
	var obj_liste = eval("document."+form+"."+liste);
	/* fin de la création des variables locales */
	
	/* début du test de l'action ou de l'erreur */
	if(obj_source.value == "")
	{
		alert(message);
	}else
	{
		/* début de l'ajout dans la liste de destination */
		option_add = new Option(obj_source.options[obj_source.selectedIndex].text,obj_source.options[obj_source.selectedIndex].value);	// création de l'option
		obj_dest.options[obj_dest.options.length] = option_add;										// ajout de l'option
		/* fin de l'ajout dans la liste de destination */
		
		/* début de la gestion de la liste */
		if(action == "add")
		{
			obj_liste.value += obj_source.options[obj_source.selectedIndex].value+"/";
		}else if(action == "del")
		{
			var tab_liste = obj_liste.value.split("/");
			var i;
			
			obj_liste.value = "";
			
			for(i=0; i<tab_liste.length-1; i++)
			{
				info_liste = tab_liste[i].split("||");
				
				if(info_liste[0] != obj_source.options[obj_source.selectedIndex].value)
				{
					obj_liste.value += tab_liste[i]+"/";
				}
			}
		}
		/* fin de la gestion de la liste */
		
		obj_source.options[obj_source.selectedIndex] = null;	// suppression de l'option
	}
	/* fin du test de l'action ou de l'erreur */
}

/* fonction de passage d'une liste à une autre
liste des paramètres :
	form	: nom du formulaire de la page
	source	: nom de la liste source
	dest	: nom de la liste destination
	liste	: champs avec la liste de tous les éléments choisi
	action	: action sur la liste
	message	: message d'erreur en cas de non sélection*/
function change_listegroupe(form, source, dest, liste, action, message)
{
	/* début de la création des variables locales */
	var obj_source = eval("document."+form+"."+source);
	var obj_dest = eval("document."+form+"."+dest);
	var obj_liste = eval("document."+form+"."+liste);
	var info_option, obj_optgroup, info_liste;
	/* fin de la création des variables locales */
	
	/* début de la création du tableau si il y besoin */
	if(!tab_groupe[dest])
	{
		tab_groupe[dest] = new Array();
		tab_groupe[dest]['test'] = 0;
		tab_groupe[dest]['tab'] = new Array();
	}
	/* fin de la création du tableau si il y besoin */
	
	/* début du test de l'action ou de l'erreur */
	if(obj_source.value == "")
	{
		alert(message);
	}else
	{
		/* début de l'ajout dans la liste de destination */
		option_add = new Option(obj_source.options[obj_source.selectedIndex].text,obj_source.options[obj_source.selectedIndex].value);	// création de l'option
		obj_dest.options[obj_dest.options.length] = option_add;										// ajout de l'option
		info_option = obj_source.options[obj_source.selectedIndex].value.split("||");							// infos sur l'option choisie
		obj_optgroup = obj_source.options[obj_source.selectedIndex].parentNode;								// option du group en question
		
		/* début de l'affichage de l'optgroupe */
		if(!tab_groupe[dest]['tab'][info_option[0]] || tab_groupe[dest]['tab'][info_option[0]] == null)
		{
			optGroup = document.createElement('optgroup');					// création de l'objet optgroup
			optGroup.label = obj_source.options[obj_source.selectedIndex].parentNode.label;	// enregistrement du nom
			obj_dest.appendChild(optGroup);							// afficha de optgroupe
			tab_groupe[dest]['tab'][info_option[0]] = optGroup;				// sauvegarde le optgroupe
		}

		/* fin de l'affichage de l'optgroupe */
		tab_groupe[dest]['tab'][info_option[0]].appendChild(option_add);	// sauvegarde le optgroupe
		/* fin de l'ajout dans la liste de destination */
		
		/* début de la gestion de la liste */
		if(action == "add")
		{
			obj_liste.value += obj_source.options[obj_source.selectedIndex].value+"/";
		}else if(action == "del")
		{
			var tab_liste = obj_liste.value.split("/");
			var i;
			
			obj_liste.value = "";
			
			for(i=0; i<tab_liste.length-1; i++)
			{
				info_liste = tab_liste[i].split("||");
				if(info_liste[1] != info_option[1])
				{
					obj_liste.value += tab_liste[i]+"/";
				}
			}
		}
		/* fin de la gestion de la liste */
		obj_source.options[obj_source.selectedIndex] = null;	// suppression de l'option

		/* début test de la suppression des menus dans la liste dest */
		if(obj_optgroup.childNodes.length==tab_groupe[source]['test'])
		{
			obj_source.removeChild(obj_optgroup);			// supression du groupe
			tab_groupe[source]['tab'][info_option[0]] = null;	// vide le tableau
		}
		/* fin test de la suppression des menus dans la liste dest */
		
	}
	/* fin du test de l'action ou de l'erreur */
}

/* fonction de chargement des listes déja existante
liste des paramètres:
	form		: formulaire à traiter
	tab_liste	: tableau avec toute les liste déroulante*/
function functab_liste(form, tab_liste)
{
	/* début de la déclaration des variable */
	var obj_liste, id_tab, i, j, tab;
	tab_groupe = new Array();	// tableau avec les id des groupe inserer
	/* fin de la déclaration des variable */

	/* début de la création des tableaux des listes */
	for(i=0; i<tab_liste.length; i++)
	{
		tab_groupe[tab_liste[i]] = new Array();		// tableau avec les id des groupe inserer
		tab_groupe[tab_liste[i]]['test'] = 1;		// champs de test
		tab_groupe[tab_liste[i]]['tab'] = new Array();	// tableau avec les id des groupe inserer
		
		obj_liste = eval("document."+form+"."+tab_liste[i]);	// objet de la liste

		/* début du traitement de tous les groupes de la liste */
		for(j=1; j<obj_liste.childNodes.length; j=j+2)
		{
			tab = obj_liste.childNodes[j].childNodes[1].value.split("||");	// tableau avec l'id de l'optgroup
			id_tab = tab[0];						// id de l'optgroup
			tab_groupe[tab_liste[i]]['tab'][id_tab] = obj_liste.childNodes[j];	// sauvegarde le noeud optgroup
		}
		/* fin du traitement de tous les groupes de la liste */
	}
	/* fin de la création des tableaux des listes */
}

/* fonction de tri d'une liste
liste des paramètres :
	form		: nom du formulaire de la page
	liste		: nom de la liste 
	champs		: champs avec la liste de tous les éléments choisi
	action		: action sur la liste
	message		: message d'erreur en cas d'extremité
	message_vide	: message d'erreur en cas de non sélection*/
function trie_liste(form, liste, champs, action, message, message_vide)
{
	/* début de la création des variables locales */
	var obj_liste = eval("document."+form+"."+liste);
	var obj_champs = eval("document."+form+"."+champs);
	var i, option_1, option_2, id_tri;
	/* fin de la création des variables locales */
	
	/* début du test des actions */
	if(obj_liste.value == "")
	{
		alert(message_vide);
	}else if((action == "monte" && obj_liste.selectedIndex == 0) || (action == "descend" && obj_liste.selectedIndex == obj_liste.options.length))
	{
		alert(message);
	}else
	{
		id_tri = obj_liste.selectedIndex;	// id de l'option celest

		/* début du trie dans la liste */
		if(action == "monte")
		{
			option_1 = new Option(obj_liste.options[id_tri].text,obj_liste.options[id_tri].value);		// création de l'option
			option_2 = new Option(obj_liste.options[(id_tri-1)].text,obj_liste.options[(id_tri-1)].value);	// création de l'option
			obj_liste.options[id_tri] = option_2;								// insertion de l'option
		        obj_liste.options[(id_tri-1)] = option_1;							// insertion de l'option
		}else if(action == "descend")
		{
			option_1 = new Option(obj_liste.options[id_tri].text,obj_liste.options[id_tri].value);		// création de l'option
			option_2 = new Option(obj_liste.options[(id_tri+1)].text,obj_liste.options[(id_tri+1)].value);	// création de l'option
			obj_liste.options[id_tri] = option_2;								// insertion de l'option
		        obj_liste.options[(id_tri+1)] = option_1;								// insertion de l'option
		}
		/* fin du trie dans la liste */

		/* début du tri dans les champs */
		obj_champs.value = "";
		
		for(i=0; i<obj_liste.options.length; i++)
		{
			obj_champs.value += obj_liste.options[i].value+"/";
		}
		/* fin du tri dans les champs */
	}
	/* fin du test des actions */

}