// Utworzenie obiektu kalkulatora
this.kalkulator = new Kalkulator();

function Podkreslenie()
{
    // Podłączenie metody wykonywanej po najechaniu myszą
    $("#produkty li").hover(function () {
        $(this).css("text-decoration", "underline");
      },
      function () {
        if($(this).attr("id") != "aktywnyProdukt")
            $(this).css("text-decoration", "none");
      });
}

// Metoda podłączania zdarzeń do znalezionych produktów
function PodlaczMetodeDoProduktow()
{
    // Dla każdego znalezionego produktu
    $("#produkty li").click(function()
    {
        // Pobranie numeru produktu
        numer = $(this).attr("rel");
        
        $("#aktywnyProdukt").attr("id", "");
        $("#produkty li").css("text-decoration", "none");
        // Ustawienie identyfikatora
        $(this).attr("id", "aktywnyProdukt");
		$("#aktywnyProdukt").css("text-decoration", "underline");
        
        // Ustawienie wartości dla odpowiedniego panelu
        kalkulator.pokazPanel(numer);
        
        // Wyświetlenie materiałów dostępnych dla danego produktu
        PokazMaterialy(numer);
    });
}

// Metoda odpowiedzialna za podłączenie znalezionych materiałów
function PodlaczMetodeDoMaterialow()
{
    // Dla każdego znalezionego produktu
    $("#materialy select").change(function()
    {
        // Pobranie numeru produktu
        produkt = $("#aktywnyProdukt").attr("rel");
        // Pobranie numeru materiału
        material = $(this).attr("value");

        // Wyświetlenie materiałów dostępnych dla danego produktu
        PokazGatunki(produkt, material);
        
        // Przeliczenie wartości
        kalkulator.przeliczWartosci();
    });
}

// Metoda odpowiedzialna za dynamiczne wyświetlenie listy produktów dostępnych w kalkulatorze
function PokazProdukty()
{
    // Wyświetlenie paska statusu
    $("#status").html("Trwa pobieranie listy produktów. Proszę czekać...");

    // Wywołanie żądania
    $.ajax(
    {
        method: "get",
        url: "kalkulator/php/kalkulator.ajax.php",
        data: "metoda=produkty",
        success: function(html)
        {
            // Wyświetlenie produktów
            $("#produkty").html(html);
            
			$("#produkty li").css("id", "");
            // Ustawienie aktywnego elementu
            $("#produkty li:first").attr("id", "aktywnyProdukt");
            
            PodlaczMetodeDoProduktow();
            
            // Ukrycie paska statusu
            $("#status").html("");
            
            Podkreslenie();
        },
        error: function()
        {
            // Wyświetlenie informacji o błędzie
            $("#status").html("Nie udało się pobrać informacji na temat produktów.<br />Spróbuj odświeżyć strone.");
        }
    });
}

// Metoda odpowiedzialna za dynamiczne wyświetlenie parametrów produktu
function PokazMaterialy(id_produktu)
{
    // Wyświetlenie paska statusu
    $("#status").html("Trwa pobieranie parametrów produktów. Proszę czekać...");

    // Wywołanie żądania
    $.ajax(
    {
        method: "get",
        url: "kalkulator/php/kalkulator.ajax.php",
        data: "metoda=materialy&id_produktu=" + id_produktu,
        success: function(html)
        {
            // Wyświetlenie produktów
            $("#materialy").html(html);
            
            // Podłączenie metody
            PodlaczMetodeDoMaterialow();
            PokazGatunki(id_produktu, $("#materialy select").val())

            // Ukrycie paska statusu
            $("#status").html("");
        },
        error: function()
        {
            // Wyświetlenie informacji o błędzie
            $("#status").html("Nie udało się pobrać informacji na temat produktu.");
        }
    });
}

// Metoda odpowiedzialna za dynamiczne wyświetlenie parametrów produktu
function PokazGatunki(id_produktu, id_materialu)
{
    // Wyświetlenie paska statusu
    $("#status").html("Trwa pobieranie parametrów produktów. Proszę czekać...");

    // Wywołanie żądania
    $.ajax(
    {
        method: "get",
        url: "kalkulator/php/kalkulator.ajax.php",
        data: "metoda=gatunki&id_produktu=" + id_produktu + "&id_materialu=" + id_materialu,
        success: function(html)
        {
            // Wyświetlenie produktów
            $("#gatunki").html(html);

            // Ukrycie paska statusu
            $("#status").html("");
            
            // Podłączenie metody do gatunkow
            $("#gatunki select").change(function()
            {
                kalkulator.przeliczWartosci();
            }
            );
        },
        error: function()
        {
            // Wyświetlenie informacji o błędzie
            $("#status").html("Nie udało się pobrać informacji na temat produktu.");
        }
    });
}

function WalidacjaDanych()
{
        // Pobranie wartości wprowadzonych w pola
        var parametr_1 = $("#parametr_1 input").val();
        if(parametr_1 != undefined)
            parametr_1 = parametr_1.replace(',', '.');

        var parametr_2 = $("#parametr_2 input").val();
        if(parametr_2 != undefined)
            parametr_2 = parametr_2.replace(',', '.');

        var dlugosc = $("#dlugosc input").val();
        if(dlugosc != undefined)
            dlugosc = dlugosc.replace(',', '.');

        // Wynik działania funkcji
        var rezultat = true;

        // Próba przeprowadzenia walidacji wartości wprowadzonych w pola
        // Sprawdzenie, czy wartość podana jako pierwszy parametr jest liczbą
        if(isNaN(parametr_1))
        {
            // Dodanie odpowiedniej klasy
            $("#parametr_1").attr("class", "error");
            // Ustalenie zwracanej wartości
            rezultat = false;
        }
        else
            // Dodanie odpowiedniej klasy
            $("#parametr_1").removeAttr("class");

        // Sprawdzenie, czy wartość podana jako drugi parametr jest liczbą
        if(isNaN(parametr_2))
        {
            // Dodanie odpowiedniej klasy
            $("#parametr_2").attr("class", "error");
            // Ustalenie zwracanej wartości
            rezultat = false;
        }
        else
            // Dodanie odpowiedniej klasy
            $("#parametr_2").removeAttr("class");

        // Sprawdzenie, czy wartość podana jako dlugosc jest liczbą
        if(isNaN(dlugosc))
        {
            // Dodanie odpowiedniej klasy
            $("#dlugosc").attr("class", "error");
            // Ustalenie zwracanej wartości
            rezultat = false;
        }
        else
            // Dodanie odpowiedniej klasy
            $("#dlugosc").removeAttr("class");

        // Sprawdzenie, czy należy przeliczyć dane
        if(rezultat == true)
            kalkulator.przeliczWartosci();

        // Zwrócenie rezultatu działania metody
        return rezultat;
}

// Metoda wywoływana po załadowaniu dokumentu
$(document).ready(function(){

    PokazProdukty();
    PokazMaterialy(1);
    PokazGatunki(1, 1);
    
    // Pokazanie panelu dla pierwszego typu produktu
    kalkulator.pokazPanel("1");

    // Podłączenie metod walidujących wprowadzone dane
    $("#panel input").click(function(){
        WalidacjaDanych();
    }
    );

    $("#panel input").keyup(function(){
        WalidacjaDanych();
    }
    );
    
    // Podpięcie metody resetującej formularz
    $("#reset").click(function()
    {
        kalkulator.zerujWartosci();
        kalkulator.przeliczWartosci();
    });
 });
