var $imagesPath = '/template/image/background';
var timeout         = 2500;
var closetimer      = 0;
var ddmenuitem      = 0;
var over_menu = false;

function jsddm_open() {
    over_menu = true;
    jsddm_canceltimer();
    jsddm_close();
    ddmenuitem = $(this).find('ul').eq(0).css('visibility', 'visible');
}

function jsddm_close(){
    if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');
}

function jsddm_timer() {
    over_menu = false;
    closetimer = window.setTimeout(jsddm_close, timeout);
}

function jsddm_canceltimer() {
    if (closetimer){
        window.clearTimeout(closetimer);
        closetimer = null;
    }
}

function checkReservationFields_repartitionError(nb_adults, nb_children, $tr_reservation_step1_nb_rooms){
    var nb_persons = nb_adults + nb_children;

    var nb_adults_selected = 0;
    var nb_children_selected = 0;

    $tr_reservation_step1_nb_rooms.find('td:first-child div.room span.nb_adults select').each(function(){
        nb_adults_selected += parseInt($(this).val(), 10);
    });

    $tr_reservation_step1_nb_rooms.find('td:first-child div.room span.nb_children select').each(function(){
        nb_children_selected += parseInt($(this).val(), 10);
    });

    var nb_persons_selected = nb_adults_selected + nb_children_selected;

    var good_nb_persons = (nb_persons_selected == nb_persons);
    var good_nb_adults = (nb_adults_selected == nb_adults);
    var good_nb_children = (nb_children_selected == nb_children);

    if (!good_nb_persons || !good_nb_adults || !good_nb_children){
        $('#tr_reservation_step1_nb_rooms_error').css('visibility', 'visible');
    } else {
        $('#tr_reservation_step1_nb_rooms_error').css('visibility', 'hidden');
    }
}

function checkReservationFields_inner($nb_adults, $nb_children, $idtype){
    var nb_adults = parseInt($nb_adults.val(),10);
    var nb_children = parseInt($nb_children.val(),10);
    var idtype = parseInt($idtype.val(),10);

    var $tr_reservation_step1_children_ages = $('#tr_reservation_step1_children_ages');
    $tr_reservation_step1_children_ages.find('td:first-child select').remove();

    if (nb_children>0){
        for (var i=1; i<=nb_children; i++){
            var $select = $('<select/>')
            .attr('name', 'AGES_ENFANTS['+(i-1)+']')
            .attr('id', 'reservation_step1_children_ages_'+i)
            .css('display', 'block');

            for(var j=2; j<=12; j++){
                var $option = $('<option/>').val(j);
                $option.html(j);
                $select.append($option);
            }

            if (i>1){
                $select.css('margin-left', '135px');
            }

            $tr_reservation_step1_children_ages.find('td:first-child').append($select);
        }

        $tr_reservation_step1_children_ages.show();
    } else{
        $tr_reservation_step1_children_ages.hide();
    }

    var $tr_reservation_step1_nb_rooms = $('#tr_reservation_step1_nb_rooms');
    $tr_reservation_step1_nb_rooms.find('td:first-child div.room').remove();

    if (idtype==1 && (nb_adults >= 4 || (nb_adults>=2 && nb_children>=2))){
        $tr_reservation_step1_nb_rooms.show();
    } else{
        $tr_reservation_step1_nb_rooms.hide();
    }

    var $nb_rooms = $('#reservation_step1_nb_rooms');
    $nb_rooms.change(function(){
        $tr_reservation_step1_nb_rooms.find('td:first-child div.room').remove();

        var nb_rooms = $nb_rooms.val();
        for(var i=1; i<=nb_rooms; i++){
            var $div = $('<div class="room"/>');
            $div.append($('<span/>')
            .css('margin-left', '50px')
            .append('Chambre '+i));

            var $adults_select = $('<select/>')
            .attr('name', 'DETAILS_NB_ADULTES['+(i-1)+']');

            for(var j=0; j<10; j++){
                $adults_select.append($('<option/>').val(j).html(j));
            }

            $adults_select.change(function(){
                checkReservationFields_repartitionError(nb_adults, nb_children, $tr_reservation_step1_nb_rooms);
            });

            $div.append($('<span class="nb_adults"/>')
            .css('margin-left', '50px')
            .html('Adultes')
            .append($adults_select));

            if (nb_children>0){
                var $children_select = $('<select/>')
                .attr('name', 'DETAILS_NB_ENFANTS['+(i-1)+']');

                for(var k=0; k<10; k++){
                    $children_select.append($('<option/>').val(k).html(k));
                }

                $children_select.change(function(){
                    checkReservationFields_repartitionError(nb_adults, nb_children, $tr_reservation_step1_nb_rooms);
                });

                $div.append($('<span class="nb_children"/>')
                .css('margin-left', '5px')
                .html('Enfants')
                .append($children_select));
            }

            $tr_reservation_step1_nb_rooms.find('td:first-child').append($div);
        }

        applyScrollBar();
    });
    $nb_rooms.change();

    applyScrollBar();
}

