// source --> /scripts/calc_feed.js?2 
const go_next_calc = () => {
    $('.welcome_calculator').fadeOut(function(){
        $('.enter_calc').fadeIn();
    });
}

var calc_obj = {
    name: 'dog',
    weight: 0,
    dog_type: '',
    dog_characteristic: '',
    feed_energy: 0,
    energy_requirement: 0,
    calc_feed_energy: {
        feed_protein: 0,
        feed_fat: 0,
        feed_fiber: 0,
        feed_ash: 0,
        feed_humidity: 0
    },
    characteristic_factor: {
        dog_light_work: 2,
        dog_medium_work: 3,
        dog_hard_work: 6,
        dog_sterilized: 1.6,
        dog_not_sterilized: 1.8,
        dog_obesse: 1.4,
        dog_diet: 1,
        dog_recovery: 1.3,
        dog_early_preg: 1.8,
        dog_late_preg: 3,
        dog_feeding1: 3,
        dog_feeding2: 3.5,
        dog_feeding3: 4,
        dog_feeding4: 5,
        dog_feeding5: 5.5,
        dog_feeding6: 6,
        dog_young_puppy: 3,
        dog_medium_puppy: 2.5,
        dog_old_puppy: 1.8
    },
    calculate_portion: function (unknown) {
        var rer = 70 * Math.pow(calc_obj.weight, 0.75);
        var der = calc_obj.characteristic_factor[calc_obj.dog_characteristic] * rer;
        calc_obj.energy_requirement = der;
        if(unknown){
            var baw = 100;
            for (i in calc_obj.calc_feed_energy) {
                baw = baw - calc_obj.calc_feed_energy[i];
            }
            calc_obj.feed_energy = calc_obj.calc_feed_energy.feed_protein * 3.5 + calc_obj.calc_feed_energy.feed_fat * 8.5 + baw * 3.5;
        }
        calc_obj.result = Math.round(calc_obj.energy_requirement * 100 / calc_obj.feed_energy * 100) / 100;
    },
    app: undefined,
    result: 10,
    init: function () {
        $('header.entry-header').fadeOut()
        $('.enter_calc').fadeOut(function(){
            document.querySelectorAll('.calculator_app')[0].innerHTML = calc_forms.form1;
            calc_obj.app = document.querySelectorAll('.calculator_app')[0];
            calc_obj.bindButton();
            $('.calculator_app').fadeIn();
            if($(window).width() < 479){
                $('body, html').animate({
                    scrollTop: $('#content').offset().top
                })
            }else{
                $('body, html').animate({
                    scrollTop: $('#content').offset().top - 100
                })
            }
        });
    },
    removeElement: function (id) {
        var elem = document.getElementById(id);
        return elem.parentNode.removeChild(elem);
    },

    switchForms: function (goForward, curr_form, next_form) {
        console.log('switching forms')
        if (goForward) {
            calc_obj.app.querySelectorAll('input').forEach(function (elem) {
                elem.removeAttribute('checked');
                elem.setAttribute('value', elem.value);
                if (elem.checked) {
                    elem.setAttribute('checked', elem.checked);
                }
            });
            if (curr_form.getAttribute('id').length == 6) {
                calc_forms.prevForm2 = curr_form.getAttribute('id');
            }
            calc_forms[curr_form.getAttribute('id')] = curr_form.outerHTML;
        }
        $(calc_obj.app).fadeOut(function(){
            calc_obj.removeElement(curr_form.getAttribute('id'))
            calc_obj.app.innerHTML = calc_forms[next_form];
            calc_obj.bindButton();
            if(next_form == 'result'){
                calc_obj.app.querySelectorAll('.total_amount')[0].innerHTML = calc_obj.result + 'g';
            }
            $(calc_obj.app).fadeIn();
            if($(window).width() < 479){
                $('body, html').animate({
                    scrollTop: $('#content').offset().top
                })
            }
        })
    },

    form3validate: function () {
        var validated = true;
        calc_obj.app.querySelectorAll('.calc_form_container input').forEach(function (item, index) {
            item.value = parseFloat(item.value.replace(',', '.'))
            if (item.value == '' || item.value == null || isNaN(item.value)) {
                item.value = null;
                validated = false;
                return false
            };
        });
        return validated
    },
    bindButton: function () {
        if (calc_obj.app.querySelectorAll('#go_forward').length) {
            calc_obj.app.querySelectorAll('#go_forward')[0].onclick = function (e) {

                e.preventDefault();
                //pobieranie danych
                var curr_lvl = calc_obj.app.querySelectorAll('.calc_form_container')[0].getAttribute('id')
                switch (curr_lvl) {
                    case 'form1':
                        var curr_weight = calc_obj.app.querySelectorAll('input[name="dog_weight"]');
                        curr_weight[0].value = parseFloat(curr_weight[0].value.replace(',', '.'))
                        console.log('liczba?',isNaN(curr_weight[0].value));
                        if (!calc_obj.app.querySelectorAll('input[type="radio"]:checked').length || (curr_weight.length && (curr_weight[0].value == '' || curr_weight[0].value == null || isNaN(parseInt(curr_weight[0].value))))) {
                            curr_weight[0].value = null;
                            alert('wypełnij odpowiednio wszystkie pola');
                            return false
                        }
                        calc_obj.dog_type = calc_obj.app.querySelectorAll('input[type="radio"]:checked')[0].value;
                        calc_obj.weight = curr_weight[0].value;
                        var curr_form = calc_obj.app.querySelectorAll('.calc_form_container')[0];
                        var next_form = calc_obj.app.querySelectorAll('input[type="radio"]:checked')[0].getAttribute('data-form');
                        calc_obj.switchForms(true, curr_form, next_form);

                        break;
                    case 'form2':
                        var curr_form = calc_obj.app.querySelectorAll('.calc_form_container')[0];
                        var next_form = calc_obj.app.querySelectorAll('input[type="radio"]:checked')[0].getAttribute('data-form');
                        calc_obj.switchForms(true, curr_form, next_form);
                        break;
                    case 'form3a':
                        if (calc_obj.form3validate()) {
                            calc_obj.feed_energy = calc_obj.app.querySelectorAll('input[name="feed_energy"]')[0].value;
                            var curr_form = calc_obj.app.querySelectorAll('.calc_form_container')[0];
                            calc_obj.calculate_portion();
                            calc_obj.switchForms(true, curr_form, 'result');
                        } else {
                            alert('Wypełnij wszystkie pola poprawnymi danymi!');
                        }

                        break;
                    case 'form3b':
                        if (calc_obj.form3validate()) {
                            calc_obj.app.querySelectorAll('input[type="text"]').forEach(function (input) {
                                calc_obj.calc_feed_energy[input.getAttribute('name')] = input.value;
                            });
                            var curr_form = calc_obj.app.querySelectorAll('.calc_form_container')[0];
                            calc_obj.calculate_portion(true);
                            calc_obj.switchForms(true, curr_form, 'result');
                        } else {
                            alert('Wypełnij wszystkie pola poprawnymi danymi!');
                        }
                        break;
                    default:
                        var curr_form = calc_obj.app.querySelectorAll('.calc_form_container')[0];
                        if (!calc_obj.app.querySelectorAll('input[type="radio"]:checked').length) {
                            alert('Wypełnij odpowiednio wszystkie pola');
                            return false
                        }
                        calc_obj.dog_characteristic = calc_obj.app.querySelectorAll('input[type="radio"]:checked')[0].value;
                        calc_obj.switchForms(true, curr_form, 'form2');
                        break;
                }
            };
        }
        if (calc_obj.app.querySelectorAll('#go_back').length) {
            calc_obj.app.querySelectorAll('#go_back')[0].onclick = function () {
                console.log('go_back')
                var curr_form = calc_obj.app.querySelectorAll('.calc_form_container')[0];
                var next_form = '';
                if (curr_form.hasAttribute('data-prev')) {
                    next_form = curr_form.getAttribute('data-prev');
                } else {
                    next_form = calc_forms.prevForm2;
                }
                console.log(next_form);
                calc_obj.switchForms(false, curr_form, next_form);
            };
        }
        if (calc_obj.app.querySelectorAll('#start_again').length) {
            calc_obj.app.querySelectorAll('#start_again')[0].onclick = function () {
                var curr_form = calc_obj.app.querySelectorAll('.calc_form_container')[0];
                calc_obj.switchForms(false, curr_form, 'form1');
            };
        }
    }
};

