var loadVille = null;
var loadZone = null;
var message = new Array(6);
var id_reg = 'reg';
var id_dep = 'dep';
var id_vil = 'vil';


function initListesResa(reg, dep, vil)
{
	this.id_reg = 'regresa';
	this.id_dep = 'depresa';
	this.id_vil = 'vilresa';
	this.initListes(reg, dep, vil);
}

function initListes(reg, dep, vil)
{
	if(arguments.length > 3){
		this.id_reg = arguments[3];
	}
	if(arguments.length > 4){
		this.id_dep = arguments[4];
	}
	if(arguments.length > 5){
		this.id_vil = arguments[5];
	}
	
	// recuperer la langue d'utilisateur pour afficher la valeur par defaut des liste
	if(langue == ''){
		langue = "fr_FR";
	}
	
	var depart	= document.getElementById(this.id_dep);
	var regio 	= document.getElementById(this.id_reg);
	var ville 	= document.getElementById(this.id_vil);
	
	getDefaultRegionValue(langue);
	getDefaultDepartementValue(langue);
	getDefaultVilleValue(langue);
	
	// on fait appelle au fonction qui remplissent les listes de departements et de regions
	if(regio){
		afficheRegions(regio,message[0]);
	}
	if(depart){
		afficheDepartements(depart,message[2],0);
	}
	if(ville){
		afficheVilles(ville,message[4]);
	}
	if(reg != 0) {
		selectOption(regio,reg); 
		updateDepartements(0,depart,regio)
	}
	if(dep != 0) {
	 	// selectOption(depart,dep);
	 	updateDepartements(dep,depart,regio)
	}
	if(vil != 0) {
		selectOption(ville,vil);
	}
}

/*-------------------------------------------------------------------*/
/* 			affiche la liste de toutes les villes	 				*/
/*-------------------------------------------------------------------*/
function afficheVilles(_ville, val){
	// on efface le contenu des select villes pour la resa et l'annuaire
	_ville.options.length = 0;
	_ville.options[_ville.options.length] = new Option(val,'');
	if(typeof(villes) != "undefined"){
		for(var i=0;i<villes.length;i++){
			// on ajoute chaque ville de la region selectionnée
			_ville.options[_ville.options.length] = new Option(villes[i][0],villes[i][1]);
		}
	}
}

/*-------------------------------------------------------------------*/
/* 			affiche la liste de tous les departements 				*/
/*-------------------------------------------------------------------*/
function afficheDepartements(_depart, val, start){
	// on efface le contenu des select departements pour la resa et l'annuaire
	_depart.options.length = start;
	_depart.options[_depart.options.length] = new Option(val,'');
	for(var dep in departements){
		if(departements[dep][0] != undefined){
			_depart.options[_depart.options.length] = new Option(departements[dep][0], departements[dep][1]);	
		}	
	}
}

/*-------------------------------------------------------------------*/
/* 			affiche la liste de toutes les regions 					*/
/*-------------------------------------------------------------------*/

function afficheRegions(_regio, val){	
	// on efface le contenu des select regions pour la resa et l'annuaire
	_regio.options.length = 0;
	_regio.options[_regio.options.length] = new Option(val,'');
	for(var i =0;i<regions.length;i++){
		// on ajoute chaque regions
		_regio.options[_regio.options.length] = new Option(regions[i][0],regions[i][1]);
	}
}

/*-------------------------------------------------------------------*/
/* afficher la valeur par defaut des listes (regions) 				 */
/*-------------------------------------------------------------------*/
function getDefaultRegionValue(lang){
	switch(lang){
		case 'fr_FR' : message[0] = "Region"; 	message[1] = "Sans importance"; break;
   		case 'en_US' : message[0] = "Area";   	message[1] = "Unimportant";     break;
   		case 'de_DE' : message[0] = "Area"; 	message[1] = "Unimportant"; 	break;
   		case 'nl_NL' : message[0] = "Area";		message[1] = "Unimportant"; 	break;
   		case 'it_IT' : message[0] = "Area"; 	message[1] = "Unimportant"; 	break;
   		case 'es_ES' : message[0] = "Area"; 	message[1] = "Unimportant"; 	break;
   		default      : message[0] = "Region"; 	message[1] = "Sans importance"; break;
	}
}

/*-------------------------------------------------------------------*/
/* afficher la valeur par defaut des listes (departements) 			 */
/*-------------------------------------------------------------------*/
function getDefaultDepartementValue(lang){
	switch(lang)
	{
		case 'fr_FR' : message[2] = "Departement"; 	message[3] = "Sans importance"; break;
   		case 'en_US' : message[2] = "Department";  	message[3] = "Unimportant"; 	break;
   		case 'de_DE' : message[2] = "Department"; 	message[3] = "Unimportant"; 	break;
   		case 'nl_NL' : message[2] = "Department"; 	message[3] = "Unimportant"; 	break;
   		case 'it_IT' : message[2] = "Department"; 	message[3] = "Unimportant"; 	break;
   		case 'es_ES' : message[2] = "Department"; 	message[3] = "Unimportant"; 	break;
   		default      : message[2] = "Departement"; 	message[3] = "Sans importance"; break;
	}
}

