www.vosgescycling.com Open in urlscan Pro
51.77.240.240  Public Scan

Submitted URL: https://vosgescycling.com/
Effective URL: https://www.vosgescycling.com/
Submission: On July 26 via api from US — Scanned from FR

Form analysis 2 forms found in the DOM

Name: bookingPOST /fr/nos-plus-belles-randos.html?1=1

<form name="booking" data-dnc-nummoteur="1" data-dnc-urlbase_ajax="https://www.rando-bruche.fr/index.php" data-dnc-urlbase_ajax-communes="" data-dnc-paramsurl_ajax="&amp;option=com_joomlei&amp;view=listeproduits&amp;layout=liste&amp;format=json"
  action="/fr/nos-plus-belles-randos.html?1=1" method="post" id="booking" class="" onsubmit="return joomlei_validation_moteurbooking('booking');">
  <input type="hidden" name="id" value="">
  <input type="hidden" name="task" value="poste">
  <input type="hidden" name="calctot" id="calctot" value="0">
  <input type="hidden" name="multimoteur_ouvert" id="multimoteur_ouvert" value="">
  <input type="hidden" name="dncdebug" value="">
  <input type="hidden" name="produit" value="">
  <input type="hidden" data-dnc-flag="" name="limitstart" value="">
  <input type="hidden" name="filter_order" value="">
  <input type="hidden" name="filter_order_dir" value="">
  <script type="text/javascript">
    var jleim_serialiser = function(idmoteur) {
      jQuery("#" + idmoteur).find('input[name^="modalidad"]').each(function() {
        var letemp;
        var letemp2;
        var letemp3;
        // Si le critère est non vide, on met des DNCNULL dans moda minimo et maximo pour empecher leur suppression et le décalage
        letemp = jQuery(this).attr('id');
        letemp2 = letemp.indexOf('modalidad');
        letemp3 = jQuery("#" + letemp.substring(0, letemp2) + 'champ');
        // Si c'est un critère coché, on met des dncnull
        if (letemp3.attr('name') == 'elcriterio[]' && letemp3.val() != '') {
          // console.log('TROUVE');
          if (jQuery("#" + letemp.substring(0, letemp2) + 'modalidad').val() == '') jQuery("#" + letemp.substring(0, letemp2) + 'modalidad').val('DNCNULL!!');
          if (jQuery("#" + letemp.substring(0, letemp2) + 'minimo').val() == '') jQuery("#" + letemp.substring(0, letemp2) + 'minimo').val('DNCNULL!!');
          if (jQuery("#" + letemp.substring(0, letemp2) + 'maximo').val() == '') jQuery("#" + letemp.substring(0, letemp2) + 'maximo').val('DNCNULL!!');
        } else {
          // Si vide, On marque son minimo et ùmaximo pour suppression en effacant la valeur à toutes fins utiles
          jQuery("#" + letemp.substring(0, letemp2) + 'modalidad').val('');
          jQuery("#" + letemp.substring(0, letemp2) + 'minimo').val('');
          jQuery("#" + letemp.substring(0, letemp2) + 'maximo').val('');
        }
      });
      // On récupère les infos avec DNCNULL dans tabparams
      var tabparams = jQuery("#" + idmoteur).serializeArray();
      // Puis on remet les vides en place
      jQuery("#" + idmoteur).find('input').each(function() { // [name^="modalidad"]
        // console.log(jQuery(this).attr('id') + '-' + this.value);
        if (this.value == 'DNCNULL!!') this.value = '';
        // console.log(jQuery(this).attr('id') + '-' + this.value);
      });
      var lurl = "";
      var lenom = "";
      jQuery.each(tabparams, function(i, leparam) {
        lenom = leparam.name;
        if (lenom != 'limitstart' && lenom != 'produit' && lenom != 'limit' && lenom.substring(0, 3) != 'hid' && lenom != 'task' && lenom != 'jleimoteur_groupe')
          if (leparam.value != '')
            if (leparam.value == 'DNCNULL!!') lurl += "&" + leparam.name + "=";
            else lurl += "&" + leparam.name + "=" + leparam.value;
      });
      // Cas particulier de la rech par dispo => on force un tsdispo=N
      if (lurl.indexOf("dispodu") >= 0 && lurl.indexOf("tsdispo") < 0) lurl += "&inputlei_tsdispo=N";
      return lurl;
    };
    var jleim_soustot_reqs = [];
    jQuery(document).ready(function() {
      // On calcule le moteur au chargement
      joomlei_calcule_moteur("booking");
    });
    // Patch 10/2017 : optimisation : on retarde ce calcul
    // jQuery(document).ready(function () {
    jQuery(window).load(function() {
      // Dispos et tsdispo
      // On regarde s'il existe un champ caché tsdispo
      // S'il n'existe pas, on le créé si le moteur contient des champs de disspos
      // -> on le mettra à N lors du post s'il y a des dispos recherchées
      if (jQuery('#pnames_dispodu').length != 0)
        if (jQuery('#inputlei_tsdispo').length == 0) jQuery('#letsdispos').html('<input type="hidden" name="inputlei_tsdispo" id="inputlei_tsdispo" value=""/>');
      // On calcule le moteur au chargement
      joomlei_calcule_moteur();
      // On gère le js des multimoteurs
      // cas du groupe en liste select qui gère le multimoteur
      jQuery('select[data-dnc-gestionmultimoteur="combo"]').change(function() {
        var lenum = this.selectedIndex;
        var idmoteur = "#div_globaljoomleimoteur_" + jQuery(this).attr('data-dnc-nummoteur');
        var montre = false; // pour voir si on a montre qqchose (1er coup)
        // On masque toutes les rubriques > 1
        var lstdiv = jQuery(idmoteur).find('.joomlei_moteur_rubrique');
        for (var i = 1; i < lstdiv.length; i++) {
          if (jQuery(lstdiv[i]).css('display') == 'block') jQuery(lstdiv[i]).slideUp('slow', function() {
            // jQuery(lstdiv[i]).css('display','none');
            // On affiche la rubrique à  montrer
            jQuery(lstdiv[lenum]).slideDown(function() {
              joomlei_calcule_moteur();
            }, 'slow'); //('display','block')
            montre = true;
          });
          viderChamps(lstdiv[i]);
        }
        if (!montre) jQuery(lstdiv[lenum]).slideDown(); //('display','block')
        // On met le numéro de la rubrique ouverte en hidden field
        // Afin de pouvoir la réafficher après le post
        jQuery(idmoteur).find('#multimoteur_ouvert').val(lenum);
      });
      // cas du groupe en option group radio qui gère le multimoteur
      jQuery('input[data-dnc-gestionmultimoteur="radio"]').change(function() {
        var lenum = jQuery(this).attr('data-dnc-numrubrique');
        var idmoteur = "#div_globaljoomleimoteur_" + jQuery(this).attr('data-dnc-nummoteur');
        var montre = false; // pour voir si on a montre qqchose (1er coup)
        // On masque toutes les rubriques > 1
        var lstdiv = jQuery(idmoteur).find('.joomlei_moteur_rubrique');
        for (var i = 1; i < lstdiv.length; i++) {
          if (jQuery(lstdiv[i]).css('display') == 'block') jQuery(lstdiv[i]).slideUp('slow', function() {
            // jQuery(lstdiv[i]).css('display','none');
            // On affiche la rubrique à  montrer
            jQuery(lstdiv[lenum]).slideDown('slow'); //('display','block')
            montre = true;
          });
          viderChamps(lstdiv[i]);
        }
        if (!montre) jQuery(lstdiv[lenum]).slideDown(function() {
          joomlei_calcule_moteur();
        }); //('display','block')
        // On met le numéro de la rubrique ouverte en hidden field
        // Afin de pouvoir la réafficher après le post
        jQuery(idmoteur).find('#multimoteur_ouvert').val(lenum);
      });
    });
    //permet de vider tous les champs enfants du moteur
    function viderChamps(champs) {
      //traitement des checkbox
      jQuery(champs).find('input:checked').each(function() {
        jQuery(this).attr('checked', false);
      });
      //traitement des select
      jQuery(champs).find('option:selected').each(function() {
        if (console && console.log) console.log(this);
        jQuery(this).attr('selected', false);
      });
      //traitement des input text (dates)
      jQuery(champs).find('input[type=text]').each(function() {
        if (console && console.log) console.log(this);
        jQuery(this).val('');
      });
    }
    // Fonction pour le moteur SIMPLE / AVANCE
    function joomleimoteur_afficherplusdecriteres(nummoteur) {
      var idmoteur = "#div_globaljoomleimoteur_" + nummoteur;
      var lstdiv = jQuery(idmoteur).find('div.cached');
      if (lstdiv.length > 0) {
        for (var i = 1; i < lstdiv.length; i++) jQuery(lstdiv[i]).slideDown('slow', function() {
          //jQuery(this).removeClass('uk-hidden');
        });
        jQuery(idmoteur).find('#multimoteur_ouvert').val('1');
        jQuery('.joomleimoteur_plusdecriteres').addClass('uk-hidden');
        jQuery('.joomleimoteur_moinsdecriteres, hr.cached').removeClass('uk-hidden');
      } else {
        // Mode legacy
        lstdiv = jQuery(idmoteur).find('.joomlei_moteur_rubrique');
        for (var i = 1; i < lstdiv.length; i++) jQuery(lstdiv[i]).slideDown('slow');
        jQuery(idmoteur).find('#multimoteur_ouvert').val('1');
        jQuery(idmoteur).find('.joomleimoteur_moinsdecriteres').css('display', 'block');
        jQuery(idmoteur).find('.joomleimoteur_plusdecriteres').css('display', 'none');
      }
    }
    //Fonction pour le moteur SIMPLE / AVANCE
    function joomleimoteur_affichermoinsdecriteres(nummoteur) {
      var idmoteur = "#div_globaljoomleimoteur_" + nummoteur;
      var lstdiv = jQuery(idmoteur).find('div.cached');
      if (lstdiv.length > 0) {
        for (var i = 1; i < lstdiv.length; i++) jQuery(lstdiv[i]).slideUp('slow', function() {
          //jQuery(this).addClass('uk-hidden');
        });
        jQuery(idmoteur).find('#multimoteur_ouvert').val('0');
        jQuery('.joomleimoteur_plusdecriteres').removeClass('uk-hidden');
        jQuery('.joomleimoteur_moinsdecriteres, hr.cached').addClass('uk-hidden');
      } else {
        // Mode Legacy
        lstdiv = jQuery(idmoteur).find('.joomlei_moteur_rubrique');
        for (var i = 1; i < lstdiv.length; i++) jQuery(lstdiv[i]).slideUp('slow');
        jQuery(idmoteur).find('#multimoteur_ouvert').val('0');
        jQuery(idmoteur).find('.joomleimoteur_moinsdecriteres').css('display', 'none');
        jQuery(idmoteur).find('.joomleimoteur_plusdecriteres').css('display', 'block');
      }
    }

    function joomlei_majtot_moteur(total) {
      alert(total);
    }

    function joomlei_calcule_moteur(idmoteur) {
      var el;
      var lechk;
      var lavaleur;
      var letemp;
      var lavaleur = "";
      var lamodalidad = "";
      var lemini = 999999999999;
      var lemaxi = 0;
      var cmptmoda = 0;
      var cmptval = 0;
      var lechamp = "";
      var gp;
      var idgroupe;
      var idchamp;
      var lstel;
      var j;
      var str_url_form;
      // On récupère la liste de tous les groupes du moteur
      var lstgp = jQuery('input[name=jleimoteur_groupe]');
      if (!idmoteur) var idmoteur = "form_joomleimoteur";
      // On parcours la liste des groupes
      for (var i = 0; i < lstgp.length; i++) {
        gp = lstgp[i];
        idgroupe = gp.value;
        lavaleur = "";
        lutilisador = "";
        lamodalidad = "";
        lemini = 999999999999; // ""
        lemaxi = 0; // ""
        cmptmoda = 0;
        cmptval = 0;
        // On retrouve le nom du champ du groupe
        //		alert(idgroupe + ': ' + lechamp);
        lechamp = jQuery('#groupe_' + idgroupe + '_champ').attr('name');
        // On parcours toutes les cases à cocher du groupe
        lstel = jQuery('input[id^=chkjelm_' + idgroupe + '_]');
        for (j = 0; j < lstel.length; j++) {
          el = lstel[j];
          // Si case cochée, on comptabilise les modalités valeurs
          if (el.checked == true) {
            // Si le champ est un critère
            if (lechamp == "elcriterio[]") {
              // On ne concatène pas le num de crit
              lavaleur = jQuery('#hid' + el.id + '_valeur').val();
              // Si critère non Quantitatif : on concatène les modalités
              letemp = jQuery('#hid' + el.id + '_minimo').val() + '';
              if (letemp == '') {
                // C'est pas la première moda chéckée, on met un |
                if (cmptmoda > 0) lamodalidad += "|";
                lamodalidad += jQuery('#hid' + el.id + '_modalidad').val();
                cmptmoda++;
              } else {
                // Quantitatif : pas de concat de la moda
                // mais un calcul mini maxi absolu des cases cochées
                lamodalidad = jQuery('#hid' + el.id + '_modalidad').val();
                if (jQuery('#hid' + el.id + '_minimo').val() != '' && jQuery('#hid' + el.id + '_minimo').val() != '@') lemini = Math.min(lemini, parseInt(jQuery('#hid' + el.id + '_minimo').val()));
                else lemini = jQuery('#hid' + el.id + '_minimo').val();
                if (jQuery('#hid' + el.id + '_maximo').val() != '' && jQuery('#hid' + el.id + '_maximo').val() != '@') lemaxi = Math.max(lemaxi, parseInt(jQuery('#hid' + el.id + '_maximo').val()));
                else lemaxi = jQuery('#hid' + el.id + '_maximo').val();
              }
            } else {
              // Pas un crit : on concatène la valeur et on s'occupe pas du reste
              // On ne concatène pas le num de crit
              if (cmptval > 0) lavaleur += "|";
              lavaleur += jQuery('#hid' + el.id + '_valeur').val();
              // Cas particulier du secteur : il faut aussi metre à jour le hidden utilisadoe
              lutilisador = jQuery('#hid' + el.id + '_valeur').attr('data-dnc-utilisador');
              // alert(lutilisador + ' - ' + '#hid' + el.id + '_valeur');
              cmptval++;
            }
          }
        }
        // Cas du groupe en liste déroulante
        lstel = jQuery('input[id=lstjelm_' + idgroupe + ']');
        var laliste = document.getElementById('lstjelm_' + idgroupe); // jQuery('#lstjelm_' + idgroupe );
        if (laliste + '' != 'null' && laliste + '' != 'undefined') {
          // 10/2016 : support du mode multiple
          var selectedvalues = [];
          var selectedtexts = [];
          var seloptions = [];
          var lesoptions = laliste && laliste.options;
          var opt;
          var txtsel = '';
          for (var cmptopt = 0, iLen = lesoptions.length; cmptopt < iLen; cmptopt++) {
            opt = lesoptions[cmptopt];
            if (opt.selected) {
              seloptions.push(cmptopt);
              selectedvalues.push(opt.value);
              selectedtexts.push(opt.text);
            }
          }
          // var lesel = laliste.selectedIndex;
          var lid = null;
          lamodalidad = '';
          // Patch 12/2016 : bug minimo sur listes deroulantes multiples
          lemini = 999999999999; // ""
          lemaxi = 0; // ""
          //            lemini = '';
          //            lemaxi = '';
          cmptmoda = 0;
          if (selectedvalues.length > 0) {
            for (cmptopt = 0, iLen = selectedvalues.length; cmptopt < iLen; cmptopt++) {
              // lid = laliste.options[seloptions[cmptopt]].value;
              lid = selectedvalues[cmptopt];
              // Si le champ est un critère
              if (lechamp == "elcriterio[]") {
                // On ne concatène rien car un seul élément checkable
                lavaleur = jQuery('#hid' + lid + '_valeur').val();
                // lamodalidad = jQuery('#hid' + lid + '_modalidad').val();
                // Si critère non Quantitatif : on concatène les modalités
                letemp = jQuery('#hid' + lid + '_minimo').val() + '';
                if (letemp == '') {
                  // C'est pas la première moda chéckée, on met un |
                  if (cmptmoda > 0) lamodalidad += "|";
                  lamodalidad += jQuery('#hid' + lid + '_modalidad').val();
                  cmptmoda++;
                } else {
                  // Quantitatif : pas de concat de la moda
                  // mais un calcul mini maxi absolu des cases cochées
                  lamodalidad = jQuery('#hid' + lid + '_modalidad').val();
                  if (jQuery('#hid' + lid + '_minimo').val() != '' && jQuery('#hid' + lid + '_minimo').val() != '@') lemini = Math.min(lemini, parseInt(jQuery('#hid' + lid + '_minimo').val()));
                  else lemini = jQuery('#hid' + lid + '_minimo').val();
                  if (jQuery('#hid' + lid + '_maximo').val() != '' && jQuery('#hid' + lid + '_maximo').val() != '@') lemaxi = Math.max(lemaxi, parseInt(jQuery('#hid' + lid + '_maximo').val()));
                  else lemaxi = jQuery('#hid' + lid + '_maximo').val();
                }
                // alert(lamodalidad);
              } else {
                // if(idgroupe='42000077')
                // 	alert('cououc');
                lavaleur = jQuery('#hid' + lid + '_valeur').val();
                // Cas particulier du secteur : il faut aussi metre à jour le hidden utilisadoe
                lutilisador = jQuery('#hid' + lid + '_valeur').attr('data-dnc-utilisador');
              }
            }
          }
        }
        // Quel que soit le type d'affichage, on termine ainsi :
        // On met à jour le champ valeur du groupe et vide le reste
        jQuery('#groupe_' + idgroupe + '_champ').val(lavaleur);
        // Cas particulier du secteur : il faut mettre à jour le deuxième hidden utilisador
        if (lutilisador != '') jQuery('#groupe_' + idgroupe + '_utilisador').val(lutilisador);
        // if(idgroupe='42000077')
        //	alert('valeur du ctrl du groupe ' + idgroupe + ' après : ' + lavaleur);
        // 	On met à jour les éléments du groupe relatifs au cas critère
        if (lechamp == 'elcriterio[]') {
          jQuery('#groupe_' + idgroupe + '_modalidad').val('');
          jQuery('#groupe_' + idgroupe + '_minimo').val('');
          jQuery('#groupe_' + idgroupe + '_maximo').val('');
          jQuery('#groupe_' + idgroupe + '_modalidad').val(lamodalidad);
          if (lemini != 0 && lemini != 999999999999) jQuery('#groupe_' + idgroupe + '_minimo').val(lemini);
          if (lemaxi != 0) jQuery('#groupe_' + idgroupe + '_maximo').val(lemaxi);
          // alert('modalité(s) : ' + lamodalidad);
        }
      }
      // Calcul Ajax du nombre total de fiches si nécessaire
      var lemoteur = document.getElementById(idmoteur);
      //        if(console && console.log) console.log(lemoteur);
      var calcul_total = 0;
      if (lemoteur != null) calcul_total = lemoteur.calctot.value;
      if (calcul_total == "1") {
        // portion d'url avec les paramètres uniquement
        var lurl = jleim_serialiser(idmoteur);
        urlbase = jQuery('#' + idmoteur).attr('data-dnc-urlbase_ajax'); // '';
        lurl = jQuery('#' + idmoteur).attr('data-dnc-paramsurl_ajax') + lurl; // '' + lurl ;
        // alert(urlbase + '?' + lurl);
        // console.log(urlbase + '?' + lurl);
        jleim_lasturl = urlbase + '&' + lurl;
        jQuery.ajax({
          url: urlbase,
          data: lurl,
          dataType: 'json'
        }).done(function(lejson) {
          // alert(lejson['TOTAL']);
          var nummoteur = jQuery("#" + idmoteur).attr('data-dnc-nummoteur');
          jQuery('#joomlei_moteur_' + nummoteur + '_total span').replaceWith('<span>' + lejson['TOTAL'] + '</span>');
        });
        // Patch 10/2017 : on annule toutes les requtes en cours
        if (!jleim_soustot_reqs) window.jleim_soustot_reqs = [];
        for (var i = jleim_soustot_reqs.length - 1; i >= 0; i--) {
          jleim_soustot_reqs[i].abort();
          jleim_soustot_reqs.splice(i);
        }
        // Ici on va recalculer tous les totaux devant les cases à cocher
        jQuery("#" + idmoteur + " input[name^='chkjelm_']").each(function() {
          var obj = jQuery(this);
          var jleim_idobj = obj.attr('id');
          var lurltemp = lurl;
          var xhrtemp;
          if (obj.attr('data-dnc-champ') != '') {
            lurltemp = lurl + '&' + obj.attr('data-dnc-champ') + "=" + jQuery("#hid" + jleim_idobj + "_valeur").val();
            if (obj.attr('data-dnc-champ') == 'elcriterio[]') {
              lurltemp += '&modalidad[]=' + jQuery("#hid" + jleim_idobj + "_modalidad").val();
              lurltemp += '&minimo[]=' + jQuery("#hid" + jleim_idobj + "_minimo").val();
              lurltemp += '&maximo[]=' + jQuery("#hid" + jleim_idobj + "_maximo").val();
            }
            xhrtemp = jQuery.ajax({
              url: urlbase,
              data: lurltemp,
              dataType: 'json'
            }).done(function(lejson) {
              // alert(lejson['TOTAL']);
              var nummoteur = jQuery("#" + idmoteur).attr('data-dnc-nummoteur');
              console.log("jleim_idobj : " + jleim_idobj);
              jQuery('#' + idmoteur + ' #' + jleim_idobj).parent().find('.jleim_soustotal').html('<span>' + lejson['TOTAL'] + '</span>');
              /*if (lejson['TOTAL'] == 0)
                  jQuery('#' + idmoteur + ' #' + jleim_idobj).parent().find('input[type=checkbox],input[type=radio], label').attr('disabled', 'disabled');
              else
                  jQuery('#' + idmoteur + ' #' + jleim_idobj).parent().find('input[type=checkbox],input[type=radio], label').removeAttr('disabled');*/
            });
            jleim_soustot_reqs.push(xhrtemp);
          }
        });
      }
    }
  </script>
