  
  
  // v�rifie la pr�sence en base d'un email avant de permettre de cr�er un compte
  function searchEmailExist() {
	var email = $('user_email').value;
    var url = '/user/searchEmailExist?email='+email;
    if (email!=""){
	    new Ajax.Updater('emailMessage', url, {onComplete:function(){ new Effect.Appear('emailMessage');},asynchronous:false, evalScripts:true});
	    if ($('emailMessage').innerHTML != ""){
	    	$('user_email').className="required validate-email validation-failed";
	    	return false;
	    }
	    else {
	    	$('user_email').className="required validate-email validation-passed";
	    	return true;
	    }
	}
	else {
		$('emailMessage').innerHTML = "";
	    return false;
	}
  }
  
  
  // v�rifie la pr�sence en base d'un email avant de permettre de cr�er un compte
  function search4password() {
	var email = $('username').value;
    var url = '/user/search4passwordAjax?email='+email;
    if (email!=""){
	    new Ajax.Updater('divPassword', url, {onComplete:function(){new Effect.Appear('divPassword');},asynchronous:true, evalScripts:true});
	}
	else {
		$('divPassword').innerHTML="";
	}
	return false;
  }
  
  
  // envoie du mot de passe sur toutes les pages du site
  function connexion(mandatediv,fieldemail) {
	var email = fieldemail?$(fieldemail).value:$('user_email').value;
	var oldDivContent = "";
	var url = "";
	var hasEmail = false;
	if (email!=""){
    	hasEmail = true;
    }
  	var divFinal = "";
  	if (mandatediv != undefined){
  		divFinal = mandatediv;
  		url = hasEmail?'/sendPasswordAjax?user_email='+email:'/lostPasswordAjax';
  		oldDivContent = '<a class="connexionLink" onclick="connexion(\'emailMessage2\')">Mot de passe oubli� ?</a>';
  		mess = true;
  	}
  	else if ($('emailMessage')){
  		divFinal = 'emailMessage';
  		url = hasEmail?'/sendPasswordAjax?user_email='+email:'/lostPasswordAjax';
  		mess = false;
  	}
  	else {
  		var url = hasEmail?'/sendPassword?user_email='+email:'/lostPassword';
  		window.location=url;
  	}
    new Ajax.Updater(divFinal, url, {onComplete:function(){ new Effect.Appear(divFinal);},asynchronous:true, evalScripts:true});
    setTimeout("clearDiv('"+divFinal+"',"+mess+")",2000); //2000 ms donc 2s
  }
  
  function clearDiv(divFinal,mess){
  	var oldDivContent = mess?'<a class="connexionLink2" onclick="connexion(\'emailMessage2\',\'username\')">Mot de passe oubli&eacute; ?</a>':'';
  	$(divFinal).innerHTML = oldDivContent;
  }
  
  
  // login ajax
  function login() {
	var login = $('username').value;
	var password = $('password').value;
    var url = '/user/loginAjax?username='+login+'&password='+password;
    new Ajax.Updater('renseignementUtilisateur', url, {onComplete:function(){ new Effect.Appear('renseignementUtilisateur');},asynchronous:true, evalScripts:false});
    
    new Effect.Appear('renseignementUtilisateur');
  }
  
  function suppValueSearchQuery(value){
  	$("search").select();
  }
  
  
  // fonction de d�cryptage des num�ro de tel
  function decript(input, insertin) {
  	var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= .-";
  	var output = "";
	   var chr1, chr2, chr3;
	   var enc1, enc2, enc3, enc4;
	   var i = 0;
	
	   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
	   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
	
	   do {
	      enc1 = keyStr.indexOf(input.charAt(i++));
	      enc2 = keyStr.indexOf(input.charAt(i++));
	      enc3 = keyStr.indexOf(input.charAt(i++));
	      enc4 = keyStr.indexOf(input.charAt(i++));
	
	      chr1 = (enc1 << 2) | (enc2 >> 4);
	      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
	      chr3 = ((enc3 & 3) << 6) | enc4;
	
	      output = output + String.fromCharCode(chr1);
	
	      if (enc3 != 64) {
	         output = output + String.fromCharCode(chr2);
	      }
	      if (enc4 != 64) {
	         output = output + String.fromCharCode(chr3);
	      }
	   } while (i < input.length);
	
	   kode1 = output;
  	
  
     var kode2="";
     var dop="";
     var key = 2;
     var panjang = kode1.length;
     var methode = "xor";
     for (i=0;i<panjang;i++)  {
         if (methode=="kurang") {
             kode2+=String.fromCharCode(kode1.charCodeAt(i)-key);
             dop="+";
         }
         else if(methode=="tambah") {
             kode2+=String.fromCharCode(kode1.charCodeAt(i)+key);
             dop="-";
         }
         else if(methode=="xor") {
             kode2+=String.fromCharCode(kode1.charCodeAt(i)^key);
             dop="^";
         }
	 }
     var enkripsi=kode2; teks="";
     for (i=0;i<enkripsi.length;i++){ 
     	teks+=String.fromCharCode(enkripsi.charCodeAt(i)^key);
     }
	 if (insertin) {
	     $(insertin).innerHTML=unescape(teks);
	 } else {
	     $("phoneContact").innerHTML=unescape(teks);
	 }
  }
  
  
  // verif du password en ajax
  function verifPassword() {
	var user = $('username').value;
	var pass = $('password').value;
    var url = '/user/verifPassword?username='+user+'&password='+pass;
    if (user!="" && pass){
	    new Ajax.Updater('erreurPassword', url, {onComplete:function(){	new Effect.Appear('erreurPassword'); },asynchronous:false, evalScripts:true});
	    var prop = '__advice'+"password".camelize();
	    if ($("erreurPassword").innerHTML == ""){
			$("password")[prop] = true;
	    	//$("password").className="required validation-passed";
	    	$("password").addClassName('validation-passed');
			$("password").removeClassName('validation-failed');
			$("password").removeClassName('validate-yes');
	    }
	    else {
			$("password")[prop] = true;
			$("password").removeClassName('validation-passed');
			$("password").addClassName('validation-failed');
			$("password").addClassName('validate-yes');
	    	//$("password").className="required validation-failed";
	    	Form.getElements($("formEdit2")).findAll(function(elm){
			//return $(elm).hasClassName('validation-failed')}).first().focus();
			return $(elm).hasClassName('validation-failed')}).first().focus();
			// rajout pour que la page remonte 20px plus haut que l'element
			window.scroll(0,Form.getElements($("formEdit2")).findAll(function(elm){
			return ( $(elm).hasClassName('validation-failed'))}).first().cumulativeOffset().top-60);
	    	$("advice-password").style.display="block";
	    }
	    return ($("erreurPassword").innerHTML == "");
	}
	else {
	    return false;
	}
  }

  function reorderScoutBlock(){
	// adresse en haut, id du bloc => localize
	if ($("adresse").style.display != "none") {
//		$("districtRow").addClassName('hiddenDiv');
//		$("divAlertCircular").addClassName('hiddenDiv');
//		$("localize").removeClassName('hiddenDiv');
	}
	// arrondissement/quartier en haut, id du bloc => districtRow
	else {
//		$("localize").addClassName('hiddenDiv');
//		$("divAlertCircular").addClassName('hiddenDiv');
//		$("districtRow").removeClassName('hiddenDiv');
		$$('.modifySelectList').each(function(elem){
			elem.removeClassName('hiddenDiv');
			elem.onclick = function(){
				onModifyClick();
			}
		});
	}
  }

  
  // Update Ajax du bloc annonce dans la creation/modification d'alerte 
  // Parametre : div => id du div ou doit s'afficher le bloc annonce
  function updateBlocAlertAnnonce(div,reorder){
  	// permet de r�organiser les blocs rue et arrondissement/quartier en fonction de ce que l'utilisateur � indiqu� => � commenter si on ne veut plus changer l'ordre d'affichage 
  	if (reorder) {
		reorderScoutBlock();
	}
  	// update
  	if ($(div) != undefined){
	    $(div).innerHTML = "Veuillez patienter pendant la recherche de biens correspondant &aacute; votre alerte.";
	  	var type="";
	  	var city=''; 
	  	if ($('city')) city = $('city').value;
	  	var district=''; 
	  	if ($('district')) district = $('district').value;
	  	var neighborhood=''; 
	  	var coordinates='';
	  	if (($('latitude')) && ($('latitude').value != 0) && ($('latitude').value != '')
	  		&& ($('longitude')) && ($('longitude').value != 0) && ($('longitude').value != '')) {
	  		coordinates = 'latitude='+$('latitude').value+"&longitude="+$('longitude').value+'&';
	  	}
	  	if ($('neighborhood')) neighborhood = $('neighborhood').value;
	  	var url = '/scoutEntity/blocAnnonceAjax?'+coordinates+"city="+city+"&district="+district+"&neighborhood="+neighborhood+"&normalized_nb_rooms="+$('fld_normalized_nb_rooms').value+"&normalized_nb_bedrooms="+$('fld_normalized_nb_bedrooms').value+"&range_surface="+$('fld_range_surface').value+"&range_price_estimated="+$('fld_range_price_estimated').value;
		if ($('circular_zone')){
			url += "&circular_zone="+($('circular_zone').value);
		}
		new Ajax.Updater(div, url, {method:'get',onComplete:function(){}
	  	,asynchronous:false, evalScripts:true});
  	}
  	if ($("addr")!=undefined && $("immoParisModuleAppartTitle")!=undefined && $("addr").value!="" && $("addr").value!="Saisir l'adresse de l'alerte"){
  		$("immoParisModuleAppartTitle").innerHTML = "Les derni&egrave;res annonces correspondant &agrave; vos crit&egrave;res autours du "+$("addr").value;
  	}
  	else if ($("neighborhood")!=undefined && $("immoParisModuleAppartTitle")!=undefined && $("neighborhood").value!=""){
  		$("immoParisModuleAppartTitle").innerHTML = "Les derni&egrave;res annonces correspondant &agrave; vos crit&egrave;res dans le quartier "+$("neighborhood").options[$("neighborhood").selectedIndex].text+", "+$("district").options[$("district").selectedIndex].text;
  	}
  	else if ($("district")!=undefined && $("immoParisModuleAppartTitle")!=undefined && $("district").value!=""){
  		$("immoParisModuleAppartTitle").innerHTML = "Les derni&egrave;res annonces correspondant &agrave; vos crit&egrave;res dans le "+$("district").options[$("district").selectedIndex].text;
  	}
  }
  
  
  // update de la liste des quartiers en fonction de l'arrondissement
  function updateZoneAlert(){
	if ($("district")) {
		var id_district = $("district").value;
	  	var url = '/geocoder/searchNeighborhoodAjax?district='+id_district;
		new Ajax.Updater('neighborhoodDiv', url, {onComplete:function(){
	  		}
	  		,asynchronous:false, evalScripts:true});
	}
  }
  
  // fonction commune pr toutes les actions de la page de creation d'alerte qui provoquer une modif des champs adresse, quartier et arrondissement
  function onModifyClick(){
	reinitFieldsAlert();
	if ($('district')) $('district').value = "";
	if ($('neighborhood')) $('neighborhood').value = "";
	$$('.hiddenDiv').each(function(elem){
		elem.removeClassName('hiddenDiv');
	});
	$$('.modifySelectList').each(function(elem){
		elem.addClassName('hiddenDiv');
	});
  }
  
  function reinitFieldsAlert(){
  	$("localisation").style.display = "block";
	$("adresse").style.display = "none";
	//if ($('city') != undefined) $('city').value = "";
	$("adresseBuilding").style.display = "none";
//	$('latitude').value="";
//	$('longitude').value="";
//	$('street').value = "";
//	$('bnumber').value = "";
//	$('zipcode').value = "";
//	if ($('circular_zone')) $('circular_zone').value = "";
	//$("addr").value = "Saisir l'adresse de l'alerte";
	updateBlocAlertAnnonce("divBlockAnnonce",true);
  }
  
  
  function catchEnterKeyEvent(input,action){
  	 var key;
	 Event.observe(input,"keypress", function(){
		// if we click on "enter"
		if (window.event && window.event.keyCode == 13) {
			action.call();
		}
	});
  }