/*-------------------------------------------------------------------*/
/* afficher la valeur par defaut des listes (villes) 			 */
/*-------------------------------------------------------------------*/
function getDefaultVilleValue(lang){
	switch(lang){
		case 'fr_FR' : message[4] = "Ville"; message[5] = "Sans importance"; break;
   		case 'en_US' : message[4] = "Town";  message[5] = "Unimportant";     break;
   		case 'de_DE' : message[4] = ""; message[5] = ""; break;
   		case 'nl_NL' : message[4] = ""; message[5] = ""; break;
   		case 'it_IT' : message[4] = ""; message[5] = ""; break;
   		case 'es_ES' : message[4] = ""; message[5] = ""; break;
   		default      : message[4] = "Departement"; message[5] = "Sans importance"; break;
	}
}

/*-------------------------------------------------------------------*/
/* fonction eval attendu 											*/
/*-------------------------------------------------------------------*/
var globaleval =  function(script){
  if (window.execScript) {
		return window.execScript(script);
	} else if (navigator.userAgent.indexOf('KHTML') != -1) { // safari, konqueror..
		var s = document.createElement('script');
		s.type = 'text/javascript';
		s.innerHTML = script;
		document.getElementsByTagName('head')[0].appendChild(s);
	} else {
		return window.eval(script);
	}
}

/*-------------------------------------------------------------------*/
/* mise a jour du departement quand on change la region 			*/
/*-------------------------------------------------------------------*/
function updateDepartements(id,depart,regio){
	var index = regio.options.selectedIndex;

	if(index > 0){
		LaRegion = regio.options[regio.options.selectedIndex].value;
		LesDepartements = departementsIndex[LaRegion];
		position = 1;
		for(i=0;i < LesDepartements.length; i++){
			depart.options[position] = new Option(departements[getIndexDepartement(LesDepartements[i])][0],LesDepartements[i]);
			if(departements[getIndexDepartement(LesDepartements[i])][1] == id){
				depart.options[position].selected = true;
			}
			position++;
		}
		depart.options[position] = new Option('------------------------------------------','');
		afficheDepartements(depart,message[2],position+1);
	}else{
		/* on affiche tout les departements */ 
		afficheDepartements(depart,depart.options[0].text,0);
	}
}

/*-------------------------------------------------------------------*/
/* 	mise a jour de la region quand on change de departement 	*/ 
/*-------------------------------------------------------------------*/
function updateRegions(depart,regio){
	var value = depart.options[depart.options.selectedIndex].value;
	var regValue = Math.max(0,getIndexRegion(value));
	
	for(i = 0;i < regio.length;i++)
	{
		if(regio.options[i].value == regValue){
			regio.options.selectedIndex = i;
		}
	}

	updateDepartements(value,depart,regio);
}

/*---------------------------------------------------------------------------*/
/* retrouve l'index region ou se trouve le departement dans departementIndex */
/*-------------------------------------------------------------------*/
function getIndexRegion(idDep){
	var trouve = -1;

	for( var key in departementsIndex )
	{
		if( departementsIsIn(departementsIndex[key],idDep) )
			trouve = key;
	}
	
	return trouve;
}

/*-------------------------------------------------------------------*/
/*   		verifie si le departement est dans le tableau 			*/
/*-------------------------------------------------------------------*/
function departementsIsIn(dept,id){
	var trouve = false;
	var i = 0;
	var taille = dept.length;	
	while( ( i < taille ) && ( !trouve ) ){
		if( dept[i] == id ){
			trouve = true;
		}
		i++;
	}
	return trouve;
}

/*----------------------------------------------------------------*/
/* retrouve l'index ou se trouve le departement dans departements */
/*----------------------------------------------------------------*/
function getIndexDepartement(idDep){
	var trouve = -1;

	for( var key in departements )
	{
		if( departements[key][1] == idDep )
			trouve = key;
	}
	
	return trouve;
}

/*------------------------------------------------------------------------*/
/* fonction initialisant la localisation en fonction du tableau javascript */
/*-------------------------------------------------------------------------*/
function initLocalisation(depart,regio,strreg,strdept){
	afficheRegions(regio,strreg);
	afficheDepartements(depart,strdept);
}

/*-------------------------------------------------------------------*/
/* 			fonction initialisant la liste							 */
/*-------------------------------------------------------------------*/
function initSelect(vil,value){
	/* on efface le contenu du select */
	/*vil.options.length = 0;
	vil.options[vil.options.length] = new Option(value,0);	*/
}

/*---------------------------------------------------------------------------------------*/
/* fonction permettent d'affecter une valeur a un input type hidden a partir d'un select */
/*---------------------------------------------------------------------------------------*/
function setValueTypeHidden(dest,source){
	dest.value = source.options[source.selectedIndex].value;
}

/*-------------------------------------------------------------------*/
/* 					mise a jour la liste 							*/
/*-------------------------------------------------------------------*/
function cleanSelect(Elt){
	_Elt=document.getElementById(Elt);
	/* on efface le contenu de la liste */
	if(_Elt != null){
		_Elt.options.length = 1;
	}		
}

/*-------------------------------------------------------------------*/
/* 				fonction selectionnant un element dans un select 	*/
/*-------------------------------------------------------------------*/
function selectOption(opt,val){
	var i = 0; 
	var trouve = false;
	
	if(opt != null){
		while((!trouve)&&(i<opt.length)){
			if(opt.options[i].value == val){
				opt.selectedIndex = i;
				trouve = true;
			}	
			i++;		
		}
	}
}

function remiseAZeroSelect(opt){
	opt.style.color = 'black';
	opt.style.background = "white"; 
	opt.style.textDecoration = "";
}
