function isArray( array )
{
 if( array instanceof Array )
  return true;
 else
  return false;
};

function sendSearch( input )
{
 window.location = "/search/" + encodeURIComponent( input.value ) + "/";
 
 return false;
}

/* FAVORIS */

function favoris(mandate_reference, star, link)
{
 if ($(star).hasClass('selected'))
 {
  var data = {
   action_form: 'delete_fav',
   mandate_reference: mandate_reference
  }
  $.post( "/system/user/mon-espace/favoris.html", data, function( data )
                                               {
                                                if( data.status == true )
                                                {
                                                 var txt = 'J\'ajoute à ma sélection';
                                                 $(star).removeClass('selected');
                                                 $(star).attr('tooltip', txt);
                                                 if (typeof link != 'undefined')
                                                 {
                                                  link.html(txt);
                                                  link.attr('tooltip', txt);
                                                 }
                                                }
                                                else if ( data.status == 'deco')
                                                {
                                                 window.location = "/?mid=6";
                                                }
                                               }, "json");
 }
 else
 {
  var data = {
   action_form: 'add_fav',
   mandate_reference: mandate_reference
  }
  $.post( "/system/user/mon-espace/favoris.html", data, function( data )
                                               {
                                                if( data.status == true )
                                                {
                                                 var txt = 'Je supprime de ma sélection';
                                                 $(star).addClass('selected');
                                                 $(star).attr('tooltip', txt);
                                                 if (typeof link != 'undefined')
                                                 {
                                                  link.html(txt);
                                                  link.attr('tooltip', txt);
                                                 }
                                                }
                                                else if ( data.status == 'deco')
                                                {
                                                 window.location = "/?mid=6";
                                                }
                                               }, "json");
 }
}

function addFavorite( uri, title )
{
 if( typeof uri == "undefined" || uri == null )
  uri = document.URL;
 if( typeof title == "undefined" || title == null )
  title = document.title;
 
 
 if( navigator.appName != 'Microsoft Internet Explorer' )
  window.sidebar.addPanel( title, uri, "" );
 else
  window.external.AddFavorite( uri, title );
}





/* BANNIERES */
function reloadBanniere( id, divContent )
{
 if( $(divContent).length > 0 )
 {
  var data = { action_form: "list", id: id, nameDiv: "" };
  
  $.post( "/system/user/bannieres.html", data, function( data )
                                               {
                                                if( data.status == "true" )
                                                {
                                                 if( swfobject.hasFlashPlayerVersion( '9.0.0' ) )
                                                 {
                                                  $.each( $(divContent),
                                                          function( i, div )
                                                          {
                                                           swfobject.embedSWF( data.uri, $(div).attr("id"), data.width, data.height, "8.0.0", "/flashs/updateInstall.swf", {}, { menu: false, allowScriptAccess: "always", wmode: "opaque" }, {} );
                                                           $(div).css( "height", data.height+"px" );
                                                          } );
                                                  
                                                  if( data.time > 0 )
                                                   window.setTimeout( function(){ reloadBanniere( data.id_emplacement, $(divContent) ); }, data.time*1000 );
                                                 }
                                                }
                                               }, "json");
 }
}

/* BANNIERES */
function reloadBanniereVille( zipcode, city, divContent )
{
 if( $(divContent).length > 0 )
 {
  var data = { action_form: "list", zipcode: zipcode, city: city, nameDiv: "" };
  
  $.post( "/system/user/villes.html", data, function( data )
                                               {
                                                if( data.status == "true" )
                                                {
                                                 if( swfobject.hasFlashPlayerVersion( '9.0.0' ) )
                                                 {
                                                  $.each( $(divContent),
                                                          function( i, div )
                                                          {
                                                           swfobject.embedSWF( data.uri, $(div).attr("id"), data.width, data.height, "8.0.0", "/flashs/updateInstall.swf", {}, { menu: false, allowScriptAccess: "always", wmode: "opaque" }, {} );
                                                           $(div).css( "height", data.height+"px" );
                                                          } );
                                                  
                                                  if( data.time > 0 )
                                                   window.setTimeout( function(){ reloadBanniereVille( data.id_emplacement, $(divContent) ); }, data.time*1000 );
                                                 }
                                                }
                                               }, "json");
 }
}


/* CITY & ZIP CODE */

