var global_max_preparations = 10;
if( typeof global_preparation_form_count == "undefined" ){
	var global_preparation_form_count = 0;
}
function add_preparation_form()
{
    var gpfc = ++global_preparation_form_count;

    if(global_preparation_form_count >= global_max_preparations)
    {
        alert('Nie można dodać więcej preparatów. Maksymalna liczba preparatów: ' + global_max_preparations);
    }
    else
    {
        var form = ' <input type="hidden" id="preparation_id_' + gpfc + '" value="0"/>\
                <div class="dc_border_box clearfix preparation_form_box" id="preparation_form_' + gpfc + '">\
                <a id="dc_anchor_'+gpfc+'" name="" ></a>\
              <h2 class="preparation_form_header">Informacje o stosowanym przez Ciebie preparacie</h2><a class="preparation_form_close" title="usuń preparat" href="javascript:close_preparation_form(' + gpfc + ');">(X)</a>\
              <div class="clearfix">\
                <div class="form_left_pane" >\
                    <label>Nazwa </label><input type="text" id="preparation_name_' + gpfc + '" class="textstring" onkeyup="javascript:check_preparation_data();"/><br/>\
                    <label>Energia [kcal/100g] <span class="dc_new_product_overflow dc_preparation_overflow_kcal_' + gpfc + '"></span></label><input type="text" id="preparation_kcal_' + gpfc + '" class="textstring" onkeypress="return IsDigit(event)" onkeyup="javascript:check_preparation_data();"/><br/>\
                    <label>Twoja dzienna dawka preparatu [g]<span class="dc_new_product_overflow dc_preparation_overflow_dose_' + gpfc + '"></span></label><input type="text" id="preparation_dose_' + gpfc + '" class="textstring" onkeypress="return IsDigit(event)" onkeyup="javascript:check_preparation_data();"/>\
                </div>\
                <div class="form_right_pane" >\
                    <label>Białko [g/100g] <span class="dc_new_product_overflow dc_preparation_overflow_protein_' + gpfc + '"></span></label><input type="text" id="preparation_protein_' + gpfc + '" class="textstring" onkeypress="return IsDigit(event)" onkeyup="javascript:check_preparation_data();"/><br/>';
                    if(global_disease_type == 1)
                    {
                        form += '<label>Fenyloalanina [mg/100g] <span class="dc_new_product_overflow dc_preparation_overflow_additional_' + gpfc + '"></span></label><input type="text" id="preparation_additional_1_' + gpfc + '" class="textstring" onkeypress="return IsDigit(event)" onkeyup="javascript:check_preparation_data();"/><br/>';
                    }
                    else if(global_disease_type == 2)
                    {
                        form += '<label>Leucyna [mg/100g] <span class="dc_new_product_overflow dc_preparation_overflow_additional_' + gpfc + '"></span></label><input type="text" id="preparation_additional_2_' + gpfc + '" class="textstring" onkeypress="return IsDigit(event)" onkeyup="javascript:check_preparation_data();"/><br/>';
                    }
                    form += '<div id="preparation_data_incorrect_' + gpfc + '" class="preparation_data_incorrect_box"><label>Podane parametry preparatu są niepoprawne</label> Suma zawartości białka i fenyloalaniny nie może przekraczać 100g.</div>';
                form += '</div>\
              </div>\
            </div>';

        $('#preparation_list').append(form);
    }
}


function close_preparation_form(form_nr, preparation_id)
{
    var name = $('#preparation_name_' + form_nr).val();
    var protein = $('#preparation_protein_' + form_nr).val();
    var kcal = $('#preparation_kcal_' + form_nr).val();
    var dose = $('#preparation_dose_' + form_nr).val();
    var additional = $('#preparation_additional_' + global_disease_type + '_' + form_nr).val();
    
    if(name || protein || kcal || dose || additional)
    {
        answer = confirm("Czy na pewno usunąć ten preparat z listy?");

        if(answer)
        {
            json_post('delete_preparation',
            function(response)
            {
                check_preparation_data();
            },
            'id=' + preparation_id);

            $('#preparation_form_' + form_nr).remove();
            --global_preparation_form_count;
            get_preparation_list();
        }
    }
    else
    {
        $('#preparation_form_' + form_nr).remove();
        $('#preparation_id_' + form_nr).remove();
    }
    
    
}

function save_preparation()
{
    for(var i = 0; i < global_max_preparations; i++)
    {
        var protein = $('#preparation_protein_' + i).val();
        var kcal = $('#preparation_kcal_' + i).val();
        var additional = $('#preparation_additional_' + global_disease_type + '_' + i).val();
        var dose = $('#preparation_dose_' + i).val();
        
        if($('#preparation_name_' + i).val())
        {
            json_post('save_preparation',
            function(response)
            {
                if(parseInt(response['id']) > 0)
                {
                	if( response['number'] > 0){                		
                		$('#preparation_id_' + response['number']).val(response['id']);
                		$('#dc_anchor_' + response['number']).attr('name',response['id']);
                	}
                }
            },
            'name=' + $('#preparation_name_' + i).val() +
            '&id=' + $('#preparation_id_' + i).val() +
            '&protein=' + protein +
            '&kcal=' + kcal +
            '&additional=' + additional +
            '&dose=' + dose +
            '&disease=' + global_disease_type + 
            '&number=' + i
            );
        }
    }

    json_post('calculate_preparations',
    function(total)
    {
        set_preparation_total(total)
    });

    dc_show_box('dc_box_select_menu');
}