function checkReservationFields(){
    var $nb_adults = $('#reservation_step1_nb_adults');
    var $nb_children = $('#reservation_step1_nb_children');
    var $idtype = $('#resa_id_type');

    $nb_adults.change(function(){
        checkReservationFields_inner($nb_adults, $nb_children, $idtype); 
    });

    $idtype.change(function(){
        checkReservationFields_inner($nb_adults, $nb_children, $idtype); 
    });

    $nb_children.change(function(){
        checkReservationFields_inner($nb_adults, $nb_children, $idtype); 
    });

    checkReservationFields_inner($nb_adults, $nb_children, $idtype); 
}

function applyScrollBar(offsetScroll){

    var $isScrollable = isScrollable($('#left_element'));
    if (contentNeedScrollbar()) {
        if ($isScrollable) {
            $('#left_element').tinyscrollbar_updatenoscroll();
        } else {
            $('#left_element').width($('#left_element').width() - 5).scrollbar($imagesPath);
        }

        if(offsetScroll){
            $('#left_element').tinyscrollbar_scrollTo(offsetScroll);
        }

    } else if ($isScrollable) {
        $('#left_element').remove_scrollbar();
    }
}

function resizeMain()
{
    var width = parseInt($(window).outerWidth(true));
    var height = $(window).height() - $("#header").outerHeight(true) - $("#footer").outerHeight(true);   

    var height_origin = height;  // rajout pour bug

    var right_element_h = $("#right_element").height();


    width = (width >= 1650) ? 1650 : width; // max-width
    //height = (height < right_element_h)? right_element_h : height;

    if(height < 350){   // rajout pour bug
        height = 350;
    } /*else {
        if(height < right_element_h){
            height = right_element_h;
        }
    }*/

    // Resize spécial pour chambres, accueil et espace pro
    if($("#middle_content").hasClass('chambre') || $("#middle_content").hasClass('home_layout')){
        if(height > 350){

            if($.browser.msie ){
                height = height + 2;
                if($.browser.version.slice(0,1) == "7"){
                    height = height + 21;
                }
            }

            $(".chambre #right_element").height(height);
            $(".home_layout #right_element").height(height - 23 - 40); // ?
            $('html,body').css('overflow','hidden');

        }
        else{
            $(".chambre #right_element").height(350);
            $(".home_layout #right_element").height(328); // ?
            $('html,body').css('overflow','auto');
        }
        if($.browser.msie ){
            if($.browser.version.slice(0,1) == "7"){
                $(".home_layout #right_element").css('top', '30px');
            }
        }
    }
    else if($("#middle_content").hasClass('reservation_step5')){
        // Damn IE7
        if($.browser.msie ){
            if($.browser.version.slice(0,1) != "7"){
                $("#left_element").css('margin-top', '20px');
            }

            height = height - 43;
        }
        else if($.browser.mozilla){
            height = height - 39;
        }
        else if($.browser.webkit){
            $("#left_element").css('margin-top', '20px');
            height = height - 50;
        }
    }


    $("#main").css("width", width+'px');
    $("#left_element").height(height);


    /*** Rajout pour bug ***/
    if(width >= 1050){
        $('#main').css({'max-width':'1650px'});
        if(height_origin > 350){
            $('html,body').css('overflow','hidden');
        } else {
            $('html,body').css('overflow','auto');
        }
    }
    else{
        $('#main').width(1050);
        $('html,body').css('overflow','auto');    
    }
    /************************/


    $diapo = $('#diaporama');
    $diapo.find('img').each(function(){
        resizeImage($(this), $diapo);
    });
    applyScrollBar();

}

 
function resizeImage($image, $container)
{

  var image_width = $image.width();
  var image_height = $image.height();

  var over = image_width / image_height;
  var under = image_height / image_width;

  var body_width = $container.width();
  var body_height = $container.height();

  if (body_width / body_height >= over) {
    $image.css({
      'width': body_width + 'px',
      'height': Math.ceil(under * body_width) + 'px',
      'left': '0px',
      'top': Math.abs((under * body_width) - body_height) / -2 + 'px'
    });
  }

  else {
    $image.css({
      'width': Math.ceil(over * body_height) + 'px',
      'height': body_height + 'px',
      'top': '0px',
      'left': Math.abs((over * body_height) - body_width) / -2 + 'px'
    });
  }
}
function resizeTitles(){
    $('.recherche .offre h1').each(function(){
        var text = $(this).html();
        $(this).html("<span>" + text + "</span>");

        var l = $(this).find('span').width() + 10;
        $(this).css('background-position', l + "px 12px");
    });
}