function searchTown( f_zip_code, f_town, callback )
{
 txtSearch = "<h1>Liste des villes</h1>\n"
           + "<div id='window_results'>\n"
           + " <em>Aucune recherche lanc&eacute;e.</em>\n"
           + "</div>\n"
           + "<table class='search'>\n"
           + " <tbody>\n"
           + "  <tr>\n"
           + "   <th>Ville / Code postal :</th>\n"
           + "   <td>\n"
           + "    <input type='text' id='windowSearchText' name='w' value='' "
           + "     onkeypress=\"if( event.keyCode == 13 ) $(this).parents('.jqicontainer').find('button[name=jqibuttonRechercher]').click();\" /></td>\n"
           + "   </td>\n"
           + "  </tr>\n"
           + " </tbody>\n"
           + "</table>\n";
 
 myWindow = $.prompt( txtSearch,
                      {
                       buttons: { Rechercher: 'search', Fermer: 'close' },
                       overlayspeed: "fast",
                       promptspeed: "fast",
                       opacity: 0.75,
                       show: 'fadeIn',
                       
                       loaded: function(){ $("input#windowSearchText").focus(); },
                       submit: function( v, m )
                               {
                                myWindow.find("button[name=jqibuttonRechercher]").attr( "disabled", "disabled" );
                                
                                if( v == "close" )
                                 return true;
                                else
                                {
                                 if( $("#window_results") )
                                 {
                                  // Envoi de la recherche
                                  var data = { action_form: "search_geo", w: '' };
                                      data.w = $.trim( m.find('#windowSearchText').val() );
                                  
                                  if( data.w.length >= 2 )
                                  {
                                   $.post( "/system/user/search.html", 
                                           data, 
                                           function( data )
                                           {
                                            if( data.status == "true" )
                                            {
                                             var myList = document.createElement( "ul" );
                                             var j = 0;
                                             
                                             $.each( data.result.cities,
                                                     function(i, n)
                                                     {
                                                      j++;
                                                      myElementList = document.createElement( "li" );
                                                      myElementList.className = "l_" + ( i%2==0 ? "0" : "1" );
                                                      myElementList.onclick = function()
                                                                              {
                                                                               f_zip_code.val( n.zip_code );
                                                                               f_town.val( n.city );
                                                                               myWindow.find("button[name=jqibuttonFermer]").click();
                                                                               
                                                                               if( $.isFunction( callback ) )
                                                                                callback();
                                                                              };
                                                      myElementList.innerHTML = n.zip_code + " - " + n.city;
                                                      
                                                      myList.appendChild( myElementList );
                                                     });
                                             
                                             if( j == 0 )
                                             {
                                              $("#window_results").empty();
                                              $("#window_results").append( "<em>Aucun r&eacute;sultat.</em>" );
                                             }
                                             else
                                             {
                                              $("#window_results").empty();
                                              $("#window_results").append( myList );
                                             }
                                            }
                                            else
                                            {
                                             $("#window_results").empty();
                                             $("#window_results").append( "<em><strong>Une erreur est survenue, merci de réessayer plus tard.</strong></em>" );
                                            }
                                           }, 
                                           "json");
                                  }
                                  else
                                  {
                                   $("#window_results").empty();
                                   $("#window_results").append( "<em><strong>Votre recherche doit comprendre au minimum deux caractères.</strong></em>" );
                                  }
                                 }
                                 
                                 myWindow.find("button[name=jqibuttonRechercher]").removeAttr( "disabled" );
                                 
                                 return false;
                                }
                               }
                       
                      }).children('.jqi').corner();
}




/* CONTACT */

function sendContactInformations()
{
 if( !$("form#contactInformations_form").validForm() )
 {
  alert( "Votre demande n'est pas complète.<br />"
       + "<strong>Contrôlez que les champs en rouge recquis sont bien entrés.</strong>" );
 }
 else if ($('#form_email').val() != $('#form_validation_email').val())
 {
  alert('Vous avez mal répétés votre Email.');
 }
 else
 {
  $("form#contactInformations_form :button, form#contactInformations_form :submit").attr( "disabled", "disabled" );
  
  var dataSend = {};
  var data_temp = $("form#contactInformations_form :input");
      data_temp = data_temp.serializeArray();
  $.each( data_temp,
          function( i, value )
          {
           if( eval( "typeof dataSend." + value.name ) == "undefined" )
            eval( "dataSend." + value.name + "=value.value;" );
           else
            eval( "dataSend." + value.name + "=dataSend." + value.name + " + ',' + value.value;" );
          });
  delete data_temp;
  
  
  $.post( "/system/user/contact.html", 
          dataSend, 
          function( data )
          {
           switch( data.status )
           {
            case 'true':
             alert( dataSend.title + " " + dataSend.lastname.toUpperCase() + " " + dataSend.firstname + ",<br />\n"
                  + "Votre message a bien été envoyé et nous vous en remercions.<br />"
                  + "Votre numéro de client est <u>" + data.id_customer + "</u> et votre numéro de demande <u>" + data.id_web_event + "</u>.",
                    {
                     buttons: { "Retour au site": true },
                     submit: function(v,m)
                             {
                              $("form#askingInformations_form").resetForm();
                              $("img#cryptogram").next("a").click();
                              
                              window.location = "/";
                              
                              return false;
                             }
                    } );
             break;
            case 'captcha':
             alert( "Le code anti-spam recopié est invalide." );
             break;
            default:
             alert( "Une erreur est survenue, merci de réessayer plus tard." );
           }
           
           $("form#contactInformations_form :button, form#contactInformations_form :submit").removeAttr( "disabled" );
          }, 
          "json");
 }
}

