<div class="product-calculate-container">
    <div class="product-calculate_radio">
    <input type="radio" role="radio" name="productType" id="LUGK" value="LUGK" checked="checked" aria-checked="true"/>
    <label for="LUGK">Läkemedel utan generisk konkurrens</label>
    </div>
    <div class="product-calculate_radio">
        <input type="radio" role="radio" name="productType" id="LMGK" value="LMGK" aria-checked="false"/>
        <label for="LMGK">Läkemedel med generisk konkurrens</label>
         <label for="LMGK">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(periodens vara-systemet)</label>
    </div>
    <div class="product-calculate_radio">
        <input type="radio" role="radio" name="productType" id="FORBRUKNINGSARTIKLAR" value="FORBRUKNINGSARTIKLAR" aria-checked="false"/>
        <label for="FORBRUKNINGSARTIKLAR">Förbrukningsartikel</label>
    </div>
    <div class="product-calculate_radio">
        <input type="radio" role="radio" name="productType" id="STOMIARTIKLAR" value="STOMIARTIKLAR" aria-checked="false"/>
        <label for="STOMIARTIKLAR">Stomiartikel</label>
    </div>

    <div class="product-calculate_input">
        <div>
            <label for="aip">AIP</label>
            <input type="text" class="product-calculate-aip" value="" id="aip">
        </div>
        <div>
            <img src="${pilarUrl}" width="63" height="54" alt="Två pilar, en åt höger och en åt vänster">  
            </div>
        <div>
            <label for="aup">AUP</label>
            <input type="text" class="product-calculate-aup" value="" id="aup">
        </div>
    </div>
   <div id="console">
      
   </div>
</div>

