﻿var cookieName = "ShoppingCart";
function CartItem(category, productTitle) {
    this.Category = category.trim();
    this.ProductTitle = TrimItem(productTitle.trim());
    this.Quantity = "";
    this.UnitOfMeasure = "";
};
function TrimItem(textToTrim) {
    var tempText = "";
    if (textToTrim.trim() != "") {
        var parts = textToTrim.split(" ");
        for (var i = 0; i < parts.length; i++) {
            var part = parts[i];
            if (part.trim() != "") {
                tempText += " " + part;
            }
        }
    }
    return tempText.trim();
}
function CartItemCookie(category, productTitle) {
    this.C = category.trim();
    this.T = TrimItem(productTitle.trim());
    this.Q = "";
    this.U = "";
};

function CartItem1(category, productTitle, quantity, unitOfMeasure) {
    this.Category = category.trim();
    this.ProductTitle = productTitle.trim();
    this.Quantity = quantity.trim();
    this.UnitOfMeasure = unitOfMeasure.trim();
};


function GetProductCount() {
    var noOfProducts = 0;
    var cartItems = GetShoppingCartItems();
    if (cartItems != null) {
        for (var i = 0; i < cartItems.length; i++) {
            var cartItem = cartItems[i];
            if (cartItem.Quantity != "") {
                //if(isNaN(cartItem.Quantity) ==false)
                //{
                //noOfProducts += parseFloat(cartItem.Quantity);
                //}
                noOfProducts += 1;
            }
            else {
                noOfProducts += 1;
            }
        }
    }
    return noOfProducts;
}
function UpdateProductCount() {
    var productCount = GetProductCount();
    $("#lblShoppingCartItemsCount").text(productCount);
}
function AddItemToShoppingCart(categoty, productTitle) {

    var item = new CartItem(categoty, productTitle);
    var cartItems = GetShoppingCartItems();
    if (IsProductAlreadyAdded(categoty, TrimItem(productTitle), cartItems) == false) {
        if (cartItems != null) {
            cartItems[cartItems.length] = item;
        }
        else {
            cartItems = new Array();
            cartItems[0] = item;
        }
        if (cartItems != null) {
            WriteCompressedCookie(cartItems);
        }
        UpdateProductCount();
    }

}
//function AddItemToShoppingCart1(categoty, productTitle, quantity, unitOfMeasure) {
//    var item = new CartItem1(categoty, productTitle, quantity, unitOfMeasure);
//    var cartItems = GetCompressedCookieItems();
//    if (IsProductAlreadyAdded1(categoty, productTitle, unitOfMeasure, cartItems) == false) {
//        if (cartItems != null) {
//            cartItems[cartItems.length] = item;
//        }
//        else {
//            cartItems = new Array();
//            cartItems[0] = item;
//        }
//        cookieString = JSON.stringify(cartItems);
//        setCookie(cookieName, cookieString, null);
//        UpdateProductCount();
//    }
//    else {
//        UpdateProduct1(categoty, productTitle, unitOfMeasure, quantity);
//    }
//}

function GetShoppingCartItems() {
    var cartItems = GetCompressedCookieItems();

    if (cartItems != null) {
        var temp = new Array();
        for (var i = 0; i < cartItems.length; i++) {
            var currentItem = cartItems[i];
            var newItem = new CartItem(currentItem.C, currentItem.T);
            temp.push(newItem);
        }
    }
    return temp;
}
function IsProductAlreadyAdded(productCategory, productTitle, listOfProducts) {
    if (listOfProducts != null) {
        for (var i = 0; i < listOfProducts.length; i++) {
            var cartItem = listOfProducts[i];
            if (cartItem.Category == productCategory.trim() && cartItem.ProductTitle == productTitle.trim()) {
                return true;
            }
        }
    }
    return false;
}
function IsProductAlreadyAdded1(productCategory, productTitle, unitOfMeasure, listOfProducts) {
    if (listOfProducts != null) {
        for (var i = 0; i < listOfProducts.length; i++) {
            var cartItem = listOfProducts[i];
            if (cartItem.Category.trim() == productCategory.trim() && cartItem.ProductTitle.trim() == productTitle.trim() && cartItem.UnitOfMeasure.trim() == unitOfMeasure.trim()) {
                return true;
            }
        }
    }
    return false;
}