function initDatepickers()
{
    $.datepicker.setDefaults($.datepicker.regional[ar_txt['datepicker_lang']]);

    $('#booking_date_arrival').datepicker();
    $('#booking_date_arrival_trigger').click(function(){
        $('#booking_date_arrival').datepicker('show');
    });

    $('#booking_date_departure').datepicker();
    $('#booking_date_departure_trigger').click(function(){
        $('#booking_date_departure').datepicker('show');
    });

    $('#reservation_step1_arrival').datepicker({ dateFormat: 'ddmmyy' });
    $('#reservation_step1_arrival_trigger').click(function(){
        $('#reservation_step1_arrival').datepicker('show');
    });

    $('#reservation_step1_departure').datepicker({ dateFormat: 'ddmmyy' });
    $('#reservation_step1_departure_trigger').click(function(){
        $('#reservation_step1_departure').datepicker('show');
    });

    /*$('#contact_arrival_day').datepicker();
    $('#contact_arrival_day_trigger').click(function(){
    $('#contact_arrival_day').datepicker('show');
    });

    $('#contact_departure_day').datepicker();
    $('#contact_departure_day_trigger').click(function(){
    $('#contact_departure_day').datepicker('show');
    });*/
    $('#ARRIVEE').datepicker({ dateFormat: 'dd/mm/yy' });
    $('#ARRIVEE_trigger').click(function(){
        $('#ARRIVEE').datepicker('show');
    });

    $('#DEPART').datepicker({ dateFormat: 'dd/mm/yy' });
    $('#DEPART_trigger').click(function(){
        $('#DEPART').datepicker('show');
    });
}

function decorateFileInputs(){
    $(document).find('input[type=file]').each(function(){
        var $input = $(this);

        var $inputText = $('<input class="if_di" type="text" readonly="readonly" style="margin-right:5px"/>');
        var $link = $('<a href="#" class="if_btn bouton_blanc">Parcourir</a>');

        $inputText.attr('name', $input.attr('name'));
        $input.removeAttr('name');

        $link.click(function(){
            $input.click();
        });

        $input.change(function(){
            $inputText.attr('value', $(this).attr('value'));
        });

        var $wrap = $('<div class="if_wrapper">');
        $wrap.append($inputText).append($link);

        $input.css('width', '0').parent().append($wrap);   

        $wrap.append($input);
    }); 
}

function getContentHeight()
{
    var $contentHeight = parseInt($('#left_element_content').outerHeight(true),10);

    if ($("#middle_content").hasClass('reservation_step3')){
        $contentHeight= parseInt($('#line1').outerHeight(true),10) + parseInt($('#line2').outerHeight(true),10);
    }
    return $contentHeight;
}