</form>

Name: bookingGET //www.booking.com/searchresults.html

<form name="booking" action="//www.booking.com/searchresults.html" method="get" target="_blank" id="form_booking_booking" onsubmit="return joomlei_validation_booking_booking('booking');" class="uk-form uk-form-horizontal">
  <input type="hidden" name="aid" value="389588">
  <input type="hidden" name="selected_currency" value="EUR">
  <input type="hidden" name="lang" value="fr">
  <input type="hidden" name="checkin_monthday" id="checkin_monthday_booking" value="23">
  <input type="hidden" name="checkin_year_month" id="checkin_year_month_booking" value="2022-11">
  <input type="hidden" name="checkout_monthday" id="checkout_monthday_booking" value="24">
  <input type="hidden" name="checkout_year_month" id="checkout_year_month_booking" value="2022-11">
  <input type="hidden" name="do_availability_check" value="1">
  <input type="hidden" name="city" value="-1470025">
  <div uk-grid="" class="uk-flex-middle uk-grid">
    <div class="rubrique uk-width-small-1-1 uk-width-2-3@m uk-first-column">
      <div id="joomlei_moteur_1_1" class="joomlei_moteur_rubrique ">
        <div class="joomlei_moteur_contenurubrique ">
          <div class="joomlei_moteur_sousrubrique jleimoteur">
            <div class="joomlei_moteur_contenusousrubrique">
              <script type="text/javascript">
                var date_du = new Date();
                var date_au = new Date();
                jQuery(document).ready(function($) {
                  //on récupère les dates qui sont dans l'url si GET précédent
                  //f_recup_dates_booking();
                });
                //permet de mettre à jour les dates avec la vérification.
                function f_verif_dates_booking(id_parent) {
                  //on récupère les dates du et au
                  var tmp_date_du = jQuery('#booking_dispodu_booking').val();
                  jour_du = tmp_date_du.split('.')[0];
                  mois_du = tmp_date_du.split('.')[1] - 1;
                  annee_du = tmp_date_du.split('.')[2];
                  var tmp_date_au = jQuery('#booking_dispoau_booking').val();
                  jour_au = tmp_date_au.split('.')[0];
                  mois_au = tmp_date_au.split('.')[1] - 1;
                  annee_au = tmp_date_au.split('.')[2];
                  if (jour_du != '' && mois_du != '') {
                    date_du.setFullYear(annee_du);
                    date_du.setMonth(mois_du);
                    date_du.setDate(jour_du);
                  }
                  if (jour_au != '' && mois_au != '') {
                    date_au.setFullYear(annee_au);
                    date_au.setMonth(mois_au);
                    date_au.setDate(jour_au);
                  }
                  //si date_du valide et que l'appel de la fonction vient de la date_du
                  if ((id_parent == 'jour_du' || id_parent == 'mois_du' || id_parent == 'calendar_du') && mois_du != '' && jour_du != '') {
                    //ici on change date_au = date_du + 1 jour si inférieure à date_du
                    //si les deux dates existent
                    if (mois_au != '' && jour_au != '') {
                      if (date_du > date_au) {
                        date_au.setFullYear(annee_du);
                        date_au.setMonth(mois_du);
                        date_au.setDate((parseInt(jour_du) + 1));
                        jour_au = parseInt(jour_du) + 1;
                        mois_au = mois_du;
                        annee_au = annee_du;
                        //f_jour_au_booking();
                        //jQuery('#liste_mois_au_booking .'+date_au.getMonth()+date_au.getFullYear()).prop('selected', 'selected');
                      }
                      //else rien
                    } else {
                      date_au.setFullYear(annee_du);
                      date_au.setMonth(mois_du);
                      date_au.setDate((parseInt(jour_du) + 1));
                      jour_au = parseInt(jour_du) + 1;
                      mois_au = mois_du;
                      annee_au = annee_du;
                      //f_jour_au_booking();
                      //jQuery('#liste_mois_au_booking .'+date_au.getMonth()+date_au.getFullYear()).prop('selected', 'selected');
                    }
                  }
                  //si date_au valide et que l'appel vient de la date_au et que date_du vide
                  if ((id_parent == 'jour_au' || id_parent == 'mois_au' || id_parent == 'calendar_au') && mois_au != '' && jour_au != '' && (mois_du == '' || jour_du == '')) {
                    date_du.setFullYear(annee_au);
                    date_du.setMonth(mois_au);
                    date_du.setDate((parseInt(jour_au) - 1));
                    jour_du = parseInt(jour_au) - 1;
                    mois_du = mois_au;
                    annee_du = annee_au;
                    //f_jour_du_booking();
                    //jQuery('#liste_mois_du_booking .'+date_du.getMonth()+date_du.getFullYear()).prop('selected', 'selected');
                  }
                  //si le mois est séléctionné alors on actualise la liste des jours en conséquence
                  if (mois_du != '' && annee_du != '') {
                    //f_jour_du_booking();
                  }
                  //si la date est complète on peut stocker la date dans pnames
                  if (jour_du != '' && mois_du != '') {
                    mois = parseInt(date_du.getMonth()) + 1;
                    if (mois < 10) mois = '0' + mois;
                    var letemp = parseInt(date_du.getDate());
                    if (letemp < 10) letemp = '0' + letemp;
                    jQuery('#booking_dispodu_booking').val(letemp + '.' + mois + '.' + date_du.getFullYear());
                    //			console.log(date_du.getDate()+'.'+mois+'.'+date_du.getFullYear());
                  }
                  //si le mois est séléctionné alors on actualise la liste des jours en conséquence
                  if (mois_au != '' && annee_au != '') {
                    //f_jour_au_booking();
                  }
                  //si la date est complète on peut stocker la date dans pnames
                  if (jour_au != '' && mois_au != '') {
                    mois = parseInt(date_au.getMonth()) + 1;
                    if (mois < 10) mois = '0' + mois;
                    var letemp2 = parseInt(date_au.getDate());
                    if (letemp2 < 10) letemp2 = '0' + letemp2;
                    jQuery('#booking_dispoau_booking').val(letemp2 + '.' + mois + '.' + date_au.getFullYear());
                    //			console.log(date_au.getDate()+'.'+mois+'.'+date_au.getFullYear());
                  }
                  if (jour_du != '' && mois_du != '' && jour_au != '' && mois_au != '') {
                    if (!f_verif_chrono_booking()) {}
                  }
                }
                // permet de verifier si la chronologies des dates est cohérente.
                function f_verif_chrono_booking() {
                  //on vérifie si les dates sont biend des dates
                  if (date_du > date_au) {
                    alert('dates incorrectes');
                    return false;
                  } else {
                    return true;
                  }
                }
                //permet d'actualiser la liste des dates selon le calendrier
                function f_actu_date_du_booking() {
                  var tmp_date = jQuery('#booking_dispodu_booking').val();
                  jour_du = tmp_date.split('.')[0];
                  mois_du = tmp_date.split('.')[1] - 1;
                  annee_du = tmp_date.split('.')[2];
                  date_du.setFullYear(annee_du);
                  date_du.setMonth(mois_du);
                  date_du.setDate(jour_du);
                  //f_jour_du_booking();
                  //jQuery('#liste_mois_du_booking .'+date_du.getMonth()+date_du.getFullYear()).prop('selected', 'selected');
                  f_verif_dates_booking('calendar_du');
                }
                //permet d'actualiser la liste des dates selon le calendrier
                function f_actu_date_au_booking() {
                  var tmp_date = jQuery('#booking_dispoau_booking').val();
                  jour_au = tmp_date.split('.')[0];
                  mois_au = tmp_date.split('.')[1] - 1;
                  annee_au = tmp_date.split('.')[2];
                  date_au.setFullYear(annee_au);
                  date_au.setMonth(mois_au);
                  date_au.setDate(jour_au);
                  //f_jour_au_booking();
                  //jQuery('#liste_mois_au_booking .'+date_au.getMonth()+date_au.getFullYear()).prop('selected', 'selected');
                  f_verif_dates_booking('calendar_au');
                }
                // permet de mettre à jour les dates selon les dates passées dans la recherche
                function f_recup_dates_booking() {
                  var tab_date_du = jQuery('#booking_dispodu_booking').val().split('.');
                  var tab_date_au = jQuery('#booking_dispoau_booking').val().split('.');
                  if (tab_date_du[0] != '' && tab_date_au[0] != '') {
                    date_du.setFullYear(tab_date_du[2]);
                    date_du.setMonth(tab_date_du[1] - 1);
                    date_du.setDate(tab_date_du[0]);
                    date_au.setFullYear(tab_date_au[2]);
                    date_au.setMonth(tab_date_au[1] - 1);
                    date_au.setDate(tab_date_au[0]);
                    jour_du = date_du.getDate();
                    mois_du = date_du.getMonth();
                    annee_du = date_du.getFullYear();
                    jour_au = date_au.getDate();
                    mois_au = date_au.getMonth();
                    annee_au = date_au.getFullYear();
                    f_verif_dates_booking('get');
                  }
                }
                //-->
              </script>
              <div class="joomlei_moteur_groupe moteur_booking" id="joomlei_moteur_groupe_booking__booking fr-FR">
                <div uk-grid="" class="uk-grid">
                  <div class="uk-width-1-2 uk-form-row spec uk-first-column">
                    <div class="uk-inline uk-width-1-1">
                      <a class="uk-form-icon uk-form-icon-flip uk-icon" uk-icon="icon: calendar"><svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"> <path d="M 2,3 2,17 18,17 18,3 2,3 Z M 17,16 3,16 3,8 17,8 17,16 Z M 17,7 3,7 3,4 17,4 17,7 Z"></path> <rect width="1" height="3" x="6" y="2"></rect> <rect width="1" height="3" x="13" y="2"></rect></svg></a>
                      <span class="uk-form-icon">DU</span>
                      <input name="booking_dispodu_booking" data-toggle="datepicker" type="text" class="uk-form-large uk-width-1-1 uk-input" id="booking_dispodu_booking" value="26.07.2024" placeholder="DU" readonly="readonly">
                    </div>
                  </div>
                  <div class="uk-width-1-2 spec">
                    <div class="uk-inline uk-width-1-1">
                      <a class="uk-form-icon uk-form-icon-flip uk-icon" uk-icon="icon: calendar"><svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"> <path d="M 2,3 2,17 18,17 18,3 2,3 Z M 17,16 3,16 3,8 17,8 17,16 Z M 17,7 3,7 3,4 17,4 17,7 Z"></path> <rect width="1" height="3" x="6" y="2"></rect> <rect width="1" height="3" x="13" y="2"></rect></svg></a>
                      <span class="uk-form-icon">AU</span>
                      <input type="text" name="booking_dispoau_booking" data-toggle="datepicker" class="uk-form-large uk-width-1-1 uk-input" id="booking_dispoau_booking" value="27.07.2024" placeholder="AU" readonly="readonly">
                    </div>
                  </div>
                </div>
                <div id="erreur_dates" style="color: red; display: none;">DATES_ERROR</div>
                <div id="letsdispos"></div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div class="uk-margin uk-width-small-1-1 uk-width-1-3@m uk-text-center btnsubmit">
      <a class="uk-button uk-button-primary uk-button-large uk-width-1-1 submitbooking" onclick="ga('send', 'event', 'Home', 'clic', 'Booking');" id="btnsubmitbooking">Book</a>
    </div>
  </div>
  <script type="text/javascript">
    jQuery(document).ready(function() {
      jQuery('#booking_dispodu_booking, #booking_dispoau_booking').attr('readonly', '');
      jQuery('#btnsubmitbooking').click(function() {
        console.log("valid booking");
        jQuery("#form_booking_booking").submit();
      });
    })
  </script>