/* OFFRE */

function sendOffer()
{
 if( !$("form#offer_form").validForm() )
 {
  alert( "Votre demande n'est pas complète.<br />"
       + "<strong>Contrôlez que les champs en rouge recquis sont bien entrés.</strong>" );
 }
 else if ($('#form_email').val() != $('#form_validation_email').val())
 {
  alert('Vous avez mal répétés votre Email.');
 }
 else
 {
  $("form#offer_form :button, form#offer_form :submit").attr( "disabled", "disabled" );

  var dataSend = {};
  var data_temp = $("form#offer_form :input");
      data_temp = data_temp.serializeArray();
  $.each( data_temp,
          function( i, value )
          {
           if( eval( "typeof dataSend." + value.name ) == "undefined" )
            eval( "dataSend." + value.name + "=value.value;" );
           else
            eval( "dataSend." + value.name + "=dataSend." + value.name + " + ',' + value.value;" );
          });
  delete data_temp;


  $.post( "/system/user/offer.html",
          dataSend,
          function( data )
          {
           switch( data.status )
           {
            case 'true':
             alert( dataSend.title + " " + dataSend.lastname.toUpperCase() + " " + dataSend.firstname + ",<br />\n"
                  + 'L\'Etude Immobilière transmet votre offre, négocie avec le propriétaire et vous répondra dans les meilleurs délais.'
                  //+ "Votre offre a bien été envoyé et nous vous en remercions.<br />"
                  + "Votre numéro de client est <u>" + data.id_customer + "</u> et votre numéro de demande <u>" + data.id_web_event + "</u>.",
                    {
                     buttons: { "Retour au site": true },
                     submit: function(v,m)
                             {
                              $("form#askingInformations_form").resetForm();
                              $("img#cryptogram").next("a").click();

                              window.location = "/";

                              return false;
                             }
                    } );
             break;
            case 'captcha':
             alert( "Le code anti-spam recopié est invalide." );
             break;
            default:
             alert( "Une erreur est survenue, merci de réessayer plus tard." );
           }

           $("form#contactInformations_form :button, form#contactInformations_form :submit").removeAttr( "disabled" );
          },
          "json");
 }
}

/* CONTACT */

function sendJoinUsInformations()
{
 if( !$("form#joinUs_form").validForm() )
 {
  alert( "Votre demande n'est pas complète.<br />"
       + "<strong>Contrôlez que les champs en rouge recquis sont bien entrés.</strong>" );
 }
 else if ($('#form_email').val() != $('#form_validation_email').val())
 {
  alert('Vous avez mal répétés votre Email.');
 }
 else
 {
  $("form#joinUs_form :button, form#joinUs_form :submit").attr( "disabled", "disabled" );
  
  var dataSend = {};
  var data_temp = $("form#joinUs_form :input");
      data_temp = data_temp.serializeArray();
  $.each( data_temp,
          function( i, value )
          {
           if( eval( "typeof dataSend." + value.name ) == "undefined" )
            eval( "dataSend." + value.name + "=value.value;" );
           else
            eval( "dataSend." + value.name + "=dataSend." + value.name + " + ',' + value.value;" );
          });
  delete data_temp;
  
  
  $.post( "/system/user/joinus.html", 
          dataSend, 
          function( data )
          {
           switch( data.status )
           {
            case 'true':
             alert( dataSend.title + " " + dataSend.lastname.toUpperCase() + " " + dataSend.firstname + ",<br />\n"
                  + "Votre demande a bien été envoyé et nous vous en remercions. Nous vous recontacterons dans les plus bref délai.<br />"
                  + "Votre numéro de demandeur est <u>" + data.id_customer + "</u> et votre numéro de demande <u>" + data.id_web_event + "</u>.",
                    {
                     buttons: { "Retour au site": true },
                     submit: function(v,m)
                             {
                              $("form#askingInformations_form").resetForm();
                              $("img#cryptogram").next("a").click();
                              
                              window.location = "/";
                              
                              return false;
                             }
                    } );
             break;
            default:
             alert( "Une erreur est survenue, merci de réessayer plus tard." );
           }
           
           $("form#joinUs_form :button, form#joinUs_form :submit").removeAttr( "disabled" );
          }, 
          "json");
 }
}

