function readSelection(fieldname,objTxtname){
	//debug('readSelection(' + fieldname + ',' + objTxtname + ') line 2');
	//retourn une liste contenant les valeurs des checkbox dont l'id est fieldname
	var obj = findObj(fieldname);
	var objTxt = findObj(objTxtname);
	var selectedTypes = '';
	var selectedTypesIds = '';
	var retval = new Array();
	//debug('line 9: readSelection: 1 ==>' + obj.length);
	if (obj.length) { // collection de checkbox
		for (var x=0; x < obj.length ; x++) {
			var nodetexte = '';
			var nodeVal = '';
			if (obj[x].checked == true){
					nodeVal =  obj[x].value + ',';
					var parentDiv = obj[x].parentNode;
					if (parentDiv) {
						if (isIE) {nodetexte =  parentDiv.innerText + ', ';}
						else {nodetexte =parentDiv.innerHTML ;	
							if (nodetexte.indexOf('>') > -1 ) 
							nodetexte = nodetexte.substring(nodetexte.indexOf('>') + 1,nodetexte.length ); 
							nodetexte = nodetexte + ', ';
						}		
					}
			}
			selectedTypesIds = selectedTypesIds + nodeVal;
			selectedTypes = selectedTypes + nodetexte;
		}
	}
	else {	// si une seul checkbox, pas une collection, lire son etat
		var nodetexte = '';
		var nodeVal = '';
		if (obj.checked == true ) {
			nodeVal =  obj.value;
			var parentDiv = obj.parentNode;
			if (parentDiv) {
				if (isIE) {nodetexte =  parentDiv.innerText + ', ';}
				else {
					nodetexte =parentDiv.innerHTML ;	
					if (nodetexte.indexOf('>') > -1 ) 
					nodetexte = nodetexte.substring(nodetexte.indexOf('>') + 1,nodetexte.length ); 
					nodetexte = nodetexte + ', ';
				}	
			}
			selectedTypesIds = nodeVal;
			selectedTypes =  nodetexte;
		}
	}
	//debug('line 46: readSelection: 2 ==> objTxt=' + objTxt);
	if (selectedTypes.length > 0) selectedTypes = selectedTypes.substring(0,selectedTypes.length - 2);
	var selectedtypeTexte = selectedTypes;	
	if (selectedTypes.length > 30 ) selectedTypes = selectedTypes.substring(0,27) + '...';
	if (selectedTypesIds.indexOf(',') > 0) selectedTypesIds = selectedTypesIds.substring(0,selectedTypesIds.length - 1);
	if (objTxt) objTxt.value=selectedtypeTexte ;
	//debug(' line 52: Exit readSelection(' + fieldname + ',' + objTxtname + ')avec selectedtypeTexte= ' + selectedtypeTexte + ' et selectedTypesIds=' + selectedTypesIds);
	return selectedTypesIds;
}

function setDepartement(chemin){
	//cleandebug ();
	//debug('ligne 67: set dep');
	siteurl = chemin;
	var depObj = findObj('IDdepartements');	
	var dep = depObj[depObj.selectedIndex].value;
	findObj('arrondissementsTD').innerHTML = '';
	findObj('quartiersTD').innerHTML ='';
	if (findObj('villes')) findObj('villes').value ='';
	if (findObj('idvilles')) findObj('idvilles').selectedIndex = -1;
	findObj('departements').value=depObj[depObj.selectedIndex].text;
	GetVilles(dep);
}

function setVille(chemin) {
	siteurl = chemin;
	var villeObj = findObj('idvilles');	
	if (villeObj) {
		var ville = villeObj[villeObj.selectedIndex].value;
		//readSelection('idvilles','villes');		
		//debug(' line85: setVille, arrondissementsTD =  ' + findObj('arrondissementsTD').innerHTML);
		if (ville.length > 0 ){
			GetArrondissements(chemin);		
		}
		else
		{
			findObj('arrondissementsTD').innerHTML = '';
			findObj('quartiersTD').innerHTML ='';
		}	
	}
	else {
		findObj('arrondissementsTD').innerHTML = '';
		findObj('quartiersTD').innerHTML ='';
	}
}

