﻿// JScript File

var addingProduct = false;

var addLinkElement = null;
var addLoadingImage = null;

function addAllLinkHandler(idArray){

    if(!addingProduct){
    
        var quantityTextField;
        
        var id;
        
        var productDataArray = new Array();
        
        for(var i=0;i<idArray.length - 1;i++){
        
            id = idArray[i];
        
            quantityTextField = Ext.get('quantityInput' + id);
            
            if(quantityTextField){
            
                var quantityNumber = parseInt(quantityTextField.getValue());
                
                            
                if(!Ext.isEmpty(quantityNumber) && !isNaN(quantityNumber)){
                
                   productDataArray.push("{productID:" + id + ",quantity:" + quantityNumber + "}");
                }
        
            
            }
        
        }
        
        if(productDataArray.length > 0){
            
            addLinkElement = Ext.get("addAllLink")
        
            addLinkElement.setDisplayed("none");

            addLoadingImage = Ext.get('loadingAllImage');
            
            addLoadingImage.setDisplayed("inline");
        
            addToBasket(productDataArray);
        }
    
    }

}

function addLinkHandler(productItemID){

    if(!addingProduct){

        var quantityTextField = Ext.get('quantityInput' + productItemID)

        if(quantityTextField){ 
        
            var quantityNumber = parseInt(quantityTextField.getValue());
            
            
            if(!Ext.isEmpty(quantityNumber) && !isNaN(quantityNumber)){
            
            
                addingProduct = true;
                
                addLinkElement = Ext.get('addLink' + productItemID);
                
                addLinkElement.setDisplayed("none");

                addLoadingImage = Ext.get('loadingImage' + productItemID);
                
                addLoadingImage.setDisplayed("inline");

            
                addToBasket(["{productID:" + productItemID + ",quantity:" + quantityNumber + "}"]);
            
            }
    
        }
    }

}

function addToBasket(productDataArray){

    Ext.Ajax.request({ 
       url: 'DataServices/addToBasket.ashx',
       success: basketRequestSuccess,
       failure: basketRequestFailed,
       params: {productArray: "[" + productDataArray + "]"}
    });

}


function basketRequestSuccess(responseObject){

    
    var responseDetails = Ext.util.JSON.decode(responseObject.responseText);

        addLoadingImage.setDisplayed("none");
        addLinkElement.setDisplayed("inline");
        addLinkElement.setVisible(true);
        

    if(responseDetails.addedToCart = true){
    
        var productAddedDiv = Ext.get("divProductItemAdded");
        
        productAddedDiv.setDisplayed("inline");  

        var fadeFunction = function(){
            productAddedDiv.fadeOut({ endOpacity: 0, duration: 2, useDisplay:true, callback: function(){Ext.get("divProductItemAdded").setDisplayed("none")}});
        }
        
        setTimeout(fadeFunction,2000);
        

        updateShoppingCart(responseDetails.shoppingCartAmount,responseDetails.shoppingCartItems);
    }
    else{
        /*was able to get to the bit where it handles the basket, but fails for some reason?
        (Right now this is only hypothetical)
        alert("The product was not added to the basket!");
        */
    }
    
    addingProduct = false;
}

function basketRequestFailed(){
    /* this is a more serious failure, caused by something actually not being right with the code
       or some kind of network failure. Would be called if their net connection dropped out after loading the page.
    */

    alert("Sorry, the site is currently having technical problems. Make sure you're connected to the internet. If the problem still persists, please try again later.");

}




function updateShoppingCart(totalAmount,totalItems){

   var shoppingCartDiv = Ext.get("ctl00_Viewcartdetails2_ViewCartDiv");

   shoppingCartDiv.fadeIn();

   var amountDiv = Ext.get("ctl00_Viewcartdetails2_Total");
   
   amountDiv.update(totalAmount);
   
   var itemsDiv = Ext.get("ctl00_Viewcartdetails2_NumberOfProducts");
   
   itemsDiv.update(totalItems);
   
   
   
}
