/*  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();
         if ($('quickSearchForm')) initQuickSearch();
         createGlossaryToolTips(); 
   },

   registerSpecifics: function() {
         switch (this.idBody) {
            case 'pageContact':
                initContact();
            break;
            
            case 'PageContactPresse':
                initContactPresse();
            break;  
            
            case 'PageContactPro':
               initContactPro();
            break;
            
            case 'pageGuideChoix':
               //filtreCatalogue();
               $('reponse').hide();
            break;
            case 's16p03': // nico est dans la place ouaich
               initChoixMultiCritere();
            break;
            
            case 'pageGamme':
               setNavCatalogue();
            break;
            
            case 'pageSousGamme':
               if (tabIdPhoto != "") initDiaporama();
               setNavCatalogue();
            break;
            
            case 'pageAvantApresDetail':
               initDiaporamaAvantApres();
            break;
            
            case 'pageFicheProduit':
               setNavCatalogue();
               setOngletActif('btnDescription');
               hideContainer();
               $('containerDescription').show();
               initDiaporamaProduit();
            break;
            
            case 'pageContactGarantie':
               initContactGarantie();
            break;
            case 'pageContactDevis':
               initContactDevis();
            break;     
            
            case 'PageQuestionnaireQualiteSansEmail':
               initContactQuestionnaireQualiteSansEmail();
            break;
            
            case 'PageQuestionnaireQualite':
               initContactQuestionnaireQualite();
            break;
            
            case 'cdePoster':
               initContactDemandePoster();
            break;  

         }
   }
});


// load
Event.observe(window, 'load', function() {
   var loader = new Loader(document.body.id);
   if (!document.readyState) { document.readyState = 'complete'; }
});

function initContactDemandePoster()
{
   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 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});
      }
   }
   
   //On cache le bloc fourniture par dÚfaut
   $('fourniture').hide();
}

function initContactPresse()
{
   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 initContactPro()
{
   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 initContactGarantie()
{
   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 initContactDevis()
{
   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 initContactQuestionnaireQualiteSansEmail()
{
   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 ="sans_email";}
      });

}

function initContactQuestionnaireQualite()
{
      $('rep_oui').hide();
      $('rep_non').hide();
}

function gest_rep(type)
{
 if (type == "oui")
 {
  $('rep_oui').show();
  $('rep_non').hide();
  $$('input[name="data[quest_echange_distri_oui]"]').each (function (e){
  	e.checked = false;
  });
 }
 else
 {
  $('rep_non').show();
  $('rep_oui').hide();
    $$('input[name="data[quest_echange_distri_non]"]').each (function (e){
  	e.checked = false;
  });

 }
}


function affBlockFourniture(flag)
{
	if (flag)
	{
		//Si on a cochÚ rÚnovation et qu'il a cochÚ la demande d'info distributeur
		if ($('dem_info_dem_coordonnees_').checked == true) $('fourniture').show();
	}
	else
	{
	    $('fourniture').hide();
	}
}

function checkCacdistri()
{
	if ($('dem_info_dem_coordonnees_').checked)
	{
		if($('projet_reno').checked) $('fourniture').show();
	}
	else
	{
		$('fourniture').hide();
	}
}

//Fonction permettant d'afficher les matÚriaux dans le guide de choix
function showMateriau(ChoixMateriau)
{
   if (ChoixMateriau == 1)
   {
      $('selectMateriau').hide();
      $('selectMateriauPdm').show();
   }
   else
   {
      $('selectMateriauPdm').hide();
      $('selectMateriau').show();     
   }
}

//Fonction permettant l'appel ajax de filtre de la liste des produits
function filtreCatalogue()
{
      $('pictoLoader').show();

      //Doit on prendre ou non en compte le choix du materiau
      $$('.choixMat').each(function(e,obj){
         if (e.value == 1 && e.checked==true)
         {
            $$('.choixMatRadio').each(function(elem,obj){
               elem.checked = false;
            });
            
            $('data_materiau_pdm_').value = $('matPdm').value;
            $('data_materiau_radio_').value = "";
         }
         else if (e.value == 0  && e.checked==true)
         {
            $('matPdm').selected = "";
            $$('.choixMatRadio').each(function(elem,obj){
               if (elem.checked == true) $('data_materiau_radio_').value = elem.value;
            });
            $('data_materiau_pdm_').value = "";
         }
      });
      
      //SÚrialize les donnÚes du formulaire pour le post     
      Params = $('formGuideChoix').serialize();
      //Création de l'appel ajax
      objList = new Ajax.Updater(
                'lstModeles', '/'+lg+'/s16_guide_choix/_getListeModeles.php', {method: 'post', parameters: Params, onSuccess: function() {
                $('reponse').show();
                $('pictoLoader').hide();}
               });
}

//Fonction permettant de gÚrer les cases Ó cocher de comparaison pour le guide de choix
function gestCompare(idPage)
{
   //Parcourt des ÚlÚments ayant la classe chkCompare
   nb_checked = 0;
   $$('.chkCompare'+idPage).each(function(e){
      if (e.checked ==  true) 
      {
         nb_checked++;
      }
   });
   
   //on met Ó jour le nombre de porte Ó comparer portes Ó comparer
   if (nb_checked >= 2)
   {
      if (idPage == "S16P02")
      {
         $('lienCompare'+idPage+'_1').show();
         $('lienCompare'+idPage+'_2').show();
         $('nbPortes'+idPage+'_1').update(nb_checked);     
         $('nbPortes'+idPage+'_2').update(nb_checked);
      }
      else
      {
         $('lienCompare'+idPage).show();
         $('nbPortes'+idPage).update(nb_checked);
      }
   }
   else
   {
      if (idPage == "S16P02")
      {
         $('lienCompare'+idPage+'_1').hide();
         $('lienCompare'+idPage+'_2').hide();
      }
      else
      {
         $('lienCompare'+idPage).hide();      
      }
   }
   
}

//fonction permettant de rÚcupÚrer les produits Ó comparer et d'aller vers la page concerner
function gotoComparateur(idPage)
{
  var lst_id_prod = "";
  var nb_prod = 0;
  $$('.chkCompare'+idPage).each(function(e){
      if (e.checked ==  true) 
      {
         nb_prod++;
         txtReplace = idPage+"Modele_";
         id_modele = e.name.replace(txtReplace, "");
         lst_id_prod+= id_modele + ",";
      }
  });

   //nettoie la derniÞre ,
   var longueur = lst_id_prod.length;
   lst_id_prod = lst_id_prod.substr(0, longueur-1);
   
   if (nb_prod > 4) alert("Attention vous ne pouvez comparer que 4 produits en même temps.");
   else
   {
      setTimeout(function(){
         window.location = '/'+lg+'/s17_comparateur/s17p01_comparateur.php?lst_prod=' + lst_id_prod;
      }, 0);
      //window.location.href = '/'+lg+'/s17_comparateur/s17p01_comparateur.php?lst_prod=' + lst_id_prod;
   }
}

//fonction permettant de récupérer les produits pour la demande de devis
function gotoDemDevis()
{
  lst_id_prod = "";
  $$('.selection').each(function(e){
         id_porte = e.id.replace("porte_", "");
         lst_id_prod+= id_porte + ",";
  });
  
   setTimeout(function(){
         window.location = '/'+lg+'/s04_contact/s04p05_demande_devis.php?lst_prod=' + lst_id_prod;
      }, 0);
  
   //document.location.href = '/'+lg+'/s04_contact/s04p05_demande_devis.php?lst_prod=' + lst_id_prod; 
}

function initChoixMultiCritere()
{
   // on recupere l'ensemble de radio buton matos 
   $$('input[name="data[materiel]"]').each(function(obj){
      // sur chaque élément on ajoute l'evenement click 
      Event.observe(obj,'click', function(monObj){
         // sur lequel on cache tout sauf celui sur lequel on a cliquer !
         $$('input[name="data[materiel]"]').each(function(obj2){
         if($(obj2.id+'Paraph'))
         $(obj2.id+'Paraph').hide();
         });  
         if($(obj.id+'Paraph'))
         $(obj.id+'Paraph').show();            
      });
   });

   // Luminosité
   $$('.Vitrage').each(function(obj){
      Event.observe(obj,'click',function(){
         $('couleur').show();
         actionVitrage();
         //ScrollTo
         $('couleur').scrollTo();
      });
   });

   // Choix de la couleur
   $$('.Couleur').each(function(obj){
      Event.observe(obj,'click',function(){
         $('thermique').show();
         actionCouleur();
         //ScrollTo
         $('thermique').scrollTo();
      });
   });

   //Performances thermiques
   $$('.Thermique').each(function(obj){
      Event.observe(obj,'click',function(){
         $('securite').show();
         //ScrollTo
         $('securite').scrollTo();
      });
   });

   // Sécurité
   $$('.Securite').each(function(obj){
      Event.observe(obj,'click',function(){
         actionSecurite();
         //Si bois intérieur et extérieur on cache le choix du matériau
         if($('bois_ext_bois_int').checked == false)
         {
           $('materiauRecherche').show();
           //ScrollTo
           $('materiauRecherche').scrollTo();
         }
         else
         {
            $('jsValider').show();
         }
      });
   });

   //Matériau recherché   
   $$('.Materiau').each(function(obj){
      Event.observe(obj,'click',function(){
         actionMateriau();
      });
   });

   // Chassis
   $$('.ChassisGrille').each(function(obj){
      Event.observe(obj,'click',function(){
         $('jsValider').show();
      });
   });
   
   // Validation
   Event.observe('jsValider','click',function(){$('formGuideChoix').submit()});

}

// gestion des actions pour la section Apport de luminosité
function actionVitrage()
{
   // si on coche grand vitrage
   if($('grandVitrage').checked)
   {
      // on masque dans la section thermique
      $('jsExceptionnelles').hide(); // le choix exceptionnelle
      
      // on masque dans la section matériaux
      $('jsBoisBudget').hide(); // bois budget
      $('jsComposite').hide(); // composite
   }
   else
   {
      // sinon on raffiche tous les choix des différentes sections (cf ligne au dessus)
      $('jsExceptionnelles').show(); // exceptionnelle
      
      $('jsBoisBudget').show(); // bois budget
      $('jsComposite').hide(); // composite
   }
}

// gestion des actions pour la section Couleur
function actionCouleur()
{
   // on raffiche tout à chaque click...
   $$('.jsMateriau').each(
      function(obj) {
         obj.show();
      }
   );
      
   // si on coche couleur exterieure et intérieure identique
   if($('coul_ext_int_idem').checked)
   {
      // on masque dans la section matériaux
      $('jsMixte').hide(); // mixte
      $('jsComposite').hide(); // composite
   }
   
   // si on coche couleur extérieuxs et intérieures différentes
   if($('coul_ext_int_dif').checked)
   {
      // on masque dans la section matériaux
      $('jsBoisBudget').hide(); //bois priorité budget
      $('jsAcierBudget').hide(); // acier priorité budget
   }

   // si on coche couleur extérieure - bois extérieure
   if($('coul_ext_bois_int').checked)
   {
      // on masque dans la section matériaux
      $('jsBoisBudget').hide();  // bois priorité budget
      $('jsAcierBudget').hide();  // acier priorité budget
      $('jsAluminium').hide();  // aluminium
      
      // on masque la section chassis
      $('chassis').hide();
   }
   
   if($('bois_ext_bois_int').checked)  $('materiauRecherche').hide();   
}

// gestion des actions pour la section Sécurité
function actionSecurite()
{


   // si on coche haute sécurité
   if($('haute_securite').checked)
   {
      // on masque dans la section matériaux
      $('jsMixte').hide(); // mixte
      $('jsComposite').hide(); // composite
      $('jsBoisBudget').hide();  // bois priorité budget
      $('jsAcierBudget').hide();  // acier priorité budget
   }
   else
   {
      // on raffiche tout
      $$('.jsMateriau').each(
         function(obj) {
            obj.show();
         }
      );
   }
}

function actionMateriau()
{
   if($('pvc').checked)
   {
      $('jsValider').hide();
      $('chassis').hide();
   }

   else if($('bois').checked)
   {
      $('chassis').show();
      //ScrollTo
      $('chassis').scrollTo();
      $('jsValider').hide();
   }
   
   else
   {
    $('chassis').hide();
    $('jsValider').show();
   }

   if($('boisBudget').checked)
   {
      $('ChassisGrille_non').checked = 1;
      $('chassis').hide();
      $('jsValider').show();
   }
}

//Zoom sur une photo dans la gamme
function showZoomPhoto(id_photo)
{

   $$('.zoom').each(function(obj)
   {
      obj.hide();
   });
   
   $(id_photo).appear();
}

//initialisation du diaporama dans s06p02
function initDiaporama()
{
   $$('.zoom').each(function(obj) {obj.hide();});
   firstIdPhoto = 'zoom'+tabIdPhoto[0];
   $(firstIdPhoto).show();
   firstLegendPhoto = $(firstIdPhoto).alt;
   $('diaporamaLegend').update(firstLegendPhoto);
   
   //suivant précédent
   prevIdPhoto = tabIdPhoto.indexOf(tabIdPhoto[(tabIdPhoto.length)-1]);
   nextIdPhoto = tabIdPhoto.indexOf(tabIdPhoto[1]);
   $('prevPhoto').rel = prevIdPhoto;
   $('nextPhoto').rel = nextIdPhoto;
}

function affPrevPhoto()
{
   curPrevPhoto = $('prevPhoto').rel;
   $$('.zoom').each(function(obj) {obj.hide();});
   photo2Show = 'zoom'+tabIdPhoto[curPrevPhoto];
   Effect.Appear($(photo2Show), { duration: 1.0 });
   legendPhoto2Show = $(photo2Show).alt;
   $('diaporamaLegend').update(legendPhoto2Show);
     
   //mise à jour du suivant précédent
   if ((parseInt(curPrevPhoto) -1) < 0) prevIdPhoto = tabIdPhoto.indexOf(tabIdPhoto[(tabIdPhoto.length)-1]);
   else                                 prevIdPhoto = tabIdPhoto.indexOf(tabIdPhoto[parseInt(curPrevPhoto) -1]);

   if ((parseInt(curPrevPhoto) + 1) >= tabIdPhoto.length)  nextIdPhoto = tabIdPhoto.indexOf(tabIdPhoto[0]);
   else                                                    nextIdPhoto = tabIdPhoto.indexOf(tabIdPhoto[parseInt(curPrevPhoto) +1]);

   $('prevPhoto').rel = prevIdPhoto;
   $('nextPhoto').rel = nextIdPhoto;
}

function affNextPhoto()
{
   curNextPhoto = $('nextPhoto').rel;
   $$('.zoom').each(function(obj) {obj.hide();});
   photo2Show = 'zoom'+tabIdPhoto[curNextPhoto];
   Effect.Appear($(photo2Show), { duration: 1.0 });
   legendPhoto2Show = $(photo2Show).alt;
   $('diaporamaLegend').update(legendPhoto2Show);
   
   //mise à jour du suivant précédent
   if ((parseInt(curNextPhoto) + 1) >= tabIdPhoto.length)  nextIdPhoto = tabIdPhoto.indexOf(tabIdPhoto[0]);
   else                                                    nextIdPhoto = tabIdPhoto.indexOf(tabIdPhoto[parseInt(curNextPhoto) +1]);

   if ((parseInt(curNextPhoto) -1) < 0) prevIdPhoto = tabIdPhoto.indexOf(tabIdPhoto[(tabIdPhoto.length)-1]);
   else                                 prevIdPhoto = tabIdPhoto.indexOf(tabIdPhoto[parseInt(curNextPhoto) -1]);

   $('prevPhoto').rel = prevIdPhoto;
   $('nextPhoto').rel = nextIdPhoto;   
}

function initDiaporamaAvantApres()
{
   prem_fois = true;
   $$('.zoomAVP').each(function(obj)
   {
      if (prem_fois) 
      {
         obj.show();
         prem_fois = false;
      }
   });
}

function initDiaporamaProduit()
{
   myLightWindow = new lightwindow();
   initDiaporamaAvantApres();
}

function showPhotoAvp(id_photo)
{
   $$('.zoomAVP').each(function(obj)
   {
      obj.hide();
   });
   
   $(id_photo).show();
}

function hideContainer()
{
   $$('.container').each(function(obj)
   {
      obj.hide();
   });   
}

/* Fonction pour gérer les infobulles des liens sur le lexique */
function createGlossaryToolTips()
{
   // En remplacement des "document.write" de la bibli tooltip
   var divTag = document.createElement("div");
   divTag.id  = "dhtmltooltip";
   document.body.appendChild(divTag);
   var imgTag = document.createElement("img");
   imgTag.id  = "dhtmlpointer";
   imgTag.src = "/" + lg +"/images/tooltipArrow2.gif";
   document.body.appendChild(imgTag);

   // Initialisation de la bibliothèque tooltip
   initToolTip();

   // Récupère les liens avec la classe correspondant aux définitions du lexique
   $$('a.jsLexiqueDefinitionLink').each(function(lien)
   {
      Event.observe(lien, 'mouseover', showToolTip);
      Event.observe(lien, 'mouseout',  hideddrivetip);
   }
   );
}