</form>

Text Content

Skip to content

???? New ! “Hel'eau la Bruche”, a geolocated network of water points to fill
your bottle!

???? New ! “Hel'eau la Bruche”, a geolocated network of water points to fill
your bottle!


Revenir à l'accueil

Téléchargement de documents

Webcams

Météo

Visiter notre boutique

Rando Bruche

Coups de cœur

Découvrir la destination
Find a route


 * The car-free valley
   * The Bruche Bike
   * Interactive map
   * Hel'eau la Bruche
 * VTC
   * Culture
   * Family
   * Freshness
   * Altitude
   * Must-haves
   * Panoramic
 * Moutain Biking
   * Culture
   * Family
   * Freshness
   * Altitude
   * Must-haves
   * Panoramic
 * Road bike
   * Culture
   * Family
   * Freshness
   * Altitude
   * unavoidable
   * Panoramic
 * For everyone
   * Tricycle, stroller, wheelchair…
   * 4×4 stroller
   * Roaming
 * PRACTICAL INFORMATION & ACCOMMODATION
   * A table
   * Sleep
   * Bivouac
   * Alsace by bike
   * Bicycle services
   * Bike home
   * Using GPX/KML files
   * Good practices and protected areas
 * Online offers
   * Gourmet cycling offers
   * Sports & well-being bike offers
   * Electric-assisted bicycle rental offers
   * Sale of cards and accessories

