import {odstranitFormular, upravitProgressBar} from './formular.js';
var cooldown = undefined;


export function createButton(Constants, classID, text, id){
    var div = document.querySelector("." + classID);
    var button = document.createElement("button");
    button.innerHTML = text;
    button.id = id;
    div.appendChild(button);
    if(Constants.LOGOVANI)console.log("Vytvoreno tlacitko \"" + text + "\"");
    return button;

}

export function zobrazitHlasku(Constants, text, poznamka, icon, potvrzovat, duration){
    if ((poznamka != null)){
        Swal.fire({
            position: 'top-end',
            icon: icon,
            title: text,
            text: poznamka,
            showConfirmButton: potvrzovat,
            timer: duration
        })
    } else {
        Swal.fire({
            position: 'top-end',
            icon: icon,
            title: text,
            showConfirmButton: potvrzovat,
            timer: duration
        })
    }
}


export function hlaska(Constants, zobrazit, kladna, text){
    const div = document.getElementById("hlaska");
    if (!zobrazit)div.innerHTML = "";
    else {
        if (kladna){
            div.innerHTML = "<i class=\"fa-solid fa-square-check\"></i>  " + text;
            div.style.color = "green";
        } else {
            div.innerHTML = "<i class=\"fa-solid fa-square-xmark\"></i>  " + text;
            div.style.color = "darkRed";
        }

        setTimeout(function() {
            div.innerHTML = "";
        }, Constants.konfiguratorHLASKADURATION);
    }
}

export function zvyrazneniStisknutehoTlacitka(button, aktivniButton){
    if (aktivniButton != null)disableActiveButton(aktivniButton);
    enableActiveButton(button);
}

export function removeAllButtons(classID, tlacitka){
    var div = document.querySelector("." + classID);
    for (let i = 0; i < tlacitka.length; i++)div.removeChild(tlacitka[i]);
}

function enableActiveButton(button){
    button.style.border = "2px solid black";
    button.style.fontWeight = "bold";
}

function disableActiveButton(button){
    button.style.border = "1px solid black";
    button.style.fontWeight = "normal";
}

export function errorHlaska(hlaska, classID, create){

    var optionsDiv = document.querySelector("." + classID);
    if (create){
        var p = document.createElement('p');
        p.textContent = hlaska;
        optionsDiv.appendChild(p);
    } else {
        var p = optionsDiv.querySelector('p');
        optionsDiv.removeChild(p);
    }
    return create;
}

export function getTypTopologieIndex(Constants, typ){
    for (let i = 0; i < Constants.TYP_TOPOLOGIE.length; i++){
        if (typ.toLowerCase() == Constants.TYP_TOPOLOGIE[i].toLowerCase()) return i;
    }
    return -1;
}

export function shodnySpoj(A, B, poleSpoju){
                 
    if (A.length < 1 || B.length < 1) return false;
    if (A == B) return true;

    for (let i = 0; i < poleSpoju.length; i++){
        
        if (A == poleSpoju[i].A.nazev || A == poleSpoju[i].B.nazev){

            if (B == poleSpoju[i].A.nazev || B == poleSpoju[i].B.nazev)return true;
        }
    }
    return false;
}


