function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	return [curleft,curtop];
	}
}

function do_checkTown(el,zip) {
   //alert(defined);
   //alert('d: '+document.getElementById(el).value);  
   if ( (document.getElementById(el).value=="") || (isdefined==true) || toChoose==true ) return false;
   isdefined=true;
   //timer
    overlay = document.createElement('div');
    overlay.style.top = findPos(document.getElementById('search-loc'))[1]+'px';
    overlay.id = 'overlay';
    preload = document.createElement('img');
    preload.src='http://www.parking-public.fr/images2_FR_FR/ajax-loader.gif';
	preload.width = 48;
	preload.height = 48;
	preload.align = "middle";
	preload.id = 'preload';
	overlay.appendChild(preload);
	document.getElementById('search-loc').appendChild(overlay);	
    x_checkTown(document.getElementById(el).value,el,zip,do_checkTown_cb);
   return true;
}

function selectTown(theEl,zip,towns) {
    tmp=theEl.value.split("|");
    document.getElementById(towns).value=tmp[1];
	document.getElementById(zip).value=tmp[0];
	isdefined=true;
	toChoose=false;
	document.getElementById('searchButton').disabled=false;
}

var isdefined=false;
var toChoose=false;
var town="";

function do_checkTown_cb(data) {
  obj = eval("("+data+")");
  varZip=obj['vars']['zip'];
  varTown=obj['vars']['town'];
  if (obj['res']=="OK") {
      document.getElementById(obj['vars']['town']).value=obj['data'][0]['name'];
	  document.getElementById(obj['vars']['zip']).value=obj['data'][0]['zipcode'];
	  document.getElementById(obj['vars']['town']+'Err').innerHTML="";
	  isdefined=true;
	  document.getElementById('overlay').parentNode.removeChild(document.getElementById('overlay'));
  } else {
    document.getElementById(obj['vars']['town']+'Err').innerHTML="";
    if (obj['res']=="NOK") {
	  err='<font color="#FF0000">Ville ou code postal incorrect.</font>';
	  document.getElementById(obj['vars']['town']+'Err').innerHTML=err;
	  isdefined=false;
	  document.getElementById('overlay').parentNode.removeChild(document.getElementById('overlay'));
	}
	
    if (obj['res']==3 || obj['res']==2) {
	   if (obj['data'].length==1) {
	      document.getElementById(obj['vars']['town']).value=obj['data'][0]['name'];
	      document.getElementById(obj['vars']['zip']).value=obj['data'][0]['zipcode'];
	      document.getElementById(obj['vars']['town']+'Err').innerHTML="";
		  isdefined=true;
		  document.getElementById('overlay').parentNode.removeChild(document.getElementById('overlay'));
	   } else {
		  err='<font color="#FF0000">Merci de choisir une ville : </font><table align="center">';
		  var col=0;
		  for (i=0; i<obj['data'].length; i++) {
			if (col==0) {err+="<tr>";};
			err+='<td><input name="city" type="radio" style="vertical-align: middle" value="'+obj['data'][i]['zipcode']+'|'+obj['data'][i]['name']+'" onClick="selectTown(this,\''+varZip+'\',\''+varTown+'\');" /><label style="vertical-align:middle" >'+obj['data'][i]['name']+'</label></td>';
			col++;
			if (col>=2) {err+="</tr>";col=0}; 
		  }
		  err+="</table>";
		  document.getElementById(obj['vars']['town']+'Err').innerHTML=err;
		  isdefined=false;
		  toChoose=true;
		  document.getElementById('searchButton').disabled=true;
		  document.getElementById('overlay').parentNode.removeChild(document.getElementById('overlay'));
	  }
    }
  }
}
/*... */
function envoir(){
	var valid = new Validation('formulaire', {useTitles:true,onSubmit:false});
	var result = valid.validate();
	if (result == true){
		document.getElementById('formulaire').submit();
	}else{
		return false;
	}
}
function envoir2(){
	var valid = new Validation('formulaire2', {useTitles:true,onSubmit:false});
	var result = valid.validate();
	if (result == true){
		document.getElementById('formulaire2').submit();
	}else{
		return false;
	}
}

function envoir3(){
	var valid = new Validation('formulaire3', {useTitles:true,onSubmit:false});
	var result = valid.validate();
	if (result == true){
		document.getElementById('formulaire3').submit();
	}else{
		return false;
	}
}