Menu
 * The car-free valley
   * The Bruche Bike
   * Interactive map
   * Hel'eau la Bruche
 * VTC
   * Culture
   * Family
   * Freshness
   * Altitude
   * Must-haves
   * Panoramic
 * Moutain Biking
   * Culture
   * Family
   * Freshness
   * Altitude
   * Must-haves
   * Panoramic
 * Road bike
   * Culture
   * Family
   * Freshness
   * Altitude
   * unavoidable
   * Panoramic
 * For everyone
   * Tricycle, stroller, wheelchair…
   * 4×4 stroller
   * Roaming
 * PRACTICAL INFORMATION & ACCOMMODATION
   * A table
   * Sleep
   * Bivouac
   * Alsace by bike
   * Bicycle services
   * Bike home
   * Using GPX/KML files
   * Good practices and protected areas
 * Online offers
   * Gourmet cycling offers
   * Sports & well-being bike offers
   * Electric-assisted bicycle rental offers
   * Sale of cards and accessories

Unmissable tours
See the files
Seasonal route
See the routes
Online offers
See the hikes
Nature activities
See activities
Unmissable tours
See the files
Seasonal route
See the routes
Online offers
See the hikes
Nature activities
See activities
Unmissable tours
See the files
Seasonal route
See the routes
Online offers
See the hikes
Nature activities
See activities
previous slide
next slide


