	
	//************librairie fonction pour select**************	
	function initOption( formName, ddName ) {
		  Liste = document.forms[formName][ddName];
		  try {
			  ListLenDeb = Liste.options.length;
		  }
		  catch (e) {ListLenDeb = 0}
		  
		  for (var i=0; i<ListLenDeb; i++) {
		    Liste.options[i] = null;
		  }
		  Liste.options.length = 0;
	}
	function messageInDd( formName, ddName, message ) {
	  var Liste = document.forms[formName][ddName];
	  var myNewOption = new Option();
	  myNewOption.value = '-1';
	  //myNewOption.text = escapeHtmlChars(message);
	  if(myNewOption.innerHTML){myNewOption.innerHTML = message;}else{myNewOption.text = escapeHtmlChars(message);}
	  Liste.options[0] = myNewOption;
	}

	function changeOption(formName, ddName, optNum, optVal, optText, isSelected) {
	  var myNewOption = new Option();
	  myNewOption.value = optVal;
	  //myNewOption.text = escapeHtmlChars(optText);
	  if(myNewOption.innerHTML){myNewOption.innerHTML = optText;}else{myNewOption.text = escapeHtmlChars(optText);}
	  document.forms[formName][ddName].options[optNum] = myNewOption;
	}
	
	function escapeHtmlChars(str)
	{
		str = str.replace("&yuml;","\u00FF");
		return str;
	}
	//************ fin librairie fonction pour select**************
	
	// Definition de l'itemObj. Object javascript qui represente une ville ou un departement 
	function itemObj (codeRelated, codeItem, labelItem) {
		this.codeRelated = codeRelated;
		this.codeItem = codeItem;
		this.labelItem = labelItem;
	}
	
	// Definition d'une classe collection primitive pour les items (ville ou departement)
	function listeItem () {
		 this.ensemble = new Array();
		 this.nbElements = 0;
	 
		 // fonction d'ajout d'un element a la collection
		 function addElementFunction(element) { 
		 	this.ensemble[this.nbElements] = element;
		 	this.nbElements++;
		 }
	 	
		 // fonction pour afficher la liste des items dans un select
		 // filtre par l'argument related
		 function displayItemRelatedFunction(related,formName,selectName,option) { 
		 	j=1; 
		 	for (i=0; i<this.ensemble.length;i++ ) {
		 		city = this.ensemble[i];
		 		codeRelated = "_"+city.codeRelated+"_";	 		
		 		if (option==1) {
			 		if (related.indexOf(codeRelated,0)>=0 || related=='-1') {
			 			changeOption(formName,selectName, j, city.codeItem, city.labelItem, false);
			 			j++;	 			
			 		}
			 	} else {
			 		if (related==city.codeRelated || related=='-1') {
			 			changeOption(formName,selectName, j, city.codeItem, city.labelItem, false);
			 			j++;	 			
			 		}			 		
			 	}		
		 	}
		 }
	 
		 // fonction pour afficher la liste des items dans un select.
		 // retourne la liste des codeItem dans une chaine de caractere
		 function displayItemRelatedValueFunction(related,formName,selectName,option) { 
		 	j=1; 
		 	sValue="";
		 	for (i=0; i<this.ensemble.length;i++ ) {
		 		city = this.ensemble[i];	 		
		 		if (option==1) {
			 		if (related.indexOf(city.codeRelated,0)>=0 || related=='-1') {
			 			changeOption(formName,selectName, j, city.codeItem, city.labelItem, false);
			 			j++;
			 			sValue=sValue+'_'+city.codeItem;	 			
			 		}
			 	} else {
			 		if (related==city.codeRelated || related=='-1') {
			 			changeOption(formName,selectName, j, city.codeItem, city.labelItem, false);
			 			j++;
			 			sValue=sValue+'_'+city.codeItem;	 			
			 		}			 	
			 	}		
		 	}
		 	return "_" + sValue + "_";
		 }
		 
		 this.addElement = addElementFunction;
		 this.displayItemRelated = displayItemRelatedFunction;
		 this.displayItemRelatedValue = displayItemRelatedValueFunction;
	}