﻿/*
*    Cart Object code
*/
function Cart(registrantID, sessionID) {
    this.registrantID = registrantID;
    this.sessionID = sessionID;
    this.addCartItem = addCartItem;
    this.addRFQItem = addRFQItem;
    this.getCart = getCartItems;
    this.cartID;
    this.rfqID;
       
    //init the cart
    createCart(registrantID, sessionID);
}

function CartNoSession(registrantID, cartID, rfqID) {
    this.registrantID = registrantID;
    this.sessionID = '';
    this.addCartItem = addCartItem;
    this.addRFQItem = addRFQItem;
    this.getCart = getCartItems;
    this.cartID;
    this.rfqID;

    createCartNoSession(cartID, rfqID);
}

function createCart(registrantID, sessionID) {
    CartService.GetCartIDs(registrantID, sessionID, onCartCreatedCompleted, onCartCreatedFailed);
}

function createCartNoSession(cartID, rfqID) {
    CartService.GetCartNoSession(cartID, rfqID, onCartCreatedCompleted, onCartCreatedFailed);
}

function onCartCreatedCompleted(result) {
    this.rfqID = result.RFQID;
    this.cartID = result.CartID;
    //init the shopping cart to show rfq items
    initCartItems();
}

function onCartCreatedFailed(error) {

}

function addCartItem(cartOptionID, quantity, comments, colorID) {
    $find('loadingPopupDlg').show();
    if (cartID.length > 0) {
        CartService.AddCartItem(cartID, cartOptionID, quantity, comments, colorID, onCartItemAdded, onCartItemAddedFailed);
    }
}

function onCartItemAdded(result) {
    //after a new item has been updated update the cart
    getCartItems(1);

    $find('loadingPopupDlg').hide();
    $find('statusDlg').show(); 
}

function onRFQItemAdded(result) {
    //after a new item has been updated update the rfq
    getCartItems(0);

    $find('loadingPopupDlg').hide();
    $find('statusDlg').show(); 
}

function onCartItemAddedFailed(error) {

}

function addRFQItem(partID, quantity, comments, colorID) {
    $find('loadingPopupDlg').show();
    if (rfqID.length > 0) {
        CartService.AddRFQItem(rfqID, partID, quantity, comments, colorID, onRFQItemAdded, onCartItemAddedFailed);
    }
}

function getCartItems(selectedTab) {
    switch (selectedTab) {
        case 0: //rfq
            CartService.GetRFQ(rfqID, onCartRetrieved, onCartRetrieveFailed, selectedTab);
            break;
        case 1: //cart
            CartService.GetCart(cartID, onCartRetrieved, onCartRetrieveFailed, selectedTab);
            break;
    }
}

function initCartItems() {
    //try to load rfq items if none then switch
    CartService.GetRFQCart(rfqID, cartID, onCartInitRetrieved, onCartRetrieveFailed);
}

function onCartInitRetrieved(result) {
    if (result.length > 0) {
        //if we have a color than there are cart items - otherwise just load the rfq    
        if( result[0].Price.length > 0 ){
            onCartRetrieved(result, 1)
        }
        else {
            onCartRetrieved(result, 0)
        }
    }
    else
        onCartRetrieved(result, 0)
}

function onCartRetrieved(result, selectedTab) {
//    //display the items in the tab
//    $('#tab' + selectedTab).empty();
//    var totalCartPrice = "$0";
//    
//    switch (selectedTab) {
//        case 0: //rfq

//            if (result.length > 0) {
//                for (var i = 0; i < result.length; i++) {
//                    $('#tab' + selectedTab).append('<div class="cart-item"><div class="cart-item-title"><h3>' + result[i].Title + '</h3>' +
//                    result[i].Price + '</div>' + result[i].Length + '<br />' + result[i].Color + '</div>');
//                }
//            }
//            else
//                $('#tab' + selectedTab).append('<h2>Your RFQ is Empty!</h2>');

//            $('#view-rfq-link').show();
//            $('#view-cart-link').hide();

//            $("#cart").tabs('select', '#tab0');
//            
//            break;
//        case 1: //cart
//            if (result.length > 0) {
//                for (var i = 0; i < result.length; i++) {
//                    $('#tab' + selectedTab).append('<div class="cart-item"><div class="cart-item-title"><h3>' + result[i].Title + '</h3>' +
//                    result[i].Price + '</div>' + result[i].Length + '<br />' + result[i].Color + '</div>');

//                    totalCartPrice = result[i].TotalPrice;
//                }
//            }
//            else
//                $('#tab' + selectedTab).append('<h2>Your Cart is Empty!</h2>');

//            $('#view-rfq-link').hide();
//            $('#view-cart-link').show();

//            $("#cart").tabs('select', '#tab1');

//            break;
//    }

//    updateCartTotal(selectedTab, totalCartPrice);
}

function onCartRetrieveFailed(error) {

}

function updateCartTotal(selectedTab, totalCartPrice) {
//    var cartTotal = $('.cart_total');
//    
//    switch (selectedTab) {
//        case 0: //rfq
//            cartTotal.hide();
//            
//            break;
//        case 1: //cart
//            cartTotal.empty();
//            cartTotal.append('Total: ' + totalCartPrice);
//            cartTotal.show();

//            break;
//    }
}

function updateCartItems(selectedTab, cartID) {
    switch (selectedTab) {
        case 0: //rfq
            CartService.GetRFQ(cartID, onCartRetrieved, onCartRetrieveFailed, selectedTab);
            break;
        case 1: //cart
            CartService.GetCart(cartID, onCartRetrieved, onCartRetrieveFailed, selectedTab);
            break;
    }
}