/* REGISTER */


function sendRegisterInformations()
{
 if( !$("form#registerInformations_form").validForm() )
 {
  alert( "Votre demande n'est pas complète.<br />"
       + "<strong>Contrôlez que les champs en rouge recquis sont bien entrés.</strong>" );
 }
 else if ($('#form_email').val() != $('#form_validation_email').val())
 {
  alert('Vous avez mal répétés votre Email.');
 }
 else if ($('#form_password').val() != $('#form_validation_password').val())
 {
  alert('Vous avez mal répétés votre Mot de passe.');
 }
 else
 {
  $("form#registerInformations_form :button, form#registerInformations_form :submit").attr( "disabled", "disabled" );

  var dataSend = {};
  var data_temp = $("form#registerInformations_form :input");
      data_temp = data_temp.serializeArray();
  $.each( data_temp,
          function( i, value )
          {
           if( eval( "typeof dataSend." + value.name ) == "undefined" )
            eval( "dataSend." + value.name + "=value.value;" );
           else
            eval( "dataSend." + value.name + "=dataSend." + value.name + " + ',' + value.value;" );
          });
  delete data_temp;

  $.post( "/system/user/register.html",
          dataSend,
          function( data )
          {
           switch( data.status )
           {
            case 'true':
             alert( dataSend.title + " " + dataSend.lastname.toUpperCase() + " " + dataSend.firstname + ",<br />\n"
                  + "Vous pouvez dès maintenant vous connecter à votre espace.<br />",
                  //+ "Votre numéro de client est <u>" + data.id_customer + "</u> et votre numéro de demande <u>" + data.id_web_event + "</u>.",
                    {
                     buttons: { "Retour au site": true },
                     submit: function(v,m)
                             {
                              $("form#askingInformations_form").resetForm();
                              $("img#cryptogram").next("a").click();

                              window.location = "/";

                              return false;
                             }
                    } );
             break;
            case 'captcha':
             alert( "Le code anti-spam recopié est invalide." );
             break;
            default:
             alert( "Une erreur est survenue, merci de réessayer plus tard." );
           }

           $("form#contactInformations_form :button, form#contactInformations_form :submit").removeAttr( "disabled" );
          },
          "json");
 }
}




/* Show ErrorCode if error(s) occured */

function errorCode( data )
{
 if( typeof data != "undefined" && typeof data.errorCode != "undefined" && data.errorCode != null )
 {
  if( ( data.errorCode == "" || data.errorCode == null || data.errorCode.main == "0x00000000" ) && ( typeof data.status != "undefined" && data.status == "true" ) )
  {
   return true;
  }
  else
  {
   txtAlert = "";
   txtError = "Aucune description";
   txtErrorCodes = data.errorCode.main;
   txtErrorCodes_plus = "";
   
   txtAlert += "<p><strong>Une erreur est survenue, merci de r&eacute;essayer plus tard.</strong></p>\n";
   
   if( !( typeof data.errorCode.txt == "undefined" || data.errorCode.txt == null || data.errorCode.txt == "" ) )
   {
    txtError = data.errorCode.txt
    txtAlert += "<p><span style=\"font-weight: normal;\">Description de l'erreur :</span><br />\n"
              + "<textarea readonly=\"readonly\" class=\"errorTxt\">" + txtError + "</textarea></p>";
   }
   
   $.each( data.errorCode.errors,
           function( i, value )
           {
            txtErrorCodes_plus += ( i == 0 ? "" : ", " ) + value;
           } );
   
   if( txtErrorCodes != null )
   {
    txtAlert += "<p><span style=\"font-weight: normal;\">Code d'erreur &agrave; fournir pour toute communication :</span><br />\n"
              + "<textarea readonly=\"readonly\" class=\"errorCode\">" + txtErrorCodes + ( txtErrorCodes_plus != "" ? " (" + txtErrorCodes_plus + ")" : "" ) + "</textarea></p>"
   }
   
   if( data.errorCode.main == "0x00000001" )
    getLogin();
   else
    alert( txtAlert );
   
   if( typeof data.status != "undefined" && data.status == "true" )
    return true;
   else
    return false;
  }
 }
 else
 {
  if( typeof data.status != "undefined" && data.status == "true" )
  {
   return true;
  }
  else
  {
   txtAlert = "";
   txtAlert += "<p><strong>Une erreur est survenue, merci de r&eacute;essayer plus tard.</strong></p>\n"
             + "<p><span style=\"font-weight: normal;\">Description de l'erreur :</span><br />\n"
             + "<textarea readonly=\"readonly\" class=\"errorTxt\">Erreur inconnue.</textarea></p>";
   
   alert( txtAlert, { buttons: { "Ok": true } } );
   
   return false;
  }
 }
}