FIND A ROUTE

Practical
trekking bike (48) Mountain bike (62) road bike (30) 4x4 stroller (2) Tricycle,
stroller, armchair (1) Roaming (6)
Themes
Culture (38) Family (28) Freshness (64) Altitude (60) Must-haves (35) Panoramic
(70)
Length, duration,...

LENGTH OF ROUTE (KM)

0 155

CUMULATIVE ASCENT (M)

0 5300
- 2 hours (24) 1/2 day (8) Day out (57) More than one day (2)
Hike level
general public (35) Intermediate (39) Challenging (25) Consultant (26)
Must see places
field of fire (15) Don (6) psalm (19) Perheux-Struthof (13) Hohbuhl - Guirbaden
(2) Rocher de Mutzig - Nideck (6) The Hang - Climont (4)
Geolocation
Distance: 5 km
From a station (45)
Key words


125 results
Search


CIRCUIT THEMES

Not to be missed
Farms
For families
Freshness
Panoramics
Altitude
Culture
Roaming


CYCLING ADVENTURE IN THE BRUCHE VALLEY

Click, we take care of everything

At the heart of the Vosges Massif, the Bruche valley combines the attractions of
Alsace with those of the Vosges mountains... Ski resort in winter, deep forests
in autumn, green banks, high stubble pastures…The Bruche valley is all of this
at the same time and in all seasons!

