/*----------------------------------------------------------------------
*  Le Phare JavaScript library - (c) 2010
*
* Nécessite :
*    - jQuery
*    - jQuery.validate
---------------------------------------------------------------------- */

/*
 * Function: tr
 *    Methode de translitération de String en javascript
 *
 * Usage :
 *    "Éclipse".tr('É', 'E') = 'Eclipse'
 */

if (!String.tr) {
   String.prototype.tr = function(from, to) {
      var str  = this;
      for (i = 0, l = from.length; i < l; i++ ) {
         str = str.replace(new RegExp(from.charAt(i),'g'), to.charAt(i));
      }
      return str;
   }
}

if (!String.stripAccents) {
   String.prototype.stripAccents = function () {
      return this.tr('àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ', 'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
   }
}

// Implémentation d'indexOf pour Internet Explorer
if(!Array.indexOf){
    Array.prototype.indexOf = function(obj){
        for(var i=0; i<this.length; i++){
            if(this[i]==obj)
                return i;
        }
        return -1;
    }
}


(function ($) {
   $(document).ready(function () {
      var id = $('body').attr('id'),
          lg = $('html').prop('lang').replace(/^([a-z]{2}).*$/i, '$1').toLowerCase();

      // Test la présence d'un id sur le body
      !id && alert("ATTENTION\n la balise body n'a pas d'id !");

      // Traitements des spécifiques
      switch (id) {
         case 'pageContact' : {
            // Traitement lié a la page
            $('#fContact1').validate();
            if(document.location.href.indexOf('mode=presse') > -1)   { $('#contact_statut_').val(3); $('#contact_statut_').trigger('change'); }
            break;
         }
         case 'pageDemandeDevis' : {
            $('#fDemande_devis1').validate();
            $('#contact_statut_').val(1).change();   // Particulier -> simule le 'change' pour afficher les infos correspondantes
            break;
         }
         case 'pageDistributeur' : {
            $('#fRecherche_distributeur1').validate();
            break;
         }
         case 'pageConfirmationDevisPersonnalise': {   // Click sur le lien du pdf personnalisé : requête ajax pour mémoriser dans la demande qu'on a bien affiché le PDF puis redirection sur le pdf
            $('#jsBtnPdfPersonnalise').click(function() {
                                                $.ajax({
                                                      type: 'POST',
                                                      url: '/fr/s06_catalogue/s06p04_pdf_personnalise.php',
                                                      data: 'todo=recordAction&idDemande=' + $('#idDemande').val(),
                                                      success: function() {
                                                         hnd = window.open('/fr/s06_catalogue/s06p04_pdf_personnalise.php?todo=pdf&idDemande=' + $('#idDemande').val(), 'winPdf');
                                                         hnd.focus();
                                                      }
                                                })
                                             });
            break;
         }
         case 'pageCatalogue' : {
             // Mise en place d'isotope
             var $it            = $('#zoneBlocProduit ul'),
                 $partitions    = $('#filtrePartitions input'),
                 $ouvertures    = $('#filtreOuverture input'),
                 $styles        = $('#filtreStyle input'),
                 $installations = $('#filtreInstallation input')
                 inputs         = [],
                 $inputs        = null;

            $.each([$partitions, $ouvertures, $styles, $installations], function() {
               $.merge(inputs, this);
            })
            $inputs = $(inputs);

            $it
               .isotope({
                   itemSelector : '.blocProduit',
                   getSortData  : {
                      name      : function($elem) {
                         return $elem.find('h3.nomProduit').text().stripAccents();
                      },
                      partition : function ($elem) {
                         return $elem.find('span.nbrPartition').text();
                      }
                   },
                   sortBy : 'partition'
                })

             // Restaure les filtres lors du chargement de la page
             var filters = $.cookie('filters');
             if (filters)
               $.each(filters.split(','), function() {
                  $('#' + this).attr('checked', true);
               });

             $inputs.change(function() {
                // On prend toutes les case a cocher et on constitue le filtre
                var exclusives = [],
                    inclusives = [],
                    selector   = [];

                // On stock les filtres dans un cookie
                filters = [];
                $inputs.each(function() {
                   if ($(this).is(':checked'))
                     filters.push($(this).attr('id'));
                })
               $.cookie('filters', filters.join(','))

                // Partitions (filtre exclusif)
                $partitions.each(function() {
                   var filter = $(this).data('filter');
                   if (!filter)
                     return false;

                   if ($(this).is(':checked'))
                     exclusives.push(filter);
                })

                if (exclusives.length == 0)
                  exclusives = ['*'];

                // Ouvertures (filtre inclusif)
                $ouvertures.each(function() {
                   var filter = $(this).data('filter');
                   if (!filter)
                     return false;

                   if ($(this).is(':checked'))
                     inclusives.push(filter);
                })

                // Styles (filtre inclusif)
                $styles.each(function() {
                   var filter = $(this).data('filter');
                   if (!filter)
                     return false;

                   if ($(this).is(':checked'))
                     inclusives.push(filter);
                })

                // Installations (filtre inclusif)
                $installations.each(function() {
                   var filter = $(this).data('filter');
                   if (!filter)
                     return false;

                   if ($(this).is(':checked'))
                     inclusives.push(filter);
                })

                // Pour chacun des filtres exclusif on ajoute les filtres inclusifs
                $.each(exclusives, function() {
                   var ex = this;
                   if (inclusives.length > 0) {
                      $.each(inclusives, function() {
                         selector.push(ex + this);
                      });
                   } else {
                      selector.push(ex);
                   }
                });

                selector = selector.join(',');
                selector = selector.length > 0 ? selector : '*';
                $it.isotope({filter: selector});

                $visibleItems = $('.blocProduit:not(.isotope-hidden)');
                ids           = [];
                if ($visibleItems.size() > 0) {
                   $('#no-produit').hide();
                   // On stock les items visible pour les liste de produits
                   $visibleItems.each(function() {
                      ids.push($(this).attr('id').replace(/produit-/, ''));
                   })
                } else {
                  // On affiche le message disant qu'il n'y a pas de résultats
                  $('#no-produit').fadeIn();
                }
                $.cookie('listeProduits', ids.join(','));

             }).first().change();
            break;
         }
         default:
      }

      // Traitements des génériques
      $('.fade').delay(8000).fadeOut(1500);

      /* Préparation du comportement du formulaire d'inscription newsletter (dans la nav) */
      $('#formNewsletter')
         .validate({validate: {blur: false}})
         .submit(function(e) {
            e.preventDefault();
            if ($(this).is(':validated')) {
               $.ajax({
                  type: 'POST',
                  url: '/fr/s05_newsletter/s05p01_inscription.php',
                  data: 'contact[email]=' + $('#contact_email_nav_').val() + '&contact[abonn_newsletter]=1&f[todo]=submit&f[id]=newsletter&f[stid]=1',
                  success: function() {
                     $('#contact_email_nav_').val('');
                     $('#formNewsletter').hide();
                     $('#jsNewsletterOk').fadeIn();
                  }
               });
            }
          });

      $('#contact_email_nav_').focus(function() { if ($(this).val() == 'Votre e-mail') { $(this).val(''); } });

      /* Voit si on a des liens internes au site avec un target _blank ou des mots de lexique */
      setInternalLinks();
      setLexiqueLinks();
   });
})(jQuery)



/* Set le comportement des liens du lexique */
function setLexiqueLinks()
{
   $('a.jsLexiqueDefinitionLink').each(function(index) {
         $(this).fancybox({
            'overlayShow'  : true,
            'transitionIn' : 'elastic',
            'transitionOut'   : 'elastic'
         });
      });
}

/* Fonction pour passer les liens internes en target _blank dans le zoom et non en lien normal */
function setInternalLinks()
{
   $("a#jsShowExternalLink").fancybox({ 'hideOnContentClick': true, 'autoDimensions': false, 'width': '730', 'height': '450' });
   $('a[target="_blank"]').each(function() {
                                    var link = $(this).prop('href');
                                    if (link.indexOf(document.domain) == 7)   // Liens internes seulement
                                    {
                                       $(this).click(function(event) {
                                                         event.preventDefault(); // Ne suit pas le lien
                                                         $('#jsExternalData').html('<p>Veuillez patienter...</p>');
                                                         $('#jsExternalData').load(link+' .zoneTxt', {}, function() {
                                                                                                            $('#jsExternalData').html('<div id="pageLibre"><div class="zoneTxt">' + $('#jsExternalData').html() + '</div></div>');
                                                                                                            setTimeout('setInternalLinks();', 50); // Si on a des liens à traiter dans le zoom...
                                                                                                            setTimeout('setLexiqueLinks();', 50);  // Si on a des définitions dans le zoom
                                                                                                            $('#jsShowExternalLink').trigger('click');
                                                                                                         });
                                                      });
                                    }
                                });
}