/* NOS AGENCES */

function reloadAgencies( region )
{
 var data = { action_form: "list_agencies", region: ( region == null ? '' : region ) };
 
 $.post( "/system/user/agencies.html", data, function( data )
                                            {
                                             if( data.status == "true" )
                                             {
                                              $("#list_agencies").empty();
                                              $("#list_agencies").html( data.html );
                                             }
                                             else
                                              alert( "Une erreur est survenue, merci de réessayer plus tard." );
                                            }, "json");
}




/* MON ESPACE */
//var getLogin_Accepted = false;

function getLogin( doNotRedir, callback )
{
 txtLogin = "<h1>Connexion à votre espace client</h1>\n"
          + "<form id=\"f_connexion\" name=\"connexion\" method=\"get\" onsubmit=\"$('#jqibuttons button:first').trigger( 'click' ); return false;\" action=\"javascript:void(0);\">\n"
          + " <table>\n"
          + "  <tbody>\n"
          + "   <tr>\n"
          + "    <th><label for=\"f_connexion_login\">E-mail de connexion</label></th>\n"
          + "    <td><input type=\"text\" id=\"f_connexion_login\" name=\"email\" value=\"\" tabindex=\"1\" /></td>\n"
          + "   </tr>\n"
          + "   <tr>\n"
          + "    <th><label for=\"f_connexion_password\">Mot de passe</label></th>\n"
          + "    <td><input type=\"password\" id=\"f_connexion_password\" name=\"password\" value=\"\" tabindex=\"2\" /></td>\n"
          + "   </tr>\n"

          + "   <tr>\n"
          + "    <th colspan=\"2\">Pas encore inscrit(e) ? <a style=\"color:#fff;\" href=\"/s-enregistrer.html\">Je m'inscris</a>.</th>\n"
          + "   </tr>\n"
          + "   <tr style=\"display:none\">\n"
          + "    <td colspan=\"2\"><input type=\"submit\" id=\"f_connexion_password\" name=\"submit\" value=\"\" tabindex=\"3\" /></td>\n"
          + "   </tr>\n"
          + "  </tbody>\n"
          + " </table>\n"
          + "</form>\n";
         
 if( typeof doNotRedir != "undefined" && doNotRedir === true )
  doNotRedir = true;
 else
  doNotRedir = false;

 alert( txtLogin,
        {
         buttons: { "Se connecter": true, "Annuler": false },
         submit: function(v,m)
                 {
                  //getLogin_Accepted = v;
                  var fields = $("#f_connexion :input").serializeArray();
                  if( v ) setTimeout( function()
                  {
                   goLogin( doNotRedir, fields, callback );
                  }, 0 );
                  return true;
                 }
        }
      );
}

function goLogin( doNotRedir, data, callback )
{
 if( data == undefined )
  data = $("#f_connexion :input").serializeArray();

 $("#f_connexion :input[type=submit]").attr( "disabled", "disabled" );
 
 if( typeof doNotRedir != "undefined" && doNotRedir === true )
  doNotRedir = true;
 else
  doNotRedir = false;
 
 var logged = false;
 var responseLogin = $.ajax({
                             type: "POST",
                             url: "/system/user/mon-espace/login.html",
                             data: data,
                             dataType: "json",
                             cache: false,
                             async: false
                            }).responseText;
    responseLogin = eval( "("+responseLogin+")" );
 
 if( errorCode( responseLogin ) )
 {
  if( typeof eval( responseLogin.status ) != "undefined" )
  {
   if( responseLogin.status == "true" )
   {
    if( doNotRedir == false )
    {
     setTimeout( "window.location.href = '/mon-espace/'", 0 );
     //document.location.href = "/mon-espace/";
    }
    else
    {
     logged = true;
     if( typeof callback != "undefined" )
      callback();
    }
   }
   else if( responseLogin.status == "false" || responseLogin.status == "" )
   {
    errorLogin(4);
    logged = false;
   }
   else if( responseLogin.status == "maintenance" )
   {
    errorLogin(3);
    logged = false;
   }
   else
   {
    errorLogin(1);
    logged = false;
   }
  }
  else
  {
   errorLogin(1);
   logged = false;
  }
 }
 
 if( logged == false )
 {
  $("#connexion :input[type=submit]").removeAttr( "disabled" );
 }
}

/* Disconnect user */

function goDisconnect()
{
 window.location = "/system/user/mon-espace/login.html?deconnexion=true";
}

/* Show error description for an login error */

