﻿function UpdatePriceBlock(lncProduct) {
   if (lncProduct.DisplayMode != 2) {
      $('#scPriceRange').show();
      $('#scPrice_wrap').show();
      $('#scQuantity_wrap').show();

      $('#scCallToCheckPricing').hide();
      var strPrice = "(call)"
      if (lncProduct.WebPrice >= 0)
         strPrice = FormatCurrency(lncProduct.WebPrice / 100);

      if (lncProduct.AvailabilityPhrase.length > 0 && lncProduct.WebPrice >= 0) {
         $('#scPrice_wrap').toggleClass('active', true);
         $('#scPrice_choose').html(strPrice);
      } else {
         $('#scPrice_wrap').toggleClass('active', false);
         if (lncProduct.AvailabilityPhrase.length < 1)
            $('#scPrice_choose').html('&nbsp;');
      }
   } else {
      $('#scPriceRange').hide();
      $('#scPrice_wrap').hide();
      $('#scQuantity_wrap').hide();
      $('#scCallToCheckPricing').show();
   }   
}
function UpdateAddToCart(lncProduct) {
   if (lncProduct.AvailabilityPhrase.length > 0 && lncProduct.AddToCartVisible) {
      $('#btnAddToCartV2').toggleClass('active', true);
      $('#scQuantity_wrap').toggleClass('active', true);
      $('#cboQty').removeAttr('disabled');
   } else {
      $('#btnAddToCartV2').toggleClass('active', false);
      $('#scQuantity_wrap').toggleClass('active', false);
      $('#cboQty').attr('disabled', 'disabled');
   }
}
function UpdateAvailability(lncProduct) {
   if (lncProduct.AvailabilityPhrase.length > 0) {
      $('#scAvailablility_text').html(' Availability - ' + lncProduct.AvailabilityPhrase);
      $('#txtQuantityAvailable').val(lncProduct.QuantityAvailable);
      $('#scAvailablility_wrap').toggleClass('active', true);
   } else {
      $('#scAvailablility_text').html(' Availability');
      $('#scAvailablility_wrap').toggleClass('active', false);
   }
}
function UpdateProductImage(lncProduct) {
   var imageSrc;
   if (CurrentProduct.SizeCode == '++++') {
      imageSrc = AvailableColors[lncProduct.ColorCode].MainImageUrl;
   } else {
      imageSrc = lncProduct.MainImageUrl;
   }
   $('#scProductImage').attr('src', imageSrc);
}
function UpdateProduct(lncProduct, intSource) {
   if (!(intSource == 2 && CurrentProduct.SizeCode == '++++')) { PopulateSizes(lncProduct.SizeCode); }
   if (!(intSource == 1 && CurrentProduct.ColorCode == '+++')) { PopulateColors(lncProduct.ColorCode); }
   UpdatePriceBlock(lncProduct);
   if (CurrentProduct.ColorCode != '+++')
   {
      UpdateProductImage(lncProduct);
   }
   
   UpdateAvailability(lncProduct);
   UpdateAddToCart(lncProduct);
}

