var Front = new function()
{
  var options;
  
  this.init = function(opt)
  {
    Front.options = opt;
    
    $.facebox.settings.closeImage = Front.options.relative_url_root+'images/facebox_close_bis.png';
    
    var $i18nMsg = $("div#content_body").metadata();
    $.facebox.settings.closeName = $i18nMsg.closeFacebox;
    $.extend($.validator.messages, {
      required: $i18nMsg.required,
      email: $i18nMsg.email,
      url: $i18nMsg.url,
      number: $i18nMsg.number,
      accept: $i18nMsg.accept,
      equalTo: $i18nMsg.equalTo,
      maxlength: $.format($i18nMsg.maxlength),
      minlength: $.format($i18nMsg.minlength)
    });    
    
    Front.initDom($("#dms_layout_parts"));
  };
  
  this.initDom = function($dom)
  {

    
  if($('div.success_facebox_newsletter', $dom).length)
    {
    
      $.facebox("\
      <div class=contenu_facebox> \
        <div class='success success_newsletter' style='margin:0px;'>Votre inscription à la newsletter à bien été prise en compte</br>Merci de votre confiance. </br>Carnac Thalasso & spa resort ®</div> \
      </div>"
      );
      $("#facebox a.close_facebox").one("click", function(){
        $.facebox.close();
      });
    }
    
    if($contentPackages = $('.contentPackages', $dom).orNot())
    {
      var $prixSejour = $('.isPrixSejour');
      var $prixOption = $('.prixSuppOption');
      /*$('.isPackageForOption', $contentPackages).each(function(){
        $(this).rebind('change', function(){
          var $parent = $(this).parent().parent();
          $('ul.contentPackageForOption', $parent).slideToggle('slow');
          if($(this).hasClass('isChecked'))
          {
            $(this).removeClass('isChecked');
            $('ul.contentPackageForOption input', $parent).each(function(){
              if($(this).hasClass('isChecked'))
              {
                var $metadata = $(this).metadata(); 
                $(this).removeClass('isChecked');
                if(!$metadata.include_rate)
                {
                  var $prix = parseInt($prixSejour.html(), 10)*1;
                  $prixSejour.html($prix-$metadata.prix);
                  
                  var $prixBis = parseInt($prixOption.html(), 10)*1;
                  $prixOption.html($prixBis-$metadata.prix);
                  if(($prixBis-$metadata.prix) <= 0)
                  {
                    $('.suppOption').hide();
                  }
                }
                $(this).click();
              }
            });
          }
          else
          {
            $(this).addClass('isChecked');
          }
        });
      });*/
      $('ul.contentPackageForOption input', $dom).each(function(){
        $(this).rebind('change', function(){
          var $metadata = $(this).metadata(); 
          if($(this).hasClass('isChecked'))
          {
            $(this).removeClass('isChecked');
            if(!$metadata.include_rate)
            {
              var $prix = parseInt($prixSejour.html(), 10)*1;
              $prixSejour.html($prix-$metadata.prix);
              
              var $prixBis = parseInt($prixOption.html(), 10)*1;
              $prixOption.html($prixBis-$metadata.prix);
              
              if(($prixBis-$metadata.prix) <= 0)
              {
                $('.suppOption').hide();
              }
            }
          }
          else
          {
            $(this).addClass('isChecked');
            if(!$metadata.include_rate)
            {
              var $prix = parseInt($prixSejour.html(), 10)*1;
              $prixSejour.html($prix+$metadata.prix);
              
              var $prixBis = parseInt($prixOption.html(), 10)*1;
              $prixOption.html($prixBis+$metadata.prix);
              
              if(($prixBis+$metadata.prix) > 0)
              {
                $('.suppOption').show();
              }
            }
          }
        });
      });
    }
    
    
    if($.browser.msie && $.browser.version < 9)
    {
     $("#fidelio_room_ref_hotel").each(function(){
       var $select = $(this);
       $(this).mouseover(function(){
              $(this).css("width", "auto");
          });
       $(this).blur(function(){
              $(this).css("width", "102px");
          });
       $(this).change(function(){
              $(this).css("width", "102px");
          });
     });
    }
    
    
      if($content_info_selecteur = $('.typeCarte .radio_list', $dom).orNot())
      {
        $('label', $content_info_selecteur).each(function(){
         var $self = $(this);
         $(this).qtip({
           content: $self.html(),
           position: {
             corner: {
                target: 'leftMiddle',
                tooltip: 'rightMiddle'
             }
           },
           show:
           {
               when:
               { 
                 event: 'mouseover'
               }
           },
           hide:
           {
             when: 'mouseout'
           },
           style:
           {
             background: '#CE1622',
             border:
             {
               color: '#CE1622',
               radius: 4
             },
             color: '#fff',
             tip: 'rightMiddle'
           }
         });
        });
        $('input', $content_info_selecteur).each(function(){
           var $self = $('label', $(this).parent());
           $(this).qtip({
             content: $self.html(),
             position: {
               corner: {
                  target: 'leftMiddle',
                  tooltip: 'rightMiddle'
               }
             },
             show:
             {
                 when:
                 { 
                   event: 'mouseover'
                 }
             },
             hide:
             {
               when: 'mouseout'
             },
             style:
             {
               background: '#CE1622',
               border:
               {
                 color: '#CE1622',
                 radius: 4
               },
               color: '#fff',
               tip: 'rightMiddle'
             }
           });
          });
      }
      
      $('.pictoTelechargement', $dom).each(function(){
          var self = this;
         $(this).qtip({
          content: {
               url: Util.action2href("dms/main/infoTelechargement"),
               method: 'get'
             },
           //content: '<a href="#">Télécharger pour iPhone</a> <br/> <a href="#">Télécharger pour iPad</a>',
           position: {
             corner: {
                target: 'center',
                tooltip: 'leftBottom'
             }
           },
           show: {
             when: {
               event: 'click'
               }
           },
           hide: {
               when: {
                event: 'unfocus',
                delay:2000
               }
           },
           /*show:
           {
               when:
               { 
                 event: 'click'
               }
           },
         
         
           hide:
           {
         event: 'unfocus'
           },*/
           style:
             {
             'background':'url("../images/v3/backgroundInfobulleTelechargement.png") no-repeat',
             'border':'none'
             }
         });
        });
    
    
    
  $('.cancelBooking').each(function(){
    $(this).rebind('click', function(){
      $('div.contentFormMofidyBooking').hide();
      $('div.contentFormMofidyBooking').removeClass('contentOpen');
      if($('div.contentFormCancelBooking').hasClass('contentOpen'))
      {
        $('div.contentFormCancelBooking').hide();
        $('div.contentFormCancelBooking').removeClass('contentOpen');
      }
      else
      {
        $('div.contentFormCancelBooking').show();
        $('div.contentFormCancelBooking').addClass('contentOpen');
      }
    });
  });
  $('.modifyBooking').each(function(){
    $(this).rebind('click', function(){
      $('div.contentFormCancelBooking').hide();
      $('div.contentFormCancelBooking').removeClass('contentOpen');
      if($('div.contentFormMofidyBooking').hasClass('contentOpen'))
      {
        $('div.contentFormMofidyBooking').hide();
        $('div.contentFormMofidyBooking').removeClass('contentOpen');
      }
      else
      {
        $('div.contentFormMofidyBooking').show();
        $('div.contentFormMofidyBooking').addClass('contentOpen');
      }
    });
  });
  
  
  $('#btReserveMenuRight').rebind('click',function(){
    
    if($('.menuRight', $(this).parent()).hasClass('isOpen'))
    {
      $(this).removeClass('currentBtResa');
      $('div.menuRight', $(this).parent()).removeClass('isOpen');
    }
    else
    {
      $(this).addClass('currentBtResa');
      $('div.menuRight', $(this).parent()).addClass('isOpen');
    }
    $('div.menuRight', $(this).parent()).slideToggle('slow');
    return false;
  });
  
    
  if($('#fidelio_room_type_code').val()== '')
    {
      $('.codeOptionnal').hide();
    }
    $('#fidelio_room_type_code').rebind('change', function(){
      if($(this).val() == '')
      {
        $('.codeOptionnal').hide();
      }
      else
      {
        $('.codeOptionnal').show();
      }
    });
    
    
    $('a.infoComplementaire').each(function(){
      $(this).rebind('click', function(){
        var $parent = $(this).parent();
        if($('.infoSupp',$parent).hasClass('descriptionOpen'))
        {
          $('span', $(this)).html('+ ');
          $('.infoSupp',$parent).hide();
          $('.infoSupp',$parent).removeClass('descriptionOpen');
        }
        else
        {
          $('span', $(this)).html('- ');
          $('.infoSupp',$parent).css('display','block');
          $('.infoSupp',$parent).addClass('descriptionOpen');
        }
      });
    });
    $('span.titreRatePlan').each(function(){
      $(this).rebind('click', function(){
        var $parent = $(this).parent().parent();
        if($('.contentDescriptionRate',$parent).hasClass('descriptionOpen'))
        {
          $(this).removeClass('descriptionOpenBackground');
          $('.contentDescriptionRate',$parent).hide();
          $('.contentDescriptionRate',$parent).removeClass('descriptionOpen');
        }
        else
        {
          $(this).addClass('descriptionOpenBackground');
          $('.contentDescriptionRate',$parent).show();
          $('.contentDescriptionRate',$parent).addClass('descriptionOpen');
        }
      });
    });
    
    
    
    
  if($espacePresseGallery = $('.action_laPresseEnParle .fondGris .dms_gallery').orNot())
  {
    Front.GalleryEspacePresse($espacePresseGallery);
  }
    
    if($btProfitezPromo = $('.btProfitezPromo').orNot())
    {
      $btProfitezPromo.hover(
        function()
          {
            $(this).addClass('btProfitezPromoHover');
          },
          function()
          {
            $(this).removeClass('btProfitezPromoHover');
          }
        );
    } 
    if($retourListA = $('.retourList a').orNot())
    {
      $retourListA.hover(
        function()
        {
          $('.pagerForBig').addClass('pagerForBigHover');
        },
        function()
        {
          $('.pagerForBig').removeClass('pagerForBigHover');
        }
      );
    }
    
    
    
    $('.contentPrixSejour .btOpenCloseDetail').rebind('click', function(){
      if($(this).hasClass('descriptionPrixOpen'))
      {
        $('.contentPrixSejour .contentDescriptionPrix').slideToggle("slow");
        $(this).removeClass('descriptionPrixOpen');
        $(this).html($(this).metadata().open);
      }
      else
      {
        $('.contentPrixSejour .contentDescriptionPrix').slideToggle("slow");
        $(this).addClass('descriptionPrixOpen');
        $(this).html($(this).metadata().close);
      }
    
    });    
    
    $("#spam_courriel, #little_query", $dom).each(function() {
      var $parent = $(this).parent();
      if($(this).val()==""){
        $('.label', $parent).show();
      }
      else
      {
        $('.label', $parent).hide();
      }
      $(this).focus(function(){
        $('.label', $parent).fadeTo(200,0.5);
      }).keyup(function(){
        if($(this).val()==""){
          $('.label', $parent).show();
        }
        else
        {
          $('.label', $parent).hide();
        }
      }).blur(function(){
        if($(this).val()==""){
          $('.label', $parent).fadeTo(100,1);
        }
      });
    });
    
    $('.btResa input').hover(function()
      {
        $(this).addClass('hover');
      }, function()
      {
        $(this).removeClass('hover');
      }
    );
    $('.contactform .btSubmit input, .contactPresseform .btSubmit input').each(function(){
      var $parent = $(this).parent();
      $(this).hover(
        function()
        {
          $(this).attr('src', $parent.metadata().hoverImage);
        },
        function()
        {
          $(this).attr('src', $parent.metadata().image);
        }
      );
    });
    
    $('.encartHomeSuggestion li .contentElement, .listeBig li .encartElement').each(function(){
      $(this).hover(function()
        {
          $(this).parent().addClass('hover');
        }, function()
        {
          $(this).parent().removeClass('hover');
        });
    });
    $('.encartHomeSuggestion li .contentElement, .listeBig li .encartElement').each(function(){
      $(this).rebind('click', function(){
        location.href = $('.titreObjectEncart .link', $(this)).attr('href');  
      });
    });
    
    $('div.contentListeBackgroundGris li .contentElement').each(function(){
      $(this).hover(function()
        {
          $(this).parent().addClass('hover');
        }, function()
        {
          $(this).parent().removeClass('hover');
        });
    });
    $('div.contentListeBackgroundGris li .contentElement').each(function(){
      $(this).rebind('click', function(){
        location.href = $('.titreObjectEncart .link', $(this)).attr('href');  
      });
    });
    
    $('#styleMoveEncar').animatedinnerfade({
      speed: 1000,
      timeout: 5000,
      type: 'sequence',
      containerheight: '155px',
      containerwidth: '959px',
      animationSpeed: 5000,
      animationtype: 'fade',
      bgFrame: 'none',
      controlBox: 'none',
      displayTitle: 'none',
      translation:  'metadata'
    });
    
    if($('.interstitiel', $dom).length )
    {
      $.ajax({
        url: Util.light2href("main/interstitiel"),
        success: function(data)
        {
          $.facebox.settings.closeImage = Front.options.relative_url_root+'images/facebox_close_bis.png';
          $.facebox.settings.classBody = "interstitiel";
          $.facebox.loading();
          $.facebox(data);
          $("#facebox div.footer").addClass("boutiqueFaceboxClose");
          $("#facebox").css('left', '30%');
          $('#facebox .fixpng').ifixpng();
          if ($.browser.msie && $.browser.version < 7) 
            $("#facebox").bgiframe();
          
          $("#facebox .background_interstitiel div.div_bt_inter").each(function(){
            $(this).hover(function()
            {
              $(this).addClass('hover');
            }, function()
            {
              $(this).removeClass('hover');
            });
          });
        }
      });
    }
    if($('.interstitiel_voeux', $dom).length)
    {
      $.ajax({
        url: Util.light2href("main/interstitiel"),
        success: function(data)
        {
          $.facebox.settings.closeImage = Front.options.relative_url_root+'/images/faceboxCloseDemandeBrochure.png';
          $.facebox.settings.classBody = "interstitiel_voeux";
          $.facebox.loading();
          $("#facebox .popup").addClass("demandeBrochureFacebox");
          if($('.interstitiel_voeux').hasClass('voeux_2012'))
          {
            $("#facebox").css("top",($("#facebox").offset().top-55)+"px" );
            $("#facebox .popup").addClass("voeux_2012");
          }
          $.facebox(data);
          $("#facebox div.footer").addClass("boutiqueFaceboxClose");
          $('#facebox .fixpng').ifixpng();
          if ($.browser.msie && $.browser.version < 7) 
            $("#facebox").bgiframe();
          $('#facebox .boutiqueFaceboxClose .close img').addClass('fright');
          $html_fermer = $('#facebox .boutiqueFaceboxClose .close').html();
          $('#facebox .boutiqueFaceboxClose .close').html($html_fermer + '<span style="display: none; line-height: 20px; padding-right: 10px; float: right;">Fermer la fenêtre</span>');
          
      $('#facebox .carousel_me').cycle({timeout: 5000});
          //Dms.launchMedia($('#facebox .dms_media'));

          /*$("#facebox .background_interstitiel div.div_bt_inter").each(function(){
            $(this).hover(function()
            {
              $(this).addClass('hover');
            }, function()
            {
              $(this).removeClass('hover');
            });
          });*/
        }
      });
    }
    if($('.interstitiel_jcc', $dom).length)
    {
      $.ajax({
        url: Util.light2href("main/interstitiel"),
        success: function(data)
        {
          $.facebox.settings.closeImage = Front.options.relative_url_root+'/images/faceboxCloseDemandeBrochure.png';
          $.facebox.settings.classBody = "interstitiel_jcc";
          $.facebox.loading();
          $("#facebox .popup").addClass("demandeBrochureFacebox");
          if($('.interstitiel_voeux').hasClass('jcc_2012'))
          {
            $("#facebox").css("top",($("#facebox").offset().top-55)+"px" );
            $("#facebox .popup").addClass("jcc_2012");
          }
          $.facebox(data);
          $("#facebox div.footer").addClass("boutiqueFaceboxClose");
          $('#facebox .fixpng').ifixpng();
          if ($.browser.msie && $.browser.version < 7) 
            $("#facebox").bgiframe();
          $('#facebox .boutiqueFaceboxClose .close img').addClass('fright');
          $html_fermer = $('#facebox .boutiqueFaceboxClose .close').html();
          $('#facebox .boutiqueFaceboxClose .close').html($html_fermer + '<span style="display: none; line-height: 20px; padding-right: 10px; float: right;">Fermer la fenêtre</span>');
          
      $('#facebox .carousel_me').cycle({timeout: 5000});
          //Dms.launchMedia($('#facebox .dms_media'));

          /*$("#facebox .background_interstitiel div.div_bt_inter").each(function(){
            $(this).hover(function()
            {
              $(this).addClass('hover');
            }, function()
            {
              $(this).removeClass('hover');
            });
          });*/
        }
      });
    }
    $('.fixpng').ifixpng();
    
    if ($cycle = $("ul.cycle_me", $dom).orNot())
    {
      $cycle.cycle({
        speed:  3000, 
        timeout:  1000
      });
    }
    if ($slideHome = $("ul.contentSlideHome", $dom).orNot())
    {
      $('#dms_layout_parts').append( $("<div>")
        .attr('class', 'background')
        .css({
          backgroundPosition:'center 61px',
          backgroundColor:'transparent',
          backgroundRepeat:'no-repeat',
          position: 'absolute',
          top:0,
          left:0,
          zIndex:1,
          width: '100%', 
          height: '100%'
        }) 
      );
      $slideHome.cycle({
        speed:  500, 
        timeout:  5000,
        before: beforeCycle,
        after: afterCycle,
        prev: '.contentSlideHomeWrapper .pagerForSlideShow .prev',
        next: '.contentSlideHomeWrapper .pagerForSlideShow .next'
      });
      $('.contentTexte .link').each(function(){
        $(this).hover(
        function () {
          $('.noHover', $(this)).hide();
          $('.hidden', $(this)).show();
        }, 
        function () {
          $('.noHover', $(this)).show();
          $('.hidden', $(this)).hide();
        }
      );
        
      });
    }
    $("ul.sousmenu_me li", $dom).hover(
      function () {
        $(this).addClass("hover");
      }, 
      function () {
        $(this).removeClass("hover");
      }
    );
    
    $(".facebox_me a, a.facebox_me", $dom).facebox();
    
    if ($jeu_facebox = $("div.jeu_facebox_wrap").orNot())
    {
      $.facebox($jeu_facebox.html());
      $("#facebox div.footer").addClass("boutiqueFaceboxClose");
      $("#facebox div.boutique_facebox").click(function() {
        location.href = $(this).metadata().url;
      });
    }
    
    if ($("form.validate_me", $dom).orNot() && $("div.inscription", $dom).orNot())
    {
      $.extend($.validator.messages, {
        required: ' ',
        email: " "
      });
    }

    $("form.validate_me", $dom).each(function(){
      $(this).validate();
    });
    
    if ($reservation = $("div.reserv").orNot())
    {
      $reservation.reserv();
    }
    
    if ($form = $("form.datepicker_me").orNot())
    {
      $("input.datepicker", $form).datepicker({
        beforeShowDay: function(date) {
        return [true, self.getDateClass(date)];
        },
        minDate:  1,
        defaultDate: 7,
        dateFormat: 'yy mm dd',
        onSelect: function(date) {
          self.date = new Date(date);
          self.refreshResult();
        }
      });
    }
    
    
    if($contentFormModify = $('div.contentModificationResaSejour').orNot())
    {
      Front.ModificationResaSejour($contentFormModify);
    }
    
    
  };
  
  
  var time;
  this.ModificationResaSejour = function($contentFormModify)
  {
    $('.valueTotalForAjaxBottom').html($('.valueTotalForAjax', $contentFormModify).html());
    $('input, select', $contentFormModify).each(function(){
      $(this).rebind('change', function(){
        $('.classImageAttente').show();
        $('.modificationSejourResa', $contentFormModify).fadeTo(500, 0.1);
        clearTimeout(time);
          time = setTimeout(function(){
          $.ajax({
                url: Util.light2href("fidelio/modifySejour"),
                data:
                {
                ajax_action: true,
                date_arrivee: $('#fidelio_resa_date_arrivee').val(),
                nb_adulte: $('#fidelio_resa_nb_adulte').val(),
                nb_enfant: $('#fidelio_resa_nb_enfant').val(),
                nb_chambre: $('#fidelio_resa_nb_chambre').val(),
                nb_nuits: $('#fidelio_resa_nb_nuits').val(),
                ref_hotel: $('#fidelio_resa_ref_hotel').val(),
                room_type_code: $('#fidelio_resa_room_type_code').val(),
                rate_plan_code: $('#fidelio_resa_rate_plan_code').val(),
                code_promo_corpo_iata: $('#fidelio_resa_code_promo_corpo_iata').val(),
                type_code: $('#fidelio_resa_type_code').val()
                },
                success: function(data)
                {
                $contentFormModify.html(data);
                $('.classImageAttente').hide();
              $('.modificationSejourResa', $contentFormModify).fadeTo(500, 1);
                Front.ModificationResaSejour($contentFormModify);
                }
          });
          }, 1000);
      });
    });
  }
    
  if ($fields = $(".datepick_me").orNot())
  {
    $fields.datepicker();
  }
  
  this.GalleryEspacePresse = function($espacePresseGallery)
  {
    $('img', $espacePresseGallery).each(function(){
      $(this).rebind('click', function(){
        Front.clickGalleryEspacePresse($espacePresseGallery, $(this));
      });
    });
  };
  
  this.clickGalleryEspacePresse = function($espacePresseGallery, $element)
  {
    var $parent = $element.parent();
//    $.facebox("\
//        <div class='contentImage'><img src='"+$parent.metadata().image+"'/></div>\
//        <span class='prevImage'>Prev</span>\
//        <span class='nextImage'>Prev</span>\
//    "
//    );
    $.facebox("\
            <div class='contentImage'><img src='"+$parent.metadata().image+"'/></div>\
        "
        );
      $("#facebox a.close_facebox").one("click", function(){
        $.facebox.close();
      });
      $('#facebox .prevImage').rebind('click',function(){
        $name_image_prev = $parent.metadata().prev_image;
        Front.clickGalleryEspacePresse($espacePresseGallery, $('.'+$name_image_prev, $espacePresseGallery));
      });
      $('#facebox .nextImage').rebind('click',function(){
        $name_image_next = $parent.metadata().next_image;
        Front.clickGalleryEspacePresse($espacePresseGallery, $('.'+$name_image_next, $espacePresseGallery));
      });
  };
  
}

function beforeCycle(currSlideElement, nextSlideElement, options, forwardFlag) {
    $('#dms_layout_parts .background').stop().fadeTo('slow', 0);
};
function afterCycle(currSlideElement, nextSlideElement, options, forwardFlag) {
    var metas = $(nextSlideElement).metadata();
    $('#dms_layout_parts .background').stop().css('background-image', 'url('+metas.image+')').fadeTo('slow', 1);
};

Dms.registerController(Front);