function errorLogin( idError, message )
{
 switch( idError )
 {
  case 1: alert( "Une erreur est survenue, merci de r&eacute;&eacute;ssayer plus tard ou contactez le webmaster.", "Connexion" ); break;
  case 2: alert( "Vous &ecirc;tes maintenant d&eacute;connect&eacute; de votre espace membre.<br />\nVous pouvez vous reconnecter &agrave; tout moment en remplissant le formulaire de connexion.", "D&eacute;connexion" ); break;
  case 3: alert( "Le service est momentan&eacute;ment indisponible pour cause de maintenance.<br />\nMerci de r&eacute;essayer plus tard.", "Connexion" ); break;
  case 4: alert( "Le nom d'utilisateur et/ou le mot de passe que vous avez saisie est invalide.<br />\nSi vous avez oubli&eacute; votre mot de passe, merci de contacter un administrateur.", "Connexion" ); break;
  case 5: alert( "Merci de saisir un nom d'utilisateur (votre adresse email) et un mot de passe valide.", "Connexion" ); break;
  case 6: alert( "Votre session n'est pas ou plus valide.<br />\nEn cas d'inactivit&eacute; apr&egrave;s la connexion &agrave; votre espace membre, vous &ecirc;tes automatiquement d&eacute;connect&eacute; par mesure de s&eacute;curit&eacute;.", "Connexion" ); break;
  case 7: alert( "Vous avez rencontr&eacute; un probl&egrave;me de cookie.<br />\nVos cookies ont peut-&ecirc;tre &eacute;t&eacute; supprim&eacute;s, merci de vous reconnecter ou de contacter le webmaster si le probl&egrave;me persiste.", "Connexion" ); break;
  case 8: alert( "Une de vos manipulation &agrave; provoqu&eacute;e une violation d'acc&egrave;s au site, pour cette raison, vous avez &eacute;t&eacute; d&eacute;connect&eacute;.<br />\nL'erreur retourn&eacute;e est la suivante :<br />\n<em>" + ( message == null ? "Aucune erreur connue" : message ) + "</em>", "Connexion" ); break;
 }
}


/* ENCRYPT / DECRYPT */

function utf8_decode ( str_data ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
    // +      input by: Aman Gupta
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Norman "zEh" Fuchs
    // +   bugfixed by: hitwork
    // +   bugfixed by: Onno Marsman
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: utf8_decode('Kevin van Zonneveld');
    // *     returns 1: 'Kevin van Zonneveld'
 
    var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0;
    
    str_data += '';
    
    while ( i < str_data.length ) {
        c1 = str_data.charCodeAt(i);
        if (c1 < 128) {
            tmp_arr[ac++] = String.fromCharCode(c1);
            i++;
        } else if ((c1 > 191) && (c1 < 224)) {
            c2 = str_data.charCodeAt(i+1);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
            i += 2;
        } else {
            c2 = str_data.charCodeAt(i+1);
            c3 = str_data.charCodeAt(i+2);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
            i += 3;
        }
    }
 
    return tmp_arr.join('');
}


function base64_decode( data )
{
    // http://kevin.vanzonneveld.net
    // +   original by: Tyler Akins (http://rumkin.com)
    // +   improved by: Thunder.m
    // +      input by: Aman Gupta
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   bugfixed by: Pellentesque Malesuada
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // -    depends on: utf8_decode
    // *     example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');
    // *     returns 1: 'Kevin van Zonneveld'
 
    // mozilla has this native
    // - but breaks in 2.0.0.12!
    //if (typeof this.window['btoa'] == 'function') {
    //    return btoa(data);
    //}
 
    var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = [];
 
    if (!data) {
        return data;
    }
 
    data += '';
 
    do {  // unpack four hexets into three octets using index points in b64
        h1 = b64.indexOf(data.charAt(i++));
        h2 = b64.indexOf(data.charAt(i++));
        h3 = b64.indexOf(data.charAt(i++));
        h4 = b64.indexOf(data.charAt(i++));
 
        bits = h1<<18 | h2<<12 | h3<<6 | h4;
 
        o1 = bits>>16 & 0xff;
        o2 = bits>>8 & 0xff;
        o3 = bits & 0xff;
 
        if (h3 == 64) {
            tmp_arr[ac++] = String.fromCharCode(o1);
        } else if (h4 == 64) {
            tmp_arr[ac++] = String.fromCharCode(o1, o2);
        } else {
            tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
        }
    } while (i < data.length);
 
    dec = tmp_arr.join('');
    dec = this.utf8_decode(dec);
 
    return dec;
}


function decryptEmail( email )
{
 window.location = "mailto:" + base64_decode( email );
}


/**
 * Alerte de prix
 */