export function formularSetDataForSpoj(Constants, spoj, formularHorni, formularSpodni){
    let zmena = false;

    let download = formularHorni.downloadInput.value;
    let upload = formularHorni.uploadInput.value;
    let poznamka = formularHorni.poznamkaInput.value;
    let vzdalenost = formularHorni.vzdalenostInput.value;
    let oznaceni = formularHorni.oznaceniInput.value;

    // Numerické parametry - nastavení výchozích hodnot v případě prázdné hodnoty z formuláře
    if (vzdalenost == "")vzdalenost = 0;
    if (download == "")download = 0;
    if (upload == "")upload = 0;

    if (spoj.download != download || spoj.upload != upload || spoj.poznamka != poznamka || spoj.oznaceni != oznaceni || spoj.vzdalenost != vzdalenost)zmena = true;

    spoj.download = download;
    spoj.upload = upload;
    spoj.poznamka = poznamka;
    spoj.oznaceni = oznaceni;
    spoj.vzdalenost = vzdalenost;

    switch (spoj.typ){
        case "BPL":
            //BPL
            let koeficient = formularSpodni.koeficientInput.value;
            let pocetSpojek = formularSpodni.pocetSpojekInput.value;
            let typSpojek = formularSpodni.typSpojekInput.value;
            let rokInstalaceSpojek = formularSpodni.rokInstalaceSpojekInput.value;
            let typKabelu = formularSpodni.typKabeluInput.value;
            let rokInstalaceKabelu = formularSpodni.rokInstalaceKabeluInput.value;
            let rx = formularSpodni.bleRxInput.value;
            let tx = formularSpodni.bleTxInput.value;

            let delkaUsekuKabelu = formularSpodni.delkaUsekuKabeluInput.value;
            let prurezKabelu = formularSpodni.prurezKabeluInput.value;
            let materialSpojek = formularSpodni.materialSpojekInput.value;
            let zatez = formularSpodni.zatezInput.value;
            let zemneni = formularSpodni.zemneniSelect.value;

            // Numerické parametry - nastavení výchozích hodnot v případě prázdné hodnoty z formuláře
            if (prurezKabelu == "" || prurezKabelu === undefined)prurezKabelu = 0;
            if (pocetSpojek == "" || pocetSpojek === undefined)pocetSpojek = -1;
            if (zatez == "" || zatez === undefined)zatez = -1;
            if (rx == "" || rx === undefined)rx = 0;
            if (tx == "" || tx === undefined)tx = 0;

            if (spoj.koeficient !== koeficient || spoj.pocetSpojek !== pocetSpojek || spoj.typSpojek !== typSpojek || spoj.rokInstalaceSpojek !== rokInstalaceSpojek || spoj.typKabelu !== typKabelu || spoj.rokInstalaceKabelu !== rokInstalaceKabelu || spoj.rx !== rx || spoj.tx !== tx || spoj.delkaUsekuKabelu !== delkaUsekuKabelu || spoj.prurezKabelu !== prurezKabelu || spoj.materialSpojek !== materialSpojek || spoj.zatez !== zatez || spoj.zemneni !== zemneni)zmena = true;

            spoj.koeficient = koeficient;
            spoj.pocetSpojek = pocetSpojek
            spoj.typSpojek = typSpojek;
            spoj.rokInstalaceSpojek = rokInstalaceSpojek;
            spoj.typKabelu = typKabelu;
            spoj.rokInstalaceKabelu = rokInstalaceKabelu;
            spoj.rx = rx;
            spoj.tx = tx;

            spoj.delkaUsekuKabelu = delkaUsekuKabelu;
            spoj.prurezKabelu = prurezKabelu;
            spoj.materialSpojek = materialSpojek;
            spoj.zatez = zatez;
            spoj.zemneni = zemneni;
        break;
        case "MW":
            let rxMHz = formularSpodni.RxInput.value;
            let txMHz = formularSpodni.TxInput.value;
            let bandwithMHz = formularSpodni.bandWidthInput.value;
            let modulace = formularSpodni.modulaceInput.value;

            if (rxMHz == "" || rxMHz === undefined)rxMHz = 0;
            if (txMHz == "" || txMHz === undefined)txMHz = 0;
            if (bandwithMHz == "" || bandwithMHz === undefined)bandwithMHz = 0;

            if (spoj.rxMHz != rxMHz || spoj.txMHz != txMHz || spoj.bandwithMHz != bandwithMHz || spoj.modulace != modulace) zmena = true;

            spoj.rxMHz = rxMHz;
            spoj.txMHz = txMHz;
            spoj.bandwithMHz = bandwithMHz;
            spoj.modulace = modulace;
        break;

        // PŘIDÁNÍ ZPRACOVÁNÍ DAT Z FORMULÁŘE PRO SPECIFICKOU TECHNOLOGII
    }
    return zmena;
}

export function formularSpojUpdateInput(Constants, spoj, formularHorni, formularSpodni){
    let A = spoj.A.nazev;
    let B = spoj.B.nazev;

    // Vybrání odpovídajících stanic v rozbalovacích nabídkách
    for (let i = 0; i < formularHorni.ASelect.options.length; i++) {
        if (formularHorni.ASelect.options[i].value == A) {
            formularHorni.ASelect.selectedIndex = i;
            break;
        }
    }

    for (let i = 0; i < formularHorni.BSelect.options.length; i++) {
        if (formularHorni.BSelect.options[i].value == B) {
            formularHorni.BSelect.selectedIndex = i;
            break;
        }
    }

    let technologie = spoj.typ;
    // Vybrání odpovídající technologie v rozbalovací nabídce
    for (let i = 0; i < formularHorni.technologieSelect.options.length; i++) {
        if (formularHorni.technologieSelect.options[i].value == technologie) {
            formularHorni.technologieSelect.selectedIndex = i;
            break;
        }
    }

    if (formularHorni.reset)return;
    formularHorni.downloadInput.value = spoj.download;
    formularHorni.uploadInput.value = spoj.upload;
    formularHorni.poznamkaInput.value = spoj.poznamka;
    formularHorni.vzdalenostInput.value = spoj.vzdalenost;
    formularHorni.oznaceniInput.value = spoj.oznaceni;

    switch (technologie){
        case "BPL":
            formularSpodni.koeficientInput.value = spoj.koeficient;
            formularSpodni.pocetSpojekInput.value = spoj.pocetSpojek;
            formularSpodni.typSpojekInput.value = spoj.typSpojek;
            formularSpodni.rokInstalaceSpojekInput.value = spoj.rokInstalaceSpojek;
            formularSpodni.typKabeluInput.value = spoj.typKabelu;
            formularSpodni.rokInstalaceKabeluInput.value = spoj.rokInstalaceKabelu;
            formularSpodni.bleRxInput.value = spoj.rx;
            formularSpodni.bleTxInput.value = spoj.tx;
            formularSpodni.delkaUsekuKabeluInput.value = spoj.delkaUsekuKabelu;
            formularSpodni.prurezKabeluInput.value = spoj.prurezKabelu;
            formularSpodni.materialSpojekInput.value = spoj.materialSpojek;
            formularSpodni.zatezInput.value = spoj.zatez;
            formularSpodni.zemneniSelect.value = spoj.zemneni;
            upravitProgressBar(Constants, formularHorni, formularSpodni);
        break;
        case "MW":
            formularSpodni.RxInput.value = spoj.rxMHz;
            formularSpodni.TxInput.value = spoj.txMHz;
            formularSpodni.bandWidthInput.value = spoj.bandwithMHz;
            formularSpodni.modulaceInput.value = spoj.modulace;
        break;

        // PŘIDÁNÍ NAČTENÍ DAT DO FORMULÁŘE PRO SPECIFICKOU TECHNOLOGII

    }


}