function setArrondissements(chemin) {	
	siteurl = chemin;
	readSelection('idarrondissements','arrondissements');	
	GetQuartiers();

}
function setQuartiers() {
	readSelection('idquartiers','quartiers');	
	setEncartQuartier();
}

/************************************************************
Fonctions AJAX
************************************************************/
var Arrondissementarray= new Array();
var quartiersArray = new Array();
var Villesarray = new Array();
var siteurl='';

function getCheckedVal(fieldname) {
	var val= '';
	//val= findObj(fieldname).value;
	var obj= findObj(fieldname);
	//debug('ligne 111: getCheckedVal(' + fieldname + ')' );
	if (obj != null) {
		if ( obj.tagName && obj.tagName == 'SELECT') {	
		// select option
		//debug(obj.options.length);
			if (obj.selectedIndex > 0 ) {	val = obj[obj.selectedIndex].value; 	}
		}
		else 
		{	// checkbox ou radio
			if(obj.length) {
				for (x=0 ; x < obj.length; x++) {
				 		if ( obj[x].checked == true) {	val = val + obj[x].value + ',';	}
				}
			}
			else if(obj != null) {	if ( obj.checked == true ) 	val = val + obj.value + ',';		
			}
		}
	}
	if (val.length > 0 && val.indexOf(',') > 0) val = val.substring(0,val.length - 1);	
	//debug('ligne 128: val=' + val  );
	return val;
}

function GetVilles(dep){
	var moduleURL = siteurl + '/AjaxFiles/getQuartiers_Villes.cfm?dep=' + dep ;
	var arrayName = 'Villesarray';	
	var functiontoCall='loadVilles();';
	findObj('arrondissementsTD').innerHTML = '';
	findObj('quartiersTD').innerHTML ='';
	getArrondissement_quartiers('villes',moduleURL,arrayName,functiontoCall);

}
function GetArrondissements(URLSite){
	if (URLSite.length > 0 ) siteurl = URLSite;
	// lit la selection stockée dans le select obj ville
	var ville= getCheckedVal('idvilles');
	//debug('line 145: GetArrondissements, arrondissementsTD =  ' + ville);
	if ( ville.length > 0 ) {
		var moduleURL = siteurl + '/AjaxFiles/getQuartiers_arrondissements.cfm?villes=' + ville ;
		var arrayName = 'Arrondissementarray';	
		var functiontoCall='loadArrondissement();';
		//debug('line 150: getArrondissement_quartiers(villes,' + moduleURL + ',' + arrayName + ',' + functiontoCall + ')');
		getArrondissement_quartiers('villes',moduleURL,arrayName,functiontoCall);
	}
	else
	{ //pas de ville selectionné, effacer les td
		findObj('arrondissementsTD').innerHTML = '';
		findObj('quartiersTD').innerHTML ='';
	}
}

function GetQuartiers(){
	 // lit la selection stockée dans le select obj ville
	var arrs = '';
	var ville= getCheckedVal('idvilles');	
	if (findObj('arrondissements') )arrs =  getCheckedVal('idarrondissements');
	//debug('line 165: get quartiers, arrondissementsTD =: ' + findObj('arrondissementsTD').innerHTML);
	var moduleURL = siteurl + '/AjaxFiles/getQuartiers_Quartiers.cfm?villes=' + ville  + '&arrondissements=' + arrs;
	//debug(	'line 167: /AjaxFiles/getQuartiers.cfm?villes=' + ville  + '&arrondissements=' + arrs);
	var arrayName = 'quartiersArray';	
	var functiontoCall='loadQuartiers();';
	getArrondissement_quartiers('villes',moduleURL,arrayName,functiontoCall);
}