function addAlertPriceMandate(mandate_reference, element)
{
 /*
 alert( "Un mail vous sera transmis ou un consultant vous contactera dès que le prix net propriétaire atteindra votre alerte.<br />" +
        "Prix actuel du bien : <span id=\"mandate_price\">" + mandate_price + "</span> &euro;" +
        "<table style=\"width: 100%;\"><tr><td style=\"width:94px;\"> Votre prix</td>" +
        "  <td class=\"new_price\">" +
        "   <strong><span id=\"offerPrice\">" + mandate_price + "</span>&nbsp;&euro;</strong>"+
        "   <span class=\"mandate_scale\">"+
        "    <img class=\"down_price\" src=\"/imgs/blank.gif\" onclick=\"testPrice(this,true);\" />"+
        "    <img class=\"up_price\" src=\"/imgs/blank.gif\" onclick=\"testPrice(this,false);\" />"+
        "   </span>"+
        "  </td>"+
        "</tr></table>",
       {
        buttons: { Valider: true, Annuler: false },
        submit: function(v,m)
                {
                 if( v == true )
                 {
                  var price = parseInt($("#offerPrice").html());

                  if (!isNaN(price))
                  {
                   if (mandate_price <= price)
                   {
                    alert('Votre alerte doit être inférieur au prix actuel du bien.');
                   }
                   else
                   {
                    var data = { action_form: "addAlertPrice",
                                 price: price,
                                 mandate_reference: mandate_reference
                               };
                    $.post( "/system/user/mon-espace/alertes.html",
                            data,
                            function( data )
                            {
                             if( data.status == true )
                             {
                              $(element).parent().html('Alerte : ' + price + ' &euro;');
                             }
                            }, "json");
                    return true;
                   }
                  }
                  else
                  {
                   alert('Votre prix n\'est pas correct.');
                  }
                 }
                 else
                 {
                  return true;
                 }
                }
      }
     );
*/
 var data = { action_form: "priceAlert_html",
              mandate_reference: mandate_reference };
 $.post( "/system/user/mon-espace/alertes.html",
         data,
         function( data )
         {
          if( data.connected == true )
          {
           alert( data.html,
                 {
                  buttons: { Valider: true, Annuler: false },
                  submit: function(v,m)
                          {
                           if( v == true )
                           {
                            var offerPrice = parseInt($('#offerPrice').html());
                            var during = parseInt($('select[name=during]').val());
                            var data = { action_form: "addPriceAlert",
                                         offerPrice: offerPrice,
                                         during: during,
                                         mandate_reference: mandate_reference };
                            $.post( "/system/user/mon-espace/alertes.html",
                                    data,
                                    function( data )
                                    {
                                     if( data.status == true )
                                     {
                                      $(element).parent().html('Alerte : ' + offerPrice + ' &euro;');
                                      alert("Un mail vous sera transmis ou un consultant vous contactera dès que le prix net propriétaire atteindra votre alerte");
                                     }
                                     else
                                     {
                                      alert('Une erreur est survenue. Merci de réésayer plus tard.');
                                     }
                                    }, "json");
                           }
                           return true;
                          }
                }
               );
          }
          else
          {
           alert( data.html,
                 {
                  buttons: { Valider: true, Annuler: false },
                  submit: function(v, m)
                          {
                           if( v == true )
                           {
                            var lastname = $('#lastname').val();
                            var firstname = $('#firstname').val();
                            var address = $('#address').val();
                            var address_next = $('#address_next').val();
                            var zip_code = $('#zip_code').val();
                            var town = $('#town').val();
                            var offerPrice = parseInt($('#offerPrice').html());
                            var phone = $('#phone').val();
                            var email = $('#email').val();
                            var validation_email = $('#validation_email').val();
                            var during = parseInt($('select[name=during]').val());

                            if (lastname == ''
                             || firstname == ''
                             || address == ''
                             || zip_code== ''
                             || town == ''
                             || phone == ''
                             || email == ''
                             || validation_email == ''
                               )
                            {
                             alert('Vous devez remplir tous les champs.');
                            }
                            else if(validation_email != email )
                            {
                             alert('Vous avez mal répétés votre Email.');
                            }
                            else
                            {
                             var data = { action_form: "addPriceAlert",
                                          lastname: lastname,
                                          firstname: firstname,
                                          address: address,
                                          address_next: address_next,
                                          zip_code: zip_code,
                                          town: town,
                                          offerPrice: offerPrice,
                                          phone: phone,
                                          email: email,
                                          during: during,
                                          mandate_reference: mandate_reference };
                             $.post( "/system/user/mon-espace/alertes.html",
                                     data,
                                     function( data )
                                     {
                                      if( data.status == true )
                                      {
                                       $(element).parent().html('Alerte : ' + offerPrice + ' &euro;');
                                       alert("Un mail vous sera transmis ou un consultant vous contactera dès que le prix net propriétaire atteindra votre alerte")
                                      }
                                      else
                                      {
                                       alert('Une erreur est survenue. Merci de réésayer plus tard.')
                                      }
                                     }, "json");
                             return true;
                            }
                           }
                           else
                           {
                            return true;
                           }

                          }
                }
               );
          }
         }, "json");
}