function get_preparation_list()
{
    json_post('get_preparation_list',
    function(preparation_list)
    {
        var p_name = "";
        var p_dose = "";
        var p_kcal = "";
        var p_additional = "";
        var p_protein = "";
        var dose;
        for(var i = 0; i < preparation_list.length; i++)
        {
            dose = parseFloat(preparation_list[i]['dose']);
            p_name += '<a href="javascript:go_to_preparation_form('+preparation_list[i]['sys_id']+');">' + 
            	preparation_list[i]['name'] + "</a><br/>";
            p_dose += (dose).toFixed(2) + " g<br/>";
            p_kcal += (parseFloat(preparation_list[i]['kcal']) * (dose/100)).toFixed(2) + "<br/>";
            p_additional += (parseFloat(preparation_list[i]['additional']) * (dose/100)).toFixed(2) + "<br/>";
            p_protein += (parseFloat(preparation_list[i]['protein']) * (dose/100)).toFixed(2) + "<br/>";
        }
        $('#table_preparation_name').html(p_name);
        $('#table_preparation_dose').html(p_dose);
        $('#table_preparation_kcal').html(p_kcal);
        $('#table_preparation_additional').html(p_additional);
        $('#table_preparation_protein').html(p_protein);
    })
}

function calculate_protein()
{
    var user_protein = $('#dc_protein').val();
    var preparation_protein = remove_nan(parseFloat($('#preparation_total_protein').text()));
    var percent = (preparation_protein / user_protein) * 100;
    $('.summary_percent').text(percent.toFixed(2) + " %");
}


function check_preparation_data()
{
    var total = new Array();
    total['protein'] = 0;
    total['kcal'] = 0;
    total['dose'] = 0;
    total['additional'] = 0;
    var error_count = 0;
    for(var i = 0; i < global_max_preparations; i++)
    {
        if($('#preparation_name_' + i).val() || $('#preparation_kcal_' + i).val() || $('#preparation_dose_' + i).val() || $('#preparation_additional_' + i).val() || $('#preparation_protein_' + i).val())
        {
            //check_preparation_param('kcal', i);
            error_count += check_preparation_param('protein', i);
            error_count += check_preparation_param('additional', i, global_disease_type);
            error_count += check_overal_preparation_params(i, parseFloat($('#preparation_protein_' + i).val()), parseFloat($('#preparation_additional_' + global_disease_type + '_' + i).val()));
            var dose = remove_nan(parseFloat($('#preparation_dose_' + i).val()));
            total['dose'] += dose;
            total['protein'] += remove_nan(parseFloat($('#preparation_protein_' + i).val())) * (dose / 100);
            total['kcal'] += remove_nan(parseFloat($('#preparation_kcal_' + i).val()))  * (dose / 100);
            total['additional'] += remove_nan(parseFloat($('#preparation_additional_' + global_disease_type + '_' + i).val()))  * (dose / 100);
        }
    }
    set_preparation_total(total);
    calculate_protein();
    if(error_count > 0)
    {
        $('#btn_save_preparations').addClass('button_disabled');
        $('#btn_save_preparations').attr('disabled', true);
    }
    else
    {
        $('#btn_save_preparations').removeClass('button_disabled');
        $('#btn_save_preparations').attr('disabled', false);
    }
}


function check_overal_preparation_params(i, protein, additional)
{
    if(protein + additional > 100)
    {
        $('#preparation_data_incorrect_' + i).show();
        return 1;
    }
    else
    {
        $('#preparation_data_incorrect_' + i).hide();
        return 0;
    }
}

function check_preparation_param(param, form_nr, disease_type)
{
    var val;
    if(disease_type)
    {
        val = parseFloat($('#preparation_' + param + '_' + disease_type + "_" + form_nr).val());
    }
    else
    {
        val = parseFloat($('#preparation_' + param + '_' + form_nr).val());
    }

    if(val > 100)
    {
        $('.dc_preparation_overflow_' + param + '_' + form_nr).text("Max: 100");
        return 1; // error
    }
    else
    {
        $('.dc_preparation_overflow_' + param + '_' + form_nr).text("");
        return 0; // correct
    }
}

function set_preparation_total(total)
{
    $('#preparation_total_protein').text(total['protein'].toFixed(2));
    $('#preparation_total_kcal').text(total['kcal'].toFixed(2));
    $('#preparation_total_dose').text(total['dose'].toFixed(2));
    $('#preparation_total_additional').text(total['additional'].toFixed(2));

    // for print
    $('#dc_print_user_protein_pku').text(total['protein'].toFixed(2));
}


function remove_nan(val)
{
    if(isNaN(val))
    {
        return 0;
    }
    else
    {
        return val;
    }
}
