﻿// JScript File

var cart_myGlobalCounter = { totalToAdd:0, addedSoFar:0,responseCount:0};
var cart_myGlobalMessageStatus = { messageDisplayed:0,errorDisplayed:0};
var cart_myAlertMessage = { message:''};
var cart_myShouldDisplayConfirmationMessage = {shouldDisplay:false};

function cart_AddToDocumentCart(childCheckBoxName)
{
    return cart_AddToDocumentCart(childCheckBoxName,false);
}

function cart_AddToDocumentCart(childCheckBoxName, shouldDisplayConfirmation)
{
    cart_myShouldDisplayConfirmationMessage.shouldDisplay=shouldDisplayConfirmation;
    
    cart_myGlobalCounter.totalToAdd=0;
    cart_myGlobalCounter.addedSoFar=0;
    cart_myGlobalCounter.responseCount=0;
    
    cart_myGlobalMessageStatus.messageDisplayed=0;
    cart_myGlobalMessageStatus.errorDisplayed=0;
    cart_myAlertMessage.message='';
    var checkboxes = document.getElementsByName(childCheckBoxName);
    
    for(var i=0; i<checkboxes.length; i++)
    {
        if (checkboxes[i].disabled!=true)
        {
            if (checkboxes[i].checked==true)
            {       
                cart_myGlobalCounter.totalToAdd +=1;        
            }
        }
    }
    if (cart_myGlobalCounter.totalToAdd==0)
    {
        alert("Please select at least one document to add.");
        return false;
    }
    var finalCount = cart_getCurrentDocumentCount() + cart_myGlobalCounter.totalToAdd;  
    if (finalCount>25)
    {
        alert("Document Cart is limited to 25 items. Please review your selections.");
        return false;
    }
    for(var i=0; i<checkboxes.length; i++)
    {
        if (checkboxes[i].checked==true && checkboxes[i].value!='' && !checkboxes[i].disabled)
        {       
            var request = new Sys.Net.WebRequest();
            request.set_url(checkboxes[i].value);
            request.add_completed(cart_onCompleted);
            request.invoke(); 
            checkboxes[i].disabled=true; 
        }
    }
    return false;
}

function cart_onCompleted(executor, eventArgs) {
    
    cart_myGlobalCounter.responseCount +=1;
    var statusCode = executor.get_statusCode();
    var responseData = executor.get_responseData();
    var statusText = executor.get_statusText();

    if (statusCode>=200 && statusCode<=300)
    {
        if (responseData.indexOf("__MAX_REACHED__")>=0)
        {
            cart_myAlertMessage.message=' You have reached the maximum number of documents allowed per document cart.';
        }else if (responseData.indexOf("__ALREADY_ADDED__")>=0)
        {
            if (cart_myGlobalCounter.totalToAdd==1)
            {
                cart_myAlertMessage.message=' This document already exists in your cart.';
            }else{
                cart_myAlertMessage.message=' Not all checked document(s) added because you already have some of them in your cart.';
            }
        }
        else
        {
            cart_myGlobalCounter.addedSoFar +=1;
            cart_updateDocumentCartCount();
        }
    }else{
            if (cart_myGlobalMessageStatus.errorDisplayed==0)
            {
                cart_myAlertMessage.message='Unknown error(s) occurred while adding documents to your cart';
                cart_myGlobalMessageStatus.errorDisplayed=1;
            }
    }

    if (cart_myGlobalCounter.responseCount==cart_myGlobalCounter.totalToAdd)
    {
        if (cart_myAlertMessage.message!='')
        {
            alert(cart_myAlertMessage.message);             
        }
        else if(cart_myShouldDisplayConfirmationMessage.shouldDisplay)
        {
           var confirmationMessage ='Your item';
           if(cart_myGlobalCounter.addedSoFar>1)
           {
             confirmationMessage+='s have ';
           }
           else
           {
             confirmationMessage+=' has ';
           }
           confirmationMessage +='been successfully added to the Document Cart.';
            
           alert(confirmationMessage);
        }
    } 
}

function cart_updateDocumentCartCountPeriodically()
{
    cart_updateDocumentCartCount();
    //setTimeout(cart_updateDocumentCartCountPeriodically,5000); //disable updating on a real time basis
}

function cart_updateDocumentCartCount()
{
    var url = 'http://' + document.domain + '/net/services/documentcartapi.aspx?documentcartcount=yes';
    
    var request = new Sys.Net.WebRequest();
    request.set_url(url);
    request.add_completed(cart_documentCartCountCallBack);
    request.invoke();  
}
function cart_documentCartCountCallBack(executor, eventArgs)
{
    var statusCode = executor.get_statusCode();
    var responseData = executor.get_responseData();
    
    if (statusCode>=200 && statusCode<=300)
    {    
        var regex = new RegExp("<count>([0-9]*)</count>");
        if (regex.test(responseData))
        {
            var maches = regex.exec(responseData);            
            var countPlaceHolder =cart_getDocumentCartPlaceHolder();
            if (countPlaceHolder!=null && typeof(countPlaceHolder)!='undefined')
            {
                var myCount = maches[1];
                countPlaceHolder.innerHTML='(' + myCount+ ')';
                cart_setCurrentDocumentCount(parseInt(myCount,10));
            }
        }
    }
} 

/* for updating document cart record count */
var cart_myCurrentDocumentCount = { count:0};
function cart_setCurrentDocumentCount(count)
{
    cart_myCurrentDocumentCount.count=count;
}

function cart_getCurrentDocumentCount()
{
    return cart_myCurrentDocumentCount.count;
}
 
function cart_getDocumentCartPlaceHolder()
{
    return $get('DocumentCartCount');
}   