function addCommas(nStr){
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? ',' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + '&nbsp;' + '$2');
    }
    return x1 + x2;
}

function roundNumber(num, dec){
    var result = Math.round(Math.round(num * Math.pow(10, dec + 1)) / Math.pow(10, 1)) / Math.pow(10, dec);
    return result;
}

function prepoctiCenu(dopravacena){

    var cena = parseFloat(dopravacena);
    
    if (isNaN(cena)) {
        var celkem = $("input#celkova-cena").val();
        var doprava = $("zvoleny-zpusob-dopravy-cena").val();
        celkem = celkem.replace(",", ".");
        cena = parseFloat(celkem);
        result = addCommas(roundNumber(cena, $desetinna_mista)) + '&nbsp;Kč';
        if (result != '') 
            $("#celkova-cena-s-dopravou").html("" + result + "");
    }
    else {
        var result;
        var celkem = $("input#celkova-cena").val();
        celkem = celkem.replace(',', '.');
        cena = cena + parseFloat(celkem);
        result = addCommas(roundNumber(cena, $desetinna_mista)) + '&nbsp;Kč';
        if (result != '') 
            $("#celkova-cena-s-dopravou").html("" + result + "");
    }
    
}

$(document).ready(function(){
    /* skryt tlacitko prepocet */
    $("#prepocet").hide();
    
    /* skryvani a zobrazovani fakturacni adresy */
    $("input#obj-fakturacni-adresa").each(function(){
        if (this.checked) {
            $("#adresa-fakturacni-box").show();
        }
        else {
            $("#adresa-fakturacni-box").hide();
        }
    });
    
    /* odkryvani a skryvani fakturacni adresy po kliknuti */
    $("input#obj-fakturacni-adresa").click(function(){
        if ($(this).attr("checked")) {
            $(this).attr("checked");
            $("#adresa-fakturacni-box").slideDown();
        }
        else {
            $(this).attr("checked", '');
            $("#adresa-fakturacni-box").slideUp();
        }
    });
    
    // nastaveni cen dopravy
    var platba = $("input[name=platba]:checked").val();
    var sleva = $("input[name=sleva-" + platba + "]").val();
    if (!isNaN(sleva) && sleva != '' && sleva != 0) {
        sleva = sleva.replace(',', '.');
        $("span.cena-dopravy").each(function(){
            $h = $(this).html();
            $h = $h.replace(',', '.');
            $h = parseFloat($h);
            if (!isNaN($h)) {
                $h = $h - parseFloat(sleva);
                
                if ($h == 0) {
                    $h = 'zdarma';
                    $(this).html($h);
                }
                else {
                    $h = addCommas(roundNumber($h, $desetinna_mista)) + "&nbsp;Kč";
                    $(this).html($h);
                }
            }
        });
    }
    
    /* prepocet ceny za dopravu pri zmene moznosti */
    $("input[name=doprava]").click(function(){
        if ($(this).attr("checked")) {
            var doprava = $(this).val();
            var ident = $("input[name=doprava] + input[name=" + doprava + "]").attr("name");
            var dopravatext = $("span.nazev-dopravy-" + ident + "").text();
            var cena = $("input[name=doprava] + input[name=" + doprava + "]").val();
            var platba = $("input[name=platba]:checked").val();
            var sleva = $("input[name=sleva-" + platba + "]").val();
            
            if (isNaN(sleva)) {
                sleva = 0;
            }
            if (cena != '') {
                cena = cena.replace(',', '.');
                if (sleva != 0) {
                    sleva = sleva.replace(',', '.');
                }
                num = parseFloat(cena) - parseFloat(sleva);
                if (isNaN(num)) {
                    result = cena;
                }
                else {
                    if (num == 0) {
                        result = 'zdarma';
                    }
                    else {
                        result = addCommas(roundNumber(num, $desetinna_mista)) + '&nbsp;Kč';
                    }
                }
                $("#zvoleny-zpusob-dopravy-cena").html("" + result + "");
                $("#zvoleny-zpusob-dopravy").html("" + dopravatext + "");
                // prepocet celkove ceny objednavky
                prepoctiCenu(num);
            }
        }
    });
    
    
    /* zmena zvoleneho zpusobu platby */
    $("input[name=platba]").click(function(){
        if ($(this).attr("checked")) {
            var platba = $(this).val();
            var nazev = $("input[name=platba] + input[name=" + platba + "]").val();
            var sleva = $("input[name=sleva-" + platba + "]").val();
            var doprava = $("input[name=doprava]:checked").val();
            var cena = $("input[name=doprava]:checked + input[name=" + doprava + "]").val();
            
            if (nazev != '') {
                $("#zvoleny-zpusob-platby").html("" + nazev + "");
            }
            
            if (cena != '') {
                cena = cena.replace(',', '.');
                if (sleva != 0) {
                    sleva = sleva.replace(',', '.');
                }
                num = parseFloat(cena) - parseFloat(sleva);
                if (isNaN(num)) {
                    result = cena;
                }
                else {
                    if (num == 0) {
                        result = 'zdarma';
                    }
                    else {
                        result = addCommas(roundNumber(num, $desetinna_mista)) + '&nbsp;Kč';
                    }
                }
                $("#zvoleny-zpusob-dopravy-cena").html("" + result + "");
                // prepocet celkove ceny objednavky
                prepoctiCenu(num);
            }
            
            // prepocet ceny za kazdou dopravu pri zmene platby
            if (sleva != '' && sleva != 0) {
                sleva = sleva.replace(',', '.');				
                $("input[name=doprava]").each(function(){
                    $doprava_id = $(this).val();
					$doprava_cena = $("table.obj-doprava input[name=" + $doprava_id + "]").val();
                    if (!isNaN($doprava_cena)) {
                        $h = $doprava_cena - parseFloat(sleva);                        
                        if ($h == 0) {
                            $h = 'zdarma';
							$("span." + $doprava_id + ".cena-dopravy").html($h);
                        }
                        else {
                            $h = addCommas(roundNumber($h, $desetinna_mista)) + "&nbsp;Kč";
							$("span." + $doprava_id + ".cena-dopravy").html($h);
                        }
                    }
                });
            }
            else {
                $("input[name=doprava]").each(function(){
                    var $doprava_input = $(this);
                    $doprava_id = $(this).val();
                    $doprava_cena = $("table.obj-doprava input[name=" + $doprava_id + "]").val();

                    if (!isNaN(parseFloat($doprava_cena))) {
                        $doprava_cena = addCommas(roundNumber($doprava_cena, $desetinna_mista)) + '&nbsp;Kč';
                    }
                    $("span." + $doprava_id + ".cena-dopravy").html($doprava_cena);
                });
            }
        }
    });
});

