/*  Le Phare JavaScript library - (c) 2009
/*--------------------------------------------------------------------------*/

var Loader = Class.create({
   initialize: function(element) {
      if($(element)) {
         this.idBody = element;
         this.registerGenerics();  // call generics f°
         this.registerSpecifics(); // call specificsf°
      }
      else {
         alert('ATTENTION\nLa balise body n\'a pas d\'id !');
      }
   },

   registerGenerics: function() {
         //maFonctionGeneriques();
   },

   registerSpecifics: function() {
         switch (this.idBody) {
            case 'pageFaq':
               showFirstFaq();
            break;

            case 'pageNewsletter':
               initContact();
            break;
            
            case 'pageDesabonnement':
               initDesinscription();
            break;
            
            case 'pageDemandeDoc':             
               verifContact();             
            break;
                        
            case 'pageContact':
            case 'pageBilanService':
            case 'pageRDVconseiller':
            case 'pageRDVpro':
            case 'pageAccompMobilite':
               initForm();
               initCalendar();
            break;

            case 'pageVous':
            //MaskedInput.definitions['l'] = '(C|c|w|W)'
            (function($) {
            $('.MaskedInputPhone').mask('99.99.99.99.99');
            $('.MaskedInputMobile').mask('99.99.99.99.99');
            $('.MaskedInputDateNaissance').mask('99/99/9999');              
            $('.MaskedInputDateEmbauche').mask('99/99/9999');
            $('.MaskedInputCoDateEmbauche').mask('99/99/9999');
            })(jQuery);
            break;
         
            case 'pageVotreLogement':
            //MaskedInput.definitions['l'] = '(C|c|w|W)'
            (function($) {
			$('.MaskedInputDateEntree').mask('99/99/9999');
            $('.MaskedInputDateSignBail').mask('99/99/9999');
            })(jQuery);
            break;
         
            case 'pageRib':
            case 'pageFinaliser':
               //initCalendar();
            break;

            case 'pageEligible':
               //initEligibleForm();
            break;

            case 'pagePrePerso':
               inits20p07Form();
            break;

            case 'pageOffresLocation':
               initOffreLocation();
               switchLabelTitle();
               if($('data_email_'))
               {
                  Event.observe('data_email_','blur',switchLabelTitle);
                  Event.observe('data_email_','click',switchLabelTitle);
                  // affiche ou non le bouton
                  $$('#btnGererAbo a').each(function(obj){
                        obj.observe('click',function(){
                             if($('jsBoxEmail').visible())
                                 new Effect.SlideUp('jsBoxEmail');
                             else    
                                 new Effect.SlideDown('jsBoxEmail');
                        });
                  });
               }               
            break;
            
            case 'pagePerso':
               //initPersoForm();
            break;
            
            case 'pageLocation':
               BoiteGRL();
               initAccesDossier();
            break;
            case 'pageAchat':
            case 'pageTravaux':
               calculFinancement();
            break;
            case 'pageAboAnnonces':
            case 'pageModifAboAnnonces':
            case 'pageDesaboAnnonces':
               initForm();
              
               $$('.colSect h3 input').each(function(obj){

                     Event.observe(obj,'click',function(){
                        $$('.'+obj.id).each(function(input){
                           if(input.checked!=obj.checked)
                              input.click();  
                        });
                     });
               });
            break;
            case 'pageEspaceParticuliers':
            case 'pageRub':
            case 'pageFiche':
               cleanList = function(){
                     $$('.jsProdNav').each(function(obj){obj.hide();});                  
               }
               $$('.jsCategProd').each(function(obj){
                  Event.observe(obj,'mouseover',function(obj) {
                     var list = this.next();
                     cleanList();
                     list.show();
                  });
               });
               calculFinancement();
            break;
            case 'pageAccueil':
             
            break;
            case 'pageEspaceLocation':
               Event.observe('data_id_categ_','change',function(){
					      var pars = 'todo=ajax_mode_secteur&data[id_categ]='+$('data_id_categ_').value;
      					var uri = '/fr/s25_offres_location/s25p01_offres_location.php';
      					var myAjax = new Ajax.Request( uri, 
                                    {
                                       method: 'get'
                                       , parameters: pars
                                       , onSuccess: function(transport) {   

                                          var myObject = transport.responseText.evalJSON();
                                          var idsecteur = $('data_id_categ_secteur_');      
                                             idsecteur.update(myObject.secteur);
                                                                     
                                       }
                                    });
                                    
					
					});
					$('jsT_princ').value='';
					$('jsTypeLogement_princ').value='';
					
					// on récupére l'ensemble de checkbox !
					   $$('.jsCheckbox').each(function(obj){
					
					      Event.observe(obj,'click',function(obj1){
					         ObjetInit = new Event.element(obj1);
					         id = ObjetInit.id.split('_')[0];
					         if($(id+'_princ'))
					         {
					            //
					            if($(id+'_princ').value=='') 
					               tabValeur = new Array;
					            else
					               tabValeur = $(id+'_princ').value.split(',');
					            // si on a coché la case on ajoute !                  
					            if(ObjetInit.checked)
					            {
					               // et on push et on push
					               tabValeur.push(ObjetInit.value);
					            }
					            else
					            {
					               // on supprime la valeur !
					               var cpt=0;
					               
					               long_tableau =tabValeur.length-1; 
					               for (i = 0; i <= long_tableau; i++)
					               {
					                  if(tabValeur[i]!=ObjetInit.value) cpt = i;
					               }
					               tabValeur = middlepop(tabValeur,cpt);
					            }
					            //tabValeur = Doublons(tabValeur);
					            tabValeur = Verif_choix(id);
					
					            if(tabValeur.lenght==1)
					               $(id+'_princ').value = tabValeur[0];
					            else
					               $(id+'_princ').value = tabValeur.join(',');
					         }
					      });         
					   }); 
						
               switchLabelTitle();
               if($('data_email_'))
               {
                  Event.observe('data_email_','blur',switchLabelTitle);
                  Event.observe('data_email_','click',switchLabelTitle);
                  // affiche ou non le bouton
                  $$('#btnGererAbo a').each(function(obj){
                        obj.observe('click',function(){
                             if($('jsBoxEmail').visible())
                                 new Effect.SlideUp('jsBoxEmail');
                             else    
                                 new Effect.SlideDown('jsBoxEmail');
                        });
                  });
               } 						  					
            break;
         }
   }
});




