﻿// -----------------------------------------------------------------------------------
//
//	Quick View Web Service Functionality
//	by Jonathan Lawson & Web Divalicious
//	Last Modification: ummm how's about you check the file date for that info
//
//	For more information, visit: the IT Dungeon
//
// -----------------------------------------------------------------------------------

/*---------------------------------- File Includes -----------------------------------*/

/*---------------------------------- Page Variables -----------------------------------*/
var GetCart_TryAgain = 0;
var GetCart_LoadingHTML = "<img src='images/loading.gif' />";
var GetCart_FailHTML = "<br><br><a href='#' onclick=\"@FUNCTION;\" class='inline'>Try Again</a><br>"+
            "<a href='_ShopHandler.aspx?_do=ShoppingCart' class='inline'>View Cart</a><br><br>";
/*---------------------------------- Load Cart -----------------------------------*/
function LoadCart() 
{  
    //IE can't preload this... 
    //document.getElementById('dShowCart_Holder') ? document.getElementById('dShowCart_Holder').innerHTML = GetCart_LoadingHTML : alert('no item');
    
    //load availability
    ret=GetCart.LoadCart(OnComplete_LoadCart,OnTimeout_LoadCart,OnError);
}

function OnComplete_LoadCart(args) 
{
    //check for failure
    if(args.toString().indexOf("fail") == 0)
    {
        retryLoadCart();
        return;
    }
    
    GetCart_TryAgain=0;//reset

    //display cart
    document.getElementById('dShowCart_Holder') ? document.getElementById('dShowCart_Holder').innerHTML = args : null;
    document.getElementById('dEstimatedCartTotals_Holder') ? document.getElementById('dEstimatedCartTotals_Holder').innerHTML = "" : null;
    document.getElementById('aEstimatedCartTotals') ? document.getElementById('aEstimatedCartTotals').innerHTML = "Estimate Cart Total" : null;
    ShowHideCart((args.toString().toLowerCase().indexOf("empty") == -1) ? true:false);
    
    //return if cart is empty... don't update header or running balance
    if(args.toString().toLowerCase().indexOf("empty") > 0)
        return;

    //update cart total in header 
    var lblHeader_CartTotal = GetSpanID("lblHeader_CartTotal");
    var total = args.substr(args.lastIndexOf("$"), args.length);
    total = total.replace("</b>","");
    document.getElementById(lblHeader_CartTotal) ? document.getElementById(lblHeader_CartTotal).innerHTML = total : null;
    
    //update allotment total
    LoadRunningBalance();//GetAllotments.js --NOTE-- this is throwing errors 
}

function OnTimeout_LoadCart(args) 
{
    retryLoadCart();
}

/*---------------------------------- Simulate Cart -----------------------------------*/
function SimulateCart() 
{    
    document.getElementById('dEstimatedCartTotals_Holder') ? document.getElementById('dEstimatedCartTotals_Holder').innerHTML = GetCart_LoadingHTML : null;
    
    //load availability
    ret=GetCart.SimulateCart(OnComplete_SimulateCart,OnTimeOut,OnError);
}

function OnComplete_SimulateCart(args) 
{
    //check for failure
    if(args.toString().indexOf("fail") == 0)
    {
        document.getElementById('dEstimatedCartTotals_Holder') ? document.getElementById('dEstimatedCartTotals_Holder').innerHTML = "Cannot estimate at this time. " + GetCart_FailHTML.replace("@FUNCTION", "SimulateCart()") : null;
        return;
    }

    //display cart totals
    document.getElementById('dEstimatedCartTotals_Holder') ? document.getElementById('dEstimatedCartTotals_Holder').innerHTML = args : null;
    document.getElementById('aEstimatedCartTotals') ? document.getElementById('aEstimatedCartTotals').innerHTML = "" : null;
}

/*---------------------------------- Delete Item -----------------------------------*/
function DeleteItem(SKU) 
{    
    document.getElementById('dShowCart_Holder').innerHTML = GetCart_LoadingHTML;

    //Delete Item   -   return updated cart, so use OnComplete_LoadCart function
    ret=GetCart.DeleteItem(SKU,OnComplete_LoadCart,OnTimeOut,OnError);
}

/*---------------------------------- Empty Cart -----------------------------------*/
function EmptyCart() 
{
    document.getElementById('dShowCart_Holder').innerHTML = GetCart_LoadingHTML;

    //load availability
    ret=GetCart.EmptyCart(OnComplete_EmptyCart,OnTimeOut,OnError);
}

function OnComplete_EmptyCart(args) 
{
    //check for failure
    if(args.toString().indexOf("fail") == 0)
    {
        retryEmptyCart()
        return;
    }
    
    GetCart_TryAgain=0;//reset

    //display empty cart
    document.getElementById('dShowCart_Holder').innerHTML = args;
    document.getElementById('dEstimatedCartTotals_Holder') ? document.getElementById('dEstimatedCartTotals_Holder').innerHTML = "" : null;
    ShowHideCart(false);
}

/*---------------------------------- Page Functions -----------------------------------*/
function ShowHideCart(isVisible)
{
    if(document.getElementById('tShowCartFunctionality') != null)
        isVisible ? document.getElementById('tShowCartFunctionality').style.display = 'block' : 
                    document.getElementById('tShowCartFunctionality').style.display = 'none';
}

function retryLoadCart()
{        
    if(GetCart_TryAgain < 3)
    {
        GetCart_TryAgain++;//increment, try again up to 3 times
        LoadCart();
        return;
    }

    GetCart_TryAgain=0;//reset
    
    document.getElementById('dShowCart_Holder') ? document.getElementById('dShowCart_Holder').innerHTML = "Problem loading cart information"+GetCart_FailHTML.replace("@FUNCTION", "LoadCart()") : null;
    ShowHideCart(false);
}

function retryEmptyCart()
{        
    if(GetCart_TryAgain < 3)
    {
        GetCart_TryAgain++;//increment, try again up to 3 times
        EmptyCart();
        return;
    }

    GetCart_TryAgain=0;//reset
    LoadCart();//counldn't do it... reload cart
}

/*---------------------------------- Handler Functions -----------------------------------*/
function OnTimeOut(args)
{
    //Only use these alerts for testing purposes from now on - AMB    
    //alert("Timeout Occurred - " + args); 
}
 
function OnError(args)
{
    //Only use these alerts for testing purposes from now on - AMB    
    //alert("Error Occurred - " + args);
}