Lovers of family bike rides, walks on forest roads, road bike tours, sporty,
contemplative or little trotters in short pants, solo or in a tribe... To all
those who like to move, this site is yours! Loop or roaming bike tours,
practical information, offers combining cycling, spa or treats, good deals…

Do you dream of getting away from it all without the constraints of the car? The
Bruche valley is the ideal place for an eco-responsible holiday! Come by train
or leave your vehicle and explore the region by bike or on foot: reception at
the station, hiking map, e-bike rental, fresh bread, etc. we have thought of
everything with the “Bruche tout deux” offer, it’s a holiday without the car!

Join the community of cycling enthusiasts in the Bruche valley!




TAKE ADVANTAGE OF OUR ONLINE OFFERS


ELECTRIC-ASSISTED BICYCLE RENTAL OFFERS

Learn more


CYCLING & WELL-BEING OFFERS

Learn more


GOURMET CYCLING OFFERS

Learn more


CARDS & ACCESSORIES

Learn more


ELECTRIC-ASSISTED BICYCLE RENTAL OFFERS

Learn more


CYCLING & WELL-BEING OFFERS

Learn more


GOURMET CYCLING OFFERS

Learn more


CARDS & ACCESSORIES

Learn more


ELECTRIC-ASSISTED BICYCLE RENTAL OFFERS

