﻿/*All this Methods are used in myShoppingCart.aspx page*/
function isNumberKey(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;
    return true;
}


$(function() {
    AllCalculations();
})

function AllCalculations()
{
    $(".flooringClass").keyup(function(event) {
        var flooringId = $(this).attr("class").split(" ")[1];
        makeFlooringCalculations(flooringId);
    });
    $(".accessoryClass").keyup(function(event) {
        var accessoryId = $(this).attr("class").split(" ")[1];
        makeAccessoriesCalculations(accessoryId);
    });
}

/************************Flooring Methods********************************/

//Return a flooring JSON object which contains all the flooring product information with id=flooringId
//otherwise return null
function getFlooringObject(flooringId)
{

    var termine = false;
    var flooringObj = null;
    for (i = 0; (i < flooringItems.items.length) && (!termine); i++) {
        //alert(flooringItems.items[i].id + "->" + flooringId);
        if (flooringItems.items[i].id == flooringId) {
            termine = true;
            flooringObj = flooringItems.items[i];
        }
    }
    return flooringObj;
}

//Return the price range of the flooring product according to the size selected
function calculatePriceRange(flooringObj, cartonQty)
{ 
    var qty=cartonQty*flooringObj.carton.size;
    if (flooringObj.halfPallet.size > qty) {
        return flooringObj.carton.price;
    }
    else 
    {
        if (flooringObj.fullPallet.size > qty) {
            return flooringObj.halfPallet.price;
        }
        else return flooringObj.fullPallet.price;
    }
}
//Directs all the calculation's process  delegating some calculation to other functions
function makeFlooringCalculations(flooringId) {
    var flooringObj = getFlooringObject(flooringId);
    if (flooringObj != null) {
        var cartonQty = $("." + flooringId).val();
        //Updating Price Range
        var priceRange = calculatePriceRange(flooringObj, cartonQty);
        var cartonRel = $(".priceRange-" + flooringId);
        cartonRel.text("$" + priceRange);
        //Updating Total lbs
        var totalLbs = $(".totalLbs-" + flooringId);
        var lbs = cartonQty * flooringObj.carton.weight;
        lbs = lbs.toFixed(2);
        if (!isNaN(lbs))
            totalLbs.text(lbs);
        else totalLbs.text("---");
        //Updating sq ft
        var totalSize = $(".totalSqFt-" + flooringId);
        var size = cartonQty * flooringObj.carton.size;
        size = size.toFixed(2);
        if(!isNaN(size))
            totalSize.text(size);
        else totalSize.text("-.--");
        //Updating totalPrice
        var totalPrice = $(".totalPrice-" + flooringId);
        var price = flooringObj.carton.size * priceRange;
        price = price * cartonQty;//Don't change this cause the multiplication change with the order, it's wear!!!
        price = price.toFixed(2);
        var oldPrice = totalPrice.text().replace("$", "");
        if (!isNaN(price)) {
            totalPrice.text("$" + price);
            updateTotal(oldPrice, price);
        }
        else {
            totalPrice.text("$---.--");
            updateTotal(oldPrice,0);
        }
    }
}

/************************Accessories Methods********************************/

//make the calculations of the accesory item
function makeAccessoriesCalculations(accessoryId) {
    //Update the total
    var accessoryQty = $(".accessoryId" + accessoryId).val();
    var accessoryPrice = $(".accessoryPrice-" + accessoryId).text();
    var accessoryTotal = $(".accessoryTotal-" + accessoryId);
    accessoryPrice = accessoryPrice.replace("$", "");
    var total = accessoryQty * accessoryPrice;
    total = total.toFixed(2);
    var oldPrice = accessoryTotal.text().replace("$", "");
    if (!isNaN(total)) {
        accessoryTotal.text("$" + total);
        updateTotal(oldPrice, total);
    }
    else {
        accessoryTotal.text("$--.--");
        updateTotal(oldPrice,0); 
    }
}

//update the total values
function updateTotal(old, _new) {
    var subTotal = parseFloat($(".subTotal").text());
    var oldPrice = parseFloat(old);
    var newPrice = parseFloat(_new);
    subTotal = subTotal + newPrice;
    subTotal = subTotal.toFixed(2);
    subTotal = subTotal - oldPrice;
    subTotal = subTotal.toFixed(2);
    $(".subTotal").text(subTotal);
}