// load
Event.observe(window, 'load', function() {
   var loader = new Loader(document.body.id);
});

function switchLabelTitle()
{
   if($('data_email_'))
   {  
      var title = $('data_email_').title; 
  
      if($('data_email_').value != title && $('data_email_').value!='') return;
      if($('data_email_').value == title)
         $('data_email_').value = '';
      else
         $('data_email_').value = title;
   }
    
}

/*--------------------------------------------------------------------------*/
//function affiche ou cache la boite de dialogue PASS-GRL
function BoiteGRL()
{
   if($('btnPassportGRL'))
   {
      Event.observe('btnPassportGRL', 'click', function() {
         $('boiteGRL').toggle();
         $('submitGRL').show();
      });
      
      
      var zeForm2 = new Validation('boiteFormGRL', {
            immediate : false,
            useTitles:true,
            stopOnFirst:false,
            onSubmit: false
      });

      Event.observe('submitGRL', 'click', function() {
         if(zeForm2.validate()) {
            AjaxGRL();
         }
         return false;
      });
   }
}
   function showZoomPhoto(id_photo)
   {
      $$('.zoom').each(function(obj)
      {
         if(obj.id!=id_photo) obj.hide();
      });
      $('legende').update($(id_photo).alt);
      if(!$(id_photo).visible())$(id_photo).show();
      return false;
   }
function AjaxGRL()
{
   var pars = $('boiteFormGRL').serialize(); 
   var uri = '/fr/s20_location/_mail_grl.php';
 
   $('submitGRL').hide();
   $('wait_caract').show();
   
   var myAjax = new Ajax.Request( uri, 
                                 {
                                    method: 'get'
                                    , parameters: pars
                                    , onSuccess: function(transport) {                                 
                                             if(transport.responseText == "1")
                                             {
                                                hideWaitCarac();                                             
                                             }

                                 }
                                });
}
function hideWaitCarac() 
 {
   $('wait_caract').hide();
   window.open("http://www.passgrl.fr",'_blank');
   $('lnkGrl').show();
}
function showFirstFaq()
{
   $$('.jsReponse')[0].show();
}
function initForm()
{
   if($('zeForm'))
   {
      var zeForm = new Validation('zeForm', {
         useTitles:true,
         stopOnFirst:true,
         onFormValidate: function() {$('todo').value = "submit_quest";}
      });
   
      if($('searchSubmitter')) {
         Event.observe('searchSubmitter', 'click', function() {$('searchTodo').value = "email-subscribe"; $('searchEmailForm').submit();});
      }
   
      if($('errMsg')) {
         if($('errMsg').innerHTML  != '') {
            Element.show('errMsg'); Effect.BlindUp('errMsg', {delay:3});
         }
      }
      if($('tip_bilan'))
      {
         new Tip('tip_bilan', 'Votre numéro d\'adhérent se trouve sur votre bordereau de versement');
      }
   }
} // initForm