Learn more


CYCLING & WELL-BEING OFFERS

Learn more


GOURMET CYCLING OFFERS

Learn more


CARDS & ACCESSORIES

Learn more




NEWS & FAVORITES


THE VÉLOBRUCHE – OR HOW TO MAKE A CYCLING ROUTE…A CYCLING EXPERIENCE!

 * Athletes & itinerants

Learn more


LOCAL WOMEN

 * Meetings, Bike & terroir

Learn more


LES SENTIERS PLAISIR®: A WELCOME THAT IS GAINING GROUND

 * Family, Unusual, Memory & history, Nature, Meetings, Seasonal

Learn more


MEMORY OF LITTLE THINGS

 * Family, Unusual

Learn more


NATURA 2000 – AN ASSET AS MUCH AS A CHALLENGE

 * Nature

Learn more


THE VÉLOBRUCHE – OR HOW TO MAKE A CYCLING ROUTE…A CYCLING EXPERIENCE!

 * Athletes & itinerants

Learn more


LOCAL WOMEN

 * Meetings, Bike & terroir

Learn more


LES SENTIERS PLAISIR®: A WELCOME THAT IS GAINING GROUND

 * Family, Unusual, Memory & history, Nature, Meetings, Seasonal

Learn more


MEMORY OF LITTLE THINGS

 * Family, Unusual

