﻿// calculate the price of floor
function updateFloorPrice(inputControl)
{
    var area = correctprice(inputControl.value);
    inputControl.value = area;
    //    alert(area);
    if (area == "" || isNaN(area))
    {
        document.getElementById("ctrlFloorArea").innerHTML = "-";

        document.getElementById("ctrlFloorGrossArea").innerHTML = "-";

        document.getElementById("ctrlPackCount1").innerHTML = "-";
        document.getElementById("ctrlPackCount2").innerHTML = "-";

        document.getElementById("ctrlTotalArea1").innerHTML = "-";
        document.getElementById("ctrlTotalArea2").innerHTML = "-";
        document.getElementById("ctrlTotalArea3").innerHTML = "-";

        document.getElementById("ctrlOfflineSummary").innerHTML = "-";
        document.getElementById("ctrlSaving").innerHTML = "-";
        document.getElementById("ctrlOnlineSummary").innerHTML = "-";
    }
    else
    {
        //    alert("sawLoss   " + sawLoss);
        var grossArea = area * (1 + sawLoss);
        var packCount = Math.ceil(grossArea / unitsInPack);
        var totalArea = packCount * unitsInPack;
        var offlineSummary = totalArea * offlinePrice;
        var onlineSummary = totalArea * onlinePrice;
        var saving = offlineSummary - onlineSummary;
        
        // format output
        var fArea = formatprice(formatNumber(area));
        var fGrossArea = formatprice(formatNumber(grossArea));
        var fPackCount = formatprice(formatNumber(packCount));
        var fTotalArea = formatprice(formatNumber(totalArea));
        var fOfflineSummary = formatprice(formatNumber(offlineSummary));
        var fSaving = formatprice(formatNumber(saving));
        var fOnlineSummary = formatprice(formatNumber(onlineSummary));

        document.getElementById("ctrlFloorArea").innerHTML = fArea;
        document.getElementById("ctrlFloorGrossArea").innerHTML = fGrossArea;

        document.getElementById("ctrlPackCount1").innerHTML = fPackCount;
        document.getElementById("ctrlPackCount2").innerHTML = fPackCount;

        document.getElementById("ctrlTotalArea1").innerHTML = fTotalArea;
        document.getElementById("ctrlTotalArea2").innerHTML = fTotalArea;
        document.getElementById("ctrlTotalArea3").innerHTML = fTotalArea;

        document.getElementById("ctrlOfflineSummary").innerHTML = fOfflineSummary;
        document.getElementById("ctrlSaving").innerHTML = fSaving;
        document.getElementById("ctrlOnlineSummary").innerHTML = fOnlineSummary;
    }
}

// calculate the price of carpet
function updateCarpetPrice()
{
    var ctrlWidth = document.getElementById(ctrlWidthID);
    var ctrlLength = document.getElementById(ctrlLengthID);
    //    alert(ctrlWidth);

    var length = correctprice(ctrlLength.value);
    var width = correctprice(ctrlWidth.value);

    ctrlLength.value = length;
    ctrlWidth.value = width;

    if (length == "" || isNaN(length) || width == "" || isNaN(width))
    {
        document.getElementById("ctrlCarpetLength").innerHTML = " - ";
        document.getElementById("ctrlCarpetLength2").innerHTML = " - ";
        document.getElementById("ctrlCarpetLength3").innerHTML = " - ";
        document.getElementById("ctrlCarpetWidth").innerHTML = " - ";
        //document.getElementById("ctrlGrossWidth").innerHTML = " - ";
        document.getElementById("ctrlGrossLength").innerHTML = " - ";

        document.getElementById("ctrlStukCount1").innerHTML = " - ";
        document.getElementById("ctrlStukCount2").innerHTML = " - ";
        document.getElementById("ctrlStukCount3").innerHTML = " - ";

        document.getElementById("ctrlOfflineSummary").innerHTML = " - ";
        document.getElementById("ctrlSaving").innerHTML = " - ";
        document.getElementById("ctrlOnlineSummary").innerHTML = " - ";
    }
    else
    {
        width = parseFloat(width);      // conver string to float, convenient for mathematic operation below
        length = parseFloat(length);
        var lengthInMeter = length / 100;
        var widthInMeter = width / 100;

// for the unit of price is not fixed, unit 'cm' is used here
        lengthInMeter = length;
        widthInMeter = width;
        var carpetWidthInMeter = carpetWidth / 100;

        var grossWidth = width + extralLoss;
        var grossLength = length + extralLoss;

        
        var carpetCount = 1;
        do
        {
            if (carpetCount * carpetWidth >= width)
                break;

            carpetCount = carpetCount + 1;
        } while (1)
//        alert("carpetCount:  " + carpetCount + "  grossWidth:  " + grossWidth);
        
        var offlineSummary = offlinePrice * length * carpetCount;
        var onlineSummary = onlinePrice * length * carpetCount;
        var saving = offlineSummary - onlineSummary;

        offlineSummary = carpetCount * grossLength * offlinePrice;
        onlineSummary = carpetCount * grossLength * onlinePrice;
        saving = offlineSummary - onlineSummary;

        // format output
        var fLengthInMeter = formatprice(formatNumber(lengthInMeter));
        var fWidthInMeter = formatprice(formatNumber(widthInMeter));
        var fOfflineSummary = formatprice(formatNumber(offlineSummary));
        var fSaving = formatprice(formatNumber(saving));
        var fOnlineSummary = formatprice(formatNumber(onlineSummary));

        
        document.getElementById("ctrlCarpetLength").innerHTML = length;
        document.getElementById("ctrlCarpetLength2").innerHTML = grossLength;
        document.getElementById("ctrlCarpetLength3").innerHTML = grossLength;
        document.getElementById("ctrlCarpetWidth").innerHTML = width;
        //document.getElementById("ctrlGrossWidth").innerHTML = grossWidth;
        document.getElementById("ctrlGrossLength").innerHTML = grossLength;
        
        document.getElementById("ctrlStukCount1").innerHTML = carpetCount;
        document.getElementById("ctrlStukCount2").innerHTML = carpetCount;
        document.getElementById("ctrlStukCount3").innerHTML = carpetCount;

        document.getElementById("ctrlOfflineSummary").innerHTML = fOfflineSummary;
        document.getElementById("ctrlSaving").innerHTML = fSaving;
        document.getElementById("ctrlOnlineSummary").innerHTML = fOnlineSummary;
    }
}