/* Fonction affichant une infobulle */
function showToolTip()
{
   if (window.toolTipAutoHide) clearTimeout(toolTipAutoHide);
   ddrivetip('...', 200)
   myUrl = this.href;
   if (myUrl.indexOf('?') < 1) { myUrl += "?mode=infobulle"; } else { myUrl += "&mode=infobulle"; }

   new Ajax.Request(myUrl,
   {
      method: 'get',
      onSuccess: function(transport)
      {
         ddrivetip(transport.responseText, 200);
         toolTipAutoHide = setTimeout("hideddrivetip()", 7000);
      }
   });
}

function gestAffTypePose(typeChantier)
{
   if (typeChantier == 1)
   {
      $('typePose').show();
   }
   else
   {
      $('typePose').hide();
   }
}
//pour afficher les onglets actifs dans une fiche produit
function setOngletActif(idOngletActif)
{
   $$('.ongletFicheProduit').each(function(obj)
   {
      obj.down().removeClassName('active-tab');
   });
   
   //$$('li#btnDescription a.active-tab').addClassName('active-tab'); 
   $(idOngletActif).down().addClassName('active-tab');   
}

//pour setter la nav de gauche dans les pages catalogues
function setNavCatalogue()
{
   switch (cur_categ)
   {
      //Alu
      case '168':
         if (is_priorite_budget == '1')   $('btnBudgetAlu').down().addClassName('active-tab');
         else                             $('btn2navv').down().addClassName('active-tab');
      break;

      //Mixte
      case '169':
         $('btn12navv').down().addClassName('active-tab');
      break;

      //AvantGarde
      case '170':
         $('btn3navv').down().addClassName('active-tab');
      break;

      //Bois
      case '167':
         if (is_priorite_budget == '1')   $('btnBudgetBois').down().addClassName('active-tab');
         else                             $('btn4navv').down().addClassName('active-tab');
      break;

      //Acier
      case '171':
         if (is_priorite_budget == '1')   $('btnBudgetAcier').down().addClassName('active-tab');
         else                             $('btn5navv').down().addClassName('active-tab');
      break;

      //Porte de service
      case '194':
         $('btn6navv').down().addClassName('active-tab');
      break;
   }
}
