Platesmania Lookup Toolbox

Provides a button to lookup license plates easily from the upload page on Platesmania.

// ==UserScript==
// @name         Platesmania Lookup Toolbox
// @version      1.4.0
// @description  Provides a button to lookup license plates easily from the upload page on Platesmania.
// @match        https://platesmania.com/*/add*
// @grant        GM_setValue
// @license      MIT
// @namespace https://greasyfork.org/users/976031
// ==/UserScript==

(function() {
    'use strict';

    // Choose your preferred lookup sites here!
    // Put two slashes (//) in front of the lookup site(s) you DON'T want to use and remove them from the one you want to use.
    // Make sure ONLY ONE is active per country, otherwise the script will not work!
    // Save this script and reload the PM upload page for changes to apply.

    // Netherlands
    const NLlookupSite = 'https://finnik.nl/kenteken/';
    // const NLlookupSite = 'https://www.rdwdata.nl/kenteken/';
    // const NLlookupSite = 'https://www.autoweek.nl/kentekencheck/';

    // Sweden
    const SElookupSite = 'https://www.car.info/?s=';
    // const SElookupSite = 'https://biluppgifter.se/fordon/';
    // const SElookupSite = 'https://fordon-fu-regnr.transportstyrelsen.se/?ts-regnr-sok=';

    // Ukraine
    const UAlookupSite = 'https://ua.carplates.app/en/number/';
    // const UAlookupSite = 'https://baza-gai.com.ua/nomer/';
    // const UAlookupSite = 'https://auto-inform.com.ua/search/';

















    // Actual script starts here, don't change anything from here unless you know what you're doing.


    // Function to check if lookup site exists for the current page
    function isLookupSiteAvailable() {
        return window.location.href.includes('platesmania.com/nl/add') ||
            window.location.href.includes('platesmania.com/ua/add') ||
            window.location.href.includes('platesmania.com/no/add') ||
            window.location.href.includes('platesmania.com/dk/add') ||
            window.location.href.includes('platesmania.com/fr/add') ||
            window.location.href.includes('platesmania.com/uk/add') ||
            window.location.href.includes('platesmania.com/fi/add') ||
            window.location.href.includes('platesmania.com/pl/add') ||
            window.location.href.includes('platesmania.com/lt/add') ||
            window.location.href.includes('platesmania.com/se/add');
    }

    // Function to check if all necessary fields contain data
    function areFieldsFilled() {
        if (window.location.href.includes('platesmania.com/nl/add')) {
            return document.getElementById('nomer').value !== '';
        } else if (window.location.href.includes('platesmania.com/ua/add')) {
            const region = document.getElementById('region1').value;
            const digits = document.getElementById('digit1').value;
            return region !== '' && digits !== '';
        } else if (window.location.href.includes('platesmania.com/no/add')) {
            const letField = document.getElementById('let').value;
            const digitField = document.getElementById('digit').value;
            return letField !== '' && digitField !== '';
        } else if (window.location.href.includes('platesmania.com/dk/add')) {
            const letField = document.getElementById('let').value;
            const digitField = document.getElementById('digit').value;
            return letField !== '' && digitField !== '';
        } else if (window.location.href.includes('platesmania.com/fr/add')) {
            const b1 = document.getElementById('b1').value;
            const digit2 = document.getElementById('digit2').value;
            const b2 = document.getElementById('b2').value;
            return b1 !== '' && digit2 !== '' && b2 !== '';
        } else if (window.location.href.includes('platesmania.com/se/add')) {
            const letField = document.getElementById('let').value;
            const digitField = document.getElementById('digit').value;
            return letField !== '' && digitField !== '';
        } else if (window.location.href.includes('platesmania.com/de/add')) {
            const digitField = document.getElementById('digit').value;
            return digitField !== '';
        } else if (window.location.href.includes('platesmania.com/ch/add')) {
            const digitField = document.getElementById('digit').value;
            return digitField !== '';
        } else if (window.location.href.includes('platesmania.com/pl/add')) {
            const digitField = document.getElementById('nomerpl').value;
            return digitField !== '';
        } else if (window.location.href.includes('platesmania.com/uk/add')) {
            const digitField = document.getElementById('nomerpl').value;
            return digitField !== '';
        } else if (window.location.href.includes('platesmania.com/fi/add')) {
            const letField = document.getElementById('let1').value;
            const digitField = document.getElementById('digit').value;
            return digitField !== '';
        } else if (window.location.href.includes('platesmania.com/lt/add')) {
            const digitField = document.getElementById('digit2').value;
            return digitField !== '';
        }
        return false;
    }

    // Function to create or update the lookup button
    function createOrUpdateLookupButton() {
        // Check if lookup site exists for the current page
        if (!isLookupSiteAvailable()) {
            // If no lookup site exists, remove the button
            const lookupButton = document.getElementById('lookupButton');
            if (lookupButton) {
                lookupButton.parentNode.removeChild(lookupButton);
            }
            return;
        }

        // Check if all necessary fields contain data
        const fieldsFilled = areFieldsFilled();

        // Get the button or create it if it doesn't exist
        let lookupButton = document.getElementById('lookupButton');
        if (!lookupButton) {
            lookupButton = document.createElement('button');
            lookupButton.id = 'lookupButton';
            lookupButton.innerText = 'Lookup';
            lookupButton.style.marginBottom = '10px';
            lookupButton.style.width = '100%'; // Make the button as wide as its parent element
            lookupButton.style.backgroundColor = '#3498db'; // Blue color for clickable button
            lookupButton.style.color = '#ffffff'; // White text color
            lookupButton.style.border = 'none'; // Remove border
            lookupButton.style.cursor = 'pointer'; // Change cursor to pointer on hover
            document.getElementById('zoomimgid').parentNode.insertBefore(lookupButton, document.getElementById('zoomimgid'));
        }

        // Set button link and enable/disable based on field data
        if (fieldsFilled) {
            lookupButton.disabled = false; // Enable button
            lookupButton.onclick = function() {
                let plateNumber = '';
                if (window.location.href.includes('platesmania.com/nl/add')) {
                    plateNumber = document.getElementById('nomer').value;
                    window.open(NLlookupSite + plateNumber);
                } else if (window.location.href.includes('platesmania.com/ua/add')) {
                    const region = document.getElementById('region1').value;
                    const digits = document.getElementById('digit1').value;
                    const b1 = document.getElementById('b1').value;
                    const b2 = document.getElementById('b2').value;
                    plateNumber = `${region}${digits}${b1}${b2}`;
                    window.open(UAlookupSite + plateNumber);
                } else if (window.location.href.includes('platesmania.com/no/add')) {
                    const letField = document.getElementById('let').value;
                    const digitField = document.getElementById('digit').value;
                    plateNumber = letField + digitField;
                    window.open('https://www.vegvesen.no/en/vehicles/buy-and-sell/vehicle-information/sjekk-kjoretoyopplysninger/?registreringsnummer=' + plateNumber);
                } else if (window.location.href.includes('platesmania.com/dk/add')) {
                    const letField = document.getElementById('let').value;
                    const digitField = document.getElementById('digit').value;
                    plateNumber = letField + digitField;
                    window.open('https://app.digitalservicebog.dk/search?country=dk&Registration=' + plateNumber);
                } else if (window.location.href.includes('platesmania.com/fr/add')) {
                    const b1 = document.getElementById('b1').value;
                    const digit2 = document.getElementById('digit2').value;
                    const b2 = document.getElementById('b2').value;
                    plateNumber = `${b1}${digit2}${b2}`;
                    window.open('https://immatriculation-auto.info/vehicle/' + plateNumber);
                } else if (window.location.href.includes('platesmania.com/se/add')) {
                    const letField = document.getElementById('let').value;
                    const digitField = document.getElementById('digit').value;
                    plateNumber = letField + digitField;
                    window.open(SElookupSite + plateNumber);
                } else if (window.location.href.includes('platesmania.com/fi/add')) {
                    const letField = document.getElementById('let1').value;
                    const digitField = document.getElementById('digit').value;
                    plateNumber = letField + '-' + digitField;
                    window.open('https://www.motonet.fi/api/vehicleInfo/registrationNumber/FI?locale=fi&registrationNumber=' + plateNumber);
                } else if (window.location.href.includes('platesmania.com/uk/add')) {
                    const fieldData = document.getElementById('nomerpl').value;
                    window.open('https://www.checkcardetails.co.uk/cardetails/' + fieldData);
                } else if (window.location.href.includes('platesmania.com/pl/add')) {
                    // Get the plate number from the form fields
                    const regionField = document.getElementById('region');
                    const selectedRegionText = regionField.options[regionField.selectedIndex].text;
                    const digitField = document.getElementById('nomerpl').value;
                    const plateNumber = selectedRegionText + digitField;

                    // Construct URL with the plate number
                    const targetUrl = `https://moj.gov.pl/nforms/engine/ng/index?nfWidReset=true&xFormsAppName=NormaEuro&xFormsOrigin=EXTERNAL&plateNumber=${encodeURIComponent(plateNumber)}#/search`;

                    // Open MOJ website in new tab with plate number in URL
                    window.open(targetUrl, '_blank');
                } else if (window.location.href.includes('platesmania.com/lt/add')) {
                    const b1 = document.getElementById('b1');
                    const b2 = document.getElementById('b2');
                    const b3 = document.getElementById('b3');
                    const digitField1 = document.getElementById('digit1');
                    const digitField2 = document.getElementById('digit2');
                    const digitField3 = document.getElementById('digit3');
                    const vanityComb = document.getElementById('nomer');
                    const selectedValue = document.getElementById("ctype").value;

                    if (selectedValue === "1") {
                        // Cars
                        plateNumber = b1.value + b2.value + b3.value + digitField2.value;
                    } else if (selectedValue === "2") {
                        // Motorcycles
                        plateNumber = digitField1.value + b1.value + b2.value;
                    } else if (selectedValue === "3") {
                        // Trailers
                        plateNumber = b1.value + b2.value + digitField2.value;
                    } else if (selectedValue === "4") {
                        // Scooters
                        plateNumber = digitField1.value + b1.value + b2.value + b3.value;
                    } else if (selectedValue === "5" || selectedValue === "6" || selectedValue === "7" || selectedValue === "9") {
                        // Vanity, Electric, Oldtimers, Diplo
                        plateNumber = vanityComb.value;
                    } else if (selectedValue === "8") {
                        // Transit plates
                        plateNumber = digitField3.value + b1.value + b2.value;
                    }

                    let form = document.createElement('form');
                    form.action = 'https://www.cab.lt/draustumo-patikra/';
                    form.method = 'POST';
                    form.target = '_blank';

                    let inputCountry = document.createElement('input');
                    inputCountry.type = 'hidden';
                    inputCountry.name = 'country';
                    inputCountry.value = 'LT';

                    let inputPlate = document.createElement('input');
                    inputPlate.type = 'hidden';
                    inputPlate.name = 'plate';
                    inputPlate.value = plateNumber;

                    form.appendChild(inputCountry);
                    form.appendChild(inputPlate);
                    document.body.appendChild(form);
                    form.submit();
                    document.body.removeChild(form);
                };



            }

        } else {
            lookupButton.disabled = true; // Disable button
            lookupButton.onclick = null; // Remove click event
        }
    }

    // Function to create or update the Google Images button
    function createOrUpdateGoogleImagesButton() {
        // Check if all necessary fields contain data
        const fieldsFilled = areFieldsFilled();

        // Get the button or create it if it doesn't exist
        let googleImagesButton = document.getElementById('googleImagesButton');
        if (!googleImagesButton) {
            googleImagesButton = document.createElement('button');
            googleImagesButton.id = 'googleImagesButton';
            googleImagesButton.innerText = 'Search combination on Google Images';
            googleImagesButton.style.marginBottom = '10px';
            googleImagesButton.style.width = '100%'; // Make the button as wide as its parent element
            googleImagesButton.style.backgroundColor = '#3498db'; // Blue color for clickable button
            googleImagesButton.style.color = '#ffffff'; // White text color
            googleImagesButton.style.border = 'none'; // Remove border
            googleImagesButton.style.cursor = 'pointer'; // Change cursor to pointer on hover
            document.getElementById('zoomimgid').parentNode.insertBefore(googleImagesButton, document.getElementById('zoomimgid'));
        }

        // Set button link and enable/disable based on field data
        if (fieldsFilled) {
            googleImagesButton.disabled = false; // Enable button
            googleImagesButton.onclick = function() {
                let plateNumber = '';
                if (window.location.href.includes('platesmania.com/nl/add')) {
                    plateNumber = document.getElementById('nomer').value;
                } else if (window.location.href.includes('platesmania.com/ua/add')) {
                    const region = document.getElementById('region1').value;
                    const digits = document.getElementById('digit1').value;
                    const b1 = document.getElementById('b1').value;
                    const b2 = document.getElementById('b2').value;
                    plateNumber = `${region} ${digits} ${b1}${b2}`;
                } else if (window.location.href.includes('platesmania.com/no/add')) {
                    const letField = document.getElementById('let').value;
                    const digitField = document.getElementById('digit').value;
                    plateNumber = letField + ' ' + digitField;
                } else if (window.location.href.includes('platesmania.com/dk/add')) {
                    const letField = document.getElementById('let').value;
                    const digitField = document.getElementById('digit').value;
                    plateNumber = letField + ' ' + digitField;
                } else if (window.location.href.includes('platesmania.com/fr/add')) {
                    const b1 = document.getElementById('b1').value;
                    const digit2 = document.getElementById('digit2').value;
                    const b2 = document.getElementById('b2').value;
                    plateNumber = `${b1} ${digit2} ${b2}`;
                } else if (window.location.href.includes('platesmania.com/se/add')) {
                    const letField = document.getElementById('let').value;
                    const digitField = document.getElementById('digit').value;
                    plateNumber = letField + ' ' + digitField;
                } else if (window.location.href.includes('platesmania.com/de/add')) {
                    const regionField = document.getElementById('region').value;
                    const letField = document.getElementById('b1').value;
                    const letField2 = document.getElementById('b2').value;
                    const digitField = document.getElementById('digit').value;
                    plateNumber = regionField + ' ' + letField + ' ' + digitField + letField2;
                } else if (window.location.href.includes('platesmania.com/ch/add')) {
                    const regionField = document.getElementById('region').value;
                    const digitField = document.getElementById('digit').value;
                    plateNumber = regionField + ' ' + digitField;
                } else if (window.location.href.includes('platesmania.com/fi/add')) {
                    const letField = document.getElementById('let1').value;
                    const digitField = document.getElementById('digit').value;
                    plateNumber = letField + '-' + digitField;
                } else if (window.location.href.includes('platesmania.com/pl/add')) {
                    const regionField = document.getElementById('region');
                    const selectedRegionText = regionField.options[regionField.selectedIndex].text;
                    const digitField = document.getElementById('nomerpl').value;
                    plateNumber = selectedRegionText + ' ' + digitField;
                } else if (window.location.href.includes('platesmania.com/uk/add')) {
                    const fieldData = document.getElementById('nomerpl').value;
                    plateNumber = fieldData;
                } else if (window.location.href.includes('platesmania.com/lt/add')) {
                    const b1 = document.getElementById('b1');
                    const b2 = document.getElementById('b2');
                    const b3 = document.getElementById('b3');
                    const digitField1 = document.getElementById('digit1');
                    const digitField2 = document.getElementById('digit2');
                    const digitField3 = document.getElementById('digit3');
                    const vanityComb = document.getElementById('nomer');
                    const selectedValue = document.getElementById("ctype").value;

                    if (selectedValue === "1") {
                        // Cars
                        plateNumber = b1.value + b2.value + b3.value + digitField2.value;
                    } else if (selectedValue === "2") {
                        // Motorcycles
                        plateNumber = digitField1.value + b1.value + b2.value;
                    } else if (selectedValue === "3") {
                        // Trailers
                        plateNumber = b1.value + b2.value + digitField2.value;
                    } else if (selectedValue === "4") {
                        // Scooters
                        plateNumber = digitField1.value + b1.value + b2.value + b3.value;
                    } else if (selectedValue === "5" || selectedValue === "6" || selectedValue === "7" || selectedValue === "9") {
                        // Vanity, Electric, Oldtimers, Diplo
                        plateNumber = vanityComb.value;
                    } else if (selectedValue === "8") {
                        // Transit plates
                        plateNumber = digitField3.value + b1.value + b2.value;
                    }
                };


                window.open('https://www.google.com/search?tbm=isch&q="' + plateNumber + '"');
            }
        }
        else {
            googleImagesButton.disabled = true; // Disable button
            googleImagesButton.onclick = null; // Remove click event
        }
    }

    // Create or update the lookup and Google Images buttons initially
    createOrUpdateLookupButton();
    createOrUpdateGoogleImagesButton();

    // Set interval to update button every 1-2 seconds
    setInterval(() => {
        createOrUpdateLookupButton();
        createOrUpdateGoogleImagesButton();
    }, 1000);
})();