function GetProduct(productCategory, productTitle) {
    var listOfProducts = GetShoppingCartItems();
    if (listOfProducts != null) {
        for (var i = 0; i < listOfProducts.length; i++) {
            var cartItem = listOfProducts[i];
            if (cartItem.Category == productCategory.trim() && cartItem.ProductTitle == productTitle.trim()) {
                return cartItem;
            }
        }
    }
    return null;
}
function GetProduct1(productCategory, productTitle, unitOfMeasure) {
    var listOfProducts = GetShoppingCartItems();
    if (listOfProducts != null) {
        for (var i = 0; i < listOfProducts.length; i++) {
            var cartItem = listOfProducts[i];
            if (cartItem.Category == productCategory.trim() && cartItem.ProductTitle == productTitle.trim() && cartItem.UnitOfMeasure == unitOfMeasure.trim()) {
                return cartItem;
            }
        }
    }
    return null;
}

function UpdateProduct(productCategory, oldProductTitle, newTitle) {
    var listOfProducts = GetShoppingCartItems();
    if (listOfProducts != null) {
        for (var i = 0; i < listOfProducts.length; i++) {
            var cartItem = listOfProducts[i];
            if (cartItem.Category == productCategory.trim() && cartItem.ProductTitle.trim() == oldProductTitle.trim()) {
                cartItem.ProductTitle = newTitle;
                WriteCompressedCookie(listOfProducts);
                break;
            }
        }
    }
}
function UpdateProduct1(productCategory, productTitle, unitOfMeasure, newQuantity) {
    var listOfProducts = GetShoppingCartItems();
    if (listOfProducts != null) {
        for (var i = 0; i < listOfProducts.length; i++) {
            var cartItem = listOfProducts[i];
            if (cartItem.Category.trim() == productCategory.trim() && cartItem.ProductTitle.trim() == productTitle.trim() && cartItem.UnitOfMeasure.trim() == unitOfMeasure.trim()) {
                cartItem.Quantity = parseFloat(cartItem.Quantity) + parseFloat(newQuantity);
                WriteCompressedCookie(listOfProducts);
                break;
            }
        }
    }
}
function WriteCompressedCookie(normalJSONArray) {
    var cookieString = "";
    if (normalJSONArray != null) {
        var temp = new Array();
        for (var i = 0; i < normalJSONArray.length; i++) {
            var currentItem = normalJSONArray[i];
            var newItem = new CartItemCookie(currentItem.Category, currentItem.ProductTitle);
            temp.push(newItem);
        }

        if (temp.length > 0) {
            var temp = JSON.hpack(temp, 3);
            cookieString = JSON.stringify(temp);
        }

    }
    setCookie(cookieName, cookieString, null);
}
function GetCompressedCookieItems() {
    var cookieString = getCookie(cookieName);
    if (cookieString == null) {
        return null;
    }
    var cartItems = null;
    if (cookieString.trim() != "") {
        cartItems = JSON.hunpack(eval("(" + cookieString + ")"));
    }
    return cartItems;
}

function DeleteProduct(productCategory, ProductTitle) {
    var listOfProducts = GetShoppingCartItems();
    if (listOfProducts != null) {
        for (var i = 0; i < listOfProducts.length; i++) {
            var cartItem = listOfProducts[i];
            if (cartItem.Category == productCategory.trim() && cartItem.ProductTitle == ProductTitle) {
                listOfProducts.splice(i, 1);
                WriteCompressedCookie(listOfProducts);
                break;
            }
        }
    }
}
