"use strict";
/*  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 'pageBeneficierOffre':
            case 'pageQuestionnaire':
               initQuestionnaire();
            break;
            case 'pageContactSav':
               initContactSav();
            break;
            case 'pageContact':
               initContact();
            break;
            case 'pageDevis':
               initDevis();
            break;
            case 'pageFicheProduit':
               initProd();
               initLightWindow();
            break;
            case 'pageNewsletter':
               initContact();
            break;
            case 'pageDesabonnement':
               initDesinscription();
            break;
            case 'pageAccueil':
               if($('chpZip'))
               {
                  Event.observe('chpZip','blur',function(e)
                  {
                     var elt = Event.findElement(e,'INPUT');             
                     if(elt.value =='') initActuInput(elt);
                  });
                  Event.observe('chpZip','click',function(e)
                  {
                     var elt = Event.findElement(e,'INPUT');
                     initActuInput(elt);
                  });
               }
            break;
            case 'pageGuideChoix':
               initGuideChoix();
            break; 
            case 'pageVideos':
               (function($){
                  $(".lnkVideo").fancybox({
               		'transitionIn'	:	'elastic',
               		'transitionOut':	'elastic',
               		'speedIn'		:	600, 
               		'speedOut'		:	200,
               		'height'       :  700,
               		'width'        :  935,
               		'overlayShow'	:	true,
               		'titlePosition': 'outside',
               		'type': 'iframe'
               	});
               })(jQuery);
            break;
            case 'pagePresChezVous':
               fpagePresChezVous();
            break;                       
         }
   }
});

// load
Event.observe(window, 'load', function() {

   var loader = new Loader(document.body.id);
});

/*--------------------------------------------------------------------------*/

function showFirstFaq()
{
   $$('.jsReponse')[0].show();
}