var calc_forms = {
    form1: '<div class="calc_form_container " id="form1"> <form class="calc_radio_container first_form"> <div class="form_question">Jakiego masz psa?</div> <div class="calc_radio"> <input id="dog_adult" value="dog_adult" type="radio" name="dog_type" data-form="form1a"> <label for="dog_adult">Pies dorosły</label> </div> <div class="calc_radio"> <input id="dog_working" value="dog_working" type="radio" name="dog_type" data-form="form1b"> <label for="dog_working">Pies pracujący</label> </div> <div class="calc_radio"> <input id="dog_pregnant" value="dog_pregnant" type="radio" name="dog_type" data-form="form1c"> <label for="dog_pregnant">Suczka w ciąży</label> </div> <div class="calc_radio"> <input id="dog_feeding" value="dog_feeding" type="radio" name="dog_type" data-form="form1d"> <label for="dog_feeding">Suczka karmiąca młode</label> </div> <div class="calc_radio"> <input id="dog_growing" value="dog_growing" type="radio" name="dog_type" data-form="form1e"> <label for="dog_growing">Pies rosnący</label> </div> <div class="dog_weight_cont"> <label for="dog_weight">Wpisz wagę swojego psa</label> <input type="text" name="dog_weight" value="" /> kg</div> </form> <button class="btn btn-primary" id="go_forward">Idę dalej!</button> </div>',
    form1a: '<div class="calc_form_container " id="form1a" data-prev="form1"> <form class="calc_radio_container first_form_a"> <div class="form_question">Jakie określenie najlepiej pasuje do Twojego psa?</div> <div class="calc_radio"> <input id="dog_sterilized" value="dog_sterilized" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_sterilized">sterylizowany</label> </div> <div class="calc_radio"> <input id="dog_not_sterilized" value="dog_not_sterilized" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_not_sterilized">niesterylizowany</label> </div> <div class="calc_radio"> <input id="dog_obesse" value="dog_obesse" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_obesse">otyły, mało aktywny</label> </div> <div class="calc_radio"> <input id="dog_recovery" value="dog_recovery" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_recovery">ozdyskujący masę ciała w okresie rekonwalescencji</label> </div> </form> <button class="btn btn-link" id="go_back">Wstecz</button> <button class="btn btn-primary" id="go_forward">Idę dalej!</button> </div>',
    form1b: '<div class="calc_form_container " id="form1b" data-prev="form1"> <form class="calc_radio_container first_form_b"> <div class="form_question">Jak ciężko pracuje Twój pies?</div> <div class="calc_radio"> <input id="dog_light_work" value="dog_light_work" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_light_work">lekko</label> </div> <div class="calc_radio"> <input id="dog_medium_work" value="dog_medium_work" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_medium_work">średnio</label> </div> <div class="calc_radio"> <input id="dog_hard_work" value="dog_hard_work" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_hard_work">ciężko</label> </div> </form> <button class="btn btn-link" id="go_back">Wstecz</button> <button class="btn btn-primary" id="go_forward">Idę dalej!</button> </div>',
    form1c: '<div class="calc_form_container " id="form1c" data-prev="form1"> <form class="calc_radio_container first_form_c"> <div class="form_question">W którym miesiącu ciąży jest Twoja suczka?</div> <div class="calc_radio"> <input id="dog_early_preg" value="dog_early_preg" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_early_preg">do 6 tygodnia ciąży</label> </div> <div class="calc_radio"> <input id="dog_late_preg" value="dog_late_preg" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_late_preg">powyżej 6 tygodnia ciąży</label> </div> </form> <button class="btn btn-link" id="go_back">Wstecz</button> <button class="btn btn-primary" id="go_forward">Idę dalej!</button> </div>',
    form1d: '<div class="calc_form_container " id="form1d" data-prev="form1"> <form class="calc_radio_container first_form_d"> <div class="form_question">Ile szczeniąt karmi Twoja suczka?</div> <div class="calc_radio"> <input id="dog_feeding1" value="dog_feeding1" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_feeding1">1 szczenię</label> </div> <div class="calc_radio"> <input id="dog_feeding2" value="dog_feeding2" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_feeding2">2 szczenięta</label> </div> <div class="calc_radio"> <input id="dog_feeding3" value="dog_feeding3" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_feeding3">3 - 4 szczenięta</label> </div> <div class="calc_radio"> <input id="dog_feeding4" value="dog_feeding4" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_feeding4">5 - 6 szczeniąt</label> </div> <div class="calc_radio"> <input id="dog_feeding5" value="dog_feeding5" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_feeding5">7 - 8 szczeniąt</label> </div> <div class="calc_radio"> <input id="dog_feeding6" value="dog_feeding6" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_feeding6">9 szczeniąt</label> </div> </form> <button class="btn btn-link" id="go_back">Wstecz</button> <button class="btn btn-primary" id="go_forward">Idę dalej!</button> </div>',
    form1e: '<div class="calc_form_container " id="form1e" data-prev="form1"> <form class="calc_radio_container first_form_e"> <div class="form_question">Ile miesięcy ma Twój psiak?</div> <div class="calc_radio"> <input id="dog_young_puppy" value="dog_young_puppy" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_young_puppy">poniżej 5 miesięcy</label> </div> <div class="calc_radio"> <input id="dog_medium_puppy" value="dog_medium_puppy" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_medium_puppy">5 - 12 miesięcy</label> </div> <div class="calc_radio"> <input id="dog_old_puppy" value="dog_old_puppy" type="radio" name="dog_characteristic" data-form="form2"> <label for="dog_old_puppy">powyżej 12 miesięcy</label> </div> </form> <button class="btn btn-link" id="go_back">Wstecz</button> <button class="btn btn-primary" id="go_forward">Idę dalej!</button> </div>',
    form2: '<div class="calc_form_container " id="form2"> <form class="calc_radio_container second_form"> <div class="form_question">Czy na etykiecie karmy podana jest jej kaloryczność?</div> <div class="calc_radio"> <input id="energy_known" value="energy_known" type="radio" name="energy_knowledge" data-form="form3a"> <label for="energy_known">Tak, znam kaloryczność karmy!</label> </div> <div class="calc_radio"> <input id="energy_unknown" value="energy_unknown" type="radio" name="energy_knowledge" data-form="form3b"> <label for="energy_unknown">Nie, pomóż mi obliczyć kaloryczność karmy</label> </div> </form> <button class="btn btn-link" id="go_back">Wstecz</button> <button class="btn btn-primary" id="go_forward">Idę dalej!</button> </div>',
    form3a: '<div class="calc_form_container " id="form3a" data-prev="form2"> <form class="calc_radio_container third_form_a"> <div class="form_question">W polu poniżej wpisz kaloryczność karmy w kcal na 100g.<br/>Podaj po prostu liczbę kcal bez jednostki, np. 120 :)</div><div class="calc_input_field" style="margin-right: 5px;"> <input type="text" style="width: 120px;" name="feed_energy" value="" required /> <label for="feed_energy">Kaloryczność</label> </div> kcal/100g </form> <button class="btn btn-link" id="go_back">Wstecz</button> <button class="btn btn-primary" id="go_forward">Idę dalej!</button> </div>',
    form3b: '<div class="calc_form_container " id="form3b" data-prev="form2"> <form class="calc_radio_container third_form_b"> <div class="form_question">Sprawdź skład analityczny na etykiecie karmy i uzupełnij poniższe dane:</div> <div class="calc_input_field"> <input type="text" name="feed_protein" value="" required /> % <label for="feed_protein">Białko surowe</label></div> <div class="calc_input_field"> <input type="text" name="feed_fat" value="" required /> % <label for="feed_fat">Tłuszcz surowy</label></div> <div class="calc_input_field"> <input type="text" name="feed_fiber" value="" required /> % <label for="feed_fiber">Włókno surowe</label></div> <div class="calc_input_field"> <input type="text" name="feed_ash" value="" required /> % <label for="feed_ash">Popiół surowy</label></div> <div class="calc_input_field"> <input type="text" name="feed_humidity" value="" required /> % <label for="feed_humidity">Wilgotność</label></div> </form> <button class="btn btn-link" id="go_back">Wstecz</button> <button class="btn btn-primary" id="go_forward">Idę dalej!</button> </div>',
    result: '<div class="calc_form_container " id="result"> <h1>Gotowe!</h1> <div class="total_amount"></div> <p>Tyle karmy dziennie powinien dostawać Twój pies</p> <p>Teraz wystarczy podzielić przez ilość posiłków w ciągu dnia i już! Tigger Blog życzy smacznego!</p> <button class="btn btn-primary" id="start_again">Zacznij od początku</button> </div>',
    prevForm2: ''
};