/*
Functions to handle add to minicart functionality.
*/

  var divId;
  var reqProductDetails;
  var http_request;
  var refUrl;

  if (window.XMLHttpRequest) {
    reqProductDetails             = new XMLHttpRequest();
    reqAddToCart                  = new XMLHttpRequest();
    http_request                  = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    reqProductDetails             = new ActiveXObject("Microsoft.XMLHTTP");
    reqAddToCart                  = new ActiveXObject("Microsoft.XMLHTTP");
    http_request                  = new ActiveXObject("Microsoft.XMLHTTP");
  }
function fnShowProductDetails(url) {
   divId = 'displayProductDetails';
   refUrl = url;
   reqProductDetails.open("GET", url, true);
   document.getElementById(divId).innerHTML = waitMessage;
   reqProductDetails.onreadystatechange = handleShowProductDetailsResponse;
   reqProductDetails.send(null);
}
function handleShowProductDetailsResponse() {
   if (reqProductDetails.readyState == 4) {
       if (reqProductDetails.status == 200) {
           var responseContent  = reqProductDetails.responseText;
           if (! responseContent.match('collectionList')) {
              var splitUrl = refUrl.split("\/product");
              var errorUrl = splitUrl[0]+"\/errors\/404";
              window.location.replace( errorUrl );
           }
           document.getElementById(divId).innerHTML = "";
           document.getElementById(divId).insertAdjacentHTML("beforeBegin",responseContent);
       }
   }
}
function addToCart(item, isRec) {
  var urlAddToCart  = addToCartURL;
  var result = createUrlForCart(item, isRec);
  if(result == 'error') {
     return;
  }
  result = result.replace (/^&/,"");
  var popupOptions = 'toolbar=no,scrollbars=yes,width=475,height=200,resizable=yes,top=200';
  reqAddToCart.open("POST", urlAddToCart, false);
  reqAddToCart.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  reqAddToCart.send(result);
  if (reqAddToCart.status == 200) {
        addToCartResult = reqAddToCart.responseText;
  }
  document.getElementById('minidpDiv'+(isRec-1)).style.display= 'none';
  document.getElementById('miniCartDiv').innerHTML = addToCartResult;
  document.getElementById('miniCartDiv').style.display = 'block';
  updateInlineCartCount();
}
function createUrlForCart(asin, isRec) {
  var urlPart = '&ASIN=' + document.getElementById('asin.'+isRec).value;
  urlPart += '&offerListingID=' + document.getElementById('offeringID.'+isRec).value;
  var qty = document.getElementById('quantity.'+ asin + isRec);
  urlPart += '&quantity=';
  urlPart += qty ? qty.value : '1';
  urlPart += '&nodeID=' + document.getElementById('node').value;
  urlPart += '&merchantID=' + document.getElementById('merchantID').value;
  urlPart += '&marketplaceID=' + document.getElementById('marketplaceID').value;
  urlPart += '&sessionID=' + document.getElementById('sessionID').value;
  urlPart += '&viewID=quickview';
  var dimensionKeys = document.getElementById('dimensionKeys.'+asin);
  if(dimensionKeys != null) {
    dimensionKeys = dimensionKeys.value;
    if(dimensionKeys != "") {
      dimensionKeys = dimensionKeys.replace(/\|/, ',');
      urlPart += '&variationDimensionKeys=' + dimensionKeys;
      var variations = dimensionKeys.split(/,|\|/);
      for(var i=0; i<variations.length; i++) {
        var selectedValue = encodeURIComponent(document.getElementById('dimensions.'+asin+'.'+variations[i]+'PopUp').value);
        if(selectedValue == '') {
          alert('Please select a variation and then add to basket.');
          return 'error';
        }
        urlPart += '&' + variations[i] + '=' + selectedValue;
      }
    }
  }
  return urlPart;
}
// Function to be called to update the top nav inline basket count
function updateInlineCartCount() {
  var url = itemCountURL;
  var newCount;
  var spanElement = document.getElementById('inlineCart');
  if (spanElement == undefined)
     return;
  var itemsCountField = document.getElementById('currentCartItemsCount');
  // Sometimes we get the new count as hidden field, otherwise we do a
  // AJAX http call to get the count
  if (itemsCountField) {
     newCount = itemsCountField.value;
  } else {
     http_request.open('POST', url, false);
     http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
     http_request.send(null);
     if (http_request.status == 200)
        newCount = http_request.responseText;
  }
  // Remove the new line characters and spacings
  newCount = newCount.replace (/(\n)|(\s)/g,"");
  spanElement.innerHTML = newCount;
}
function addToCartSr(asin, formNumber) {
  var urlAddToCart  = addToCartURL;
  var result = createUrlForCartSr(asin, formNumber);
  if(result == 'error') {
    return;
  }
  result = result.replace (/^&/,"");
  reqAddToCart.open("POST", urlAddToCart, false);
  reqAddToCart.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  reqAddToCart.send(result);
  if (reqAddToCart.status == 200) {
    addToCartResult = reqAddToCart.responseText;
  }
  // put result fragment into hidden div and pull out what we need
  var tempDiv = getTempDiv();
  tempDiv.innerHTML = addToCartResult;
  var popupMessageNew = document.getElementById('popupMessageNew');
  var popoverContent = document.getElementById('popoverContent.' + formNumber);
  if (popoverContent && popupMessageNew) {
    popoverContent.innerHTML = popupMessageNew.innerHTML;
    showBrowsePopover(formNumber, true);
  }
  updateInlineCartCount();
}
function createUrlForCartSr(asin, formNumber) {
  var urlPart = '&ASIN=' + asin;
  urlPart += '&offerListingID=' + document.getElementById('offeringID.'+formNumber).value;
  var qty = document.getElementById('quantity.' + formNumber);
  urlPart += '&quantity=';
  urlPart += qty ? qty.value : '1';
  urlPart += '&viewID=quickview';
  urlPart += '&sessionID=' + document.getElementById('sessionID').value;
  return urlPart;
}