function initCalendar() {
   
	if($('data_date_naissance_')) {
      var calDateNaissance =  Calendar.setup({inputField:"data_date_naissance_", displayArea : "data_date_naissance_trigger", button:"data_date_naissance_trigger", ifFormat:"dd/mm/y", mondayFirst:true, onSelect:setDate, align: "Bl", singleClick: true});}
      //calDateNaissance.showAtElement($('data_date_naissance_trigger'), "Bl");
   if($('data_co_date_naissance_')) {
      var calDateCoNaissance =  Calendar.setup({inputField:"data_co_date_naissance_", displayArea : "data_co_date_naissance_trigger", button:"data_co_date_naissance_trigger", ifFormat:"dd/mm/y", mondayFirst:true, onSelect:setDate});}
   if($('data_date_embauche_')) {
      var calDateEmbauche =  Calendar.setup({inputField:"data_date_embauche_", displayArea : "data_date_embauche_trigger", button:"data_date_embauche_trigger", ifFormat:"dd/mm/y", mondayFirst:true, onSelect:setDate});}
   if($('data_co_date_embauche_')) {
      var calDateCoEmbauche =  Calendar.setup({inputField:"data_co_date_embauche_", displayArea : "data_co_date_embauche_trigger", button:"data_co_date_embauche_trigger", ifFormat:"dd/mm/y", mondayFirst:true, onSelect:setDate});}
   if($('data_L_date_entree_')) {
      var calLDateEntree =  Calendar.setup({inputField:"data_L_date_entree_", displayArea : "data_L_date_entree_trigger", button:"data_L_date_entree_trigger", ifFormat:"dd/mm/y", mondayFirst:true, onSelect:setDate});}
   if($('data_L_date_sign_bail_')) {
      var calLDateSignBail =  Calendar.setup({inputField:"data_L_date_sign_bail_", displayArea : "data_L_date_sign_bail_trigger", button:"data_L_date_sign_bail_trigger", ifFormat:"dd/mm/y", mondayFirst:true, onSelect:setDate});}
   if($('dem_info_date_prevue_mobilite_')) {
      var calDatePrevueMobilite = Calendar.setup({inputField:"dem_info_date_prevue_mobilite_", displayArea : "dem_info_date_prevue_mobilite_trigger", button:"dem_info_date_prevue_mobilite_trigger", ifFormat:"dd/mm/y", mondayFirst:true, onSelect:setDate});}
} // initCalendar

function initContact()
{
   var zeForm = new Validation('zeForm', {
      useTitles:true,   // pour utiliser les titles des champs comme message d’erreur
      stopOnFirst:true, // arête à la premiere erreur
      onFormValidate:  // definie la function qui permet d’empeche l’envoie du form sans js et donc sans verif
         function() {$('todo').value ="submit_quest";}
      });

   if($('searchSubmitter')) {
      Event.observe('searchSubmitter', 'click', function() {$('searchTodo').value = "search_email"; $('searchEmailForm').submit();});
   }

   if($('errMsg')) {
      if($('errMsg').innerHTML  != '') {
         Element.show('errMsg'); Effect.BlindUp('errMsg', {delay:3});
      }
   }
}

function initDesinscription()
{
   var zeForm = new Validation('auth', {
      useTitles:true,   // pour utiliser les titles des champs comme message d’erreur
      stopOnFirst:true, // arête à la premiere erreur
      onFormValidate:  // definie la function qui permet d’empeche l’envoie du form sans js et donc sans verif
         function() {$('todo').value = "unsub";}
      });
}

