﻿// 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};
var cart_myGlobalDocCartAPIUrl = {url:''};

function cart_myGlobalInitializeDocCartAPIUrl(url)
{
    cart_myGlobalDocCartAPIUrl.url=url;
}
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 request = new Sys.Net.WebRequest();
    request.set_url(cart_myGlobalDocCartAPIUrl.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');
}
  
//depends on JQuery.js
function InitializeBatchAddToDocCart(virtualApplicationPath, docIdCheckBoxName, addToDocCartLinkId)
{
 var inprogress=false;
 $("#"+addToDocCartLinkId).click(function ()
 {   
    if(inprogress)
     return;
     
   inprogress = true;   
   var postUrl = virtualApplicationPath +"/Tools/BatchAddToDocCartService.asmx/AddDocumentsToDocumentCart";
   var checkedDocIds = GetDocIdsAsArray(docIdCheckBoxName, true);
   if(checkedDocIds.length==0)
   {
      alert("Please check at least one item.");
      return;
   }
   
   var docIds = "{docIds:['" + checkedDocIds.join("','") + "']}";
   
   $.ajax({
          type: "POST",
          url: postUrl,
          data: docIds,
          contentType: "application/json; charset=utf-8",
          dataType: "json",
          success: function(data){
              inprogress=false;
              alert(data);
              cart_updateDocumentCartCount();
          }
         });
 });
}

function AjaxPostTheseValuesToBatchAddToDocCartWebService(virtualApplicationPath, dataParams, callBackOnReturn){
   var postUrl = virtualApplicationPath +"/Tools/AddDocumentsToDocCartService.ashx";
   $.ajax({
          type: "POST",
          url: postUrl,
          data: dataParams,
          success: function(data){
              cart_updateDocumentCartCount();
              callBackOnReturn(data);
              alert(data);              
          }
         });
}

function SubmitValuesToDestinationPage(destinationUrl, dataParams){
    var dynamicFormId="dynamicFormdkfjdkjf";
    $("body").remove("#"+dynamicFormId);
    $("body").append("<form id='" + dynamicFormId + "' method='POST' action='" +destinationUrl +"' target='_blank'></form>");
    var dynamicForm = $("#"+dynamicFormId);
    dynamicForm.children().remove();
    $.each(dataParams,function(k,v){
        $.each(v, function (i){
           AppendHiddenInputElement(dynamicForm, k, v[i]);
        });  
    });
    dynamicForm.submit();     
}

function InitializeBatchEmail(virtualApplicationPath, docIdCheckBoxName, emailLinkId){
 $("body").append("<form id='BatchEmailDynamicForm' method='POST' action='" +virtualApplicationPath +"/Tools/BatchEmailTool.aspx' target='_blank'></form>");
 var dynamicForm = $("#BatchEmailDynamicForm");
 $("#"+emailLinkId).click(function (){   
     dynamicForm.children().remove();        
     var checkedDocIds = GetDocIdsAsArray(docIdCheckBoxName,true);

     $.each(checkedDocIds, function(index,value){
       AppendHiddenInputElement(dynamicForm, 'docId', value);
     });
     
     if(checkedDocIds.length==0){
        alert("Please check at least one item.");
        return;
     }
     
     dynamicForm.submit(); 
 }); 
}

function InitializeLRAMCreateExcelReport(virtualApplicationPath, docIdCheckBoxName, createExcelLinkId, numberOfMatchedRecords){
 $("body").append("<form id='DynamicExcelReportForm' method='POST' action='" +virtualApplicationPath +"/sm/LRAMExcelReport.ashx' target='_blank'></form>");
 var dynamicForm = $("#DynamicExcelReportForm");

 $("#"+createExcelLinkId).click(function (){   
     dynamicForm.children().remove();        
     var docIds = GetDocIdsAsArray(docIdCheckBoxName,false);

     $.each(docIds, function(index,value){
       AppendHiddenInputElement(dynamicForm, 'docId', value);
     });
     
     AppendHiddenInputElement(dynamicForm,'numberOfMatchedRecords', numberOfMatchedRecords);
     
     if(docIds.length==0)
     {
        throw "Unable to find docId(s)";
     }
     dynamicForm.submit();
     return false; 
 }); 
}



function AppendHiddenInputElement(form, elementName, elementValue){
  form.append("<input name='" + elementName +"' type='hidden' value='"+elementValue+"'/>");
}

function GetDocIdsAsArray(checkBoxName, getOnlyChecked){
  var res = [];
  $("input[name=" +checkBoxName+ "]").each(function (){
      if(getOnlyChecked){
         if($(this).is(':checked')){
          res.push($(this).val());
         }
      }else{
        res.push($(this).val());  
      }    
  });
  return res;
}   