function initQuestionnaire()
{     
   if($('zeForm'))
   {
      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";}
      });
   }
}
function fpagePresChezVous()
{   
     if($('zeForm'))
   { var zeForm = new Validation('zeForm', {
         useTitles:true,   // pour utiliser les titles des champs comme message d’erreur
         immediate:true,
         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";}
   });
         
   $$('.jsProdInt').each(function(obj){
      Event.observe(obj,'click',function(){         
         $$('input[name="'+this.name+'"]').each(function(objCheck){
            $(objCheck.id + '_hidden').value=0;
         });
         $(this.id + '_hidden').value = (this.checked? this.value:0) ;
      })
   });
}
}
function initContactSav()
{  
   if($('zeForm'))
   {
      var zeForm = new Validation('zeForm', {
         useTitles:true,   // pour utiliser les titles des champs comme message d’erreur
         immediate:true,
         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($('visitor_moment_contact_')) 
   $('visitor_moment_contact_').hide();
   
         Event.observe($('visitor_type_contact_email_'), 'click', function(){
         $('visitor_moment_contact_').hide();
         if($('visitor_type_visitor_particulier_').checked)
         {
            $('span_phone').hide();
            $('visitor_phone_').removeClassName('required');
         }
      });
   
      Event.observe($('visitor_type_contact_phone_'), 'click', function(){
         $('visitor_moment_contact_').show();
   
         if($('visitor_type_visitor_particulier_').checked)
         {
            $('span_phone').show();
            $('visitor_phone_').addClassName('required');
         }
      });
}
function initContact()
{  
      $('visitor_moment_contact_').hide();
      $$('.jsModeAll').each(function(obj){obj.disabled=true;obj.hide();});         
//       $('form_content').hide();
     
      if($('zeForm'))
      {
         var zeForm = new Validation('zeForm', {
            useTitles:true,   // pour utiliser les titles des champs comme message d’erreur
            immediate:true,
            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($('errMsg')) {
            if($('errMsg').innerHTML  != '') {
               Element.show('errMsg'); Effect.BlindUp('errMsg', {delay:3});
            }
         }                              
      }

         $$('.jsChoixVisiteur').each(function(MonObj){

               MonObj.observe('click',function(obj){
                  // on cache tout par défaut
                  $$('.jsModeAll').each(function(obj){obj.disabled=true;obj.hide();});                 
                  // on réinitialise les valeurs à chaque fois qu'on clique !
                  $('visitor_type_visitor_particulier_').checked=false;
                  $('visitor_type_visitor_particulier_').value=2;
                  
                  switch(this.value)
                  {
                     case '2':// devis
                        document.body.id = 'pageDevisClassic';
                        $('blocTriType').show();
                        initDevis(true);               
                        
                        $('visitor_type_').value="lightwindow";
                     break;
                      case '3':// pageContactSav
                        $('visitor_type_visitor_particulier_').checked=true;
                        document.body.id = 'pageContactSav'; 
                        $('blocTriType').show();
                        //initSav();               
                        $('visitor_type_').value="sav";
                        $$('.jsModeSAV').each(function(obj){obj.disabled=false; obj.show();});
                        // on passe le type de visiteur à rien pour éviter qu'il perturbe 
                        $('visitor_type_visitor_particulier_').value=0;
                     break;                    
                     default:

                        $('blocTriType').hide();
                     break;
                  }
               
                  if($('visitor_type_contact_phone_').checked)
                  {
                     $('span_phone').show();
                     $('visitor_phone_').addClassName('required');
                  }
               });
            });
            MaskedInput.definitions['l'] = '(C|c|w|W)'
            var maskedTel   = new MaskedInput('.MaskedInputNumTelFrance', '99 99 99 99 99'),
                masked      = new MaskedInput('.MaskedInputNumSerie', 'l99-999999-9'),
                maskedDate  = new MaskedInput('.MaskedInputDateAchat', '99/99/9999');
            
            Event.observe($('visitor_type_visitor_professionel_'), 'click', gest_pro);
            Event.observe($('visitor_type_visitor_particulier_'), 'click', gest_par);
            Event.observe($('visitor_type_visitor_presse_'), 'click', gest_presse);
            Event.observe($('visitor_type_visitor_architecte_'), 'click', gest_archi);

            Event.observe($('visitor_type_contact_phone_'), 'click', function(){
               $('visitor_moment_contact_').show();
               
               if($('visitor_type_visitor_particulier_').checked)
               {
                  $('span_phone').show();
                  $('visitor_phone_').addClassName('required');
               }
            });
   
            Event.observe($('visitor_type_contact_email_'), 'click', function(){
                  $('visitor_moment_contact_').hide();
                  if($('visitor_type_visitor_particulier_').checked)
                  {
                     $('span_phone').hide();
                     $('visitor_phone_').removeClassName('required');
                  }
            });
}
function gest_archi()
{
      document.body.id = 'pageContact';
      // on cache tout par défaut
      $$('.jsModeAll').each(function(obj){obj.disabled=true;obj.hide();});
      // afficher les données pour le devis !
      $$('.jsModeArchi').each(function(obj){obj.disabled=false; obj.show();});
}
function gest_presse()
{
   document.body.id = 'pageContact';
   // on cache tout par défaut
   $$('.jsModeAll').each(function(obj){obj.disabled=true;obj.hide();});
   // afficher les données pour le devis !
   $$('.jsModePresse').each(function(obj){obj.disabled=false; obj.show();});
   $('visitor_phone_').removeClassName('required');

}
function gest_par()
{
      $$('.jsChoixVisiteur').each(function(myObj){myObj.checked=false});
      // on cache tout par défaut
      $$('.jsModeAll').each(function(obj){obj.disabled=true;obj.hide();});
      // afficher les données pour le devis !
      $$('.jsModePar').each(function(obj){obj.disabled=false; obj.show();});
      
      
      $('visitor_address1_').removeClassName('required');
      $('visitor_phone_').removeClassName('required');

      if($('visitor_type_contact_phone_').checked)
      {
         $('span_phone').show();
         $('visitor_phone_').addClassName('required');
      }


}
   //Gestion du formulaire professionel
   function gest_pro()
   {
      document.body.id = 'pageContact';
      $$('.jsChoixVisiteur').each(function(myObj){myObj.checked=false});
      // on cache tout par défaut
      $$('.jsModeAll').each(function(obj){obj.disabled=true;obj.hide();});
      // afficher les données pour le devis !
      $$('.jsModePro').each(function(obj){obj.disabled=false; obj.show();});
   
      $('visitor_phone_').addClassName('required');
      $('visitor_address1_').addClassName('required');
   }
function initDevis(appel)
{
   // on cache tout par défaut
   $$('.jsModeAll').each(function(obj){obj.disabled=true;obj.hide();});
   // afficher les données pour le devis !
   $$('.jsModeDevis').each(function(obj){obj.disabled=false; obj.show();});


   if($('errMsg')) {
      if($('errMsg').innerHTML  != '') {
         Element.show('errMsg'); Effect.BlindUp('errMsg', {delay:3});
      }
   }
   // on coche le type à visiteur :( idée de yohann
   if($('visitor_type_visitor_particulier_'))
      $('visitor_type_visitor_particulier_').checked=true;
   else
   {
      var obj = document.createElement("input");
		obj.setAttribute('name','visitor[type_visitor]');
		obj.setAttribute('id','visitor_type_visitor_');
		obj.setAttribute('type','hidden');
		obj.setAttribute('value','2');
		$('zeForm').appendChild(obj);      
      
   }
   $('visitor_address1_').removeClassName('required');
   if(appel!=true)
   {
      if($('jsNatureDem'))
      $('jsNatureDem').hide();
      $('blocTriType').show();
      Event.observe($('visitor_type_contact_email_'), 'click', function(){
         $('visitor_moment_contact_').hide();
         $('span_phone').hide();
         $('visitor_phone_').removeClassName('required');
      });
   
      Event.observe($('visitor_type_contact_phone_'), 'click', function(){
         $('visitor_moment_contact_').show();
         $('span_phone').show();
         $('visitor_phone_').addClassName('required');
      });
   
      if($('dem_info_produit_devis_'))
         if($('dem_info_produit_devis_').value.empty())$('jsProduitDevis').hide();
      
      if($('visitor_type_contact_phone_').checked)
      {
         $('span_phone').show();
         $('visitor_phone_').addClassName('required');
         
      }
         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";}
      });
   }


}

function initActuInput(elt)
{
   chpZip = elt.value;
   elt.value = $F('tempo_text');
   $('tempo_text').value =  chpZip;
}

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 initProd()
{
   Event.observe('jsMasque','click',function(){
         
         $$('.zoom').each(function(obj){
            if(obj.visible())
            {
                setTimeout(function() {

                          myLightbox.start($(obj));

                   
                //myLightWindow.activateWindow({href: obj.href, title: obj.title   });
                } , 250);
            }
         });
   
   });      
}

      function showZoomPhoto(id)
      {
         $$('.zoom').each(function (obj){obj.hide();});
         
         $(id).show();
         $('jsLegend').update($(id).title);
      }
      
   function initLightWindow()
   {
      var vCarousel = new UI.Carousel("vignettes");
      if(vCarousel.elements.length <= vCarousel.nbVisible)
      {
         $('jsNext').addClassName('next_button_disabled');
      }
   }
   
   function middlepop(Tab,a){
      return (a>Tab.length)?false:(Tab.slice(0,a).concat(Tab.slice(a+1,Tab.length)));
   }
   function Doublons(TabInit){
      NvTab= new Array();
      var q=0;
      var LnChaine= TabInit.length;
      for(x=0;x<LnChaine;x++)
      {
         for(i=0;i<LnChaine;i++)
         {
            if(TabInit[x]==  TabInit[i] && x!=i) TabInit[i]='faux';
         }
         if(TabInit[x]!='faux'){  NvTab[q] = TabInit[x]; q++}
      }
      return NvTab;
   }
   function in_array (needle, haystack, argStrict) {
       // Checks if the given value exists in the array  
       // 
       // version: 1103.1210
       // discuss at: http://phpjs.org/functions/in_array    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
       // +   improved by: vlado houba
       // +   input by: Billy
       // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
       // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);    // *     returns 1: true
       // *     example 2: in_array('vlado', {0: 'Kevin', vlado: 'van', 1: 'Zonneveld'});
       // *     returns 2: false
       // *     example 3: in_array(1, ['1', '2', '3']);
       // *     returns 3: true    // *     example 3: in_array(1, ['1', '2', '3'], false);
       // *     returns 3: true
       // *     example 4: in_array(1, ['1', '2', '3'], true);
       // *     returns 4: false
       var key = '',        strict = !! argStrict;
    
       if (strict) {
           for (key in haystack) {
               if (haystack[key] === needle) {                return true;
               }
           }
       } else {
           for (key in haystack) {            if (haystack[key] == needle) {
                   return true;
               }
           }
       } 
       return false;
   }
   function initGuideChoix()
   {
      var tabCheckRadio = new Array;
      $$('.jsCheckbox,.jsRadio').each(function(obj){
         Event.observe(obj,'click',function(obj){
            var ObjetInit = new Event.element(obj),
                id = ObjetInit.id.split('_')[0];

            if($(id+'_princ'))
            {
               //
               if($(id+'_princ').value=='') 
                  var tabValeur = new Array;
               else
                  var 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(',');
            
            }else
            {

            }
            requestAjaxGuideChoix();
         });
         
      });

      
      requestAjaxGuideChoix();
   }

function unset(array,value)
{
   var cpt=0,
    long_tableau =array.length-1; 
   for (i = 0; i <= long_tableau; i++)
   {
      if(array[i]!=value) cpt = i;
   }
   return middlepop(array,cpt);
}   
   function Verif_choix(idInput)
   {
      var tabChoix = new Array();
      $$('.jsCheckbox').each(function(obj){
         var objId = obj.id.split('_')[0];
         if(objId==idInput && obj.id!=idInput+'_princ'){
            if(obj.checked)tabChoix.push(obj.value);
         }
      });
      return tabChoix;
   }
   function requestAjaxGuideChoix()
   {
      $('jsStandby').show();
      $('resultatsProduits').hide();
      var pars = 'mod_ajax=1&id_categGC='+$('id_categ').value+'&'+get_DataAjax();
      var uri = $('jsLink').href;
      var myAjax = new Ajax.Request( uri, 
                                    {
                                       method: 'post'
                                       , parameters: pars
                                       , onSuccess: function(transport) {   
                                          var myObject = transport.responseText.evalJSON();
                                          $('resultatsProduits').update(myObject.contenu);
                                          $('jsStandby').hide();
                                          $('resultatsProduits').show();
                                       }
                                    });
                                          
   }
   function get_DataAjax()
   {
      var tabParam = new Array;
      var param = '';
      $$('.jsData').each(function(obj){
         if((obj.checked && obj.type=="checkbox") || 
            (obj.value!="" && obj.type=="hidden") || 
            (obj.checked && obj.type=="radio")){tabParam.push(obj.name+'='+obj.value);}
      });
      param = tabParam.join('&'); 
      return param;
   }
   

   