function delAlertPriceMandate(mandate_reference, mandate_price, element)
{
 var data = { action_form: "delAlertPrice",
              mandate_reference: mandate_reference
            };
 $.post( "/system/user/mon-espace/alertes.html",
         data,
         function( data )
         {
          if( data.status == true )
          {
           $(element).parent().html("<a onclick=\"addAlertPriceMandate('" + mandate_reference +  "', " + mandate_price + ", this);\" href=\"javascript:void(0)\" title=\"Ajouter une alerte de prix\">Alerte prix</a>");
          }
         }, "json");
}


/**
 * Offre de prix
 */
function makeOffer(mandate_reference)
{
 var data = { action_form: "makeOffer_html",
              mandate_reference: mandate_reference };
 $.post( "/system/user/mandate.html",
         data,
         function( data )
         {
          if( data.connected == true )
          {
           alert( data.html,
                 {
                  buttons: { Valider: true, Annuler: false },
                  submit: function(v,m)
                          {
                           if( v == true )
                           {
                            var data = { action_form: "makeOffer",
                                         offerPrice: parseInt($('#offerPrice').html()),
                                         mandate_reference: mandate_reference,
                                         time_lenght: $('#timeLenght').val() };
                            $.post( "/system/user/mandate.html",
                                    data,
                                    function( data )
                                    {
                                     if( data.status == true )
                                     {
                                      alert('L\'Etude Immobilière transmet votre offre, négocie avec le propriétaire et vous répondra dans les meilleurs délais.');
                                     }
                                      else
                                      {
                                       alert('Une erreur est survenue. Merci de réésayer plus tard.')
                                      }
                                    }, "json");
                           }
                           return true;
                          }
                }
               );
          }
          else
          {
           alert( data.html,
                 {
                  buttons: { Valider: true, Annuler: false },
                  submit: function(v, m)
                          {
                           if( v == true )
                           {
                            var lastname = $('#lastname').val();
                            var firstname = $('#firstname').val();
                            var address = $('#address').val();
                            var address_next = $('#address_next').val();
                            var zip_code = $('#zip_code').val();
                            var town = $('#town').val();
                            var offerPrice = parseInt($('#offerPrice').html());
                            var phone = $('#phone').val();
                            var email = $('#email').val();
                            var validation_email = $('#validation_email').val();
                            var time_lenght = $('#timeLenght').val();

                            if (lastname == ''
                             || firstname == ''
                             || address == ''
                             || zip_code== ''
                             || town == ''
                             || phone == ''
                             || email == ''
                             || validation_email == ''
                               )
                            {
                             alert('Vous devez remplir tous les champs.');
                            }
                            else if(validation_email != email )
                            {
                             alert('Vous avez mal répétés votre Email.');
                            }
                            else
                            {
                             var data = { action_form: "makeOffer",
                                          lastname: lastname,
                                          firstname: firstname,
                                          address: address,
                                          address_next: address_next,
                                          zip_code: zip_code,
                                          town: town,
                                          offerPrice: offerPrice,
                                          phone: phone,
                                          email: email,
                                          mandate_reference: mandate_reference,
                                          time_lenght: time_lenght };
                             $.post( "/system/user/mandate.html",
                                     data,
                                     function( data )
                                     {

                                      if( data.status == true )
                                      {
                                       alert('L\'Etude Immobilière transmet votre offre, négocie avec le propriétaire et vous répondra dans les meilleurs délais.');
                                      }
                                      else
                                      {
                                       alert('Une erreur est survenue. Merci de réésayer plus tard.')
                                      }
                                     }, "json");
                             return true;
                            }
                           }
                           else
                           {
                            return true;
                           }
                          
                          }
                }
               );
          }
         }, "json");
}

function testPrice( element, down )
{
 var price = '';
 price = $("#offerPrice").html();
 price = price.replace( / /, "" );
 price = parseInt( price );
 
 var mandate_price = parseInt($('#mandate_price').html());

 if( typeof down != "undefined" && down == true )
 {
  price -= 1000;
 }
 else
 {
  price += 1000;
 }
 if (mandate_price > price)
 {
  $("#offerPrice").html( price );
 }
}