<script>
    svDocReady(function () {
        (function ($) {
            var config = {
                fixedDecimals: 2,
                productTypes: {
                    LUGK: 'LUGK',
                    LMGK: 'LMGK',
                    FORBRUKNINGSARTIKLAR: 'FORBRUKNINGSARTIKLAR',
                    STOMIARTIKLAR: 'STOMIARTIKLAR'
                },
                limits: {
                    zero: 0,
                    limit1_1_aip: 75,
                    limit1_2_aip: 300,
                    limit1_3_aip: 50000,
                    limit2_1_aip: 47.35,
                    limit2_2_aip: 4500,
                    limit1_1_aup: 120.5,
                    limit1_2_aup: 352.25,
                    limit1_3_aup: 51046.25,
                    limit2_1_aup: 69.74,
                    limit2_2_aup: 4994.36
                },
                extraPV: 12.75,
                multipliers: {
                    multiplier1_1: 1.105,
                    multiplier1_2: 1.035,
                    multiplier1_3: 1.025,
                    multiplier2_1: 1.362, // Stomiartiklar
                    multiplier2_2: 1.108, // Stomiartiklar
                    multiplier3_1: 1.402, // FÃ¶rbrukningsartiklar
                    multiplier3_2: 1.106, // FÃ¶rbrukningsartiklar
                },
                margins: {
                    margin1_1: 40.00,
                    margin1_2: 45.25,
                    margin1_3: 48.25,
                    margin1_4: 1300.0,
                    margin2_1: 4, // Stomiartiklar
                    margin2_2: 16, // Stomiartiklar
                    margin2_3_1: 502, // Stomiartiklar
                    margin2_3_2: 0.01, // Stomiartiklar
                    margin2_3_3: 4500, // Stomiartiklar
                    margin3_1: 3.36, // FÃ¶rbrukningsartiklar
                    margin3_2: 17.36, // FÃ¶rbrukningsartiklar
                    margin3_3_1: 494.36, // FÃ¶rbrukningsartiklar
                    margin3_3_2: 0.01, // FÃ¶rbrukningsartiklar
                    margin3_3_3: 4500 // FÃ¶rbrukningsartiklar
                }
            };

            $(document).ready(function () {
                var productType = $('.product-calculate-container input[name="productType"]');
                var calculateAIP = $('.product-calculate-container .product-calculate-aip');
                var calculateAUP = $('.product-calculate-container .product-calculate-aup');

                // Add listeners
                productType.on('change', handleReset);
                calculateAIP.keyup(handleAIPChange);
                calculateAUP.keyup(handleAUPChange);

                function handleReset() {
                    calculateAIP.val("");
                    calculateAUP.val("");
                }

                function validateInput(element) {
                    var val = element
                        .val()
                        .replace(',', '.');
                    var index = val.indexOf('.');
                    if (index !== -1 && index < val.length - (config.fixedDecimals + 1)) {
                        val = val.substr(0, index + (config.fixedDecimals + 1));
                    }
                    element.val(val);
                }

                // To get around rounding inconsistensies
                // See https://stackoverflow.com/questions/10015027/javascript-tofixed-not-rounding
                function toFixed(num, precision) {
                    return (+(Math.round(+(num + 'e' + precision)) + 'e' + -precision)).toFixed(precision);
                }

                function handleAIPChange() {
                    validateInput(calculateAIP);
                    var aip = calculateAIP.val();
                   console.log("aip="+aip);
                    var aup = 0;
                    if (aip <= config.limits.zero) {
                        calculateAUP.val(aup);
                        return;
                    }
                    aip = parseFloat(aip);
                   console.log("aip #2="+aip);

                    var currentProductType = productType
                        .filter(':checked')
                        .val();
                    if (currentProductType === config.productTypes.LUGK || currentProductType === config.productTypes.LMGK) {
                        var extra = currentProductType === config.productTypes.LMGK
                            ? config.extraPV
                            : 0;
                   console.log("extra="+extra);

                        if (aip <= config.limits.limit1_1_aip) {
                            aup = ((aip * config.multipliers.multiplier1_1) + config.margins.margin1_1 + extra);
                   console.log("aup#1="+aup);
                        } else if (aip <= config.limits.limit1_2_aip) {
                            aup = ((aip * config.multipliers.multiplier1_2) + config.margins.margin1_2 + extra);
                   console.log("aup#2="+aup);
                        } else if (aip <= config.limits.limit1_3_aip) {
      
                            aup = ((aip * config.multipliers.multiplier1_3) + config.margins.margin1_3 + extra);
                   console.log("aup#3="+aup);
               
                        } else if (aip > config.limits.limit1_3_aip) {
                            aup = aip + config.margins.margin1_4 + extra;
                   console.log("aup#4="+aup);
                        }
                    } else if (currentProductType == config.productTypes.FORBRUKNINGSARTIKLAR) {
                        if (aip <= config.limits.limit2_1_aip) {
                            aup = ((aip * config.multipliers.multiplier3_1) + config.margins.margin3_1);
                        } else if (aip <= config.limits.limit2_2_aip) {
                            aup = ((aip * config.multipliers.multiplier3_2) + config.margins.margin3_2);
                        } else if (aip > config.limits.limit2_2_aip) {
                            aup = (aip + config.margins.margin3_3_1) + (
                                config.margins.margin3_3_2 * (aip - config.margins.margin3_3_3)
                            );
                        }
                    } else if (currentProductType == config.productTypes.STOMIARTIKLAR) {
                        if (aip <= config.limits.limit2_1_aip) {
                            aup = ((aip * config.multipliers.multiplier2_1) + config.margins.margin2_1);
                        } else if (aip <= config.limits.limit2_2_aip) {
                            aup = ((aip * config.multipliers.multiplier2_2) + config.margins.margin2_2);
                        } else if (aip > config.limits.limit2_2_aip) {
                            aup = (aip + config.margins.margin2_3_1) + (
                                config.margins.margin2_3_2 * (aip - config.margins.margin2_3_3)
                            );
                        }
                    }
                    var fixed = toFixed(aup.toFixed(3), config.fixedDecimals)
                    calculateAUP.val(fixed.replace('.', ','));
                }

                function handleAUPChange() {
                    validateInput(calculateAUP);
                    var aup = calculateAUP.val();
                    var aip = 0;
                    if (aup <= config.limits.zero) {
                        calculateAIP.val(aip);
                        return;
                    }
                    aup = parseFloat(aup);

                    var currentProductType = productType
                        .filter(':checked')
                        .val();
                    if (currentProductType === config.productTypes.LUGK || currentProductType === config.productTypes.LMGK) {
                        var extra = currentProductType === config.productTypes.LMGK
                            ? config.extraPV
                            : 0;

                        if (aup <= config.limits.limit1_1_aup + extra) {
                            aip = (aup - config.margins.margin1_1 - extra) / config.multipliers.multiplier1_1;
                        } else if (aup <= config.limits.limit1_2_aup + extra) {
                            aip = (aup - config.margins.margin1_2 - extra) / config.multipliers.multiplier1_2;
                        } else if (aup <= config.limits.limit1_3_aup + extra) {
                            aip = (aup - config.margins.margin1_3 - extra) / config.multipliers.multiplier1_3;
                        } else if (aup > config.limits.limit1_3_aup + extra) {
                            aip = aup - config.margins.margin1_4 - extra;
                        }
                    } else if (currentProductType == config.productTypes.FORBRUKNINGSARTIKLAR) {
                        if (aup <= config.limits.limit2_1_aup) {
                            aip = (aup - config.margins.margin3_1) / config.multipliers.multiplier3_1;
                        } else if (aup <= config.limits.limit2_2_aup) {
                            aip = (aup - config.margins.margin3_2) / config.multipliers.multiplier3_2;
                        } else if (aup > config.limits.limit2_2_aup) {
                            aip = (
                                aup - (config.margins.margin3_3_1 - (config.margins.margin3_3_2 * config.margins.margin3_3_3))
                            ) / (1 + config.margins.margin3_3_2);
                        }
                    } else if (currentProductType == config.productTypes.STOMIARTIKLAR) {
                        if (aup <= config.limits.limit2_1_aup) {
                            aip = (aup - config.margins.margin2_1) / config.multipliers.multiplier2_1;
                        } else if (aup <= config.limits.limit2_2_aup) {
                            aip = (aup - config.margins.margin2_2) / config.multipliers.multiplier2_2;
                        } else if (aup > config.limits.limit2_2_aup) {
                            aip = (
                                aup - (config.margins.margin2_3_1 - (config.margins.margin2_3_2 * config.margins.margin2_3_3))
                            ) / (1 + config.margins.margin2_3_2);
                        }
                    }

                    if (aip < 0) {
                        calculateAIP.val('För lågt värde');
                    } else {
                        var fixed = toFixed(aip.toFixed(3), config.fixedDecimals)
                        calculateAIP.val(fixed.replace('.', ','));
                    }

                }
            });

        })($svjq);
    });
</script>