Learn more


NATURA 2000 – AN ASSET AS MUCH AS A CHALLENGE

 * Nature

Learn more


THE VÉLOBRUCHE – OR HOW TO MAKE A CYCLING ROUTE…A CYCLING EXPERIENCE!

 * Athletes & itinerants

Learn more



BOOK ACCOMMODATION IN THE BRUCHE VALLEY IN ALSACE

DU
AU
DATES_ERROR

Book



PREPARE YOUR TRIP TO ALSACE

The valley in pictures
Weather
Accommodation
Brochures
How to get here
Interactive map

GIVE US YOUR OPINION

TripAdvisor
Google
Facebook

Welcoming is in our nature

TOURIST OFFICE

114, Grand-rue
F-67130 Schirmeck
Tél | +33 3 88 47 18 51






www.valleedelabruche.fr
tourism@valleedelabruche.fr

HOURS OF OPERATION

Open all year round

 * Oct. 1 > April 30
   Monday to Friday: 9 a.m. to 12 p.m. & 14 p.m. to 17 p.m.
   (closed Tuesday morning)

 * May 2 > September 30
   Monday to Saturday: 9 a.m. to 12 p.m. & 14 p.m. to 18:30 p.m. (until 17 p.m.
   Saturday)

 * Sundays in July-August & public holidays
   May 8, Ascension, July 14, August 15, December 24 & 31: 9 a.m. to 13 p.m.

   

FREE PARKING
CARS & BIKES

 * Market square 50m, TLJ. except for cars on Wednesday from mid-October to
   mid-April  
 * Bergopré car park at 350m
 * Station parking 250 m away


 * Legal Notice
 * Personal data
 * Made by DN Consultants