const navText = [
'',
''
];
class Web {
static init() {
Web.initDynamicBG();
ClassVehiculos.init();
$(document).ready(function (e) {
$("html").addClass("loaded");
$('.selectpicker').on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) {
if (isSelected === null)
return;
$(this).removeClass("error");
});
const btnSubir = $("#btn-subir");
let toScroll = null;
$(window).scroll(function () {
let scrollPosition = $(window).scrollTop();
if (scrollPosition > 300) {
clearTimeout(toScroll);
toScroll = setTimeout(function () {
btnSubir.removeClass("d-none");
}, 100);
} else {
clearTimeout(toScroll);
btnSubir.addClass("d-none");
}
btnSubir.click(function () {
clearTimeout(toScroll);
window.scrollTo({top: 0, behavior: 'smooth'});
$(this).addClass("d-none");
});
});
new WOW(
{
boxClass: "title-animation",
offset: 50,
callback: function (box) {
$(box).addClass("animate");
}
}
).init();
});
}
static initInicio() {
}
static initVenderCoche() {
let validacionVehiculo;
let validacionContacto;
let bloqueEspere = null;
let enviando = false;
let peticionLocalidades = null;
const order = ["make", "model", "year", "body_type", "version", "fuel", "transmission"];
const inputMap = {
make: "#frmMarcaVehiculo",
model: "#frmModeloVehiculo",
year: "#frmAnoVehiculo",
body_type: "#frmCarroceriaVehiculo",
fuel: "#frmCombustibleVehiculo",
transmission: "#frmTransmisionVehiculo",
version: "#frmVersionVehiculo"
};
const hiddenMap = {
make: "#frmMarcaVehiculoId",
model: "#frmModeloVehiculoId",
year: "#frmAnoVehiculoId",
body_type: "#frmCarroceriaVehiculoId",
fuel: "#frmCombustibleVehiculoId",
transmission: "#frmTransmisionVehiculoId",
version: "#frmVersionVehiculoId"
};
const fieldLabels = {
frmMatriculaVehiculo: "Matricula",
frmMarcaVehiculo: "Marca",
frmModeloVehiculo: "Modelo",
frmAnoVehiculo: "Ano",
frmCarroceriaVehiculo: "Carroceria",
frmVersionVehiculo: "Version",
frmCombustibleVehiculo: "Combustible",
frmTransmisionVehiculo: "Transmision",
frmKilometrosVehiculo: "Kilometros",
frmNombrePretasacion: "Nombre completo",
frmTelefonoPretasacion: "Telefono",
frmEmailPretasacion: "Email",
frmProvinciaPretasacion: "Provincia",
frmLocalidadPretasacion: "Localidad",
frmCodigoPostalPretasacion: "Codigo Postal",
frmPoliticaPretasacion: "Politica de privacidad"
};
const requestTimers = {};
const imageInputs = {
exterior: "#frmImagenExterior",
interior: "#frmImagenInterior",
cuentakilometros: "#frmImagenCuentakilometros",
consolacentral: "#frmImagenConsolaCentral"
};
$(document).ready(function () {
if (!$("#formularioVenderCoche").length)
{
return;
}
validacionVehiculo = $("#formPasoVehiculo").validate({showLabels: false});
validacionContacto = $("#formPasoContacto").validate({showLabels: false});
bindAutocompleteFields();
bindVehicleImageInputs();
$("#btnContinuarDatosVehiculo").click(onContinueVehiculo);
$("#btnContinuarImagenesVehiculo").click(onContinueImagenesVehiculo);
$("#btnEnviarPretasacion").click(onEnviarPretasacion);
$("#formPasoVehiculo").on("submit", onContinueVehiculo);
$("#formPasoContacto").on("submit", onEnviarPretasacion);
$("#frmProvinciaPretasacion").on("change", actualizarLocalidades);
$(document).on("click", function (event) {
if (!$(event.target).closest(".autocomplete-select").length)
{
closeAllAutocomplete();
}
});
});
function actualizarLocalidades()
{
const provincia = $("#frmProvinciaPretasacion").val();
const localidad = $("#frmLocalidadPretasacion");
if (peticionLocalidades)
{
peticionLocalidades.abort();
}
localidad.empty().append(new Option("Seleccione una localidad", "")).prop("disabled", true);
if (!provincia)
{
return;
}
peticionLocalidades = $.ajax({
url: "https://www.leadercar.es/ajax/Ubicacion.listadoCiudades.php?CSRF=" + CSRF,
type: "POST",
dataType: "json",
data: {idPais: 28, idRegion: provincia}
}).done(function (ciudades) {
ciudades.forEach(function (ciudad) {
localidad.append(new Option(Utils.html_entities_decode(ciudad.nombre), ciudad.id));
});
localidad.prop("disabled", false);
}).fail(function (request, status) {
if (status !== "abort")
{
showStandardError("No se han podido cargar las localidades. Vuelve a seleccionar la provincia.");
}
});
}
function bindAutocompleteFields()
{
$(".autocomplete-select").each(function () {
const wrapper = $(this);
const field = wrapper.data("field");
const input = wrapper.find(".autocomplete-input");
input.on("focus", function () {
if ($(this).is(":disabled"))
{
return;
}
scheduleSearch(field, $(this).val().trim());
});
input.on("input", function () {
const hidden = $(hiddenMap[field]);
if (hidden.val())
{
hidden.val("");
clearDownstream(field);
}
if ($(this).val().trim() !== "")
{
enableNextField(field);
}
scheduleSearch(field, $(this).val().trim());
});
input.on("blur", function () {
if ($(this).val().trim() !== "")
{
enableNextField(field);
}
});
});
$(".autocomplete-results").on("click", ".autocomplete-option", function () {
const option = $(this);
const wrapper = option.closest(".autocomplete-select");
const field = wrapper.data("field");
const nextField = getNextField(field);
if ($(hiddenMap[field]).val() && String($(hiddenMap[field]).val()) !== String(option.data("id")))
{
clearDownstream(field);
}
$(inputMap[field]).val(option.data("label")).removeClass("error");
$(hiddenMap[field]).val(option.data("id"));
closeResults(wrapper);
enableNextField(field);
if (nextField)
{
$(inputMap[nextField]).focus();
scheduleSearch(nextField, "");
}
});
}
function bindVehicleImageInputs()
{
$(".imagenVehiculo-input").each(function () {
$(this).data("originalIcon", $(this).closest(".imagenVehiculo").find(".imagenVehiculoIcono").clone());
});
$(".imagenVehiculo").on("click keydown", function (event) {
if (event.type === "keydown" && event.key !== "Enter" && event.key !== " ")
{
return;
}
event.preventDefault();
const input = $(this).find(".imagenVehiculo-input")[0];
if (input)
{
input.click();
}
});
$(".imagenVehiculo-input").on("click", function (event) {
event.stopPropagation();
}).on("change", function () {
const input = $(this);
const file = this.files && this.files[0];
const card = input.closest(".imagenVehiculo");
if (!file)
{
return;
}
const extension = (file.name.split(".").pop() || "").toLowerCase();
const allowedExtensions = ["jpg", "jpeg", "png", "webp"];
const allowedMimeTypes = ["image/jpeg", "image/png", "image/webp"];
const imageSettings = $("#imagenesVehiculo");
const maxBytes = parseInt(imageSettings.attr("data-max-image-size"), 10) || 0;
const postMaxBytes = parseInt(imageSettings.attr("data-max-total-size"), 10) || 0;
const maxTotalBytes = postMaxBytes > 0 ? Math.max(1, postMaxBytes - 262144) : 0;
if (!allowedExtensions.includes(extension) || (file.type && !allowedMimeTypes.includes(file.type)))
{
resetVehicleImage(input);
showStandardError("El archivo debe ser una imagen JPG, PNG o WEBP.");
return;
}
if (maxBytes > 0 && file.size > maxBytes)
{
resetVehicleImage(input);
showStandardError("La imagen supera el tamaño máximo permitido de " + (maxBytes / 1024 / 1024).toFixed(1) + " MB.");
return;
}
if (maxTotalBytes > 0)
{
let totalBytes = file.size;
$(".imagenVehiculo-input").each(function () {
if (this !== input[0] && this.files && this.files.length)
{
totalBytes += this.files[0].size;
}
});
if (totalBytes > maxTotalBytes)
{
resetVehicleImage(input);
showStandardError("El tamaño total de las imágenes supera el máximo permitido de " + (maxTotalBytes / 1024 / 1024).toFixed(1) + " MB.");
return;
}
}
const previousPreview = input.data("previewUrl");
if (previousPreview)
{
URL.revokeObjectURL(previousPreview);
}
const previewUrl = URL.createObjectURL(file);
input.data("previewUrl", previewUrl);
const preview = $("", {
"class": "imagenVehiculo-preview",
"alt": card.find("span").text().trim()
}).attr("src", previewUrl);
const imageSlot = card.find(".imagenVehiculoIcono, .imagenVehiculo-preview").first();
if (imageSlot.length)
{
imageSlot.replaceWith(preview);
}
else
{
card.find("span").before(preview);
}
});
}
function resetVehicleImage(input)
{
input.val("");
const previewUrl = input.data("previewUrl");
if (previewUrl)
{
URL.revokeObjectURL(previewUrl);
input.removeData("previewUrl");
}
input.closest(".imagenVehiculo").find(".imagenVehiculo-preview").replaceWith(input.data("originalIcon").clone());
}
function scheduleSearch(field, term)
{
if (!field)
{
return;
}
clearTimeout(requestTimers[field]);
requestTimers[field] = setTimeout(function () {
fetchOptions(field, term);
}, 180);
}
function fetchOptions(field, term)
{
const input = $(inputMap[field]);
const wrapper = input.closest(".autocomplete-select");
const searchTerm = (term || "").trim();
if (!input.length || input.is(":disabled"))
{
return;
}
if (!hasDependencies(field))
{
closeResults(wrapper);
return;
}
if (field === "make" && searchTerm.length < 1)
{
closeResults(wrapper);
return;
}
const params = getAjaxFilters();
params.field = field;
params.term = searchTerm;
$.getJSON("https://www.leadercar.es/ajax/VenderCoche.options.php", params)
.done(function (response) {
renderOptions(wrapper, response.items || []);
})
.fail(function () {
renderOptions(wrapper, []);
});
}
function renderOptions(wrapper, items)
{
const box = wrapper.find(".autocomplete-results");
if (!items.length)
{
box.removeClass("visible").empty();
return;
}
let html = "";
items.forEach(function (item) {
html += '";
});
box.html(html).addClass("visible");
}
function closeAllAutocomplete()
{
$(".autocomplete-results").removeClass("visible").empty();
}
function closeResults(wrapper)
{
wrapper.find(".autocomplete-results").removeClass("visible").empty();
}
function getAjaxFilters()
{
return {
make_id: $(hiddenMap.make).val(),
model_id: $(hiddenMap.model).val(),
year: $(hiddenMap.year).val(),
body_type: $(hiddenMap.body_type).val(),
version_id: $(hiddenMap.version).val(),
fuel: $(hiddenMap.fuel).val(),
transmission: $(hiddenMap.transmission).val()
};
}
function hasDependencies(field)
{
switch (field)
{
case "make":
return true;
case "model":
return !!$(hiddenMap.make).val();
case "year":
return !!$(hiddenMap.make).val() && !!$(hiddenMap.model).val();
case "body_type":
return !!$(hiddenMap.make).val() && !!$(hiddenMap.model).val() && !!$(hiddenMap.year).val();
case "version":
return !!$(hiddenMap.make).val() && !!$(hiddenMap.model).val() && !!$(hiddenMap.year).val() && !!$(hiddenMap.body_type).val();
case "fuel":
return !!$(hiddenMap.version).val();
case "transmission":
return !!$(hiddenMap.version).val();
}
return false;
}
function getNextField(field)
{
const index = order.indexOf(field);
return index >= 0 ? order[index + 1] || null : null;
}
function enableNextField(field)
{
const nextField = getNextField(field);
if (nextField)
{
$(inputMap[nextField]).prop("disabled", false).removeClass("error");
}
}
function clearDownstream(field)
{
const index = order.indexOf(field);
for (let i = index + 1; i < order.length; i++)
{
const current = order[i];
$(inputMap[current]).val("").prop("disabled", true).removeClass("error");
$(hiddenMap[current]).val("");
closeResults($(inputMap[current]).closest(".autocomplete-select"));
}
}
function validateAutocompleteFields(fields)
{
let ok = true;
fields.forEach(function (field) {
const inputValue = $(inputMap[field]).val().trim();
if (!$(hiddenMap[field]).val() && inputValue === "")
{
$(inputMap[field]).addClass("error");
ok = false;
}
else
{
$(inputMap[field]).removeClass("error");
}
});
return ok;
}
function getMissingVehiculoFields()
{
const missing = [];
const seen = {};
$("#formPasoVehiculo")
.find(".required")
.each(function () {
const field = $(this);
const fieldId = field.attr("id");
if (!fieldId)
{
return;
}
let isMissing = false;
if (field.is(":checkbox") || field.is(":radio"))
{
isMissing = !field.is(":checked");
}
else
{
isMissing = !field.val().trim();
}
if (isMissing && !seen[fieldId])
{
seen[fieldId] = true;
missing.push(fieldLabels[fieldId] || field.attr("title") || fieldId);
}
});
order.forEach(function (fieldKey) {
const input = $(inputMap[fieldKey]);
const fieldId = input.attr("id");
const inputValue = input.val().trim();
if (inputValue === "" && fieldId && !seen[fieldId])
{
seen[fieldId] = true;
missing.push(fieldLabels[fieldId] || input.attr("title") || fieldId);
}
});
return missing;
}
function showVehiculoMissingFields(missingFields)
{
if (!missingFields.length)
{
return;
}
let message = "Debes completar los siguientes campos:
";
message += missingFields.join("
");
ClassBlockUI.abrirBlockUIEstandarMensaje(
message,
true,
undefined,
"modalStandard"
);
}
function getMissingContactoFields()
{
const missing = [];
const seen = {};
$("#formPasoContacto")
.find(".required")
.each(function () {
const field = $(this);
const fieldId = field.attr("id");
if (!fieldId)
{
return;
}
let isMissing = false;
if (field.is(":checkbox") || field.is(":radio"))
{
isMissing = !field.is(":checked");
}
else
{
isMissing = !field.val().trim();
}
if (isMissing && !seen[fieldId])
{
seen[fieldId] = true;
missing.push(fieldLabels[fieldId] || field.attr("title") || fieldId);
}
});
return missing;
}
function showContactoMissingFields(missingFields)
{
if (!missingFields.length)
{
return;
}
let message = "Debes completar los siguientes campos:
";
message += missingFields.join("
");
ClassBlockUI.abrirBlockUIEstandarMensaje(
message,
true,
undefined,
"modalStandard"
);
}
function showStandardError(message)
{
ClassBlockUI.abrirBlockUIEstandarMensaje(
message || "No se ha podido completar la solicitud.",
true,
undefined,
"modalStandard"
);
}
function validateVehiculoBusinessRules()
{
const yearRaw = $("#frmAnoVehiculo").val().trim();
const yearValue = parseInt(yearRaw, 10);
const kmRaw = $("#frmKilometrosVehiculo").val().trim();
const kmValue = parseInt(kmRaw.replace(/[^0-9]/g, ""), 10);
if (!/^\d{4}$/.test(yearRaw) || yearValue > new Date().getFullYear())
{
$("#frmAnoVehiculo").addClass("error");
showStandardError("Introduce un año válido.");
return false;
}
if (!/^(?:\d+|\d{1,3}(?:[., ]\d{3})+)$/.test(kmRaw))
{
$("#frmKilometrosVehiculo").addClass("error");
showStandardError("Introduce un kilometraje válido.");
return false;
}
if (yearValue < 2017)
{
$("#frmAnoVehiculo").addClass("error");
showStandardError("No tasamos coches anteriores a 2017.");
return false;
}
if (kmValue > 150000)
{
$("#frmKilometrosVehiculo").addClass("error");
showStandardError("No tasamos coches con mas de 150000 km.");
return false;
}
return true;
}
function cerrarBloqueEspere()
{
if (!bloqueEspere || !bloqueEspere.length)
{
return;
}
const modalInstance = bootstrap.Modal.getInstance(bloqueEspere[0]);
if (modalInstance)
{
modalInstance.hide();
}
bloqueEspere = null;
}
function onContinueVehiculo(event)
{
event.preventDefault();
const formOk = validacionVehiculo.form();
const autocompleteOk = validateAutocompleteFields(order);
if (!formOk || !autocompleteOk)
{
showVehiculoMissingFields(getMissingVehiculoFields());
return;
}
if (!validateVehiculoBusinessRules())
{
return;
}
setCurrentStep(2);
}
function onContinueImagenesVehiculo(event)
{
event.preventDefault();
setCurrentStep(3);
}
function onEnviarPretasacion(event)
{
event.preventDefault();
if (enviando)
{
return;
}
const missingVehiculoFields = getMissingVehiculoFields();
if (missingVehiculoFields.length || !validateAutocompleteFields(order) || !validateVehiculoBusinessRules())
{
setCurrentStep(1);
showVehiculoMissingFields(missingVehiculoFields);
return;
}
if (!validacionContacto.form())
{
showContactoMissingFields(getMissingContactoFields());
return;
}
if (!$("#frmProvinciaPretasacion").val() || !$("#frmLocalidadPretasacion").val() || !/^\d{5}$/.test($("#frmCodigoPostalPretasacion").val().trim()))
{
showStandardError("Selecciona provincia y localidad e introduce un código postal de cinco cifras.");
return;
}
const data = collectFormData();
data.append("CSRF", CSRF);
enviando = true;
$("#btnEnviarPretasacion").prop("disabled", true);
$.ajax({
type: "POST",
url: "https://www.leadercar.es/ajax/VenderCoche.enviar.php",
data: data,
processData: false,
contentType: false,
dataType: "json",
beforeSend: function () {
bloqueEspere = ClassBlockUI.abrirBlockUIEsperePorFavor();
}
}).done(function (response) {
cerrarBloqueEspere();
if (response.error_number * 1 === 1)
{
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: "form_submitted",
form_id: "vender-coche",
form_type: "tasacion"
});
setCurrentStep(4);
if (!true && response.error_message)
{
ClassBlockUI.abrirBlockUIEstandarMensaje(response.error_message, true, undefined, "modalStandard");
}
}
else
{
showStandardError(response.error_message || "No se ha podido enviar la solicitud.");
}
}).fail(function () {
cerrarBloqueEspere();
showStandardError("No se ha podido enviar la solicitud.");
}).always(function () {
enviando = false;
$("#btnEnviarPretasacion").prop("disabled", false);
});
}
function collectFormData()
{
const data = new FormData();
$("#formPasoVehiculo, #formPasoContacto").serializeArray().forEach(function (item) {
data.append(item.name, item.value);
});
Object.keys(imageInputs).forEach(function (type) {
const input = $(imageInputs[type])[0];
if (input && input.files && input.files.length)
{
data.append(input.name, input.files[0]);
}
});
return data;
}
function setCurrentStep(step)
{
$("[data-step-panel]").removeClass("active");
$('[data-step-panel="' + step + '"]').addClass("active");
$("#pasosVenderCoche .item-paso").each(function () {
const current = $(this);
const currentStep = current.data("step") * 1;
current.removeClass("current completed");
if (currentStep < step)
{
current.addClass("completed");
}
else if (currentStep === step)
{
current.addClass("current");
}
});
$("#pasosVenderCoche .separador-pasos").each(function () {
const current = $(this);
const separatorStep = current.data("step-separator") * 1;
current.toggleClass("active", separatorStep <= step);
});
const formContainer = $("#formularioVenderCoche");
if (formContainer.length > 0)
{
$("html, body").stop(true).animate({
scrollTop: formContainer.offset().top - 90
}, 400);
}
}
function escapeHtml(value)
{
return String(value)
.replace(/&/g, "&")
.replace(//g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
}
static initDynamicBG() {
$(document).ready(function () {
new WOW(
{
boxClass: "dynamic-bg",
//offset: 200,
callback: function (box) {
$(box).addClass("loaded");
},
}
).init();
});
}
static initTexto() {
$("document").ready(function () {
//$(".textoSeccion a").attr("target", "_blank");
$(".textoSeccion a[href^='tel']").removeAttr("target");
$(".textoSeccion img[style^='float: left'], .textoSeccion img[style^='float:left']").addClass("margin-right-20 margin-bottom-20 img-float");
$(".textoSeccion img[style^='float: right'], .textoSeccion img[style^='float:right']").addClass("margin-left-20 margin-bottom-20 img-float");
$(".textoSeccion img:not(.imagenDerecha)").addClass("img-fluid").css("max-width", "100%").css("height", "auto").css("object-fit", "cover");
});
}
static initBanner() {
let owl = null;
let timeout = null;
let videoFallbackTimeout = null;
let activePlaybackToken = 0;
$(document).ready(function () {
if ($('#carousel-banner').length) {
owl = $('#carousel-banner').owlCarousel({
animateOut: 'fadeOut',
animateIn: 'fadeIn',
loop: true,
lazyLoad: true,
//video:true,
margin: 0,
nav: true,
dots: false,
mouseDrag: false,
smartSpeed: 900,
autoplay: true,
autoplayTimeout: 700000000,
items: 1,
navText: navText,
onInitialized: onTranslated,
onTranslate: onTranslate,
onTranslated: onTranslated
});
}
$("#carousel-banner").on("click", ".owl-dots .owl-dot", function () {
clearBannerTimeout();
clearVideoFallbackTimeout();
});
});
function onTranslate() {
activePlaybackToken++;
clearVideoFallbackTimeout();
clearBannerTimeout();
}
function onTranslated() {
activePlaybackToken++;
clearVideoFallbackTimeout();
clearBannerTimeout();
const $activeItem = getActiveBannerItem();
const $activeVideo = $activeItem.find("video").first();
$("#carousel-banner .owl-item video").each(function () {
if ($activeVideo.length > 0 && this === $activeVideo[0]) {
return;
}
this.oncanplay = null;
this.onloadeddata = null;
this.onended = null;
this.onerror = null;
this.pause();
this.currentTime = 0;
});
if ($activeVideo.length > 0) {
$activeVideo[0].currentTime = 0;
playVideo($activeVideo[0], activePlaybackToken);
} else {
const currentToken = activePlaybackToken;
timeout = setTimeout(function () {
if (currentToken !== activePlaybackToken) {
return;
}
owl.trigger('next.owl.carousel');
}, 7000);
}
}
function playVideo(video, playbackToken) {
video.muted = true;
video.playsInline = true;
video.autoplay = true;
video.setAttribute("muted", "");
video.setAttribute("autoplay", "");
video.setAttribute("playsinline", "");
video.setAttribute("webkit-playsinline", "");
clearBannerTimeout();
clearVideoFallbackTimeout();
video.onended = function () {
if (!isCurrentPlayback(video, playbackToken)) {
return;
}
activePlaybackToken++;
clearVideoFallbackTimeout();
clearBannerTimeout();
owl.trigger('next.owl.carousel');
};
video.onerror = function () {
if (!isCurrentPlayback(video, playbackToken)) {
return;
}
scheduleVideoFallback(playbackToken);
};
video.oncanplay = function () {
video.oncanplay = null;
if (!isCurrentPlayback(video, playbackToken)) {
return;
}
startVideoPlayback(video, playbackToken);
};
video.onloadeddata = function () {
video.onloadeddata = null;
if (!isCurrentPlayback(video, playbackToken)) {
return;
}
startVideoPlayback(video, playbackToken);
};
if (video.readyState >= video.HAVE_FUTURE_DATA) {
startVideoPlayback(video, playbackToken);
} else if (video.readyState === 0) {
video.load();
scheduleVideoFallback(playbackToken);
} else {
scheduleVideoFallback(playbackToken);
}
}
function clearBannerTimeout() {
if (timeout != null) {
clearTimeout(timeout);
timeout = null;
}
}
function clearVideoFallbackTimeout() {
if (videoFallbackTimeout != null) {
clearTimeout(videoFallbackTimeout);
videoFallbackTimeout = null;
}
}
function scheduleVideoFallback(playbackToken, durationSeconds = 0) {
clearVideoFallbackTimeout();
let fallbackMs = 7000;
if (durationSeconds && isFinite(durationSeconds) && durationSeconds > 0) {
fallbackMs = Math.ceil(durationSeconds * 1000) + 2000;
}
videoFallbackTimeout = setTimeout(function () {
if (playbackToken !== activePlaybackToken) {
return;
}
owl.trigger('next.owl.carousel');
}, fallbackMs);
}
function startVideoPlayback(video, playbackToken) {
if (!isCurrentPlayback(video, playbackToken)) {
return;
}
scheduleVideoFallback(playbackToken, video.duration);
const playPromise = video.play();
if (playPromise && typeof playPromise.catch === "function") {
playPromise.catch(function () {
if (!isCurrentPlayback(video, playbackToken)) {
return;
}
scheduleVideoFallback(playbackToken);
});
}
}
function getActiveBannerItem() {
let $activeItem = $("#carousel-banner .owl-item.active:not(.cloned)").first();
if ($activeItem.length === 0) {
$activeItem = $("#carousel-banner .owl-item.active").first();
}
return $activeItem;
}
function isCurrentPlayback(video, playbackToken) {
return playbackToken === activePlaybackToken && getActiveBannerItem().find("video").first()[0] === video;
}
}
static initResenas() {
$(document).ready(function () {
const elementCarousel = $("#valoraciones");
if (elementCarousel.length > 0) {
let numItems = elementCarousel.find(".item-resena").length;
elementCarousel.owlCarousel({
margin: 30,
nav: false,
navText: navText,
dots: true,
lazyLoad: true,
stagePadding: 3,
responsive: {
0: {
items: 1,
loop: numItems > 1,
},
768: {
items: numItems > 1,
loop: numItems > 1,
stagePadding: numItems > 1 ? 60 : 0
},
992: {
items: numItems > 3 ? 1.5 : 2,
loop: numItems > 3,
},
1200: {
items: numItems > 4 ? 2.5 : 3,
loop: numItems > 6,
},
1600: {
items: 3,
loop: numItems > 3,
}
}
});
$("body").on("click", ".btn-mas-valoracion", function () {
var padre = $(this).parents(".item-resena");
//$(padre).find(".valoracion-texto").addClass("d-none");
//$(padre).find(".valoracion-texto-completo").removeClass("d-none");
$("#bloque-resena .textoSeccion").html(padre.find(".valoracion-texto-completo").html());
ClassBlockUI.abrirBlockUIEstandar("bloque-resena", undefined, "Reseña de " + padre.find(".item-resena-usuario").text(), "modal622");
});
$("body").on("click", "#btn-cerrar-resena", function (e) {
$(".modal").modal("hide");
});
}
});
}
static initClientesSatisfechos() {
$(document).ready(function () {
const elementCarousel = $("#clientes-satisfechos-owl");
if (elementCarousel.length > 0) {
let numItems = elementCarousel.find(".caja-cliente").length;
elementCarousel.owlCarousel({
margin: 30,
nav: false,
dots: true,
responsive: {
0: {
items: 1,
loop: numItems > 1,
},
576: {
items: 1,
loop: numItems > 1,
stagePadding: numItems > 1 ? 80 : 0
},
768: {
items: numItems > 1,
loop: numItems > 1,
stagePadding: numItems > 1 ? 160 : 0
},
992: {
items: 3,
loop: numItems > 3,
},
1600: {
items: 4,
loop: numItems > 4,
}
}
});
}
});
}
static initCochesRelacionados() {
$(document).ready(function () {
const elementCarousel = $("#coches-relacionados");
if (elementCarousel.length > 0) {
let numItems = elementCarousel.find(".item-vehiculo").length;
elementCarousel.owlCarousel({
margin: 30,
nav: false,
dots: true,
responsive: {
0: {
items: 1,
loop: numItems > 1,
},
576: {
items: 1,
loop: numItems > 1,
stagePadding: numItems > 1 ? 80 : 0
},
768: {
items: numItems > 1,
loop: numItems > 1,
stagePadding: numItems > 1 ? 160 : 0
},
992: {
items: 3,
loop: numItems > 3,
},
1600: {
items: 4,
loop: numItems > 4,
}
}
});
}
});
}
static initCochesMismaMarca() {
$(document).ready(function () {
const elementCarousel = $("#coches-misma-marca");
if (elementCarousel.length > 0) {
let numItems = elementCarousel.find(".item-vehiculo").length;
elementCarousel.owlCarousel({
margin: 30,
nav: false,
dots: true,
responsive: {
0: {
items: 1,
loop: numItems > 1,
},
576: {
items: 1,
loop: numItems > 1,
stagePadding: numItems > 1 ? 80 : 0
},
768: {
items: numItems > 1,
loop: numItems > 1,
stagePadding: numItems > 1 ? 160 : 0
},
992: {
items: 3,
loop: numItems > 3,
},
1600: {
items: 4,
loop: numItems > 4,
}
}
});
}
});
}
static initMedios() {
$(document).ready(function () {
const elementCarousel = $("#medios");
if (elementCarousel.length > 0) {
let numItems = elementCarousel.find(".caja-medio").length;
elementCarousel.owlCarousel({
margin: 30,
nav: false,
dots: true,
autoplay: true,
autoplayTimeout: 2500,
responsive: {
0: {
margin: 15,
items: 2,
loop: numItems > 2,
},
576: {
margin: 15,
items: 3,
loop: numItems > 3,
},
992: {
items: 4,
loop: numItems > 4,
},
1200: {
items: 5,
loop: numItems > 5,
}
}
});
}
});
}
static initFiltrosBuscador({
precioMinSeleccionado = 0,
precioMaxSeleccionado = 150000,
precioMin = 0,
precioMax = 150000,
cuotaMinSeleccionado = 0,
cuotaMaxSeleccionado = 800,
cuotaMin = 0,
cuotaMax = 800,
anyoMinSeleccionado = 1959,
anyoMaxSeleccionado = new Date().getFullYear(),
anyoMin = 1959,
anyoMax = new Date().getFullYear(),
kmMinSeleccionado = 0,
kmMaxSeleccionado = 300000,
kmMin = 0,
kmMax = 300000,
} = {}
) {
$(document).ready(function (e) {
$("#buscar").pressEnter(function (e) {
$(".btn-buscar-coches").trigger("click");
});
const elementToggleExtraFiltros = $("#btn-toggle-extra-filtros");
const elementSliderPrecio = $("#slider-range-precio");
const elementSliderCuota = $("#slider-range-cuota-mensual");
const elementSliderAnyo = $("#slider-range-anyo");
const elementSliderKm = $("#slider-range-km");
$("#btn-abrir-filtros, #btn-cerrar-filtros").click(function (e) {
$("#filtros-buscador").toggleClass("open");
});
elementToggleExtraFiltros.click(function (e) {
$("#filtros-buscador").toggleClass("expand");
elementToggleExtraFiltros.toggleClass("active");
if ($(window).width() < 992 && elementToggleExtraFiltros.hasClass("active")) {
var $precio = $("#banner #container-filtro-precio");
var $cuota = $("#banner #container-filtro-cuota");
if ($precio.length === 0 || $cuota.length === 0)
return;
if ($precio.parent().is("#filtros-buscador-top")) {
$("#filtros-buscador-bottom").prepend($cuota).prepend($precio);
}
if ($(window).width() < 576) {
var $modelo = $("#banner #container-filtro-modelo");
if ($modelo.parent().is("#filtros-buscador-top")) {
$("#filtros-buscador-bottom").prepend($modelo);
}
}
}
});
elementSliderPrecio.slider({
range: true,
min: precioMin,
max: precioMax,
step: 100,
values: [precioMinSeleccionado, precioMaxSeleccionado],
slide: function (event, ui) {
$("#precio-min-label").html(Utils.number_format(ui.values[0], {
numberOfDecimals: 0,
thousandSeparator: "."
}) + "€");
$("#precio-max-label").html(Utils.number_format(ui.values[1], {
numberOfDecimals: 0,
thousandSeparator: "."
}) + "€");
},
stop: function (event, ui) {
$("#precio-min-label").html(Utils.number_format(ui.values[0], {
numberOfDecimals: 0,
thousandSeparator: "."
}) + "€");
$("#precio-max-label").html(Utils.number_format(ui.values[1], {
numberOfDecimals: 0,
thousandSeparator: "."
}) + "€");
$("#precio-min").val(elementSliderPrecio.slider("values", 0));
$("#precio-max").val(elementSliderPrecio.slider("values", 1));
}
});
elementSliderCuota.slider({
range: true,
min: cuotaMin,
max: cuotaMax,
step: 20,
values: [cuotaMinSeleccionado, cuotaMaxSeleccionado],
slide: function (event, ui) {
$("#cuota-min-label").html(Utils.number_format(ui.values[0], {
numberOfDecimals: 0,
thousandSeparator: "."
}) + "€");
$("#cuota-max-label").html(Utils.number_format(ui.values[1], {
numberOfDecimals: 0,
thousandSeparator: "."
}) + "€");
},
stop: function (event, ui) {
$("#cuota-min-label").html(Utils.number_format(ui.values[0], {
numberOfDecimals: 0,
thousandSeparator: "."
}) + "€");
$("#cuota-max-label").html(Utils.number_format(ui.values[1], {
numberOfDecimals: 0,
thousandSeparator: "."
}) + "€");
$("#cuota-min").val(elementSliderCuota.slider("values", 0));
$("#cuota-max").val(elementSliderCuota.slider("values", 1));
}
});
elementSliderAnyo.slider({
range: true,
min: anyoMin,
max: anyoMax,
step: 1,
values: [anyoMinSeleccionado, anyoMaxSeleccionado],
slide: function (event, ui) {
$("#anyo-min-label").html(ui.values[0]);
$("#anyo-max-label").html(ui.values[1]);
},
stop: function (event, ui) {
$("#anyo-min-label").html(ui.values[0]);
$("#anyo-max-label").html(ui.values[1]);
$("#anyo-min").val(elementSliderAnyo.slider("values", 0));
$("#anyo-max").val(elementSliderAnyo.slider("values", 1));
}
});
elementSliderKm.slider({
range: true,
min: kmMin,
max: kmMax,
step: 200,
values: [kmMinSeleccionado, kmMaxSeleccionado],
slide: function (event, ui) {
$("#km-min-label").html(Utils.number_format(ui.values[0], {
numberOfDecimals: 0,
thousandSeparator: "."
}) + "km");
$("#km-max-label").html(Utils.number_format(ui.values[1], {
numberOfDecimals: 0,
thousandSeparator: "."
}) + "km");
},
stop: function (event, ui) {
$("#km-min-label").html(Utils.number_format(ui.values[0], {
numberOfDecimals: 0,
thousandSeparator: "."
}) + "km");
$("#km-max-label").html(Utils.number_format(ui.values[1], {
numberOfDecimals: 0,
thousandSeparator: "."
}) + "km");
$("#km-min").val(elementSliderKm.slider("values", 0));
$("#km-max").val(elementSliderKm.slider("values", 1));
}
});
$(".btn-buscar-coches").click(function (e) {
const buscar = $("#buscar").val();
const marca = $("#marca").val();
const modelo = $("#modelo").val();
const carroceria = $("#carroceria").val();
const etiqueta = $("#etiqueta").val();
const loMasBuscado = $("#lo-mas-buscado").val();
const precioMinUser = $("#precio-min").val() * 1;
const precioMaxUser = $("#precio-max").val() * 1;
const cuotaMinUser = $("#cuota-min").val() * 1;
const cuotaMaxUser = $("#cuota-max").val() * 1;
const combustible = $("#combustible").val();
const anyoMinUser = $("#anyo-min").val() * 1;
const anyoMaxUser = $("#anyo-max").val() * 1;
const kmMinUser = $("#km-min").val() * 1;
const kmMaxUser = $("#km-max").val() * 1;
const cambio = $("#cambio").val();
const orden = $("#filtro-ordenar").val();
const potenciaElement = $("#potencia");
let mainUrl = 'https://www.leadercar.es/comprar-vehiculo/';
if (marca !== "" && marca !== null)
mainUrl += "marca-" + marca + "/";
if (modelo !== "" && modelo !== null)
mainUrl += "modelo-" + modelo + "/";
if (carroceria !== "" && carroceria !== null)
mainUrl += "tipo-vehiculo-" + carroceria + "/";
if (etiqueta !== "" && etiqueta !== null)
mainUrl += "etiqueta-" + etiqueta + "/";
if (loMasBuscado !== "" && loMasBuscado !== null)
mainUrl += "mas-buscado-" + loMasBuscado + "/";
let url = new URL(mainUrl);
if (buscar !== "" && buscar !== undefined) {
url.searchParams.append("buscar", buscar);
}
if ((precioMinUser !== precioMin || precioMaxUser !== precioMax) && precioMaxUser > 0) {
url.searchParams.append("precio", precioMinUser + "-" + precioMaxUser);
}
if ((cuotaMinUser !== cuotaMin || cuotaMaxUser !== cuotaMax) && cuotaMaxUser > 0) {
url.searchParams.append("cuota", cuotaMinUser + "-" + cuotaMaxUser);
}
if ((anyoMinUser !== anyoMin || anyoMaxUser !== anyoMax) && anyoMaxUser > 0) {
url.searchParams.append("anyo", anyoMinUser + "-" + anyoMaxUser);
}
if ((kmMinUser !== kmMin || kmMaxUser !== kmMax) && kmMaxUser > 0) {
url.searchParams.append("kilometros", kmMinUser + "-" + kmMaxUser);
}
if (combustible !== "" && combustible !== null) {
url.searchParams.append("combustible", combustible);
}
if (cambio !== "" && cambio !== null) {
url.searchParams.append("cambio", cambio);
}
const potenciaMin = potenciaElement.find("option:selected").data("min");
const potenciaMax = potenciaElement.find("option:selected").data("max");
if (potenciaMin > 0)
url.searchParams.append("potencia-min", potenciaMin);
if (potenciaMax > 0)
url.searchParams.append("potencia-max", potenciaMax);
if (orden !== "" && orden !== null && orden !== undefined) {
url.searchParams.append("orden", orden);
}
window.location.href = url.toString();
});
$('#marca').on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) {
if (isSelected === null)
return;
const modeloElement = $("#modelo");
modeloElement.find("option:not(.bs-title-option)").not(":first").remove();
modeloElement.selectpicker("refresh");
modeloElement.selectpicker("val", "");
var successCallback = function (data, textStatus, XMLHttpRequest) {
if (data["error_number"] >= 0) {
$.each(data["items"], function (i, e) {
modeloElement.append($("").attr("value", e["url"]).text(e["nombre"]));
});
modeloElement.selectpicker("refresh");
}
};
Utils.sendStandardAjax(undefined, "https://www.leadercar.es/ajax/Modelos.listado.php?marca=" + $("#marca").val(), {
successCallback: successCallback,
esperePorFavor: false,
});
});
});
}
static initCompartir() {
$(document).ready(function (e) {
$(".compartir").jsSocials({
showCount: false,
showLabel: true,
shareIn: "popup",
shares: [
{share: "twitter", logo: "fab fa-twitter", label: "Post"},
{
share: "facebook",
label: "Compartir",
logo: "fab fa-facebook"
},
{share: "pinterest", label: "Pin it", logo: "fab fa-pinterest"},
]
});
$(".fa.fa-facebook").removeClass("fa").addClass("fab").addClass("fa-facebook-f");
$(".fa.fa-twitter").removeClass("fa").addClass("fab");
/* $(".fa.fa-google").removeClass("fa").addClass("fab").addClass("fa-google-plus-g");*/
$(".fa.fa-pinterest").removeClass("fa").addClass("fab");
//$('