function getArrondissement_quartiers(champville,moduleURL,arrayName,functiontoCall) {
		// récupère une réference à l'array concernant les champs affecté et réinitialise celle-ci
		eval(arrayName + '= new Array();');
		var theArray = eval(arrayName);
		//alert('line 278: function to call:' + functiontoCall);
		// instantiation de l'objet XMLHttpRequest
		if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		  httpRequest = new XMLHttpRequest();
			if (!document.all)
				httpRequest.overrideMimeType('text/xml');		
		}
		else if (window.ActiveXObject) { // IE
		  httpRequest = new ActiveXObject("MSXML2.XMLHTTP.3.0");
		}
		//debug('line 182: httpRequest instantié');
		// appel de la fonction de traitement de réponse à l'appel XMLHttpRequest
		httpRequest.onreadystatechange = function (){
			//debug('line 186: httpRequest.readyState == 4' + httpRequest.readyState);
			if (httpRequest.readyState == 4) {
				var xmldoc = httpRequest.responseXML;
				var root_node = xmldoc.getElementsByTagName('root').item(0);
				if (root_node.hasChildNodes()){
					var docnodes = root_node.childNodes;
					for (var i =0 ; i< docnodes.length; i++){  
						if (docnodes[i].hasChildNodes()){
							for (var d=0; d < docnodes[i].childNodes.length; d++) {									
								// lecture de l'arrondissement					
								if (docnodes[i].childNodes[d].nodeName == 'label'){
									// atteindre le text node contenant le texte
									if (docnodes[i].childNodes[d].hasChildNodes()) {
										var label = docnodes[i].childNodes[d].childNodes[0].nodeValue;									
									}
									label = decodeURI(label);	
								}
								// lecture du code postal de l'arrondissement					
								if (docnodes[i].childNodes[d].nodeName == 'codepostal'){
									if (docnodes[i].childNodes[d].hasChildNodes()) {
										var codeval = docnodes[i].childNodes[d].childNodes[0].nodeValue;									
									}
								}
								// lecture du code postal de la ville				
								if (docnodes[i].childNodes[d].nodeName == 'ville'){
									if (docnodes[i].childNodes[d].hasChildNodes()) {
										var villeval = docnodes[i].childNodes[d].childNodes[0].nodeValue;									
									}
									villeval = decodeURI(villeval);
								}
							}		
							var quartierOuarrondissement = new quartier_arrondissement(codeval,villeval,label);
							theArray.push(quartierOuarrondissement);								
						}	
				  	}
				 }
				 
				//debug('line 228  ajax call' + functiontoCall); 
				eval(functiontoCall);							
			}					
		};
		httpRequest.open('GET', moduleURL, true);
		httpRequest.send(null) ;	
}
function quartier_arrondissement(cp,ville,label){
			this.label=label;
			this.cp=cp;
			this.ville=ville;
}

function loadVilles() {
	var fieldname = 'villes';
	var fieldLabel = 'Villes';
	var arrayname = 'Villesarray';
	var onclickFunction = 'setVille(\''+siteurl+'\')';
	//findObj('villes').value ='';
	loadDropDown(fieldname,fieldLabel,arrayname,onclickFunction);
	GetArrondissements('');
	//GetQuartiers();
}

function loadArrondissement() {
	//debug('line 262 : loadArrondissement(), entre avec Arrondissementarray.length = ' + Arrondissementarray.length );
	var fieldname = 'arrondissements';
	var fieldLabel = 'Arrondissements';
	var arrayname = 'Arrondissementarray';
	var onclickFunction ='setArrondissements(\''+siteurl+'\')';
	loadDropDown(fieldname,fieldLabel,arrayname,onclickFunction);
	GetQuartiers();
}

function loadQuartiers() {
	//debug('line 262 : loadQuartiers(), entre avec quartiersArray.length = ' + quartiersArray.length );
	var fieldname = 'quartiers';
	var fieldLabel = 'Quartiers';
	var arrayname = 'quartiersArray';	
	var onclickFunction ='setQuartiers()';
	loadDropDown(fieldname,fieldLabel,arrayname,onclickFunction);
}