// calculate the price of accessory, unit: stuks
function updateAccessoryPrice(inputControl)
{
    var quantity = correctprice(inputControl.value);
    inputControl.value = quantity;

    if (quantity == "" || isNaN(quantity))
    {
        document.getElementById("ctrlOfflineSumary").innerHTML = " - ";
        document.getElementById("ctrlSaving").innerHTML = " - ";
        document.getElementById("ctrlQuantity").innerHTML = " - ";
        document.getElementById("ctrlOnlineSummary").innerHTML = " - ";

//        document.getElementById("ctrlGrossArea1").innerHTML = " - ";
    }
    else
    {
        var offlineSummary = quantity * offlinePrice;
        var onlineSummary = quantity * onlinePrice;
        var saving = offlineSummary - onlineSummary;

        // format output
        var fQuantity = formatprice(formatNumber(quantity));
        var fOfflineSummary = formatprice(formatNumber(offlineSummary));
        var fOnlineSummary = formatprice(formatNumber(onlineSummary));
        var fSaving = formatprice(formatNumber(saving));

        document.getElementById("ctrlQuantity").innerHTML = fQuantity;
        document.getElementById("ctrlOfflineSumary").innerHTML = fOfflineSummary;
        document.getElementById("ctrlOnlineSummary").innerHTML = fOnlineSummary;
        document.getElementById("ctrlSaving").innerHTML = fSaving;

        //        document.getElementById("ctrlOnlineSummary").innerHTML = formatprice(onlineSummary);
        //        document.getElementById("ctrlGrossArea1").innerHTML = formatNumber(quantity);
    }
}


/*
formatNumber formateerd een nummer naar 2 decimalen achter de komma
*/
function formatNumber(mnt)
{
    mnt -= 0;
    mnt = (Math.round(mnt * 100)) / 100;
    var returnValue = (mnt == Math.floor(mnt)) ? mnt + '.00'
              : ((mnt * 10 == Math.floor(mnt * 10)) ?
                       mnt + '0' : mnt);
//    if (returnValue.indexOf('.00'))
//    {
//        returnValue = returnValue.replace('.00', '');
//    }
    return returnValue;                       
}

/*
updateprice zorgt ervoor dat punten omgezet worden naar een komma en letter tekens verwijderd worden.
*/
function correctprice(correctNum)
{
    /*Formateert de string nummerinput 
    met komma's en characters naar een 
    valid nummer formaat. Die bewerkbaar 
    is in javascript
    */
    if (typeof (correctNum) == "string") { return correctNum.replace(/[,]/g, ".").replace(/[\s|a-zA-Z]/g, ""); }
    else { return correctNum }
}

function formatprice(correctNum)
{
    var cNum = correctNum + '';
    return cNum.replace(/[.]/g, ",").replace(/[\s|a-zA-Z]/g, "");
}

