// Konstruktor klasy
function Kalkulator()
{
    // Wartość pierwszego parametru
    this.param_1 = 0;
    // Wartość drugiego parametru
    this.param_2 = 0;
    
    // Długość
    this.dlugosc = 1;
    // Gęstość
    this.gestosc = 0;
    
    // Numer produktu
    this.numer = 0;
    
    
    // Metoda odpowiedzialna za załadowanie wartości z komponentów
    this.zaladujWartosci = function()
    {
        // Załadowanie wartości do odpowiednich pól obiektu
        this.param_1 = $("#parametr_1 input").val();
        if(this.param_1 != undefined)
            this.param_1 = this.param_1.replace(',', '.');
            
        this.param_2 = $("#parametr_2 input").val();
        if(this.param_2 != undefined)
            this.param_2 = this.param_2.replace(',', '.');
        
        // Załadowanie wprowadzonej długości
        this.dlugosc = $("#dlugosc input").val();
        if(this.dlugosc != undefined)
            this.dlugosc = this.dlugosc.replace(',', '.');
            
        // Załadowanie wybranej gęstości
        this.gestosc = $("#gatunki select").val();
        if(this.gestosc != undefined)
            this.gestosc = this.gestosc.replace(',', '.');
    }
    
    // Metoda odpowiedzialna za wyzerowanie wprowadzonych wartości
    this.zerujWartosci = function()
    {
       // Wyzerowanie wartości parametrów
       $("#parametr_1 input").val(0);
       $("#parametr_2 input").val(0);
       
       // Wyzerowanie długości
       $("#dlugosc input").val(1);
    }
    
    // Metoda odpowiedzialna za przeliczenie wartości wprowadzonych przez użytkownika
    this.przeliczWartosci = function()
    {
        // Załadowanie wartości
        this.zaladujWartosci();
    
        // Deklaracja zmiennych pomocniczych
        var pole_powierzchni = 0;
        var masa_1_metr = 0;
        var masa_calkowita = 0;
        
        if(this.param_1 == "")
            this.param_1 = 0;
            
        if(this.param_2 == "")
            this.param_2 = 0;
            
        if(this.dlugosc == "")
            this.dlugosc = 1;
    
        // W zalezności od wybranego typu produktu
        switch(this.numer)
        {
            // Rura
            case "1":
                var promien1 = this.param_1/2;
                var promien2 = promien1 - this.param_2;
            
                // Obliczenie pola powierzchni
                pole_powierzchni = ((3.14 * promien1 * promien1) - (3.14 * promien2 * promien2)) / 10000;
                
                // Obliczenie masy 1 metra
                masa_1_metr = Math.round(pole_powierzchni * this.gestosc * 1000)/100;
                // Obliczenie masy całkowitej
                masa_calkowita = Math.round(masa_1_metr * this.dlugosc * 100)/100;
                break;

            // Pręt kwadratowy
            case "2":
                // Obliczenie pola powierzchni
                pole_powierzchni = this.param_1 * this.param_1 / 10000;
                // Obliczenie masy 1 metra
                masa_1_metr = Math.round(pole_powierzchni * this.gestosc * 10000)/1000;
                // Obliczenie masy całkowitej
                masa_calkowita = Math.round(masa_1_metr * this.dlugosc * 1000)/1000;
                break;
                
            // Pręt okrągły
            case "3":
                // Obliczenie pola powierzchni
                pole_powierzchni = 3.14 * (this.param_1/2) * (this.param_1/2) / 10000;
                // Obliczenie masy 1 metra
                masa_1_metr = Math.round(pole_powierzchni * this.gestosc * 10000)/1000;
                // Obliczenie masy całkowitej
                masa_calkowita = Math.round(masa_1_metr * this.dlugosc * 1000)/1000;
                break;
                
            // Pręt sześciokątny
            case "4":
                // Oblicenie długości boku figury
                var bok = this.param_1 / Math.sqrt(3);
                // Obliczenie pola powierzchni
                pole_powierzchni =  ((6 * bok * bok * Math.sqrt(3)) / 4) / 10000;
                // Obliczenie masy 1 metra
                masa_1_metr = Math.round(pole_powierzchni * this.gestosc * 10000)/1000;
                // Obliczenie masy całkowitej
                masa_calkowita = Math.round(masa_1_metr * this.dlugosc * 1000)/1000;
                break;
                
            // Taśma
            // Blacha
            case "5":
            case "6":
                // Obliczenie pola powierzchni
                pole_powierzchni = this.param_1 * this.param_2 / 10000;
                // Obliczenie masy 1 metra
                masa_1_metr = Math.round(pole_powierzchni * this.gestosc * 10000)/1000;
                // Obliczenie masy całkowitej
                masa_calkowita = Math.round(masa_1_metr * this.dlugosc * 1000)/1000;
                break;

            // Płaskownik
            case "7":
                // Obliczenie pola powierzchni
                pole_powierzchni = this.param_1 * this.param_2 / 10000;
                // Obliczenie masy 1 metra
                masa_1_metr = Math.round(pole_powierzchni * this.gestosc * 1000)/100;
                // Obliczenie masy całkowitej
                masa_calkowita = Math.round(masa_1_metr * this.dlugosc * 100)/100;
                break;

            // Żaden z powyższych
            default:
                break;
        }

        if((isNaN(masa_1_metr)) || (masa_1_metr < 0))
             masa_1_metr = 0;
        
        if((isNaN(masa_calkowita)) || (masa_calkowita < 0))
             masa_calkowita = 0;

        // Przepisanie wartości do pól
        $("#masa td:first").text(masa_1_metr);
        $("#masa_calkowita td:first").text(masa_calkowita);
    }
    
    // Metoda wyświetlająca specyficzny dla wskazanego produktu panel umożliwiający wprowadzanie danych
    this.pokazPanel = function(numer)
    {

        // Zapamiętanie nowego numeru panelu do wyświetlenia
        this.numer = numer;

        // Załadowanie nowych wartości
        this.zaladujWartosci();

        $("#obrazek td").html("<img src='kalkulator/images/obr_" + numer + ".jpg' width='325' height='150' />");

        // W zależności od ładowanego panelu
        switch(numer)
        {
            // Rury
            case "1":
                // Ustawienie treści pierwszego parametru
                $("#parametr_1 th").text("Średnica [d]:");
                // Ustalenie widoczności drugiego parametru
                $("#parametr_2").show();
                // Ustalenie treści drugiego parametru
                $("#parametr_2 th").text("Grubość ściany [b]:");
                break;

            // Pręt kwadratowy
            // Pręt okrągły
            // Pręt sześciokątny
            case "2":
            case "3":
            case "4":
                // Ustalenie tekstu pierwszego parametru
                $("#parametr_1 th").text("Wymiar [d]:");
                // Ukrycie drugiego parametru
                $("#parametr_2").hide();
                break;

            // Taśmy
            // Blachy
            // Płaskowniki
            case "5":
            case "6":
            case "7":
                // Ustawienie treści pierwszego parametru
                $("#parametr_1 th").text("Szerokość [d]:");
                // Ustalenie widoczności drugiego parametru
                $("#parametr_2").show();
                // Ustalenie treści drugiego parametru
                $("#parametr_2 th").text("Grubość [b]:");
                break;

            // Żaden z powyższych
            default:
                break;
        }

            // Wyzerowanie wartości parametrów
            this.zerujWartosci();

            // Walidacja danych
            WalidacjaDanych();
    }
    
    this.pokazPanel(1);
}

