async function showInfoProduct(getProduct) {
const product = JSON.parse(getProduct);
const primaryImage = product.images[0];
const secundaryImage = product.images[1];
// Formatear el precio
const formattedPrice = (price) => {
const num = Number(price);
if (isNaN(num)) return "$ 0.00";
return (
"$ " +
num.toLocaleString("en-US", {
minimumFractionDigits: 2,
maximumFractionDigits: 2,
})
);
};
// HTML principal del producto
const html = `

${
secundaryImage
? `

`
: ""
}
${formattedPrice(
product.price
)}
${
product.oldPrice
? `
${formattedPrice(
product.oldPrice
)}
-${Math.round(
(1 - product.price / product.oldPrice) * 100
)}%
`
: ""
}
Código: ${product.code}
${product.stock > 0 ? "Disponible" : "Agotado"}
${
product.stock > 0
? `
`
: ""
}
${
product.stock > 0
? `
`
: ``
}
`;
// Mostrar el modal
const { isDismissed } = await Swal.fire({
html,
width: "850px",
showConfirmButton: false,
showCloseButton: true,
backdrop: true,
customClass: {},
didOpen: () => {
// Manejar cambio de imágenes
const thumbnails = document.querySelectorAll(".thumbnail");
const mainImage = document.getElementById("mainProductImage");
thumbnails.forEach((thumb) => {
thumb.addEventListener("click", function () {
// Remover clase active de todas las miniaturas
thumbnails.forEach((t) => t.classList.remove("active"));
// Añadir clase active a la miniatura clickeada
this.classList.add("active");
// Cambiar imagen principal
mainImage.src = this.src;
// Efecto de fade
mainImage.style.opacity = 0;
setTimeout(() => {
mainImage.style.opacity = 1;
}, 100);
});
});
// Manejar cantidad
const qtyInput = document.getElementById("productQty");
document.getElementById("increaseQty")?.addEventListener("click", () => {
if (parseInt(qtyInput.value) < parseInt(qtyInput.max)) {
qtyInput.value = parseInt(qtyInput.value) + 1;
}
});
document.getElementById("decreaseQty")?.addEventListener("click", () => {
if (parseInt(qtyInput.value) > parseInt(qtyInput.min)) {
qtyInput.value = parseInt(qtyInput.value) - 1;
}
});
// Botón de existencias
document
.getElementById("checkStockBtn")
?.addEventListener("click", () => {
showStockModal(product.branches);
});
// Botones de compartir
document.querySelectorAll(".share-btn").forEach((button) => {
// Crear tooltip para "Copiado"
const tooltip = document.createElement("span");
tooltip.className = "copied-tooltip";
tooltip.textContent = "Copiado!";
button.appendChild(tooltip);
button.addEventListener("click", function () {
const platform = this.getAttribute("data-platform") || "copy";
if (platform === "copy") {
copyToClipboard(product.code);
// Mostrar tooltip
tooltip.classList.add("show");
setTimeout(() => {
tooltip.classList.remove("show");
}, 1500);
} else {
shareProduct(product, platform);
}
});
});
// Botón de WhatsApp
document
.getElementById("whatsappConsultBtn")
?.addEventListener("click", () => {
const message = `Hola, estoy interesado en el producto: ${product.description} (Código: ${product.code}). ¿Podrían darme más información? https://electronica2001es.com/search2.php?js=${product.code}`;
const whatsappUrl = `https://api.whatsapp.com/send?phone=50378607797&text=${encodeURIComponent(
message
)}`;
window.open(whatsappUrl, "_blank");
});
// Botón añadir al carrito
document.getElementById("addToCartBtn")?.addEventListener("click", () => {
const quantity = document.getElementById("productQty").value;
addToCart(product, quantity);
Swal.close();
});
// Botón comprar ahora
document.getElementById("buyNowBtn")?.addEventListener("click", () => {
const quantity = document.getElementById("productQty").value;
buyNow(product, quantity);
Swal.close();
});
},
});
}
// Función auxiliar para copiar al portapapeles
function copyToClipboard(code) {
const url = `https://electronica2001es.com/search2.php?js=${code}`;
navigator.clipboard
.writeText(url)
.then(() => {})
.catch((err) => {
console.error("Error al copiar al portapapeles:", err);
});
}
const Allbranches = [
{
nombre: "Ahuachapán",
direccion: "Primera Calle Poniente Barrio El Centro No. 1-1, Ahuachapan",
email: "ventas.ah@electronica2001es.com",
telefonos: ["(503)2413-3262", "2413-3268"],
horarios: {
semana: "Lun - Vie / 8:00 AM - 5:00 PM",
sabado: "Sábado / 8:00 AM - 1:00 PM",
},
},
{
nombre: "Escalón",
direccion:
"Paseo General Escalón, Frente a Banco De America Central, San Salvador",
email: "ventas.escalon@electronica2001es.com",
telefonos: ["(503)2201-2001", "2201-2009", "2201-2006"],
horarios: {
semana: "Lun - Vie / 8:30 AM - 5:30 PM",
sabado: "Sábado / 9:00 AM - 5:00 PM",
},
},
{
nombre: "Santa Ana",
direccion:
"Primera Calle OTE. AV. Independencia Sur Edificio Zamora Segunda Planta, Santa Ana",
email: "ventas.sta@electronica2001es.com",
telefonos: ["(503)2441-1065", "2441-1674", "2441-1173"],
horarios: {
semana: "Lun - Vie / 8:00 AM - 5:00 PM",
sabado: "Sábado / 8:00 AM - 2:00 PM",
},
},
{
nombre: "Plaza Morazan",
direccion: "Primera Calle Poniente y Cuarta AV. Sur No. 5, San Salvador",
email: "plaza.morazan@electronica2001es.com",
telefonos: ["(503)2523-2001", "2523-2005", "2523-2006"],
horarios: {
semana: "Lun - Vie / 8:00 AM - 5:30 PM",
sabado: "Sábado / 8:00 AM - 4:00 PM",
},
},
{
nombre: "San Miguel",
direccion: "8a. Calle Poniente y AV. Gerardo Barrios No. 501, San Miguel",
email: "ventas.sm@electronica2001es.com",
telefonos: ["(503)2645-2001"],
horarios: {
semana: "Lun - Vie / 8:00 AM - 5:30 PM",
sabado: "Sábado / 8:00 AM - 4:00 PM",
},
},
{
nombre: "Calle Arce",
direccion: "Calle Arce y 11 AV. Sur No. 635, San Salvador",
email: "ventas.arce@electronica2001es.com",
telefonos: ["(503)2133-2001", "2133-2002", "2133-2003"],
horarios: {
semana: "Lun - Vie / 8:00 AM - 5:30 PM",
sabado: "Sábado / 8:00 AM - 4:00 PM",
},
},
{
nombre: "Sonsonate",
direccion:
"Calle Obispo Marroquin y AV. Rafael Campos 1-1, Frente a Catedral",
email: "ventas.sonsonate@electronica2001es.com",
telefonos: ["(503)2486-2000", "2486-2001"],
horarios: {
semana: "Lun - Vie / 8:00 AM - 5:00 PM",
sabado: "Sábado / 8:00 AM - 2:00 PM",
},
},
];
// Función para mostrar el modal de existencias
function showStockModal(branches) {
const availableCount = branches.filter((b) => b.cantidad > 0).length;
const totalCount = branches.length;
const availabilityPercentage = Math.round(
(availableCount / totalCount) * 100
);
const html = `
Disponibilidad en sucursales
Consulta el stock en nuestras sucursales físicas
${availabilityPercentage}%
de cobertura
Sucursales con stock
${availableCount}
Total sucursales
${totalCount}
Sucursal |
Disponibilidad |
${branches
.map(
(branch, i) => `
${
branch.nombre
}
${
Allbranches[i].direccion || "Dirección no disponible"
}
|
${branch.cantidad > 0 ? `Disponible` : "Agotado"}
${
branch.cantidad > 0
? `
`
: `
`
}
|
`
)
.join("")}
`;
Swal.fire({
html,
width: "700px",
confirmButtonText: "Cerrar",
showCloseButton: true,
background: "white",
customClass: {
popup: "premium-swal-popup",
confirmButton: "premium-confirm-btn",
},
didOpen: () => {
// Efecto de carga progresiva para las filas
const rows = document.querySelectorAll(".branch-list tbody tr");
rows.forEach((row, index) => {
setTimeout(() => {
row.style.opacity = "1";
}, index * 50);
});
},
});
}
function shareProduct(product, platform) {
const shareUrl = `https://electronica2001es.com/search2.php?js=${product.code}`;
const text = `Mira este producto: ${product.description} (${shareUrl})`;
if (platform === "facebook") {
const url = `https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(
shareUrl
)}`;
window.open(url, "_blank");
} else if (platform === "instagram") {
Swal.fire({
icon: "info",
title: "Compartir en Instagram",
text: "Por el momento, Instagram no permite compartir directamente desde el navegador. Puedes copiar el enlace.",
});
return;
} else {
// WhatsApp - Compartir con el número del cliente
const url = `https://wa.me/?text=${encodeURIComponent(text)}`;
window.open(url, "_blank");
}
}
// // Modificar el event listener del botón de WhatsApp en la función showInfoProduct:
// document.getElementById("whatsappConsultBtn")?.addEventListener("click", () => {
// const message = `Hola, estoy interesado en el producto: ${product.description} (Código: ${product.code}). ¿Podrían darme más información?`;
// // Número de WhatsApp de la empresa (503 7860-7797)
// const whatsappUrl = `https://wa.me/50378607797?text=${encodeURIComponent(message)}`;
// window.open(whatsappUrl, "_blank");
// });
function buyNow(product, quantity) {
// Primero agregamos al carrito como en addToCart
const form = document.createElement("form");
form.method = "POST";
form.action = "";
form.style.display = "none";
const fields = {
code: product.code,
cantidadProd: quantity,
nombre: product.description,
imagen: product.images[0],
precio: product.price,
};
for (const name in fields) {
const input = document.createElement("input");
input.type = "hidden";
input.name = name;
input.value = fields[name];
form.appendChild(input);
}
document.body.appendChild(form);
// Simular envío con redirección luego de añadir al carrito
const request = new XMLHttpRequest();
request.open("POST", form.action, true);
request.onload = function () {
if (request.status >= 200 && request.status < 300) {
window.location.href =
"https://electronica2001es.com/cart.php";
} else {
console.error("Error al añadir al carrito");
}
};
const formData = new FormData(form);
request.send(formData);
}
function addToCart(product, quantity) {
const form = document.createElement("form");
form.method = "POST";
form.action = "";
form.style.display = "none";
const fields = {
code: product.code,
cantidadProd: quantity,
nombre: product.description,
imagen: product.images[0],
precio: product.price,
};
for (const name in fields) {
const input = document.createElement("input");
input.type = "hidden";
input.name = name;
input.value = fields[name];
form.appendChild(input);
}
document.body.appendChild(form);
form.submit();
}
// Estrellas bajo el título
const style = document.createElement("style");
style.innerHTML = `
.product-stars {
margin-top: 8px;
display: flex;
gap: 5px;
}
.product-stars svg {
width: 20px;
height: 20px;
fill: orange;
}
`;
document.head.appendChild(style);
const observer = new MutationObserver(() => {
const header = document.querySelector(".product-header");
if (header && !header.querySelector(".product-stars")) {
const stars = document.createElement("div");
stars.className = "product-stars";
stars.innerHTML = `
`;
header.appendChild(stars);
}
});
observer.observe(document.body, { childList: true, subtree: true });