function verifContact()
{
   var zeForm = new Validation('zeForm', {
   useTitles:true,
   stopOnFirst:false,
   immediate: false,
   onFormValidate: function() {
      $('todo').value='submit_quest';
      $('zeForm').action = '../s04_contact/s04p06_documents.php';
   }});
   if($('searchSubmitter')) {
      Event.observe('searchSubmitter', 'click', function() {$('searchTodo').value = "email-subscribe"; $('searchEmailForm').submit();});
   }

   if($('errMsg')) {
      if($('errMsg').innerHTML  != '') {
         Element.show('errMsg'); Effect.BlindUp('errMsg', {delay:3});
      }
   }
   if($('depliSalaries')){ 
   Event.observe('depliSalaries', 'click', function(obj){
      $('depliSalaries_quantite').toggle();               
   });  
   }
   if($('affiches')){ 
   Event.observe('affiches', 'click', function(obj){
      $('affiches_quantite').toggle();               
   });           
   }
   if($('depliMobilite')){ 
   Event.observe('depliMobilite', 'click', function(obj){
      $('depliMobilite_quantite').toggle();               
   });
   }
   if($('depliAssist')){ 

   Event.observe('depliAssist', 'click', function(obj){
      $('depliAssist_quantite').toggle();
   });
   }
   if($('dossLoca')){    
   Event.observe('dossLoca', 'click', function(obj){
      $('dossLoca_quantite').toggle();               
   });
   }
   if($('dossMobi')){ 
   Event.observe('dossMobi', 'click', function(obj){
      $('dossMobi_quantite').toggle();               
   }); 
   }
   if($('dossTrav')){
      Event.observe('dossTrav', 'click', function(obj){
         $('dossTrav_quantite').toggle();               
      }); 
   }
} //end verifContact()

function initOffreLocation()
{

   Event.observe('data_id_categ_','change',function(){
      get_ajax_annonce();
   });
   Event.observe('data_id_categ_secteur_','change',function(){
      get_ajax_annonce();
   });

   if($('jsValeur').value.length>2)get_ajax_annonce();
   Event.observe('jsValeur','keyup',function(){
      if($('jsValeur').value.length>2)get_ajax_annonce();
   });
   

   // on récupére l'ensemble de checkbox !
   $$('.jsCheckbox').each(function(obj){

      Event.observe(obj,'click',function(obj1){
         ObjetInit = new Event.element(obj1);
         id = ObjetInit.id.split('_')[0];
         if($(id+'_princ'))
         {
            //
            if($(id+'_princ').value=='') 
               tabValeur = new Array;
            else
               tabValeur = $(id+'_princ').value.split(',');
            // si on a coché la case on ajoute !                  
            if(ObjetInit.checked)
            {
               // et on push et on push
               tabValeur.push(ObjetInit.value);
            }
            else
            {
               // on supprime la valeur !
               var cpt=0;
               
               long_tableau =tabValeur.length-1; 
               for (i = 0; i <= long_tableau; i++)
               {
                  if(tabValeur[i]!=ObjetInit.value) cpt = i;
               }
               tabValeur = middlepop(tabValeur,cpt);
            }
            //tabValeur = Doublons(tabValeur);
            tabValeur = Verif_choix(id);

            if(tabValeur.lenght==1)
               $(id+'_princ').value = tabValeur[0];
            else
               $(id+'_princ').value = tabValeur.join(',');
                                       
            get_ajax_annonce();
         }
      });         
   });   

   get_ajax_annonce();


}
// retire une valeur dans le milieu!
function middlepop(Tab,a){
   return (a>Tab.length)?false:(Tab.slice(0,a).concat(Tab.slice(a+1,Tab.length)));
}
// nettoie la liste des choix
function Verif_choix(idInput)
{
   var tabChoix = new Array();
   $$('.jsCheckbox').each(function(obj){
      objId = obj.id.split('_')[0];
      if(objId==idInput && obj.id!=idInput+'_princ'){
         if(obj.checked)tabChoix.push(obj.value);
      }
   });
   return tabChoix;
}
// lance (mais qui la rattrape) la requete ajax !
function get_ajax_annonce()
{

      var TabResult = $('jsTabResult');
      var StandBy = $('jsStandby');

      StandBy.show();
      TabResult.hide();
      
      var pars = 'todo=ajax_mode&data[type_logement]='+$('jsTypeLogement_princ').value+'&data[nbr_piece]='+$('jsT_princ').value+'&data[id_categ]='+$('data_id_categ_').value+'&data[id_categ_secteur]='+$('data_id_categ_secteur_').value+'&data[loyer]='+$('jsValeur').value+'&pg_cur='+$('jsPg_Cur').value;
      var uri = '/fr/s25_offres_location/s25p01_offres_location.php';
      var myAjax = new Ajax.Request( uri, 
                                    {
                                       method: 'get'
                                       , parameters: pars
                                       , onSuccess: function(transport) {   

                                          var myObject = transport.responseText.evalJSON();
                                          var idsecteur = $('data_id_categ_secteur_');      
                                          var JsTabPag = $('JsTabPag');
                  
                                          JsTabPag.replace(myObject.tableau);
                                          if(myObject.secteur!=false){
                                             idsecteur.update(myObject.secteur);
                                             
                                             //initClickDemande();                                           
                                             var options      = idsecteur.options;
                                             var idSecteurIP = $('jsIdSecteur').value;
                                             for (idx=0, l = options.length; idx < l; ++idx ) {
                                                if ( idSecteurIP == options[idx].value) {
                                                   idsecteur.selectedIndex = idx;
                                                   break;
                                                }
                                             }
                                          }
                                          
                                          
                                          StandBy.hide();
                                          TabResult.show();
                                                                     
                                       }
                                    });
   if(myLightWindow==null)lightwindowInit();
   else                             
   myLightWindow._setupLinks();                                    
}

