default_datepicker_options = {
    beforeShow: function( input ) {
        setTimeout(function() {
            $( "<a>", {
                class: "mclose",
                html: "<i class='fa fa-times'>",
                click: function() {
                    $(input).datepicker("hide");
                }
            }).prependTo( "#ui-datepicker-div" );
        }, 1 );
    }
};

function renderCaptcha(){
    grecaptcha.render("recaptcha");
}

function actualizaContadorPrebooking(){
    var horaActual = new Date();
    var diferenciaEnSegundos = (horaActual.getTime() - window.horaPrebookingInicial.getTime()) / 1000;
    var tiempoRestanteActualizado = window.tiempoPrebookingInicial - diferenciaEnSegundos;

    if (tiempoRestanteActualizado <= 0){
        $('.aviso-tiempo-prebooking.hide').removeClass('hide');
        $('.ocultar-tiempo-prebooking:not(.hide)').addClass('hide');
        $('.deshabilitar-tiempo-prebooking').attr('disabled', 'disabled');
        $('.deshabilitar-tiempo-prebooking').attr('onclick', 'return false;');

        if (!window.modalTiempoPrebookingMostrado){
            $('#modal-tiempo-prebooking').modal('show');
            window.modalTiempoPrebookingMostrado = true;
        }
        
    }
}

function inicializaContadorPrebooking(tiempoRestante)
{
    window.tiempoPrebookingInicial = tiempoRestante;
    window.horaPrebookingInicial = new Date();

    if (typeof window.modalTiempoPrebookingMostrado == 'undefined')
    {
        window.modalTiempoPrebookingMostrado = false;
    }

    if (typeof window.intervaloContadorPrebooking != 'undefined' && window.intervaloContadorPrebooking != null)
    {
        clearInterval(window.intervaloContadorPrebooking);
        window.intervaloContadorPrebooking = null;
    }

    actualizaContadorPrebooking();

    window.intervaloContadorPrebooking = setInterval(function(){
        actualizaContadorPrebooking();
    }, 250);
}

function validarContacto(btnSubmit){
    var error = false;
    var form = $(btnSubmit).parents(".ota-t-form");
    var elementos = $(form).find('.requerido');
    var aviso = $(form).find('#condiciones').length == $(form).find('#condiciones:checked').length;
    var avisoGeneral = $(form).find('#general_condiciones').length == $(form).find('#general_condiciones:checked').length;
    var url = $(form).data('url');
    elementos.each(function (i){
        var element = $(elementos[i]);
        if(element.val().length == 0){
            error = true;
            erroneoInput(element);
        }else{
            corregirInput(element);
            switch(element.attr('name')){
                case 'email':
                    if(!validarEmail(element.val())){
                        error = true;
                        erroneoInput(element);
                    }
                    break;
            }
        }
    });
    if(!aviso || !avisoGeneral){
        error = true
    }
    var $captcha =  $(form).find( '#recaptcha' );
    var response = grecaptcha.getResponse();  
    if (response.length === 0) {
        error = true;		
    }
    if(error){        
        alert("Por favor, acepte la política de privacidad y rellene correctamente los campos marcados con *.");
    }else{

        simpleloading('show');

        var data = $(form).find(':input').serialize();
        console.log(data);

        $.ajax({
            type: 'POST',
            url: url,
            data: data,
            success: function(responseUrl){
                console.log(responseUrl);
                window.location.href = responseUrl;
            },
            error: function(responseUrl){
                console.log(responseUrl.responseText);
                window.location.href = responseUrl.responseText;
            }
        });
    }

    return false;
}

function corregirInput(obj){
    obj.removeClass('erroneo');
    //$('#'+obj.id).removeClass('erroneo');
}

function erroneoInput(obj){
    obj.addClass('erroneo');
}