function getXMLHttp() {
  var xmlHttp
  try {
    //Firefox, Opera 8.0+, Safari
    xmlHttp = new XMLHttpRequest();
  } catch (e) {
    //Internet Explorer
    try {
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {
        alert("Your browser does not support AJAX!")
        return false;
      }
    }
  }
  return xmlHttp;
}

function MakeRequest(params) {
  document.getElementById('villeErr').innerHTML = "<img width='16' height='11' src='http://www.parking-public.fr/images/ajax-loading.gif' alt='Attendre'>";
  var xmlHttp = getXMLHttp();
  var url = 'index.php?';
  xmlHttp.onreadystatechange = function () {
    if (xmlHttp.readyState == 4) {
      HandleResponse(xmlHttp.responseText, params);
    }
  }
  
  if (params[1]!='' && params[2]!='') url += 'param1=' + params[2] + '&param2=' + params[1];
  else if (params[2]!='') url += 'param1=' + params[2];
  else url += 'param2=' + params[1];  
  if (params[0]!='') url += '&param3=' + params[0];
  if (params[3]!='') url += '&param4=' + params[3];
  
  xmlHttp.open("GET", url, true);  
  xmlHttp.send(null);
}

function HandleResponse(response, params) {  
  var responses = eval( "(" + response + ")" );
  if (responses.res==3) { 
  	var isdefined=false;
    toChoose=false;
	document.getElementById('searchButton').disabled=true;
	document.formulaire.searchButton.disabled=true;
		
	//if (responses.data[0].zipcode!='' && responses.data[0].town!='') {	 
	if (params[1]!='' && params[1]!=0 && params[2]!='' && params[2]!=0) {	 
	  //document.getElementById("ville").value = responses.data[0].town; 
	  document.getElementById("ville").value = params[2];
	  //document.getElementById("codePostalSe").value = responses.data[0].zipcode; 
	  document.getElementById("codePostalSe").value = params[1];
	//} else if (responses.data[0].zipcode!='') {
	} else if (params[1]!='' && params[1]!=0) {	
	  //document.getElementById("codePostalSe").value = responses.data[0].zipcode; 
	  document.getElementById("codePostalSe").value = params[1];
	} else {
	  //document.getElementById("ville").value = responses.data[0].town; 
	  document.getElementById("ville").value = params[2];	
	}
	do_checkTown('ville','codePostalSe');
	document.getElementById('villeErr').innerHTML = '';
  } else if (responses.res==2) { 
    var isdefined=false;
    toChoose=false;
	document.getElementById('villeErr').innerHTML = '';
	document.getElementById('searchButton').disabled=true;
	//document.formulaire.searchButton.disabled=true;

	//if (responses.data[0].zipcode!='' && responses.data[0].town!='') {	 
	if (params[1]!='' && params[1]!=0 && params[2]!='' && params[2]!=0) {	 
	  //document.getElementById("ville").value = responses.data[0].town; 
	  document.getElementById("ville").value = params[2];
	  //document.getElementById("codePostalSe").value = responses.data[0].zipcode; 
	  document.getElementById("codePostalSe").value = params[1];
	//} else if (responses.data[0].zipcode!='') {
	} else if (params[1]!='' && params[1]!=0) {	
	  //document.getElementById("codePostalSe").value = responses.data[0].zipcode; 
	  document.getElementById("codePostalSe").value = params[1];
	} else {
	  //document.getElementById("ville").value = responses.data[0].town; 
	  document.getElementById("ville").value = params[2];	
	}
	do_checkTown('ville','codePostalSe');
	document.getElementById('villeErr').innerHTML = '';
  } else if (responses.res==0) {	  
	// No results
	document.getElementById("ville").value = 'ex: 115 rue saint jacques, paris';	
	document.getElementById('villeErr').innerHTML = '';
	
	document.getElementById('searchButton').disabled=true;
	
  } else {	
	document.getElementById('searchButton').disabled=false;
	//document.formulaire.searchButton.disabled=false;

	document.getElementById("ville").value = responses.data[0].name; 
	document.getElementById("codePostalSe").value = responses.data[0].zipcode; 
	document.getElementById('villeErr').innerHTML = '';
  }	
}