var preselectionQuariers = '';
function loadDropDown(fieldname,fieldLabel,arrayname,onclickFunction){	
	var numofCol = 3;
	if (fieldname == 'quartiers') numofCol = 3;
	if (fieldname == 'arrondissements') numofCol = 6;
	var array = new Array();
	array = eval(arrayname);
	var arrondissementHtml ='';	
			if (fieldname == 'villes' || fieldname == 'arrondissements'|| fieldname == 'quartiers') {
				/**************************************************************************************
				 cré la liste de selection	
				****************************************************************************************/
				var vselected='';
				if (array.length == 1 && fieldname == 'villes'  ) { vselected =' selected';}
				if (array.length > 0 ){
						arrondissementHtml = '<div class=label>'+fieldLabel + '</div>'
											+ '<div id='+fieldname+'Text><select class="'
						if (fieldname == 'quartiers')
							arrondissementHtml = arrondissementHtml + 'select250" ';
						else
							arrondissementHtml = arrondissementHtml + 'select150" ';	
							
						arrondissementHtml = arrondissementHtml 
												+ ' id="id'+fieldname+'" name="id'+fieldname+'" onchange="' + onclickFunction + '" ><option value="">Choisissez</option>';	
						for (var d=0; d < array.length; d++) {
							var quartierArrondissement =  new quartier_arrondissement();
							quartierArrondissement = array[d];					
							arrondissementHtml = arrondissementHtml 
												+ '<option value="'	+array[d].cp+'" '+ vselected + '>'
												 + array[d].label; 										   
							if (	fieldname == 'quartiers' && ( (findObj('villes') && findObj('villes').value.indexOf(',')) > 0    || ( findObj('arrondissements') && findObj('arrondissements').value.indexOf(',') > 0 ) ) )
												arrondissementHtml = arrondissementHtml +' (' +  array[d].ville + ')';
							arrondissementHtml = arrondissementHtml + '</option>';					
						}									
						arrondissementHtml = arrondissementHtml +'</select><input type="hidden" class=input200 id="'+fieldname+'" name="'+fieldname+'" value=""></div></p>';
					}	
			}
			else 
			{
				/**************************************************************************************
				 cré la liste de checkboxs	
				****************************************************************************************/
				if (array.length > 0 ) {
						//numofCol = parseInt(array.length / numofCol);
						arrondissementHtml = '<div class=label>'+fieldLabel + '</div>'
											+ '<div id='+fieldname+'Text><table width="520">';	
						for (var d=0; d < array.length; d++) {
							if (d >= numofCol && d %  numofCol == 0  ){
								if (d > 0 ) arrondissementHtml = arrondissementHtml +'</tr>';
								arrondissementHtml = arrondissementHtml +'<tr>';
							}
							var quartierArrondissement =  new quartier_arrondissement();
							quartierArrondissement = array[d];
							arrondissementHtml = arrondissementHtml 
												+ '<td class=labelQuartier valign="top"><input type="radio" id="id'	+fieldname+'" name="id'	+fieldname+'"option onclick="' + onclickFunction + '"  value="'	+array[d].cp+'" >'
												 + array[d].label.replace("-", "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;").replace("-", "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");   
							if (	fieldname == 'quartiers' &&( findObj('villes').value.indexOf(',') > 0    || ( findObj('arrondissements') && findObj('arrondissements').value.indexOf(',') > 0 ) ) )
												arrondissementHtml = arrondissementHtml +' (' +  array[d].ville + ')';
							arrondissementHtml = arrondissementHtml + '</td>';
							
							 /**/
						}//arrondissementHtml = arrondissementHtml +'</td>';										
						arrondissementHtml = arrondissementHtml +'</tr></table><input type="hidden" class=input200 id="'+fieldname+'" name="'+fieldname+'" value=""></div></p>';
					}
			}

	/**************************************************************************************
	 	si arrondissements , sauve les sélections quartier précedentes si il y en avait
	****************************************************************************************/
	var preselection  ='';
		var arrObj = findObj('id'+fieldname);
		if (arrObj) 
			preselection = 	getCheckedVal('id'+fieldname); //arrObj.value;
	//debug('line 330 fieldname = '  +fieldname + ' preselection = ' + preselection );
	/**************************************************************************************
	 	ecrit la liste des chackbox
	****************************************************************************************/
	if (fieldname == 'quartiers' && !findObj('arrondissements')){
		//findObj('arrondissementsTD').innerHTML = arrondissementHtml;
		findObj('quartiersTD').innerHTML =arrondissementHtml;;//'';		
	}
	else if ( fieldname == 'arrondissements' 
				&&  findObj('idquartiers') 
				&& findObj('quartiersTD').innerHTML.length < 20) 
	{
			//debug('arrondissement mais quartier! ==> sauver quartier');
			if (arrondissementHtml.length > 0)
				findObj('quartiersTD').innerHTML = findObj('arrondissementsTD').innerHTML;
			findObj(fieldname +'TD').innerHTML = arrondissementHtml;	
	}
	else{
			findObj(fieldname +'TD').innerHTML = arrondissementHtml;	
	}
	//findObj('id'+fieldname) = preselection;
	/**************************************************************************************
	 	compare la nouvelle liste avec  les préselections, les cocher si il y a match
	****************************************************************************************/
	if (preselection.length > 0) {
		var selectedcheck ='' ;
		var selectedcheckIds='';
		//il y avait une préselection, balayer la nouvelle collection de checkbox, et si la préselection est dans cette collection, la reselectionner
		var checkboxCollection = findObj('id'+fieldname);
		if (checkboxCollection) {
			//debug(preselection);
			var preselectionArray = preselection.split(',');
			//debug('preselectionArray length = ' + preselectionArray.length + '  line 351');
			for (var ind = 0; ind < checkboxCollection.length; ind ++) {
				for (var p = 0 ; p < preselectionArray.length; p ++ ) {
					if (checkboxCollection[ind].value == preselectionArray[p]) {
						checkboxCollection[ind].checked = true;
						selectedcheckIds = selectedcheckIds +  checkboxCollection[ind].value + ',';
						var parentDiv = checkboxCollection[ind].parentNode;
						if (isIE)
							selectedcheck = selectedcheck + parentDiv.innerText + ', ';
						else {
							var innerHtmltxt =parentDiv.innerHTML ;
							var nodetexte =innerHtmltxt;
							if (innerHtmltxt.indexOf('>') > -1 ) 
								nodetexte = nodetexte.substring(innerHtmltxt.indexOf('>') + 1,innerHtmltxt.length );
								selectedcheck = selectedcheck + nodetexte + ', ';
						}
					}
				
				}
			
			}		
		}
		if (selectedcheck.length > 0) selectedcheck = selectedcheck.substring(0,selectedcheck.length - 2);
		var selectedtypeTexte = selectedcheck;
		if (selectedcheck.length > 40) selectedcheck = selectedcheck.substring(0,27) + '...';
		if (selectedcheckIds.length > 0) selectedcheckIds = selectedcheckIds.substring(0,selectedcheckIds.length - 1);
		if (findObj(fieldname)) {
			findObj(fieldname).value=selectedtypeTexte ;
			//debug(' line 379'+ fieldname + '.value=' + findObj(fieldname).value );
		}
	}
	//debug(' line 382: exit load dropdown');
	setEncartQuartier();	
}

function debug (mess){
	findObj('debug').innerHTML = findObj('debug').innerHTML + '<br>' + mess;
}
function cleandebug (){
	//findObj('debug').innerHTML = '';
}

function setEncartQuartier(){
	var q_val='';
	var ar_val='';
	var v_val='';
	var d_val='';
	var q = findObj('idquartiers');
	if (q){	q_val = readSelection('idquartiers','quartiers');}
	var ar = findObj('idarrondissements');
	if (ar) {ar_val=readSelection('idarrondissements','arrondissements');}
	var vl = findObj('idvilles');
	if (vl){v_val = readSelection('idvilles','villes');}
	var dp = findObj('IDdepartements');
	if (dp){
		if (dp[dp.selectedIndex])
			d_val = dp[dp.selectedIndex].value;
		else
			d_val = dp.value;
	}
	var imgNum = '';
	var imgtitle = '';
	var imgtexte = '';
	var nomQuartier = '';
	var call =  'quartierid='+ q_val + '&arrid='+ ar_val + '&villeid='+ v_val + '&depid='+ d_val;
	get_EncartQuartier(call) ;	
}