function GetLNCurtisProductByWebPartNumber(strWebPartNumber) {
   var lncProd = CurrentProduct;

   for (var i in CurrentProducts) {
      var lncSearchProd = CurrentProducts[i];
      if (lncSearchProd.WebPartNumber == strWebPartNumber) {
         lncProd = lncSearchProd;
         break;
      }
   }

   return lncProd;
}
function HasAdvancedSizes() {
   var blnReturn = false;
   for (var i in AvailableSizes) {
      if (AvailableSizes[i].SizeCode != '0000') {
         blnReturn = true;
         break;
      }
   }
   return blnReturn;
}
function HasMoreThanOneSize() {
   var blnReturn = false;
   var intCounter = 0;
   for (var i in AvailableSizes) {
      intCounter++;
      if (intCounter>1) {
         blnReturn = true;
         break;
      }
   }
   return blnReturn;
}
function GetLoneSize() {
   var SizeReturn;
   for (var i in AvailableSizes) {
      SizeReturn=AvailableSizes[i];
      break;
   }

   return SizeReturn;
}
function PopulateSizes(strSizeCode) {
   var intSizeCount = 0;
   $('#cboSize option').remove();

   for (var i in AvailableSizes) {
      var sizeO = AvailableSizes[i];

      $('#cboSize').append('<option value="' + sizeO.SizeCode + '">' + sizeO.SizeName + '</option>');
      intSizeCount++;
   }

   if (intSizeCount > 0) {
      if (!HasAdvancedSizes()) {
         strSizeCode = '000';
      } else if (strSizeCode == '') {
         if (!HasMoreThanOneSize()) {
            var loneSize = GetLoneSize();
            strSizeCode = loneSize.SizeCode;
            CurrentProduct.SizeCode = strSizeCode;  
         } else {
            $('#cboSize').prepend('<option value="">Choose Your Size</option');
         }
      }

      $('#cboSize').val(strSizeCode);
      $('#scChooseYourSize_wrap').show();
      if (!HasMoreThanOneSize())
         $('#cboSize').attr('readonly', 'readonly');
      else
         $('#cboSize').removeAttr('readonly');
   } else {
      $('#scChooseYourSize_wrap').hide();
   }
}
function UpdateSizes(strSizeCode) {

}
function SelectSize(strSizeCode) {
   var currentProd = CurrentProduct;
   var newPartNumber = currentProd.WebPartNumber.substring(0, 18) + strSizeCode + currentProd.WebPartNumber.substring(22, 26);
   if (currentProd.WebPartNumber != newPartNumber) {
      var newProd = GetLNCurtisProductByWebPartNumber(newPartNumber);
      if (CurrentProduct.WebPartNumber != newProd.WebPartNumber) {
         CurrentProduct = newProd;
         UpdateProduct(CurrentProduct, 1);
      } else {
         if (CurrentProduct.ColorCode == '+++' && HasMoreThanOneColor()) {
            CurrentProduct.SizeCode = strSizeCode;
         } else {
            for (var i in AvailableColors) {
               newPartNumber = currentProd.WebPartNumber.substring(0, 18) + strSizeCode + '-' + AvailableColors[i].ColorCode;
               newProd = GetLNCurtisProductByWebPartNumber(newPartNumber);
               if (CurrentProduct.WebPartNumber != newProd.WebPartNumber) {
                  CurrentProduct = newProd;
                  UpdateProduct(CurrentProduct, 1);
                  break;
               }
            }
         }
      }
   }
}
function HasAdvancedColors() {
   var blnReturn = false;
   for (var i in AvailableColors) {
      if (AvailableColors[i].ColorCode != '000') {
         blnReturn = true;
         break;
      }
   }
   return blnReturn;
}
function HasMoreThanOneColor() {
   var blnReturn = false;
   var intCounter = 0;
   for (var i in AvailableColors) {
      intCounter++;
      if (intCounter > 1) {
         blnReturn = true;
         break;
      }
   }
   return blnReturn;
}
function GetLoneColor() {
   var colorReturn;
   for (var i in AvailableColors) {
      colorReturn=AvailableColors[i];
         break;
   }

   return colorReturn;
}
function PopulateColors(strColorCode) {
   var intColorCount = 0;
   $('#cboColor option').remove();

   for (var i in AvailableColors) {
      var ColorO = AvailableColors[i];
      $('#cboColor').append('<option value="' + ColorO.ColorCode + '">' + ColorO.ColorName + '</option>');
      intColorCount++;
   }

   

   if (intColorCount > 0) {
      if (!HasAdvancedColors()) {
         strColorCode = '000';
      } else if (strColorCode == '') {
      if (!HasMoreThanOneColor()) {
         var loneColor = GetLoneColor();
         strColorCode = loneColor.ColorCode;
         CurrentProduct.ColorCode = strColorCode;
         } else {
            $('#cboColor').prepend('<option value="">Choose Your Color</option');
         }
      }

      $('#cboColor').val(strColorCode);
      $('#scChooseYourColor_wrap').show();

      if (!HasMoreThanOneSize())
         $('#cboColor').attr('readonly', 'readonly');
      else
         $('#cboColor').removeAttr('readonly');
               
      
   }else{
      $('#scChooseYourColor_wrap').hide();
   }
}
function SelectColor(strColorCode) {
   var currentProd = CurrentProduct;
   var newPartNumber = currentProd.WebPartNumber.substring(0, 23) + strColorCode;

   if (currentProd.WebPartNumber != newPartNumber) {
      var newProd = GetLNCurtisProductByWebPartNumber(newPartNumber);
      if (CurrentProduct.WebPartNumber != newProd.WebPartNumber) {
         CurrentProduct = newProd;
         UpdateProduct(CurrentProduct, 2);
      } else {
         if (CurrentProduct.SizeCode == '++++' && HasMoreThanOneSize()) {
            CurrentProduct.ColorCode = strColorCode;
         } else {
            for (var i in AvailableSizes) {
               newPartNumber = currentProd.WebPartNumber.substring(0, 18) + AvailableSizes[i].SizeCode + '-' + strColorCode;
               newProd = GetLNCurtisProductByWebPartNumber(newPartNumber);
               if (CurrentProduct.WebPartNumber != newProd.WebPartNumber) {
                  CurrentProduct = newProd;
                  UpdateProduct(CurrentProduct, 2);
                  break;
               }
            }
         }
      }
   }
}
function HasMultipleProducts() {
   var blnReturn = false;
   var intCounter=0;
   for (var i in CurrentProducts) {
      intCounter++;
      if (intCounter>1) {
         blnReturn = true;
         break;
      }
   }
   return blnReturn;
}
function HasWebOrderProducts() {
   var blnReturn = false;
   for (var i in CurrentProducts) {
      var prodToCheck = CurrentProducts[i];
      if (prodToCheck.DisplayMode!=2) {
         blnReturn = true;
         break;
      }
   }
   return blnReturn;
}

$(document).ready(function () {
   if (CurrentProduct) {
      var EmptyProduct = new LNCurtisProduct(0, '', CurrentProduct.WebPartNumber.substring(0, 18) + '++++-+++', 0, 0, 0, '', false);
      
      if (HasMultipleProducts() && HasWebOrderProducts()) {
         CurrentProduct = EmptyProduct;
         UpdateProduct(CurrentProduct, 0);
         PopulateSizes('');
         PopulateColors('');
      } else {
         UpdateProduct(CurrentProduct, 0);
         PopulateSizes(CurrentProduct.SizeCode);
         PopulateColors(CurrentProduct.ColorCode);
      }

      $('#cboSize').change(function () {
         var strSize = $('#cboSize option:selected').val();
         if (strSize && strSize != CurrentProduct.SizeCode) {
            SelectSize(strSize);
         }
      });

      $('#cboColor').change(function () {
         var strColor = $('#cboColor option:selected').val();
         if (strColor && strColor != CurrentProduct.ColorCode) {
            SelectColor(strColor);
         }
      });
      $('#txtQuantityAvailable').focus(function () {
         $('#txtQuantityAvailable').blur();
         $('#cboQty').focus();
      });
   }

});