function contentNeedScrollbar()
{
    var $contentHeight = getContentHeight();
    var $maxHeight = parseInt($('#left_element').outerHeight(true),10);

    //alert('$contentHeight='+$contentHeight+', $maxHeight='+$maxHeight);

    return $contentHeight > $maxHeight;
}

function isScrollable($elem)
{
    return $elem.data('tsb') != null;
}

function checkFormElement($e) {
    //    var val = $e.val().trim();
    var val = $e.val();
    var holderVal = $e.attr('holder');
    if (!val || val == holderVal){
        $e.addClass('error');
        return false;
    }

    $e.removeClass('error');

    return true;
}

function date2Time($dateStr) {
    var $date = new Date();
    var $spDate = $dateStr.split('/');

    $date.setDate($spDate[0]);
    $date.setMonth($spDate[1] - 1);
    $date.setFullYear($spDate[2]);

    return $date.getTime();
}

function date2Timejjmmaaaa($dateStr) {
    var $date = new Date();

    $date.setDate($dateStr.substring(0,2));
    $date.setMonth($dateStr.substring(2,4) - 1);
    $date.setFullYear($dateStr.substring(4));

    return $date.getTime();
}

function submitForm(formName) {
    var $isValid = true;

    var $form = $('form[name='+formName+']');
    if (!$form) return;


    $form.find('input.required, select.required, textarea.required').each(function(){
        if (!checkFormElement($(this)) && $isValid) {
            $isValid = false;
        }
    });

    /*
    *  vérifications spécifiques selon le formulaire testé
    */
    if (formName == 'contact') {
        var $now = new Date();
        var $nowTime = $now.getTime();
        var $arrivalTime = date2Time($('#ARRIVEE').val());
        var $departureTime = date2Time($('#DEPART').val());
        if ($arrivalTime <= $nowTime) {
            $isValid = false;
            alert(ar_txt['contact_err_date_arr']);
        } else if ($arrivalTime > $departureTime) {
            $isValid = false;
            alert(ar_txt['contact_err_date_dep']);
        }
        if(!$('#CGV').is(':checked')){
            $isValid = false;
            alert(ar_txt['contact_err_cgv']);
        }
    }

    if (formName == 'register') {
        if(!$('#CGV_OK').is(':checked')){
            $isValid = false;
            alert(ar_txt['contact_err_cgv']);
        }
    }

    if ($isValid && formName == 'booking') {
        var $now = new Date();
        var $nowTime = $now.getTime();
        var $arrivalTime = date2Timejjmmaaaa($('#booking_date_arrival').val());
        var $departureTime = date2Timejjmmaaaa($('#booking_date_departure').val());
        if ($arrivalTime <= $nowTime) {
            $isValid = false;
            alert(ar_txt['contact_err_date_arr']);
        } else if ($arrivalTime > $departureTime) {
            $isValid = false;
            alert(ar_txt['contact_err_date_dep']);
        }
    }

    if ($isValid && formName == 'form_recherche') {
        var $now = new Date();
        var $nowTime = $now.getTime();
        var $arrivalTime = date2Timejjmmaaaa($('#reservation_step1_arrival').val());
        var $departureTime = date2Timejjmmaaaa($('#reservation_step1_departure').val());
        if ($arrivalTime <= $nowTime) {
            $isValid = false;
            alert(ar_txt['contact_err_date_arr']);
        } else if ($arrivalTime > $departureTime) {
            $isValid = false;
            alert(ar_txt['contact_err_date_dep']);
        }
    }

    if ($isValid) {
        if (formName=='booking' || formName=='form_recherche' ||
        formName=='register' || formName=='login' ||
        formName=='login2') {
            if ($form) {
                $form.submit();
            }
        } else {
            $.ajax({  
                type: "POST",
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function(response) {  
                    $('#left_element_content').html(response);
                    $('#left_element').remove_scrollbar();
                }  
            });
        }
    }
}