function initClickDemande(objId)
{
   myLightWindow.activateWindow({ 
      href: '/fr/s04_contact/s04p07_contact_location.php?annonce='+objId, 
      title: '',
      width: 1032,
      height: 650
   });
}

function initAccesDossier() {    // accès LOCA-PASS
   if($('caseFileFormLogin')) {

   
      var zeForm = new Validation('caseFileFormLogin', {
         useTitles:true,
         stopOnFirst:true,
         onFormValidate: function() {
            $('todo').value = "login";
            $('caseFileFormLogin').action = '../s20_location/s20p09_saisie_dossier.php';
            
         }
      });
   }// fin de la saisie du mail ! rediriger vers s20p08_perso
}
function getMensualite(capital, tauxAnnuel, nbMensualites)
{
   var TauxInteretAnnuel  = tauxAnnuel/100;
   var TauxInteretMensuel = TauxInteretAnnuel/12;
   var Mensualite        = roundDec(((capital*TauxInteretMensuel)/(1-Math.pow((1+TauxInteretMensuel),(-1*nbMensualites)))*100)/100,2);
   return Mensualite;
   
}// calculFinancement
function calculFinancement()
{
   if($('jsBtnCalcul')) {
   
      Event.observe('jsBtnCalcul', 'click', function() {
 
         // init values
         var a = $F('annees');
         var c = $F('capital');
         var t = $F('taux');
         // replace , by .
         var a = a.replace(',','.');
         var c = c.replace(',','.');
         var t = t.replace(',','.');
         // check if is number;
         a = (isNaN(a) || a.length==0) ? '' : parseInt(a, 10);
         c = (isNaN(c) || c.length==0) ? '' : parseFloat(c,10);
         t = (isNaN(t) || t.length==0) ? '' : parseFloat(t,10);

         $('annees').value = a;
         $('capital').value = c;
         $('taux').value = t;

         if(a.length==0 || c.length==0 || t.length==0) return;

         NbMensualites      = a*12;
         Mensualite        = getMensualite(c, t, NbMensualites)

         $('mensualites').value = NbMensualites;
         $('montant').value    = roundDec((Mensualite*100)/100,2);
         $('resultCalcul').show();
      });
   }
}// calculFinancement

   // controle int ou float
   function isValidNumber(text, intsOnly) {
      text = text.replace(",",".");
      text = text.replace(/^\s+|\s+$/g, '');
      var value = intsOnly ? parseInt(text, 10) : parseFloat(text);
      //return (String(value) === text;
      return ((String(value) === text) || (String(parseFloat(value))) === (String(parseInt(value))));
   }

   // arrondissement avec décimales -> Round
   function roundDec(val, nbDec){
      var fact = Math.pow(10,nbDec);
      return Math.round(val*fact)/fact;
   }
   
   function openPicture(url,titlePic,MyAuthor,MyCaption,id)
   {
      if(url!='')
      {
         myLightWindow.activateWindow({ 
            href: '/fr/s25_offres_location/s25p03_annonces_images.php?annonce='+id,
            title:titlePic + ' - ' +MyAuthor,
            width: 700,
            height: 680,
            //author: 'A louer : ' + MyAuthor, 
            caption: '<a href="javascript:" class="jsBtnDemande inLightWindow" onclick="myLightWindow.deactivate();initClickDemande('+id+');" >Ce logement vous intéresse ?<br>Contactez nous </a>'
            });

      }
   }