function correctCarpetScale(correctNum)
{
    if (typeof (correctNum) == "string") { return correctNum.replace(/[\s|\.|a-zA-Z]/g, ""); }
    else { return correctNum }
}




// calculate the price of accessory, unit: m2
function updateAccessoryPrice_M2(inputControl)
{
//    alert(unitsInPack);
    var quantity = correctprice(inputControl.value);
    inputControl.value = quantity;

    if (quantity == "" || isNaN(quantity))
    {
        document.getElementById("ctrlOfflineSumary_M2").innerHTML = " - ";
        document.getElementById("ctrlSaving_M2").innerHTML = " - ";
        document.getElementById("ctrlQuantity_M2").innerHTML = " - ";
        document.getElementById("ctrlOnlineSummary_M2").innerHTML = " - ";

        document.getElementById("ctrlPackCount1_M2").innerHTML = " - ";
        document.getElementById("ctrlPackCount2_M2").innerHTML = " - ";
        document.getElementById("ctrlTotalArea1_M2").innerHTML = " - ";

        //        document.getElementById("ctrlGrossArea1").innerHTML = " - ";
    }
    else
    {
        var packCount = Math.ceil(quantity / unitsInPack);
        var totalArea = packCount * unitsInPack;
        
        var offlineSummary = totalArea * offlinePrice;
        var onlineSummary = totalArea * onlinePrice;
        var saving = offlineSummary - onlineSummary;

        // format output
        var fQuantity = formatprice(formatNumber(quantity));
        var fPackCount = formatprice(formatNumber(packCount));
        var fTotalArea = formatprice(formatNumber(totalArea));
        var fOfflineSummary = formatprice(formatNumber(offlineSummary));
        var fOnlineSummary = formatprice(formatNumber(onlineSummary));
        var fSaving = formatprice(formatNumber(saving));

        document.getElementById("ctrlQuantity_M2").innerHTML = fTotalArea;
        document.getElementById("ctrlOfflineSumary_M2").innerHTML = fOfflineSummary;
        document.getElementById("ctrlOnlineSummary_M2").innerHTML = fOnlineSummary;
        document.getElementById("ctrlSaving_M2").innerHTML = fSaving;
        document.getElementById("ctrlPackCount1_M2").innerHTML = fPackCount;
        document.getElementById("ctrlPackCount2_M2").innerHTML = fPackCount;
        document.getElementById("ctrlTotalArea1_M2").innerHTML = fTotalArea;
    }
}






// calculate the price of accessory, unit: length
function updateAccessoryPrice_Length(inputControl)
{
//    alert(unitsInPack);
    var quantity = correctprice(inputControl.value);
    inputControl.value = quantity;

    if (quantity == "" || isNaN(quantity))
    {
        document.getElementById("ctrlOfflineSumary_Length").innerHTML = " - ";
        document.getElementById("ctrlSaving_Length").innerHTML = " - ";
        document.getElementById("ctrlQuantity_Length").innerHTML = " - ";
        document.getElementById("ctrlOnlineSummary_Length").innerHTML = " - ";

        document.getElementById("ctrlPackCount1_Length").innerHTML = " - ";
        document.getElementById("ctrlPackCount2_Length").innerHTML = " - ";
        document.getElementById("ctrlTotalArea1_Length").innerHTML = " - ";

        //        document.getElementById("ctrlGrossArea1").innerHTML = " - ";
    }
    else
    {
        var packCount = Math.ceil(quantity / unitsInPack);
        var totalArea = packCount * unitsInPack;

        var offlineSummary = totalArea * offlinePrice;
        var onlineSummary = totalArea * onlinePrice;
        var saving = offlineSummary - onlineSummary;

        // format output
        var fQuantity = formatprice(formatNumber(quantity));
        var fPackCount = formatprice(formatNumber(packCount));
        var fTotalArea = formatprice(formatNumber(totalArea));
        var fOfflineSummary = formatprice(formatNumber(offlineSummary));
        var fOnlineSummary = formatprice(formatNumber(onlineSummary));
        var fSaving = formatprice(formatNumber(saving));

        document.getElementById("ctrlQuantity_Length").innerHTML = fTotalArea;
        document.getElementById("ctrlOfflineSumary_Length").innerHTML = fOfflineSummary;
        document.getElementById("ctrlOnlineSummary_Length").innerHTML = fOnlineSummary;
        document.getElementById("ctrlSaving_Length").innerHTML = fSaving;
        document.getElementById("ctrlPackCount1_Length").innerHTML = fPackCount;
        document.getElementById("ctrlPackCount2_Length").innerHTML = fPackCount;
        document.getElementById("ctrlTotalArea1_Length").innerHTML = fTotalArea;
    }
}