function updateTemperature($nbTentatives) {
    if (!$nbTentatives) {
        $nbTentatives = 0;
    }
    if ($nbTentatives == 5) {
        return;
    }
    setTimeout(function(){
        var $temperature = $('#temperature_tmp').find('div.weatherTemp').html();
        if (!$temperature){
            updateTemperature($nbTentatives + 1);
        } else {
            $('#temperature').html($temperature);
        }
    },500);
}

var ar_extensions = ['doc','pdf','txt','docx', 'odt'];

function verify_extension(docname){
    var ar_doc = docname.split('.');
    var ext_doc = ar_doc.pop();

    var ext_allowed = false;
    for(var i=0 ; i < ar_extensions.length ; i++){
        if(ar_extensions[i] == ext_doc) ext_allowed = true;
    }

    return ext_allowed;
}

// Redimensionnement des blocs de droite (modèle page chambre)
function set_bg_titles(){
    $('.title_right_elt').each(function(){
        var w_right_elt = $(this).width();
        var w_h1 = $(this).find('h1').outerWidth(true);
        $(this).find('p').each(function(){
            var w_free = w_right_elt - w_h1;
            var w_p = Math.floor((w_free - 34) / 2); // +2
            if(w_p > 0){
                $(this).css('width', w_p);
            } else {
                //$(this).css({'background': 'none', 'margin': '0px !important', 'width': w_free / 2});
                $(this).parent().parent().css({'width':'100%'}).find('h1').parent().css({'margin':'auto', 'float':'none'});
                $(this).parent().remove();
            }
        });
    });
}

function check_fields_required(form){
    var valid = true;

    form.find('input.required, select.required, textarea.required').each(function(){
        $(this).css({"background-color": "#fff", 'color': '#767676'});
        if(typeof($(this).attr('holder')) !== "undefined"){
            if($(this).val() == '' || $(this).val() == $(this).attr('holder')){
                $(this).css({"background-color": "#f00", 'color': '#fff'});
                valid = false;
            }
        } else {
            if($(this).val() == ''){
                $(this).css({"background-color": "#f00", 'color': '#fff'});
                valid = false;
            }
        }
    });
    return valid;
}


var right_elt_h_origin = 0;