function validarEmail(mail){
    var er = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
    if(typeof(mail) == "string"){
        if(er.test(mail)){
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

function applyCustomTextClients() {    
    if (typeof listaTraduccionesCliente != 'undefined') {        
        idiomaActual = "es";
        listaTraduccionesCliente.forEach(function (traduccion) {
            traduccion.idiomas.forEach( function (idioma) {
                if (idioma.codigo_idioma == idiomaActual) {                   
                    if ($(traduccion.selector).is("input")) {
                        $(traduccion.selector).val(idioma.valor);
                    } else {
                        $(traduccion.selector).html(idioma.valor);
                    }                                    
                    return false;
                }
            });
        });
    }
    return false;
};


function scrollTo(selector){
	var ypos = $('html,body').scrollTop();
	if (!$(selector).length){
		selector="#buscador";
    }
    if ($(selector).length>0){
        var new_ypos = $(selector).offset().top;
        var diff = Math.abs(ypos-new_ypos);

        var tiempo = diff*2;

        if(tiempo>3000){
            tiempo = 3000;
        }

        $('html,body').animate({
            scrollTop: $(selector).offset().top
        }, tiempo, "swing");
    }
}

function isOnScreen(element)
{
    var curPos = element.offset();
    var curTop = curPos.top;
    var screenHeight = $(window).height();
    var ypos = $('html,body').scrollTop();
    return (curTop > ypos && curTop < ypos + screenHeight ) ? true : false;
}

function scrollBottom(selector){
    var ypos = $('html,body').scrollTop();
    var screenHeight = $(window).height();
	if (!$(selector).length){
		selector="#buscador";
    }
    
    if($(selector).length > 0 && !isOnScreen($(selector))){
        var new_ypos = $(selector).offset().top - screenHeight + 50;
        var diff = Math.abs(ypos-new_ypos);
    
        var tiempo = diff*2;
    
        if(tiempo>3000){
            tiempo = 3000;
        }
    
        $('html,body').animate({
            scrollTop: $(selector).offset().top - screenHeight + 50
        }, tiempo, "swing");
    }
}

function mostrarMensaje(titulo, mensaje)
{       
    $('#infoServicio .modal-header').find("h3").html(titulo);
    $('#infoServicio .modal-body').html('<p>'+mensaje+'</p>');
    $('#infoServicio').modal('show')
}  

function mostrarModal(url)
{       
    $.get(url, function( data ) {
        $('#infoServicio .modal-header').find("h3").hide(); 
        $('#infoServicio .modal-body').html(data);        
        $('#infoServicio').modal('show');                
    });             
}

function simpleloading(action){
	if(typeof action == 'undefined'){
		if($('#simple-loading').hasClass('hide')){
			$('#simple-loading .blackbackground').css('opacity','0');
			$('#simple-loading .loading-image').css('opacity','0');

			$('#simple-loading').removeClass('hide');

			$('#simple-loading .blackbackground').animate({opacity: 0.4},500);
            $('#simple-loading .loading-image').animate({opacity: 1},500);
            $('#simple-loading').animate({opacity: 1},500);
		}else{
			$('#simple-loading .blackbackground').css('opacity','0.4');
			$('#simple-loading .loading-image').css('opacity','1');

            $('#simple-loading .blackbackground').animate({opacity: 0},500);
            $('#simple-loading .loading-image').animate({opacity: 0},500);
			$('#simple-loading').animate({opacity: 0},500, function (){ $('#simple-loading').addClass('hide'); });
		}
	}else if(action == 'show'){
		if($('#simple-loading').hasClass('hide')){
			$('#simple-loading .blackbackground').css('opacity','0');
			$('#simple-loading .loading-image').css('opacity','0');

			$('#simple-loading').removeClass('hide');

			$('#simple-loading .blackbackground').animate({opacity: 0.4},500);
            $('#simple-loading .loading-image').animate({opacity: 1},500);
            $('#simple-loading').animate({opacity: 1},500);
		}
	}else if(action == 'hide'){
		if(!$('#simple-loading').hasClass('hide')){
			$('#simple-loading .blackbackground').css('opacity','0.4');
			$('#simple-loading .loading-image').css('opacity','1');

            $('#simple-loading .blackbackground').animate({opacity: 0},500);
            $('#simple-loading .loading-image').animate({opacity: 0},500);
			$('#simple-loading').animate({opacity: 0},500, function (){ $('#simple-loading').addClass('hide'); });
		}
	}
}

function RemoveAccents(text){
    return text.replace('Á','A').replace('É','E').replace('Í','I').replace('Ó','O').replace('Ú','U').replace('á','a').replace('é','e').replace('í','i').replace('ó','o').replace('ú','u');
};

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

var Swipe = function () {
    function Swipe(element) {
        _classCallCheck(this, Swipe);

        this.xDown = null;
        this.yDown = null;
        this.element = typeof element === 'string' ? document.querySelector(element) : element;

        this.element.addEventListener('touchstart', function (evt) {
            this.xDown = evt.touches[0].clientX;
            this.yDown = evt.touches[0].clientY;
        }.bind(this), {passive: true});
    }

    _createClass(Swipe, [{
        key: 'onLeft',
        value: function onLeft(callback) {
            this.onLeft = callback;

            return this;
        }
    }, {
        key: 'onRight',
        value: function onRight(callback) {
            this.onRight = callback;

            return this;
        }
    }, {
        key: 'onUp',
        value: function onUp(callback) {
            this.onUp = callback;

            return this;
        }
    }, {
        key: 'onDown',
        value: function onDown(callback) {
            this.onDown = callback;

            return this;
        }
    }, {
        key: 'handleTouchMove',
        value: function handleTouchMove(evt) {
            if (!this.xDown || !this.yDown) {
                return;
            }

            var xUp = evt.touches[0].clientX;
            var yUp = evt.touches[0].clientY;

            this.xDiff = this.xDown - xUp;
            this.yDiff = this.yDown - yUp;

            if (Math.abs(this.xDiff) > Math.abs(this.yDiff)) {
                // Most significant.
                if (this.xDiff > 0) {
                    this.onLeft();
                } else {
                    this.onRight();
                }
            } else {
                if (this.yDiff > 0) {
                    this.onUp();
                } else {
                    this.onDown();
                }
            }

            // Reset values.
            this.xDown = null;
            this.yDown = null;
        }
    }, {
        key: 'run',
        value: function run() {
            this.element.addEventListener('touchmove', function (evt) {
                this.handleTouchMove(evt); //.bind(this);
            }.bind(this), {passive: true});
        }
    }]);

    return Swipe;
}();

window.mobileAndTabletcheck = function() {
    var check = false;
    (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera);
    return check;
};

window.isDesktopSized = function(){
    return ($(window).width() >= 980);
}

$( document ).ajaxComplete(function( event, request, settings ) {
    applyCustomTextClients();
});

$(document).ready(function(){        
    $.datepicker.setDefaults($.datepicker.regional[window.language]);
    $('.datepicker').datepicker(default_datepicker_options);			
    $('document, body').on('click','a.no-action', function (event){
        if(typeof event == 'object' && typeof event.preventDefault == 'function'){
            event.preventDefault();
        }

        return false;
    });
    $('document, body').on('click','input.select', function (e){
        var t =  $(e.target);
        if(t.parent().find('ul.ui-autocomplete:visible').length > 0){
            t.blur();
        }else{
            t.autocomplete( "search", "" );
        }

    });
    $('input, textarea').placeholder();
    $('document, body').on('focus','.mclose', function (e){
        $(e.target).blur();
    });		
    
    $('body').on('click', '.sim_ratio', function (event){
        var div = $(event.target);
        var input = div.find('input');

        $('input[name="' + input.attr('name') + '"]').attr('checked', false).trigger('change');

        if(!div.hasClass('active'))
        {
            div.addClass('active');

            input.attr('checked', true);
        }

        input.trigger('change');
    });

    $('body').on('change', '.sim_ratio input[type="radio"]', function (event){
        var input = $(event.target);
        var div = input.parent();

        if(div.hasClass('active') && !(input.is( ":checked" )))
        {
            div.removeClass('active');
        }
        else if(div.hasClass('active') == false && (input.is( ":checked" )))
        {
            div.addClass('active');
        }
    });

    $("img").on("error", function () {
        console.log($(this).attr("src"));
        $(this).attr("src", "/img/tema/imagen-no-disponible.png");
    });

    $("body").on("click", '.open-modal', function ( event ){           
        mostrarModal($(this).attr("href"));            
        return false;                  
    });       

    $('.dropdown[data-hover="true"]').mouseenter(function(){
        if (window.isDesktopSized()){
            $(this).siblings(".dropdown.open").removeClass("open");
            $(this).addClass("open");
        }
    });

    $('.dropdown-menu .dropdown[data-hover="true"]').mouseleave(function(){
        if (window.isDesktopSized()){
            $(this).removeClass("open");
        }
    });

    $(".destinos_menu").mouseover(function(){
        $('#destinations_tab').stop( true, true ).slideDown();
        $(this).addClass('active');
    });

    $( "#destinations_tab").mouseleave(function (){
        $(this).delay(500).slideUp();
        $(".destinos_menu").removeClass('active');
    });

    $( "#destinations_tab" ).tabs({
        event: "mouseover"
    });

    $( "#destinations_tab > ul li a" ).click(function() {
        location.href = $(this).data("url");
    });

    $("body").on("click", ".ver-tiempos-ofi" ,function() {
        var contenedor = $(this).data("contenedor");
        $(contenedor).find('#warning-errors').modal('show')
    });

    $("#modo-no-cache").hide();    

    if (localStorage.getItem('modoNoCache') == 'true'){            
        $("#modo-no-cache").show();
    }    
    
    $('.red-social-modal').on('click',  function ( event ){           
        mostrarModal($(this).attr("href"));            
        return false;                  
    });                 

    applyCustomTextClients();

    $('.modal').on('shown', function() {
        if ($(this).find("#recaptcha").length>0){
            grecaptcha.render($(this).find("#recaptcha")[0]);
        }
    }); 

    jQuery('li.dropdown').hover(function() {
        jQuery(this).find('.dropdown-menu').stop(true, true).delay(200).fadeIn();
    }, function() {
        jQuery(this).find('.dropdown-menu').stop(true, true).delay(200).fadeOut();
    });

    $(document).on('select2-close', "#destinonombre, #destination, #origin", function (e) {
        $("#select2-drop-mask").show();
        setTimeout(function(){
            $("#select2-drop-mask").hide();
        }, 300);
    });
    var url=window.location.href;
    if (url.includes("#destinations_tab") && $(".destinos_menu").length>0){
        
        setTimeout(function(){$(".destinos_menu").mouseover(); }, 500);
    }

    // Tooltips & PopOver
    $('[data-toggle="popover"]').popover();
	$('[data-toggle="tooltip"]').tooltip();
});


OfiLoadingLayout = function(){
	this.enabled = false;
	this.destinationId = null;
	this.text = null;
	this.image = null;

	this.set = function(image, text, destination = -1){
		this.enabled = true;
		this.destinationId = destination;
		this.text = text;
		this.image = image;
    }
    
    this.show = function(layoutId){
        initLoadingLayout('Buscando', '1', '', 'es', layoutId, {
            'Titulo': this.text, 
            'Imagen': this.image
        });

        $(`#${layoutId}`).removeClass('hide');
    }

    this.hide = function(layoutId){
        $(`#${layoutId}`).addClass('hide');
    }

}

ofiLoadingLayout = new OfiLoadingLayout();

window._$ = $;