$(document).ready(function(){	
    right_elt_h_origin = $("#right_element").height();

    // Menu
    $('#menu > li').bind('mouseover', jsddm_open);
    $('#menu > li').bind('mouseout',  jsddm_timer);

    $("#booking_submit_button").click(function(){
        $("#booking_form").submit();
    });   

    $("#newsletter_form_trigger").click(function(){
        $("form#newsletter_form").submit();
    });

    $('#myGallery').gallery(); 
    $('#menuAccordeon').accordeon();



    $('#submit_contact').click(function() {
        submitForm('contact');
        return false;
    });


    $('#callmeback_submit').click(function() {
        var $form = $('#callmeback_form');

        var valid = check_fields_required($form);

        var $name = $("input#callmeback_name");
        var $phone = $("input#callmeback_phone");
        var $country = $("select#callmeback_country");

        if(valid){
            var dataString = 'name='+ $name.val() + '&phone=' + $phone.val() + '&country=' + $country.val() + '&lang=' + $("input#callmeback_lang").val() + '&page=' + $("input#callmeback_page").val() + '&ip=' + $("input#callmeback_ip").val();  
            $.ajax({  
                type: "POST",
                url: $form.attr('action'),
                data: dataString,
                success: function(response) {  
                    $form.hide().parent('td')
                    .append('<span>' + response + '</span>')
                    .hide()
                    .fadeIn(1500);
                }  
            });
        }
        return false;
    });


    // Formulaire inscription newsletter
    $('#newsletter_form').click(function(){
        var $form = $(this).parents('form');
        var valid = check_fields_required($form);

        if(valid){
            $.ajax({  
                type: "POST",
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function(response) {  
                    $form.html('<p style="padding:10px">'+response+'</p>');
                }  
            });
        }
    });


    // Clic sur le bouton postuler de la page recrutement
    $('.submit_offre').click(function(){
        var $form = $(this).parents('form');
        var valid = check_fields_required($form);

        var $lm = $form.find('#lm');
        var $cv = $form.find('#cv');

        if(valid){
            if(!verify_extension($lm.val()))      alert(ar_txt['rh_err_lm']);
            else if(!verify_extension($cv.val())) alert(ar_txt['rh_err_cv']);
            else                                  $form.submit();
        }
    });


    // Clic sur un secteur (bouton blanc) dans la page recrutement
    $('.filtre').click(function(){
        var secteurs = $(this).attr('class');
        var tab_class = secteurs.split(' ');
        $('.filtre').css('font-weight', 'normal');
        if(tab_class.length > 2){
            var filtre = tab_class[2];
            $('.offre').each(function(){
                if($(this).hasClass(filtre)) $(this).show();
                else                         $(this).hide();
            });
        } else {
            $('.offre').each(function(){
                $(this).show();
            });
        }
        $(this).css('font-weight', 'bold');
        applyScrollBar();
        return false;
    });


    //decorateFileInputs();
    initDatepickers();    

    //$('#offres div.offre').first().css('border-top', '0');

    if (!$.browser.webkit) {
        if ($("#middle_content").hasClass('plan-acces') || $("#middle_content").hasClass('communiques') ){
            var h = $('#left_element_content').outerHeight(true);
            $('#left_element_content').height(h);
        }
    }


    $('#temperature_tmp').weatherfeed(['FRXX0246'], {
        image:false,	
        highlow:false,
        wind:false,
        link:false,
        showerror:false
    });

    /*
    $('.recherche a.details_btn').each(function(){
    $(this).click(function(){
    var $relativeParent = $(this).parents('div.offre').first();
    var $relativeParentPosition = $relativeParent.position();

    var $btnPosition = $(this).position();
    $btnPosition.top += $relativeParentPosition.top;
    $btnPosition.left += $relativeParentPosition.left;

    //alert($btnPosition.top);

    var $parent = $(this).parents('div.black_bg').first();
    var $detailsDiv = $parent.find('div.details');
    if (!$detailsDiv.is(':visible')){
    $detailsDiv.slideDown("slow", function(){
    applyScrollBar();
    //$('#left_element').scrollTop($btnPosition.top);
    });
    } else {
    $detailsDiv.slideUp("slow", function(){
    applyScrollBar();
    //$('#left_element').scrollTop($btnPosition.top);
    });
    }
    });
    });

    updateTemperature();

    resizeMain();  */

    /* -- XAVIER PREND CE QUI VAS BIEN DANS LE CODE SUIVANT ENVOYE PAR 3C */
    $('.recherche a.details_btn').each(function(){
        $(this).click(function(){
            var $btn = $(this);
            var top = $btn.closest('div.offre').position().top;

            var $parent = $(this).parents('div.black_bg').first();
            var $detailsDiv = $parent.find('div.details');
            if (!$detailsDiv.is(':visible')){
                $detailsDiv.slideDown("slow", function(){
                    applyScrollBar(top);
                });
            } else {
                $detailsDiv.slideUp("slow", function(){
                    applyScrollBar(top);
                });
            }
        });
    });

    updateTemperature();
    checkReservationFields();

    //resizeMain();   
    /*-- FIN */ 

    if($.browser.webkit){
        setTimeout(function(){
            resizeMain();
            return;
        }, 300);
    } else {
        resizeMain();
    }

    setInterval(function(){
        applyScrollBar();
        resizeTitles();
    }, 500);

    /*setTimeout(function(){
    resizeTitles();
    }, 300);*/

    $(window).resize(function() {
        if(this.resizeTO) clearTimeout(this.resizeTO);
        this.resizeTO = setTimeout(function() {
            $(this).trigger('resizeEnd');
        }, 300);
    });

    $(window).bind('resizeEnd', function() {
        resizeMain();
    });

}).click(function(){
    if(!over_menu) jsddm_close();
});

$(document).load(function(){    
    if ($.browser.webkit) {
        if ($("#middle_content").hasClass('plan-acces') || $("#middle_content").hasClass('communiques') ){
            var h = $('#left_element_content').outerHeight(true);
            $('#left_element_content').height(h);
        }
    }
});
