www.buycontourswanoffer.com Open in urlscan Pro
66.55.85.12  Public Scan

Submitted URL: http://buycontourswanoffer.com/
Effective URL: https://www.buycontourswanoffer.com/?mid=12079866
Submission: On April 12 via api from US — Scanned from DE

Form analysis 2 forms found in the DOM

<form class="needsclick klaviyo-form klaviyo-form-version-cid_1 kl-private-reset-css-Xuajs1" data-testid="klaviyo-form-U9VHZh" novalidate="" tabindex="-1"
  style="display: flex; flex-direction: row; box-sizing: border-box; width: 100%; overflow: visible; max-width: 450px; margin: 0px auto; border-radius: 0px; border-style: none; border-width: 0px; border-color: rgb(0, 0, 0); background-color: rgba(255, 255, 255, 0); background-repeat: no-repeat; background-position-y: 50%; padding: 0px; flex: 1 1 0%;">
  <div class="needsclick  kl-private-reset-css-Xuajs1" style="display: flex; flex-direction: column; width: 100%; margin: 0px; padding: 0px; min-height: 52px; justify-content: center;">
    <div data-testid="form-row" class="needsclick  kl-private-reset-css-Xuajs1" style="display: flex; flex-direction: row; align-items: stretch; position: relative;">
      <div component="[object Object]" data-testid="form-component" class="needsclick  kl-private-reset-css-Xuajs1" style="display: flex; justify-content: flex-start; padding: 0px 10px 0px 0px; position: relative; flex: 1 0 0px;">
        <div class="needsclick  kl-private-reset-css-Xuajs1" style="display: flex; flex-grow: 1; flex-direction: column; align-self: flex-end;"><input id="email_55089991"
            class="needsclick go1675674598 kl-private-reset-css-Xuajs1 c-brand--form__input o-box o-shadow fx--animate" type="email" autocomplete="email" name="email" tabindex="0" placeholder="Email" aria-label="Email" aria-invalid="false"
            options="[object Object]"
            style="box-sizing: border-box; border-radius: 0px; padding: 0px 0px 0px 16px; height: 50px; text-align: left; color: rgb(0, 0, 0); font-family: montserrat, Arial, &quot;Helvetica Neue&quot;, Helvetica, sans-serif; font-size: 16px; font-weight: 400; letter-spacing: 0px; background-color: rgb(255, 255, 255); border: 1px solid rgb(180, 187, 195);">
          <div class="needsclick  kl-private-reset-css-Xuajs1" style="width: 100%; position: relative;"></div>
        </div>
      </div>
      <div component="[object Object]" data-testid="form-component" class="needsclick  kl-private-reset-css-Xuajs1" style="display: flex; justify-content: flex-start; padding: 0px 6px; position: relative; flex: 0 1 auto; margin: 0px auto;"><button
          class="needsclick go3894874857 kl-private-reset-css-Xuajs1" type="button" tabindex="0"
          style="background: rgb(220, 57, 55); border-radius: 28px; border-style: none; border-color: rgb(29, 29, 29); border-width: 2px; color: rgb(255, 255, 255); font-family: montserrat, Arial, &quot;Helvetica Neue&quot;, Helvetica, sans-serif; font-size: 20px; font-weight: 900; letter-spacing: 0px; line-height: 1; white-space: normal; padding: 0px 10px; text-align: center; word-break: break-word; align-self: flex-end; cursor: pointer; height: 50px;">Subscribe</button>
      </div>
    </div>
  </div><input type="submit" tabindex="-1" value="Submit" style="display: none;">
</form>

POST /?mid=12079866

<form action="/?mid=12079866" method="post">
  <div class="form form--let-offer-use-element-controller element-controller">
    <div class="form__span-item">
      <!-- <script>_AdaErrors = true;</script> -->
      <div role="alert" class="vse" data-vse-scroll="">
      </div>
    </div>
    <div class="form__group">
      <div class="form__icons">
        <img src="/images/form-mbg.png" alt="90 Day Money Back Guarantee" loading="lazy" width="110" height="110">
        <img src="/images/form-usa.png" alt="Designed in USA" loading="lazy" width="99" height="99">
        <img src="/images/form-ssl.png" alt="Secure Site SSL Encryption" loading="lazy" width="106" height="106">
      </div>
      <!-- Step 1 -->
      <div class="form__span-item form form--frame">
        <fieldset class="form__fieldset" id="SelectOffer">
          <h2 class="form__title">STEP 1: Choose Your Payment Plan</h2>
          <div class="form__frame form__copy">
            <div class="offer-group message">
              <div class="offer-group__group message__select">
                <div class="offer-group__offer radio-text-label offer-item">
                  <label for="1Pay" class="radio-text-label__label">
                    <input type="radio" id="1Pay" name="paymentPlan" class="main-offer-change cartParam element-controller__controller" checked="" aria-checked="true" data-basecode="S" value="S" aria-labelledby="1PayLabel"
                      aria-controls="tvoffer-1pay mostpopular-1pay">
                    <span class="radio-text-label__group">
                      <span class="radio-text-label__radio"></span>
                      <span class="radio-text-label__text">Pay In Full Today</span>
                    </span>
                  </label>
                </div>
                <span class="offer-group__burst">
                  <span class="burst">Or</span>
                </span>
                <div class="offer-group__offer radio-text-label offer-item">
                  <label for="2Pay" class="radio-text-label__label">
                    <input type="radio" id="2Pay" name="paymentPlan" value="M" class="main-offer-change cartParam element-controller__controller" aria-labelledby="2PayLabel" data-basecode="M" aria-controls="tvoffer-2pay mostpopular-2pay"
                      aria-checked="false">
                    <span class="radio-text-label__group">
                      <span class="radio-text-label__radio"></span>
                      <span class="radio-text-label__text">Pay in 2 Easy Monthly Installments</span>
                    </span>
                  </label>
                </div>
              </div>
              <div class="message__group" role="alert">
                <div class="message__invalid">Please choose a payment plan</div>
              </div>
            </div>
          </div>
        </fieldset>
      </div>
      <!-- Step 2 -->
      <div class="form__span-item form form--frame">
        <fieldset class="form__fieldset" id="packages">
          <h2 class="form__title">STEP 2: Choose Your Package</h2>
          <div class="form__frame form__copy">
            <div class="offer-group offer-group--package message">
              <div class="offer-group__group message__select">
                <!-- TV Offer -->
                <div class="offer-group__offer offer-item">
                  <div class="offer-item__group">
                    <div class="offer-item__control radio-text-label">
                      <div class="radio-text-label__label">
                        <label for="TVOffer">
                          <input type="radio" class="main-offer-change cartParam" id="TVOffer" data-basecode="M1" value="M1" name="package">
                          <span class="radio-text-label__group">
                            <span class="radio-text-label__radio"></span>
                            <span class="radio-text-label__text">
                              <b class="radio-text-label__title">TV Offer</b>
                              <span class="radio-text-label__disclaimer">1 Contour Swan Pillow<br> 1 <b class="radio-text-label__attention-inline">Free</b> Laundry Care Bag<br>
                                <b class="radio-text-label__attention-block">FREE SHIPPING</b>
                              </span>
                            </span>
                          </span>
                        </label>
                      </div>
                    </div>
                    <div class="offer-item__offer">
                      <div id="tvoffer-1pay" class="offer-item__payment element-controller__element" data-element-controller-name="1Pay" aria-hidden="false">
                        <span class="offer-item__strikethrough">List Price: <s>$80</s></span>
                        <b class="offer-item__price">$59.98</b>
                      </div>
                      <div id="tvoffer-2pay" class="offer-item__payment element-controller__element" aria-hidden="true">
                        <span class="offer-item__strikethrough">List Price: <s>$80</s></span>
                        <span>$59.98</span>
                        <b class="offer-item__price">2 Payments of $29.99</b>
                      </div>
                    </div>
                    <div class="offer-item__burst-image">
                      <div class="offer-item__group">
                        <span class="burst burst--savings">
                          <div class="burst__text">
                            <b>25%</b> off
                          </div>
                        </span>
                        <picture>
                          <img src="/images/Site10/form/product.jpg" alt="Product" width="51" height="93" loading="lazy">
                        </picture>
                      </div>
                    </div>
                  </div>
                </div>
                <!-- Double Offer -->
                <div class="offer-group__offer offer-item">
                  <div class="offer-item__group">
                    <div class="offer-item__control radio-text-label">
                      <div class="radio-text-label__label">
                        <label for="MostPopular">
                          <input type="radio" class="main-offer-change cartParam" id="MostPopular" data-basecode="M2" value="M2" name="package" checked="" aria-checked="true">
                          <span class="radio-text-label__group">
                            <span class="radio-text-label__radio"></span>
                            <span class="radio-text-label__text">
                              <b class="radio-text-label__title">Double Offer</b>
                              <span class="radio-text-label__disclaimer">2 Contour Swan Pillows<br> 2 <b class="radio-text-label__attention-inline">Free</b> Laundry Care Bags<br>
                                <b class="radio-text-label__attention-block">FREE SHIPPING</b>
                              </span>
                            </span>
                          </span>
                        </label>
                      </div>
                    </div>
                    <div class="offer-item__offer">
                      <div id="mostpopular-1pay" class="offer-item__payment element-controller__element" data-element-controller-name="1Pay" aria-hidden="false">
                        <span class="offer-item__strikethrough">List Price: <s>$160</s></span>
                        <span>$99.96</span>
                        <b class="offer-item__price">Only $49.98 per pillow!</b>
                      </div>
                      <div id="mostpopular-2pay" class="offer-item__payment element-controller__element" aria-hidden="true">
                        <span class="offer-item__strikethrough">List Price: <s>$160</s></span>
                        <span>$99.96 / $49.98 per pillow</span>
                        <b class="offer-item__price">2 Payments of $49.98</b>
                      </div>
                    </div>
                    <div class="offer-item__burst-image">
                      <div class="offer-item__group">
                        <span class="burst burst--savings">
                          <div class="burst__text">
                            <b>37%</b> off
                          </div>
                        </span>
                        <picture>
                          <img src="/images/Site10/form/product.jpg" alt="Product" width="51" height="93" loading="lazy">
                        </picture>
                        <picture>
                          <img src="/images/Site10/form/product.jpg" alt="Product" width="51" height="93" loading="lazy">
                        </picture>
                      </div>
                    </div>
                    <b class="offer-item__footer">Save An Additional $10 Per Pillow!</b>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </fieldset>
      </div>
      <!-- Step 3 -->
      <div class="form__span-item form form--frame">
        <fieldset class="form__fieldset" id="addons">
          <h2 class="form__title">STEP 3: Optional Add-Ons</h2>
          <div class="form__frame form__copy">
            <div class="offer-group offer-group--addon message">
              <div class="offer-group__group message__select">
                <div class="offer-group__offer offer-item">
                  <div class="offer-item__group">
                    <div class="offer-item__control radio-text-label radio-text-label--addon">
                      <div class="radio-text-label__label radio-text-label__label--fill">
                        <label for="additionalOffer">
                          <input type="checkbox" class="main-offer-change cartParam" id="additionalOffer" name="additionalOffer" value="true" data-basecode="C">
                          <span class="radio-text-label__group">
                            <span class="radio-text-label__radio"></span>
                            <span class="radio-text-label__text">
                              <span class="radio-text-label__title radio-text-label__title--no-uppercase">YES! Please include a Custom Fit Pillowcase for each pillow ordered today!</span>
                              <span class="radio-text-label__disclaimer">$24.99 + <b class="radio-text-label__attention-block">FREE SHIPPING</b><br>
                                <em>(per pillow ordered)</em>
                              </span>
                              <ul class="radio-text-label__list">
                                <li>Protect and extend the life of your pillow</li>
                                <li>Cotton poly blend </li>
                                <li>Machine wash and dry</li>
                              </ul>
                            </span>
                          </span>
                        </label>
                      </div>
                      <div>
                        <img class="offer-item__image" loading="lazy" src="/images/Site10/form/add-on-pillow.jpg" alt="Custom fit pillowcase" width="404" height="178">
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </fieldset>
      </div>
    </div>
  </div>
  <div class="form">
    <div class="form__group">
      <div class="form__span-item form__message">
        <span class="form__error">*</span>Indicates required field
      </div>
      <!-- Step 3 -->
      <div class="form__span-item form form--frame">
        <div class="form__fieldset">
          <h2 class="form__title">STEP 4: Review Your Order</h2>
          <div class="form__frame c-brand--form order-table reviewTable">
            <div id="reviewOrder" class="c-brand--form__fieldset">
              <div class="FormHeadlineL c-brand--form__headline c-brand--form__legend"><strong>STEP 2:</strong> Review Your Order</div>
              <style>
                .alignTextRight {
                  text-align: right;
                }

                .alignTextLeft {
                  text-align: left;
                }

                .disableToggleClick {
                  pointer-events: none;
                }
              </style>
              <div class="@mv-u-pad--vert reviewTable__wrap">
                <table id="orderReview" class="orderItemsTable reviewTable c-brand--table--has-items @mv-u-pad--vert c-brand--table">
                  <thead class="reviewTableHead">
                    <tr>
                      <th>Description</th>
                      <th>Quantity</th>
                      <th>Price</th>
                      <th>S&amp;H</th>
                    </tr>
                  </thead>
                  <tbody class="reviewTableBody">
                    <tr>
                      <td data-eflex--category-label="Item">Contour Swan Pillow 2-pack</td>
                      <td data-cart-code="M2SQuantity" data-eflex--category-label="Quantity"><select id="ActionQuantity0" name="ActionQuantity0" data-index="0"
                          onchange="$('#ActionQuantity0').val(this.value);triggerEvent('ActionQuantityChange', '0');" class="c-brand--form__select o-box o-shadow u-vw fx--animate">
                          <option value="0">0</option>
                          <option value="1" selected="selected">1</option>
                          <option value="2">2</option>
                          <option value="3">3</option>
                          <option value="4">4</option>
                        </select></td>
                      <td data-cart-code="M2SPrice" data-eflex--category-label="Price">$99.96</td>
                      <td data-cart-code="M2SShipping" data-eflex--category-label="S&amp;H">$0.00</td>
                    </tr>
                  </tbody>
                  <tfoot class="reviewTableFoot alignTextRight">
                    <tr>
                      <td colspan="3">Sub Total:</td>
                      <td>
                        <label class="subtotal">$99.96</label>
                      </td>
                    </tr>
                    <tr>
                      <td colspan="3"><label for="zc">State Tax:&nbsp;&nbsp; <input type="text" class="zc c-brand--form__input o-box o-shadow fx--animate o-grid--iblock u-vw--50" id="zc" name="zc" value="" placeholder="Enter Zip Code"></label> </td>
                      <td>
                        <span class="taxtotal"></span>
                      </td>
                    </tr>
                    <tr>
                      <td colspan="3"><b>Estimated Order Total</b></td>
                      <td>
                        <span class="summary-total">$99.96</span>
                      </td>
                    </tr>
                  </tfoot>
                </table>
              </div>
              <div id="orderFormReviewTableItems"><input type="hidden" id="ActionCode0" name="ActionCode0" value="M2S"></div>
            </div>
            <script type="text/javascript">
              var _firstIndex = '';
              var _firstRun = true;
              var cartItems = [];
              var modifierArray = [];

              function getCartUrl(type) {
                var m = '12079866' == '' ? '' : 'mid=12079866';
                var a = '' == '' ? '' : 'a=';
                var s = '' == '' ? '' : 's=';
                var c = '' == '' ? '' : 'clickId=';
                var arr = [m, a, s, c]
                for (var i = 0; i < arr.length; i++) {
                  if (arr[i] == '') {
                    arr.splice(i, 1);
                    i--;
                  }
                }
                var qs = (m + a + s + c) == '' ? '' : ('?' + arr.join('&'));
                var url = '/Cart/' + type + '/Index' + qs;
                return url;
              }

              function loadAllItemStates() {
                var preloadedItems = [];
                var enableEditableQuantity = true;
                if (preloadedItems.length > 0) {
                  handleCartChange();
                } else if (!enableEditableQuantity) {
                  handleCartChange();
                }
                $.each($('[data-condition-missing][data-condition-value]:not([data-condition])'), function() {
                  var code = $(this).attr('data-condition-missing');
                  var regex = new RegExp("^" + code + "$");
                  var cartItem = _dtmShoppingCart.SearchItems(regex);
                  if ((preloadedItems.length == 0 && cartItem.length <= 0) || (preloadedItems.length > 0 && preloadedItems.indexOf(code) <= 0)) {
                    setDataCondition(this);
                  }
                });
              }

              function checkboxToggleXor(removeItems) {
                for (var i = 0; i < removeItems.length; i++) {
                  $('#' + removeItems[i] + '').prop('checked', false);
                }
              }

              function validateTextBoxInput(element, maxQuantity) {
                var value = $(element).val();
                var valueInt = parseInt(value);
                var newValue = 0;
                if (valueInt > maxQuantity) {
                  newValue = maxQuantity;
                } else if (isNaN(valueInt) || valueInt <= 0) {
                  newValue = 0;
                } else {
                  newValue = valueInt;
                }
                $(element).val(newValue);
              }

              function isSelectorModified(selector) {
                return ($(selector).attr('data-code-modifier') != null && $(selector).attr('data-code-modifier').length > 0 && $(selector).attr('data-code-alt') != null && $(selector).attr('data-code-alt').length > 0 && ($('#' + $(selector).attr(
                  'data-code-modifier')).is(':checked') || $('[name=' + $(selector).attr('data-code-modifier') + '][value=true]').is(':checked')));
              }

              function AddToModifierArray(modifierName) {
                var alreadyExists = false;
                if (modifierArray.length > 0) {
                  modifierArray.forEach(function(ele) {
                    if (ele == modifierName) {
                      alreadyExists = true;
                    }
                  });
                }
                if (!alreadyExists) {
                  modifierArray.push(modifierName);
                }
              }

              function handleModifierChangeAction(name, type) {
                var modifiableSelectors = $('[data-code-modifier=' + name + ']');
                var datacode = "";
                var bonusArray = [];
                var removeItems = [];
                var firstSelectorQuantity = 0;
                var quantity = 0;
                switch (type) {
                  case 'checkbox':
                    var isModified = $('[name=' + name + ']').is(':checked');
                    break;
                  case 'radio':
                    var isModified = $('[name=' + name + ']:checked').val() == 'true';
                    break;
                }
                if (modifiableSelectors.length > 0) {
                  for (var i = 0; i < modifiableSelectors.length; i++) {
                    var isSelect = $(modifiableSelectors[i]).is('select');
                    var isRadioOrCB = 'radio,checkbox'.indexOf($(modifiableSelectors[i]).attr('type')) >= 0;
                    if (i == 0) {
                      if (isSelect) {
                        firstSelectorQuantity = isSelect ? $(modifiableSelectors[i]).val() : 1;
                      } else if (isRadioOrCB) {
                        if ($(modifiableSelectors[i]).is(':checked')) {
                          firstSelectorQuantity = $(modifiableSelectors[i]).attr('data-qty-id') != null ? $('#' + $(modifiableSelectors[i]).attr('data-qty-id')).val() : 1;
                        }
                      }
                      if (firstSelectorQuantity > 0) {
                        dataCode = isModified ? $(modifiableSelectors[i]).attr('data-code-alt') : $(modifiableSelectors[i]).attr('data-code');
                        var bonusAddRemoveArrays = bonusItemHandler(isModified, firstSelectorQuantity, $(modifiableSelectors[i]));
                        bonusArray = bonusArray.concat(bonusAddRemoveArrays.bonusItems);
                        removeItems = removeItems.concat(bonusAddRemoveArrays.removeItems);
                      } else {
                        dataCode = "";
                      }
                    } else {
                      if (isSelect) {
                        quantity = isSelect ? $(modifiableSelectors[i]).val() : 1;
                      } else if (isRadioOrCB) {
                        if ($(modifiableSelectors[i]).is(':checked')) {
                          quantity = $(modifiableSelectors[i]).attr('data-qty-id') != null ? $('#' + $(modifiableSelectors[i]).attr('data-qty-id')).val() : 1;
                        } else {
                          quantity = 0;
                        }
                      }
                      if (quantity > 0) {
                        var bonusAddRemoveArrays = bonusItemHandler(isModified, quantity, $(modifiableSelectors[i]));
                        var selector = isModified ? $(modifiableSelectors[i]).attr('data-code-alt') : $(modifiableSelectors[i]).attr('data-code');
                        if (dataCode == "") {
                          dataCode = selector;
                          firstSelectorQuantity = quantity;
                        } else {
                          bonusArray.push({
                            Id: selector,
                            Qty: quantity
                          })
                        }
                        bonusArray = bonusArray.concat(bonusAddRemoveArrays.bonusItems);
                        removeItems = removeItems.concat(bonusAddRemoveArrays.removeItems);
                      }
                    }
                  }
                }
                if (firstSelectorQuantity > 0) {
                  handleCartChange(dataCode, firstSelectorQuantity, null, removeItems, bonusArray, event);
                }
              }

              function bonusItemHandler(isModified, quantity, selector) {
                var bonusItemsArray = [];
                var removeItemsArray = [];
                if (isModified) {
                  //Add bonusItems
                  if (selector.attr('data-match-alt') != null && selector.attr('data-match-alt').length > 0) {
                    var tempBonusArray = selector.attr('data-match-alt').split(',');
                    tempBonusArray.forEach(function(ele) {
                      bonusItemsArray.push({
                        Id: ele,
                        Qty: quantity
                      });
                    });
                  }
                  //removebonusItems
                  if (selector.attr('data-match') != null && selector.attr('data-match').length > 0) {
                    var tempBonusArray = selector.attr('data-match').split(',');
                    tempBonusArray.forEach(function(ele) {
                      removeItemsArray.push(ele);
                    });
                  }
                  removeItemsArray.push(selector.attr('data-code'));
                } else {
                  //Add bonusItems
                  if (selector.attr('data-match') != null && selector.attr('data-match').length > 0) {
                    var tempBonusArray = selector.attr('data-match').split(',');
                    tempBonusArray.forEach(function(ele) {
                      bonusItemsArray.push({
                        Id: ele,
                        Qty: quantity
                      });
                    });
                  }
                  //removebonusItems
                  if (selector.attr('data-match-alt') != null && selector.attr('data-match-alt').length > 0) {
                    var tempBonusArray = selector.attr('data-match-alt').split(',');
                    tempBonusArray.forEach(function(ele) {
                      removeItemsArray.push(ele);
                    });
                  }
                  if (selector.attr('data-code-alt') != null && selector.attr('data-code-alt').length > 0) {
                    removeItemsArray.push(selector.attr('data-code-alt'));
                  }
                }
                return {
                  bonusItems: bonusItemsArray,
                  removeItems: removeItemsArray
                };
              }

              function CreateModifierChangeAction(modifierArray) {
                if (modifierArray.length > 0) {
                  modifierArray.forEach(function(ele) {
                    var modifierName = ele;
                    $(document).on('change', '[name=' + modifierName + '], #' + modifierName + '', function() {
                      var type = $(this).attr('type');
                      handleModifierChangeAction(modifierName, type);
                    });
                  });
                }
              }

              function getXorList(element) {
                var xor = $(element).attr('data-code-xor');
                var isDataCheckbox = $(element).attr('data-checkbox');
                isDataCheckbox = (typeof isDataCheckbox !== typeof undefined);
                var listItems = [];
                if (xor != null && xor.length > 0) {
                  var allXORs = xor.split(',');
                  for (var i = 0; i < allXORs.length; i++) {
                    var singleXOR = allXORs[i];
                    setToggleButton(singleXOR, 'Remove');
                    listItems.push(singleXOR);
                  };
                }
                if (isDataCheckbox) {
                  checkboxToggleXor(listItems);
                }
                return listItems;
              }

              function dataMatchProductQuantity(mainItem, bonusItems, dataMatchTrue, event) {
                if (dataMatchTrue) {
                  if ((typeof bonusItems != "undefined" && bonusItems != null && bonusItems.length > 0) && (typeof mainItem != "undefined" && mainItem != null && mainItem.length > 0)) {
                    var datacode = mainItem;
                    var bonusItems = bonusItems.split(',');
                    var removeBonusItems = bonusItems.slice();
                    var qty = $('[data-cart-code=' + datacode + 'Quantity]').children('[name^=ActionQuantity]').val();
                    qty = parseInt(qty);
                    if (!isNaN(qty)) {
                      if (qty > 0) {
                        var firstBonusItem = "";
                        var extraBonusItems = [];
                        for (var i = 0; i < bonusItems.length; i++) {
                          if (i == 0) {
                            firstBonusItem = bonusItems[i];
                          } else {
                            extraBonusItems.push({
                              Id: bonusItems[i],
                              Qty: qty
                            });
                          }
                        }
                        if (firstBonusItem != "") {
                          handleCartChange(firstBonusItem, qty, null, [], extraBonusItems, event);
                        }
                      } else {
                        handleCartChange(datacode, qty, null, removeBonusItems, null, event);
                      }
                    }
                  }
                } else {
                  handleCartChange();
                }
              }

              function OnVSCookieLoaded() {
                $('input.zc').keyup(function() {
                  updateZip(this.value, getState(), getCountry());
                });
                $('select.shipOptions').change(function() {
                  handleCartChange();
                });
                $('#BillingZip, #ShippingZip').keyup(function() {
                  var isShipCheckboxChecked = $('#ShippingIsDifferentThanBilling').is(':checked');
                  if (this.id == 'ShippingZip') {
                    lastChangeType = 'Shipping';
                  } else {
                    lastChangeType = '';
                  }
                  if (isShipCheckboxChecked) {
                    $('.zc').val($('#ShippingZip').val());
                    updateZip($('#ShippingZip').val(), getState(), getCountry());
                  } else {
                    $('.zc').val(this.value);
                    updateZip(this.value, getState(), getCountry());
                  }
                });
                $('#BillingState, #ShippingState, #BillingCountry, #ShippingCountry').keyup(function() {
                  updateZip(getZip(), getState(), getCountry());
                });
                $("[name*='ActionToggle']").click(function() {
                  var type = $(this).attr('data-toggle-type') || 'set';
                  var toggleTargetIndex = $(this).attr('name').replace('ActionToggle', '');
                  var toggleValue = $(this).attr('data-toggle-value') || '1';
                  var actionCode = $('[name="ActionCode' + toggleTargetIndex + '"]') || [];
                  var actionQuantity = $('[name="ActionQuantity' + toggleTargetIndex + '"]') || [];
                  if (toggleTargetIndex == '' || actionCode.length == 0 || actionQuantity.length == 0) {
                    console.error('Invalid ActionToggle configuration for ' + toggleTarget);
                    return;
                  }
                  var currentValue = actionQuantity.val();
                  if (type == 'add') {
                    newValue = currentValue + 1;
                  } else {
                    if (currentValue == toggleValue) {
                      newValue = 0;
                    } else {
                      newValue = toggleValue;
                    }
                  }
                  actionQuantity.val(newValue);
                  handleCartChange();
                });
                $('input[name*="ActionCode"][data-default]').each(function(i, item) {
                  if ('radio,checkbox'.indexOf($(item).attr('type')) >= 0) {
                    var id = $(item).attr('id');
                    var name = $(item).attr('name');
                    var index = id.replace('ActionCode', '');
                    var value = $(item).val();
                    var labelFor = $('label[for="' + id + '"]');
                    if (labelFor.length > 0) {
                      labelFor.attr('for', 'Action' + index);
                    } else {
                      labelFor = $('#ActionCode0').parents('label');
                      if (labelFor.length > 0) {
                        labelFor.attr('for', 'Action' + index);
                      }
                    }
                    $(this).attr('id', 'Action' + index).attr('name', 'Action' + index);
                    $(this).before('<input id="' + id + '" name="' + name + '" type="hidden" value="' + value + '" data-default="' + $(item).attr('data-default') + '" data-upgrade="' + $(item).attr('data-upgrade') + '">')
                  }
                });
                $('input[data-default]').click(function() {
                  var index = ($(this).attr('id') || '').replace('Action', '');
                  var currentValue = $(this).val();
                  var defaultValue = $(this).attr('data-default');
                  var toggleValue = $(this).attr('data-upgrade');
                  var newValue;
                  if ($(this).is(":checked")) {
                    newValue = toggleValue;
                  } else {
                    newValue = defaultValue;
                  }
                  $(this).val(newValue);
                  if ($('#ActionCode' + index).length > 0) {
                    $('#ActionCode' + index).val(newValue);
                    handleCartChange();
                  } else {
                    $('a[data-code="' + currentValue + '"]').attr('data-code', newValue);
                    _dtmShoppingCart.UpgradeItem(currentValue, newValue);
                  }
                });
                $("[name*='ActionQuantity']").each(function(i, item) {
                  var index = (item.name || '').replace(/[^0-9]/g, '');
                  if (_firstIndex == '') {
                    _firstIndex = index;
                  }
                  $(item).attr('data-index', index).attr('class', ($(item).attr('class') ? $(item).attr('class') : '') + ' ddl').change(handleCartChange);
                  if ($('[name="ActionCode' + index + '"]').length == 0 || 'radio,checkbox'.indexOf($('[name="ActionCode' + index + '"]').attr('type')) >= 0 || $('[name="ActionCode' + index + '"]').is('select')) {
                    $('[name="ActionCode' + index + '"]').change(handleCartChange);
                  }
                  if ($('[name="MatchProductQuantity' + index + '"]').length == 0 || 'radio,checkbox'.indexOf($('[name="MatchProductQuantity' + index + '"]').attr('type')) >= 0) {
                    $('[name="MatchProductQuantity' + index + '"]').change(handleCartChange);
                  }
                });
                var onDataCodesLoaded = function() {
                  var modifiers = [];
                  var dataMatchArray = [];
                  registerEvent("ActionQuantityChange", function(e) {
                    if (typeof onActionQuantityChange == 'function') {
                      onActionQuantityChange(e);
                    }
                    var actionCodeClicked = $('#ActionCode' + e.detail + '').val();
                    if (dataMatchArray.length > 0) {
                      var mainItemArray = [];
                      $.each(dataMatchArray, function(idx, ele) {
                        mainItemArray.push(ele.mainItem);
                      });
                      //Check if ActionCode clicked is one of the main items in dataMatchArray , if not just call handleCartChange()
                      if (mainItemArray.indexOf(actionCodeClicked) > -1) {
                        $.each(dataMatchArray, function(idx, ele) {
                          var mainItem = ele.mainItem;
                          var bonusItems = ele.bonusItems;
                          if (actionCodeClicked == mainItem) {
                            //Register changeAction on main item ActionQuantity to inherit bonus
                            dataMatchProductQuantity(mainItem, bonusItems, bonusItems != "", e);
                          }
                        });
                      } else {
                        handleCartChange();
                      }
                    } else {
                      handleCartChange();
                    }
                  });
                  $('[data-code-modifier]').each(function(i, item) {
                    if (modifiers.indexOf($(item).attr('data-code-modifier')) < 0) {
                      modifiers.push($(item).attr('data-code-modifier'));
                    }
                  });
                  for (var i = 0; i < modifiers.length; i++) {
                    var modifier = modifiers[i];
                    if ($('#' + modifier).length > 0) {
                      $(document).on('change', '#' + modifier, function(event) {
                        var mod = event.target.id;
                        var btns = $('[data-code][data-code-toggle=true][data-code-alt][data-code-modifier=' + mod + ']');
                        var sels = $('select[data-code-modifier=' + mod + ']');
                        var groupBtns = $('[data-group-name][data-code-modifier=' + mod + ']');
                        var isChecked = $('#' + mod).is(':checked');
                        var extraItems = [];
                        var removeItems = [];
                        var mainItem = '';
                        var mainQty = 0;

                        function setCartItemsForGroup(oldCodeSelector, newCodeSelector) {
                          var oldCode = isChecked ? oldCodeSelector : newCodeSelector;
                          var newCode = isChecked ? newCodeSelector : oldCodeSelector;
                          var regex = new RegExp("^" + oldCode + "$");
                          var cartItem = _dtmShoppingCart.SearchItems(regex);
                          var newQty = cartItem.length > 0 ? cartItem[oldCode].qty : 1;
                          if (cartItem.length > 0) {
                            if (mainItem == '' && mainQty == 0) {
                              mainItem = newCode;
                              mainQty = newQty;
                            } else {
                              extraItems.push({
                                Id: newCode,
                                Qty: newQty
                              });
                            }
                            if (removeItems.indexOf(oldCode) < 0) {
                              removeItems.push(oldCode);
                            }
                          }
                        }
                        groupBtns.each(function(idx, btn) {
                          var groupName = $(btn).attr('data-group-name');
                          var isCheckbox = $(btn).attr('data-checkbox') != null && $(btn).attr('data-checkbox').length > 0 ? $(btn).attr('data-checkbox') : null;
                          if (isCheckbox == "true") {
                            $('[name=' + groupName + ']:checked').each(function(idx, cbx) {
                              var oldCodeSelector = $(cbx).val();
                              var newCodeSelector = $(cbx).attr('data-code-alt');
                              setCartItemsForGroup(oldCodeSelector, newCodeSelector);
                            });
                          } else {
                            var oldCodeSelector = $('[name=' + groupName + ']:checked').val();
                            var newCodeSelector = $('[name=' + groupName + ']:checked').attr('data-code-alt');
                            setCartItemsForGroup(oldCodeSelector, newCodeSelector);
                          }
                        });
                        btns.each(function(idx, btn) {
                          var oldCode = isChecked ? $(btn).attr('data-code') : $(btn).attr('data-code-alt');
                          var newCode = isChecked ? $(btn).attr('data-code-alt') : $(btn).attr('data-code');
                          var newDataMatch = isChecked ? $(btn).attr('data-match-alt') : $(btn).attr('data-match');
                          var oldDataMatch = isChecked ? $(btn).attr('data-match') : $(btn).attr('data-match-alt');
                          var regex = new RegExp("^" + oldCode + "$");
                          var cartItem = _dtmShoppingCart.SearchItems(regex);
                          var newQty = cartItem.length > 0 ? cartItem[oldCode].qty : 1;
                          if (cartItem.length > 0) {
                            if (mainItem == '' && mainQty == 0) {
                              mainItem = newCode;
                              mainQty = newQty;
                            } else {
                              extraItems.push({
                                Id: newCode,
                                Qty: newQty
                              });
                            }
                            if (removeItems.indexOf(oldCode) < 0) {
                              removeItems.push(oldCode);
                            }
                            if (newDataMatch != null) {
                              var bonusItems = newDataMatch.split(',');
                              for (var i = 0; i < bonusItems.length; i++) {
                                extraItems.push({
                                  Id: bonusItems[0],
                                  Qty: newQty
                                });
                              }
                            }
                            if (oldDataMatch != null) {
                              if (oldDataMatch.length > 0) {
                                var oldBonusItems = oldDataMatch.split(',');
                                for (var i = 0; i < oldBonusItems.length; i++) {
                                  removeItems.push(oldBonusItems[i]);
                                }
                              }
                            }
                          }
                        });
                        sels.each(function(idx, sel) {
                          var selectedOption = $(sel).find(":selected");
                          var oldCode = isChecked ? $(selectedOption).attr('value') : $(selectedOption).attr('data-code-alt');
                          var newCode = isChecked ? $(selectedOption).attr('data-code-alt') : $(selectedOption).attr('value');
                          var regex = new RegExp("^(" + oldCode + ")$|^(" + newCode + ")$");
                          var cartItem = _dtmShoppingCart.SearchItems(regex);
                          var newQty = cartItem.length > 0 ? cartItem.TotalQuantity : 1;
                          if (cartItem.length > 0) {
                            if (mainItem == '' && mainQty == 0) {
                              mainItem = newCode;
                              mainQty = newQty;
                            } else {
                              extraItems.push({
                                Id: newCode,
                                Qty: newQty
                              });
                            }
                            if (removeItems.indexOf(oldCode) < 0) {
                              removeItems.push(oldCode);
                            }
                          }
                        });
                        if (mainItem != '') {
                          handleCartChange(mainItem, mainQty, null, removeItems, extraItems, event);
                        }
                      });
                    }
                  };
                  $("[data-code]").each(function(i, item, event) {
                    if (item.nodeName == 'A') {
                      $(item).attr('href', 'javascript:void(0);');
                    }
                    var selectId = $(this).attr('data-select-id');
                    //Items with Select Dropdowns
                    var isSelect = $(item).is('select');
                    if (isSelect && typeof $(item).attr('data-select') !== 'undefined') {
                      $(item).unbind('change');
                      $(item).change(function() {
                        var datacode = $(this).val();
                        var removeItems = [];
                        var hasQtySelect = $(this).attr('data-qty-id');
                        var overrideQty = (hasQtySelect != null && hasQtySelect.length > 0) ? parseInt($('#' + hasQtySelect + '').val()) : 1;
                        var selectedOption = $(item).find(":selected");
                        var isModified = ($(item).attr('data-code-modifier') != null && $(item).attr('data-code-modifier').length > 0 && selectedOption != null && selectedOption.length > 0 && $(selectedOption).attr('data-code-alt') !=
                          null && $(selectedOption).attr('data-code-alt').length > 0 && $('#' + $(item).attr('data-code-modifier')).is(':checked'));
                        datacode = isModified ? $(selectedOption).attr('data-code-alt') : datacode;
                        var selectItems = $(this).find('option[value != ""]').map(function() {
                          return this.value
                        }).get().join(",");
                        var altItems = $(this).find('option[value != ""][data-code-alt]').map(function() {
                          return $(this).attr('data-code-alt');
                        }).get().join(",");
                        var sItems = selectItems + "," + altItems;
                        if (sItems != null && sItems.length > 0) {
                          var allItems = sItems.split(',');
                          for (var i = 0; i < allItems.length; i++) {
                            var singleItems = allItems[i];
                            removeItems.push(singleItems);
                          };
                        }
                        handleCartChange(datacode, overrideQty, null, removeItems, null, event);
                      });
                    }
                    //Toggle Button logic
                    else {
                      var isRadioOrCB = 'radio,checkbox'.indexOf($(item).attr('type')) >= 0;
                      //PreSelected add-to-cart button on load
                      var isPreselected = $(item).attr('data-pre-selected') != null && $(item).attr('data-pre-selected').length > 0;
                      //Data Match used for bonus items                   
                      var dataMatch = ($(this).attr('data-match') != null && $(this).attr('data-match').length > 0) ? $(this).attr('data-match') : "";
                      var dataMatchAlt = $(this).attr('data-match-alt') != null && $(this).attr('data-match-alt').length > 0 ? $(this).attr('data-match-alt') : "";
                      var dataCode = $(this).attr('data-code');
                      var dataCodeAlt = $(this).attr('data-code-alt');
                      if (dataMatch != "") {
                        dataMatchArray.push({
                          mainItem: dataCode,
                          bonusItems: dataMatch
                        });
                      }
                      if (dataMatchAlt != "") {
                        dataMatchArray.push({
                          mainItem: dataCodeAlt,
                          bonusItems: dataMatchAlt
                        });
                      }
                      $(item).unbind('click');
                      //if Radio or Checkbox without toggle button , set State on load
                      if (isRadioOrCB) {
                        var datacode = ($(this).attr('data-code') != null && $(this).attr('data-code').length > 0) ? $(this).attr('data-code') : "";
                        var isModified = isSelectorModified(item);
                        datacode = isModified ? $(this).attr('data-code-alt') : datacode;
                        var hasQtySelect = $(this).attr('data-qty-id');
                        var overrideQty = (hasQtySelect != null && hasQtySelect.length > 0) ? parseInt($('#' + hasQtySelect + '').val()) : 1;
                        var bonusItems = isModified ? $(this).attr('data-match-alt') : $(this).attr('data-match');
                        var additionalItems = [];
                        var removeItems = [];
                        if (bonusItems != null && bonusItems.length > 0) {
                          var bonusItemArray = bonusItems.split(',');
                          for (var i = 0; i < bonusItemArray.length; i++) {
                            additionalItems.push({
                              Id: bonusItemArray[i],
                              Qty: overrideQty
                            });
                          }
                        }
                        if (datacode != "") {
                          if ($(this).is(':checked')) {
                            if ($(this).is(':radio')) {
                              removeItems = $(this).attr('data-code-xor') != null ? $(this).attr('data-code-xor').split(',') : [];
                            }
                            handleCartChange(datacode, overrideQty, null, removeItems, additionalItems, event);
                          }
                        }
                        var hasModifier = $(item).attr('data-code-modifier') != null && $(item).attr('data-code-modifier').length > 0;
                        if (hasModifier) {
                          var modifierId = $(item).attr('data-code-modifier');
                          var groupName = $(this).attr('name');
                          var removeItems = [];
                          $('[name="' + groupName + '"]').each(function(i, groupItem) {
                            var tempdatacode = $(groupItem).attr('data-code');
                            if (hasModifier) {
                              var alt = $(groupItem).attr('data-code-alt');
                              removeItems.push(alt);
                            }
                            if (tempdatacode != null && tempdatacode.length > 0) {
                              removeItems.push(tempdatacode);
                            }
                          });
                          //Change action for DataModifier with no AddToCart button
                          AddToModifierArray(modifierId);
                        }
                        if (hasQtySelect != null && hasQtySelect.length > 0) {
                          var selectQtyId = hasQtySelect;
                          $(document).on('change', '#' + selectQtyId, function() {
                            var isModified = isSelectorModified(item);
                            datacode = isModified ? $(item).attr('data-code-alt') : $(item).attr('data-code');
                            var active = isModified ? $('[data-code-alt=' + datacode + ']').is(':checked') : $('[data-code=' + datacode + ']').is(':checked');
                            var overrideQty = $(this).val();
                            var dataMatch = ($(item).attr('data-match') != null && $(item).attr('data-match').length > 0) ? $(item).attr('data-match') : "";
                            var dataMatchAlt = $(item).attr('data-match-alt') != null && $(item).attr('data-match-alt').length > 0 ? $(item).attr('data-match-alt') : "";
                            var dataMatchList = isModified ? dataMatchAlt : dataMatch;
                            var bonusArray = [];
                            if (dataMatchList.length > 0 && dataMatchList != null) {
                              var bonusItems = dataMatchList.split(',');
                              for (var i = 0; i < bonusItems.length; i++) {
                                bonusArray.push({
                                  Id: bonusItems[i],
                                  Qty: overrideQty
                                });
                              }
                            }
                            if (active) {
                              handleCartChange(datacode, overrideQty, null, [], bonusArray, event);
                            }
                          });
                        }
                      }
                      if (isSelect && $(item).attr('data-select') == null) {
                        var hasModifier = $(item).attr('data-code-modifier') != null && $(item).attr('data-code-modifier').length > 0;
                        var renderItem = true;
                        var hasModifier = ($(this).attr('data-code-modifier') != null && $(this).attr('data-code-modifier').length > 0 && $(this).attr('data-code-alt') != null && $(this).attr('data-code-alt').length > 0);
                        if (hasModifier) {
                          var modifierName = $(this).attr('data-code-modifier');
                          var ifModifierCheckbox = 'checkbox'.indexOf($('[name=' + modifierName + ']').attr('type')) >= 0;
                          var ifModifierRadio = 'radio'.indexOf($('[name=' + modifierName + ']').attr('type')) >= 0;
                          if (ifModifierCheckbox) {
                            var isModified = $('[name=' + modifierName + ']').is(':checked');
                          }
                          if (ifModifierRadio) {
                            var isModified = $('[name=' + modifierName + ']:checked').val() == "true";
                            if (!$('[name=' + modifierName + ']').is(':checked')) {
                              renderItem = false;
                            }
                          }
                          // 
                          AddToModifierArray(modifierName);
                        }
                        datacode = isModified ? $(item).attr('data-code-alt') : $(item).attr('data-code');
                        var qty = $(item).val();
                        var bonusItemArray = [];
                        if (dataMatchArray.length > 0) {
                          dataMatchArray.forEach(function(ele) {
                            if (datacode == ele.mainItem) {
                              bonusItemArray.push({
                                Id: ele.bonusItems,
                                Qty: qty
                              });
                            }
                          });
                        }
                        //Add item on load
                        if (renderItem) {
                          var itemCart = getItems();
                          if (itemCart.length < 1) {
                            handleCartChange(datacode, qty, null, [], bonusItemArray, event);
                          }
                        }
                      }
                      var eventAction = isSelect ? "change" : "click";
                      $(item).bind(eventAction, function(event) {
                        var datacode = $(this).attr('data-code');
                        isRadioOrCB = 'radio,checkbox'.indexOf($(this).attr('type')) >= 0;
                        var inputGroupName = isRadioOrCB ? $(this).attr('name') : "";
                        var isToggleButton = $(this).attr('data-code-toggle') != null && $(this).attr('data-code-toggle').length > 0 && $(this).attr('data-code-toggle') == 'true';
                        var removeItems = [];
                        var isModified = isSelectorModified(item);
                        var modifierName = ($(this).attr('data-code-modifier') != null && $(this).attr('data-code-modifier').length > 0) ? $(this).attr('data-code-modifier') : "";
                        var ifModifierRadio = modifierName != "" ? 'radio'.indexOf($('[name=' + modifierName + ']').attr('type')) >= 0 : false;
                        var preventAction = false;
                        if (ifModifierRadio) {
                          preventAction = !isModified && !$('[name=' + modifierName + ']').is(':checked') && (typeof $(this).attr('data-enforce-modifier') != "undefined");
                        }
                        datacode = isModified ? $(this).attr('data-code-alt') : datacode;
                        $('[data-code-toggle=true]').addClass('disableToggleClick');
                        if (inputGroupName != null && inputGroupName.length > 0) {
                          $('[name="' + inputGroupName + '"]').each(function(i, groupItem) {
                            var tempdatacode = $(groupItem).attr('data-code');
                            if (isModified) {
                              var alt = $(groupItem).attr('data-code-alt');
                              removeItems.push(alt);
                            }
                            if (tempdatacode != null && tempdatacode.length > 0) {
                              removeItems.push(tempdatacode);
                            }
                          });
                        }
                        if ($('[data-qty="' + datacode + '"]').length > 0) {
                          var overrideQty = $('[data-qty="' + datacode + '"]').val();
                          handleCartChange(datacode, overrideQty, null, removeItems, null, event);
                        } else if (selectId != null && selectId.length > 0 && !isToggleButton) {
                          var regex = new RegExp("^" + datacode + "$");
                          var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                          var overrideQty = active ? 0 : $('#' + selectId).val();
                          handleCartChange(datacode, overrideQty, null, removeItems, null, event);
                        } else if (isSelect && $(item).attr('data-select') == null) {
                          var overrideQty = $(this).val();
                          var renderItem = true;
                          var hasModifier = ($(this).attr('data-code-modifier') != null && $(this).attr('data-code-modifier').length > 0 && $(this).attr('data-code-alt') != null && $(this).attr('data-code-alt').length > 0);
                          if (hasModifier) {
                            var modifierName = $(this).attr('data-code-modifier');
                            var ifModifierCheckbox = 'checkbox'.indexOf($('[name=' + modifierName + ']').attr('type')) >= 0;
                            var ifModifierRadio = 'radio'.indexOf($('[name=' + modifierName + ']').attr('type')) >= 0;
                            if (ifModifierCheckbox) {
                              var isModified = $('[name=' + modifierName + ']').is(':checked');
                            }
                            if (ifModifierRadio) {
                              var isModified = $('[name=' + modifierName + ']:checked').val() == "true";
                              if (!$('[name=' + modifierName + ']').is(':checked')) {
                                renderItem = false;
                              }
                            }
                          }
                          var removeItem = isModified ? $(this).attr('data-code') : $(this).attr('data-code-alt');
                          var bonusItemArray = [];
                          datacode = isModified ? $(this).attr('data-code-alt') : datacode;
                          if (dataMatchArray.length > 0) {
                            var datacodeSelected = isModified ? $(this).attr('data-code-alt') : datacode;
                            dataMatchArray.forEach(function(ele) {
                              if (datacodeSelected == ele.mainItem) {
                                var tempBonusItemArray = ele.bonusItems.split(',');
                                tempBonusItemArray.forEach(function(bonusItem) {
                                  bonusItemArray.push({
                                    Id: bonusItem,
                                    Qty: overrideQty
                                  });
                                });
                              }
                            });
                          }
                          removeItems.push(removeItem);
                          removeItems = removeItems.concat(getXorList(this));
                          if (renderItem) {
                            handleCartChange(datacode, overrideQty, null, removeItems, bonusItemArray, event);
                          }
                        } else if (isToggleButton) {
                          var isModified = ($(this).attr('data-code-modifier') != null && $(this).attr('data-code-modifier').length > 0 && $(this).attr('data-code-alt') != null && $(this).attr('data-code-alt').length > 0 && $('#' + $(this)
                            .attr('data-code-modifier')).is(':checked'));
                          datacode = isModified ? $(this).attr('data-code-alt') : datacode;
                          var regex = new RegExp("^" + datacode + "$");
                          var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                          var overrideQty = active ? 0 : 1;
                          if (selectId != null && selectId.length > 0) {
                            if (datacode.indexOf(',') > -1 && selectId.indexOf(',') > -1) {
                              var allDataCodes = datacode.split(',');
                              var allSelectIds = selectId.split(',');
                              var allDataCodesRegex = datacode.replace(',', ')$|^(');
                              var selectRegex = new RegExp("^(" + allDataCodesRegex + ")$");
                              active = _dtmShoppingCart.SearchItems(selectRegex).length > 0;
                              var additionalItems = [];
                              for (var i = 0; i < allSelectIds.length; i++) {
                                var singleSelect = allSelectIds[i];
                                var singleDataCode = allDataCodes[i];
                                var quantity = active ? 0 : $('#' + singleSelect).val();
                                if (i == 0) {
                                  datacode = singleDataCode;
                                  overrideQty = quantity;
                                } else {
                                  additionalItems.push({
                                    Id: singleDataCode,
                                    Qty: quantity
                                  });
                                }
                              }
                            } else {
                              overrideQty = active ? 0 : $('#' + selectId).val();
                            }
                          }
                          removeItems = getXorList(this);
                          //Adding bonus item quantities to additionalItems array
                          var bonusItemList = isModified ? dataMatchAlt : dataMatch;
                          if (bonusItemList.length > 0 && bonusItemList != null) {
                            var bonusItems = bonusItemList.split(',');
                            var bonusArray = [];
                            for (var i = 0; i < bonusItems.length; i++) {
                              bonusArray.push({
                                Id: bonusItems[i],
                                Qty: overrideQty
                              });
                            }
                            if (typeof additionalItems !== 'undefined' && additionalItems.length > 0) {
                              additionalItems.concat(bonusArray);
                            } else {
                              var additionalItems = bonusArray.slice();
                            }
                          }
                          handleCartChange(datacode, overrideQty, null, removeItems, additionalItems, event);
                        } else {
                          if (isRadioOrCB) {
                            var hasQtySelect = $(this).attr('data-qty-id');
                            var overrideQty = (hasQtySelect != null && hasQtySelect.length > 0) ? parseInt($('#' + hasQtySelect + '').val()) : 1;
                            var bonusItemObject = bonusItemHandler(isModified, overrideQty, $(this));
                            removeItems = removeItems.concat(bonusItemObject["removeItems"]);
                            if ($(this).is(':checked') && !preventAction) {
                              removeItems = removeItems.concat(getXorList(this));
                              if ($(this).attr('data-checkbox') != null && $(this).attr('data-checkbox').length > 0) {
                                var tempRemoveCodeArray = getXorList(this);
                                $.each(tempRemoveCodeArray, function(idx, ele) {
                                  $('[data-code=' + ele + '],[data-code-alt=' + ele + ']').prop('checked', false);
                                });
                              }
                              //Adding bonus item quantities to additionalItems array
                              var additionalItems = bonusItemObject["bonusItems"];
                              handleCartChange(datacode, overrideQty, null, removeItems, additionalItems, event);
                            } else {
                              if (typeof bonusItemObject["bonusItems"] != "undefined") {
                                $.each(bonusItemObject["bonusItems"], function(idx, ele) {
                                  removeItems.push(ele.Id);
                                });
                              }
                              handleCartChange(datacode, 0, null, removeItems, null, event);
                            }
                          } else {
                            handleCartChange(datacode, null, null, removeItems, null, event);
                          }
                        }
                        if (typeof onItemClick == "function") {
                          onItemClick(this, event);
                        }
                      });
                    }
                    if (selectId != null && selectId.length > 0) {
                      var datacode = $(item).attr('data-code');
                      if (datacode.indexOf(',') > -1 && selectId.indexOf(',') > -1) {
                        var allDataCodes = datacode.split(',');
                        var allSelectIds = selectId.split(',');
                        var dataCodeRegex = datacode.replace(',', ')$|^(');
                        $.each(allSelectIds, function(index, id) {
                          $(document).on('change', '#' + id, function() {
                            datacode = allDataCodes[index];
                            var regex = new RegExp("^(" + dataCodeRegex + ")$");
                            var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                            if (active) {
                              var overrideQty = $(this).val();
                              var additionalItems = [];
                              for (var i = 0; i < allSelectIds.length; i++) {
                                var singleSelect = allSelectIds[i];
                                if (id != singleSelect) {
                                  var singleDataCode = allDataCodes[i];
                                  var quantity = $('#' + singleSelect).val();
                                  additionalItems.push({
                                    Id: singleDataCode,
                                    Qty: quantity
                                  });
                                }
                              }
                              setToggleButton(datacode, 'Update');
                              handleCartChange(datacode, overrideQty, null, [], additionalItems, event);
                            }
                          });
                        });
                      } else {
                        $(document).on('change', '#' + selectId, function() {
                          var isModified = ($(item).attr('data-code-modifier') != null && $(item).attr('data-code-modifier').length > 0 && $(item).attr('data-code-alt') != null && $(item).attr('data-code-alt').length > 0 && $('#' + $(item)
                            .attr('data-code-modifier')).is(':checked'));
                          datacode = isModified ? $(item).attr('data-code-alt') : datacode;
                          var regex = new RegExp("^" + datacode + "$");
                          var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                          var overrideQty = $(this).val();
                          var dataMatch = ($(item).attr('data-match') != null && $(item).attr('data-match').length > 0) ? $(item).attr('data-match') : "";
                          var dataMatchAlt = $(item).attr('data-match-alt') != null && $(item).attr('data-match-alt').length > 0 ? $(item).attr('data-match-alt') : "";
                          var dataMatchList = isModified ? dataMatchAlt : dataMatch;
                          var bonusArray = [];
                          if (dataMatchList.length > 0 && dataMatchList != null) {
                            var bonusItems = dataMatchList.split(',');
                            for (var i = 0; i < bonusItems.length; i++) {
                              bonusArray.push({
                                Id: bonusItems[i],
                                Qty: overrideQty
                              });
                            }
                          }
                          if (active) {
                            setToggleButton(datacode, 'Update');
                            handleCartChange(datacode, overrideQty, null, [], bonusArray, event);
                          }
                        });
                      }
                    }
                    if (isPreselected) {
                      var isModified = ($(item).attr('data-code-modifier') != null && $(item).attr('data-code-modifier').length > 0 && $(item).attr('data-code-alt') != null && $(item).attr('data-code-alt').length > 0 && $('#' + $(item).attr(
                        'data-code-modifier')).is(':checked'));
                      var dataMatch = ($(this).attr('data-match') != null && $(this).attr('data-match').length > 0) ? $(this).attr('data-match') : "";
                      var dataMatchAlt = $(this).attr('data-match-alt') != null && $(this).attr('data-match-alt').length > 0 ? $(this).attr('data-match-alt') : "";
                      var dataMatchList = isModified ? dataMatchAlt : dataMatch;
                      var datacode = isModified ? $(item).attr('data-code-alt') : $(item).attr('data-code');
                      var bonusArray = [];
                      if (dataMatchList.length > 0 && dataMatchList != null) {
                        var bonusItems = dataMatchList.split(',');
                        for (var i = 0; i < bonusItems.length; i++) {
                          bonusArray.push({
                            Id: bonusItems[i],
                            Qty: 1
                          });
                        }
                      }
                      var itemCart = getItems();
                      if (itemCart.length < 1) {
                        handleCartChange(datacode, null, null, [], bonusArray, event);
                      }
                    }
                  });
                  $("[data-group-name][data-code-toggle=true]").each(function(i, item) {
                    var groupName = $(this).attr('data-group-name');
                    var isDataSelect = $(this).attr('data-select');
                    var isDataCheckbox = $(this).attr('data-checkbox');
                    var hasQtySelect = $(this).attr('data-qty-id');
                    isDataSelect = (typeof isDataSelect !== typeof undefined);
                    isDataCheckbox = (typeof isDataCheckbox !== typeof undefined);
                    var overrideQty = 1;
                    var removeItems = [];
                    var dcSelector = isDataSelect ? ('[name="' + groupName + '"] option[value != ""]') : ('[name="' + groupName + '"]');
                    if (isDataSelect) {
                      var selectName = $('[name=' + groupName + ']');
                      selectName.unbind('change');
                      var isDataSelectGroup = $(selectName).attr('data-select-group');
                      isDataSelectGroup = (typeof isDataSelectGroup !== typeof undefined);
                      if (typeof hasQtySelect !== typeof undefined) {
                        $('#' + hasQtySelect + '').change(function() {
                          selectName.trigger('change');
                        })
                      }
                      if (isDataSelectGroup) {
                        selectName.change(function() {
                          var gName = $(this).attr("name");
                          var selectRemove = [];
                          var groupItems = $('[name="' + gName + '"]').find('option[value != ""]').map(function() {
                            return this.value
                          }).get().join(")$|^(");
                          var selectItems = $(this).find('option[value != ""]').map(function() {
                            return this.value
                          }).get().join(",");
                          var newSelectedItem = $(this).val();
                          var regex = new RegExp("^(" + groupItems + ")$");
                          var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                          if (active) {
                            var sItems = selectItems;
                            if (sItems != null && sItems.length > 0) {
                              var allItems = sItems.split(',');
                              for (var i = 0; i < allItems.length; i++) {
                                var singleItems = allItems[i];
                                selectRemove.push(singleItems);
                              };
                            }
                            handleCartChange(newSelectedItem, overrideQty, null, selectRemove, null, event);
                          }
                        });
                      } else {
                        selectName.change(function() {
                          var dataCode = $(this).val();
                          var selectItems = $(this).find('option[value != ""]').map(function() {
                            return this.value
                          }).get().join(",");
                          var dataCodes = $(dcSelector).map(function() {
                            return this.value;
                          }).get().join(')$|^(');
                          var regex = new RegExp("^(" + dataCodes + ")$");
                          var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                          overrideQty = (hasQtySelect != null && hasQtySelect.length > 0) ? parseInt($('#' + hasQtySelect + '').val()) : 1;
                          if (active) {
                            var sItems = selectItems;
                            if (sItems != null && sItems.length > 0) {
                              var allItems = sItems.split(',');
                              for (var i = 0; i < allItems.length; i++) {
                                var singleItems = allItems[i];
                                removeItems.push(singleItems);
                              };
                            }
                            handleCartChange(dataCode, overrideQty, null, removeItems, null, event);
                          }
                        });
                      }
                    } else if (isDataCheckbox) {
                      var hasDataMatch = $('input[type=checkbox][name=' + groupName + '][data-match]').length > 0;
                      if (hasDataMatch) {
                        $('input[type=checkbox][name=' + groupName + '][data-match]').each(function(idx, ele) {
                          var dataMatch = $(this).attr('data-match');
                          var dataCode = $(this).val();
                          dataMatchArray.push({
                            mainItem: dataCode,
                            bonusItems: dataMatch
                          });
                          dataMatch = $(this).attr('data-match-alt');
                          if (typeof dataMatch != "undefined" && dataMatch.length > 0) {
                            dataMatch = $(this).attr('data-code-alt');
                            dataMatchArray.push({
                              mainItem: dataCode,
                              bonusItems: dataMatch
                            });
                          }
                        });
                      }
                      $(document).on('change', 'input[type=checkbox][name=' + groupName + ']', function(event) {
                        var group = '[name = ' + groupName + ']';
                        var isModified = ($(group).attr('data-code-modifier') != null && $(group).attr('data-code-modifier').length > 0 && $(group).attr('data-code-alt') != null && $(group).attr('data-code-alt').length > 0 && $('#' + $(
                          group).attr('data-code-modifier')).is(':checked'));
                        var modifier = isModified ? $('[name = ' + groupName + ']').attr('data-code-modifier') : null;
                        var removeItems = [];
                        var newItems = [];
                        var dataCodes = $('[name=' + groupName + ']').map(function() {
                          return this.value;
                        }).get().join(')$|^(');
                        if (isModified) {
                          if ($('#' + modifier).is(':checked')) {
                            dataCodes = $('[name=' + groupName + ']').map(function() {
                              return $(this).attr('data-code-alt');
                            }).get().join(')$|^(');
                          }
                        }
                        var regex = new RegExp("^(" + dataCodes + ")$");
                        var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                        if (active) {
                          $('[data-code-toggle]').addClass('disableToggleClick');
                          $('[name="' + groupName + '"]').each(function(i, groupItem) {
                            var modifier = ($(groupItem).attr('data-code-modifier') != null && $(groupItem).attr('data-code-modifier').length > 0) ? $(groupItem).attr('data-code-modifier') : null;
                            var isModified = modifier != null ? $('#' + modifier + '').is(':checked') : false;
                            var dataMatch = isModified ? $(groupItem).attr('data-match-alt') : $(groupItem).attr('data-match');
                            var tempdatacode = isModified ? $(groupItem).attr('data-code-alt') : $(groupItem).val();
                            var selected = $(groupItem).is(':checked');
                            if (tempdatacode != null && tempdatacode.length > 0) {
                              if (selected) {
                                var item = {
                                  Id: tempdatacode,
                                  Qty: 1
                                }
                                newItems.push(item);
                                if (dataMatch != null && dataMatch.length > 0) {
                                  var bonusItems = dataMatch.split(',');
                                  for (var i = 0; i < bonusItems.length; i++) {
                                    newItems.push({
                                      Id: bonusItems[i],
                                      Qty: 1
                                    });
                                  }
                                }
                              } else {
                                removeItems.push(tempdatacode);
                                if (dataMatch != null && dataMatch.length > 0) {
                                  var bonusItems = dataMatch.split(',');
                                  for (var i = 0; i < bonusItems.length; i++) {
                                    removeItems.push(bonusItems[i]);
                                  }
                                }
                              }
                            }
                          });
                          setToggleButton(groupName, 'Update');
                          if (newItems.length > 0) {
                            handleCartChange("", 0, null, removeItems, newItems, event);
                          } else {
                            handleCartChange("", 0, null, removeItems, null, event);
                          }
                        }
                      });
                    } else {
                      if (hasQtySelect) {
                        var qtySelectId = $(this).attr('data-qty-id');
                        $(document).on('change', 'select[id=' + qtySelectId + ']', function(event) {
                          $('input[type=radio][name=' + groupName + ']').trigger('change');
                        });
                      }
                      //add radio Bonus items to dataMatchArray for ActionQuantityChange link
                      var hasDataMatch = $('input[type=radio][name=' + groupName + '][data-match]').length > 0;
                      if (hasDataMatch) {
                        $('input[type=radio][name=' + groupName + '][data-match]').each(function(idx, ele) {
                          var dataMatch = $(this).attr('data-match');
                          var dataCode = $(this).val();
                          dataMatchArray.push({
                            mainItem: dataCode,
                            bonusItems: dataMatch
                          });
                          dataMatch = $(this).attr('data-match-alt');
                          if (typeof dataMatch != "undefined" && dataMatch.length > 0) {
                            dataMatch = $(this).attr('data-code-alt');
                            dataMatchArray.push({
                              mainItem: dataCode,
                              bonusItems: dataMatch
                            });
                          }
                        });
                      }
                      $(document).on('change', 'input[type=radio][name=' + groupName + ']', function(event) {
                        var hasModifier = $('[name = ' + groupName + ']').attr('data-code-alt') != null && $('[name = ' + groupName + ']').attr('data-code-alt').length > 0;
                        var isModified = false;
                        var altCodes = "";
                        var dataCodes = $('[name="' + groupName + '"]').map(function() {
                          return this.value;
                        }).get().join(')$|^(');
                        var regex = new RegExp("^(" + dataCodes + ")$");
                        if (hasModifier) {
                          var modifier = $('[data-group-name = ' + groupName + ']').attr('data-code-modifier');
                          isModified = $('#' + modifier + '').is(':checked');
                          altCodes = $('[name="' + groupName + '"]').map(function() {
                            return $(this).attr('data-code-alt');
                          }).get().join(')$|^(');
                          regex = new RegExp("^(" + dataCodes + ")$|^(" + altCodes + ")$");
                        }
                        var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                        var qty = getToggleButtonQty(groupName, 1);
                        if (active) {
                          var newCodes = [];
                          var removeItems = [];
                          var newCode = isModified ? $(this).attr('data-code-alt') : $(this).val();
                          $('[data-code-toggle]').addClass('disableToggleClick');
                          $('[name="' + groupName + '"]').each(function(i, groupItem) {
                            var tempdatacode = isModified ? $(groupItem).attr('data-code-alt') : $(groupItem).val();
                            var dataMatch = isModified ? $(groupItem).attr('data-match-alt') : $(groupItem).attr('data-match');
                            var selected = $(groupItem).is(':checked');
                            if (tempdatacode != null && tempdatacode.length > 0) {
                              if (selected) {
                                newCode = tempdatacode;
                                if (dataMatch != null && dataMatch.length > 0) {
                                  var bonusItems = dataMatch.split(',');
                                  for (var i = 0; i < bonusItems.length; i++) {
                                    newCodes.push({
                                      Id: bonusItems[i],
                                      Qty: qty
                                    });
                                  }
                                }
                              } else {
                                removeItems.push(tempdatacode);
                                if (dataMatch != null && dataMatch.length > 0) {
                                  var bonusItems = dataMatch.split(',');
                                  for (var i = 0; i < bonusItems.length; i++) {
                                    removeItems.push(bonusItems[i]);
                                  }
                                }
                              }
                            }
                          });
                          setToggleButton(groupName, 'Update');
                          handleCartChange(newCode, qty, null, removeItems, newCodes, event);
                        }
                      });
                    }
                    $(item).click(function(event) {
                      var removeItems = [];
                      var hasModifier = $('[name = ' + groupName + ']').attr('data-code-alt') != null && $('[name = ' + groupName + ']').attr('data-code-alt').length > 0;
                      var isModified = false;
                      var altCodes = "";
                      var dataCodes = $(dcSelector).map(function() {
                        return this.value;
                      }).get().join(')$|^(');
                      var regex = new RegExp("^(" + dataCodes + ")$");
                      if (hasModifier) {
                        var modifier = hasModifier ? $('[data-group-name = ' + groupName + ']').attr('data-code-modifier') : null;
                        isModified = $('#' + modifier + '').is(':checked');
                        altCodes = $(dcSelector).map(function() {
                          return $(this).attr('data-code-alt');
                        }).get().join(')$|^(');
                        regex = new RegExp("^(" + dataCodes + ")$|^(" + altCodes + ")$");
                      }
                      var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                      var newCode = '';
                      var newQty = active ? 0 : 1;
                      var newCodes = [];
                      newQty = getToggleButtonQty(groupName, newQty);
                      $('[data-code-toggle=true]').addClass('disableToggleClick');
                      $('[name="' + groupName + '"]').each(function(i, groupItem) {
                        var tempdatacode = isModified ? $(groupItem).attr('data-code-alt') : $(groupItem).val();
                        var dataMatch = isModified ? $(groupItem).attr('data-match-alt') : $(groupItem).attr('data-match');
                        if (!isDataSelect) {
                          var selected = $(groupItem).is(':checked');
                        }
                        if (tempdatacode != null && tempdatacode.length > 0) {
                          if ((!isDataSelect && selected) || isDataSelect) {
                            newCode = tempdatacode;
                            newCodes.push({
                              Id: tempdatacode,
                              Qty: newQty
                            });
                            if (dataMatch != null && dataMatch.length > 0) {
                              var bonusItems = dataMatch.split(',');
                              for (var i = 0; i < bonusItems.length; i++) {
                                newCodes.push({
                                  Id: bonusItems[i],
                                  Qty: newQty
                                });
                              }
                            }
                          } else {
                            removeItems.push(tempdatacode);
                            if (dataMatch != null && dataMatch.length > 0) {
                              var bonusItems = dataMatch.split(',');
                              for (var i = 0; i < bonusItems.length; i++) {
                                removeItems.push(bonusItems[i]);
                              }
                            }
                          }
                        }
                      });
                      if (isDataCheckbox) {
                        var removeItemCheckboxes = [];
                        for (var i = 0; i < newCodes.length; i++) {
                          if (newCodes[i].Qty < 1) {
                            removeItemCheckboxes.push(newCodes[i].Id);
                          }
                        }
                        checkboxToggleXor(removeItemCheckboxes);
                      }
                      removeItems = removeItems.concat(getXorList(this));
                      handleCartChange(newCode, newQty, null, removeItems, newCodes, event);
                      //for (var i = 0; i < newCodes.length; i++) {
                      //    //var c = newCodes[i];
                      //    handleCartChange(c, newQty, null, removeItems, newCodes, event);
                      //}
                    });
                  });
                };
                loadAllItemStates();
                onDataCodesLoaded();
                CreateModifierChangeAction(modifierArray);
                registerEvent("DataCodesLoaded", onDataCodesLoaded);
                $('.ddlPromo').change(function() {
                  handleCartChange();
                });
                $("#ShippingIsDifferentThanBilling").on("click", function() {
                  var selector = $('#ShippingIsDifferentThanBilling').is(':checked') ? '#ShippingZip' : '#BillingZip';
                  var zip = $(selector).val() != undefined ? $(selector).val() : '';
                  updateZip(zip, getState(), getCountry());
                  handleCartChange();
                });
                $('[name^="ActionAttribute"]').change(function() {
                  var index = ($(this).attr('name') || '').replace('ActionAttribute', '');
                  var allValues = new Array();
                  $.each($('[name="ActionAttribute' + index + '"]'), function() {
                    allValues.push($(this).val());
                  });
                  if ($('[name^="ActionAttribute' + index + '"]').length == allValues.length) {
                    handleCartChange();
                  }
                });
              }

              function getToggleButtonQty(groupName, defaultValue) {
                var qty = defaultValue;
                var toggleButton = $("[data-group-name='" + groupName + "'][data-code-toggle=true][data-qty-id]");
                if ($(toggleButton).length > 0) {
                  var hasQtyId = $(toggleButton).attr("data-qty-id").length > 0;
                  var overrideQty = qty;
                  if (hasQtyId) {
                    var qtyId = $(toggleButton).attr("data-qty-id");
                    overrideQty = $("#" + qtyId).val();
                  }
                  qty = overrideQty;
                }
                if (defaultValue == 0) {
                  qty = 0;
                }
                return qty;
              }

              function setToggleButtonQty(groupName, value) {
                var toggleButton = $("[data-group-name='" + groupName + "'][data-code-toggle=true][data-qty-id]");
                if ($(toggleButton).length > 0) {
                  var hasQtyId = $(toggleButton).attr("data-qty-id").length > 0;
                  if (hasQtyId) {
                    var qtyId = $(toggleButton).attr("data-qty-id");
                    $("#" + qtyId).val(value);
                  }
                }
              }

              function loadItemState(productCode, qty) {
                var getEle = function(pc) {
                  var ret = null;
                  if ($('[name*=ActionCode][value="' + productCode + '"]').length != 0) {
                    ret = $('[name*=ActionCode][value="' + productCode + '"]');
                  } else if ($('[name*=ActionCode][data-default="' + productCode + '"]').length != 0) {
                    ret = $('[name*=ActionCode][data-default="' + productCode + '"]');
                  } else if ($('[name*=ActionCode][data-upgrade="' + productCode + '"]').length != 0) {
                    ret = $('[name*=ActionCode][data-upgrade="' + productCode + '"]');
                  } else if ($('[name*=ActionCheckbox][data-target="' + productCode + '"]').length != 0) {
                    ret = $('[name*=ActionCheckbox][data-target="' + productCode + '"]');
                  } else if ($('[name*=ActionCheckbox][data-new="' + productCode + '"]').length != 0) {
                    ret = $('[name*=ActionCheckbox][data-new="' + productCode + '"]');
                  }
                  return ret;
                }
                var ele = getEle(productCode);
                var index = ($(ele).attr('name') || '').replace('ActionCode', '');
                var id = productCode;
                var originalId = id;
                var isMod = false;
                var modEle = $('[data-code][data-code-toggle=true][data-code-alt=' + id + '][data-code-modifier]');
                if (modEle.length == 0) {
                  modEle = $('select[data-code-modifier] option[data-code-alt=' + id + '], select[data-code-modifier] option[value=' + id + ']');
                  if (modEle.length > 0) {
                    modEle = $(modEle).parent();
                  }
                }
                if (modEle.length > 0 && $('#' + modEle.attr('data-code-modifier')).length > 0) {
                  $('#' + modEle.attr('data-code-modifier')).prop('checked', true);
                  if (modEle.attr('data-code').length > 0) {
                    originalId = modEle.attr('data-code');
                  } else {
                    originalId = $('select[data-code-modifier] option[data-code-alt=' + id + ']').attr('value');
                    isMod = true;
                    if (originalId == null) {
                      originalId = $('select[data-code-modifier] option[value=' + id + ']').attr('value');
                      isMod = false;
                    }
                    var cbox = $('#' + $(modEle).attr('data-code-modifier'));
                    if (isMod) {
                      $(cbox).attr('checked', true);
                    } else {
                      $(cbox).attr('checked', false);
                    }
                  }
                  if (originalId == '') {
                    originalId = id;
                  }
                }
                var selEle = $('select[data-code-modifier] option[data-code-alt=' + id + '], select[data-code-modifier] option[value=' + id + ']');
                if (selEle.length > 0) {
                  $(modEle).val(originalId);
                }
                var actionEle = $('[name*=ActionCode] option[value="' + id + '"]');
                if (actionEle.length != 0) {
                  actionEle.parent().val(id);
                }
                if (ele == null) {
                  console.log("No matching elements, item state not loaded for " + id);
                  return;
                } else if (ele.length > 1) {
                  console.log("Too many matching elements, item state not loaded for " + id);
                  return;
                }
                var preventCheck = false,
                  preventClick = false;
                if (ele.attr('data-default') == id) {
                  if ($('#ActionQuantity' + index).length != 0) {
                    $('#ActionQuantity' + index).val(qty);
                    preventClick = true;
                    preventCheck = true;
                  }
                } else if (ele.attr('data-upgrade') == id) {
                  ele.val(id);
                  if ($('#ActionQuantity' + index).length != 0) {
                    $('#ActionQuantity' + index).val(qty);
                    preventClick = true;
                  }
                } else if (ele.attr('name').indexOf("ActionCheckbox") >= 0) {
                  index = ($(ele).attr('name') || '').replace('ActionCheckbox', '');
                  if (ele.data('new') == id) {
                    ele.prop('checked', true);
                  }
                  if (ele.data('target') == id) {
                    ele.prop('checked', false);
                    if ($('#ActionCode' + index).val() != ele.data('target')) {
                      $('#ActionCode' + index).val(ele.data('target'));
                    }
                  }
                  if ($('#ActionQuantity' + index).length != 0) {
                    $('#ActionQuantity' + index).val(qty);
                    preventClick = true;
                  }
                } else if (ele.attr('type') == 'checkbox') {
                  ele.prop('checked', true);
                }
                var checkableEle = null;
                var action = $('#Action' + index);
                // Action
                if ($(action).length > 0 && $('[name="Action' + index + '"]').length == 0 || 'radio,checkbox'.indexOf(action.attr('type')) >= 0) {
                  action.val(id);
                  checkableEle = action;
                } else {
                  var radioWithModifier = $('input[type=radio][data-code-modifier][data-code-alt=' + id + ']');
                  var checkboxWithModifier = $('input[type=checkbox][data-code-modifier][data-code-alt=' + id + ']');
                  var radioFromGroup = $('input[type=radio][value=' + id + ']');
                  var radioSolo = $('input[type=radio][data-code=' + id + ']');
                  var selectFromGroup = $('select option[value= ' + id + ']').parent();
                  var checkboxGroup = $('input[type=checkbox][value=' + id + ']');
                  var singleCheckbox = $('input[type=checkbox][data-code=' + id + '], input[type=checkbox][data-code-alt=' + id + '] ');
                  var isSingleCheckbox = singleCheckbox.length > 0;
                  var isRadioWithModifier = $(radioWithModifier).length > 0;
                  var isCheckboxWithModifier = $(checkboxWithModifier).length > 0;
                  var isRadioSelect = $(radioFromGroup).length > 0 && $('[data-group-name=' + $(radioFromGroup).attr('name') + '][data-code-toggle=true]').length > 0;
                  var isRegularSelect = $(selectFromGroup).length > 0 && $('[data-group-name=' + $(selectFromGroup).attr('name') + '][data-code-toggle=true]').length > 0;
                  var isCheckboxSelect = $(checkboxGroup).length > 0 && $('[data-group-name=' + $(checkboxGroup).attr('name') + '][data-code-toggle=true]').length > 0;
                  var isRadioSolo = $(radioSolo).length > 0;
                  var isDataCodeSelect = $('select[data-code=' + id + '], select[data-code-alt=' + id + '] ').length > 0;
                  var selectItem = radioFromGroup;
                  //Toggle Button + Data Group + Check/Selectable Item
                  if (isRegularSelect || isRadioSelect || isCheckboxSelect) {
                    if (isRegularSelect) {
                      selectItem = selectFromGroup;
                      selectFromGroup.val(id);
                    } else if (isRadioSelect) {
                      checkableEle = radioFromGroup;
                    } else if (isCheckboxSelect) {
                      selectItem = checkboxGroup;
                      checkboxGroup.prop("checked", true);
                    }
                    var groupName = $(selectItem).attr('name');
                    var toggleButton = $('[data-group-name=' + $(selectItem).attr('name') + '][data-code-toggle=true]');
                    if ($(toggleButton).length > 0) {
                      registerEvent("ToggleButtonInitialized", function() {
                        setToggleButton(groupName, 'Add');
                      });
                    }
                  }
                  //Select w/ Data-code + qty
                  if (isDataCodeSelect) {
                    var selector = $('select[data-code=' + id + '], select[data-code-alt=' + id + '] ');
                    selector.val(qty);
                    var hasModifier = selector.attr('data-code-modifier') != null;
                    if (hasModifier) {
                      var modifierName = selector.attr('data-code-modifier');
                      var ifModifierCheckbox = 'checkbox'.indexOf($('[name=' + modifierName + ']').attr('type')) >= 0;
                      var ifModifierRadio = 'radio'.indexOf($('[name=' + modifierName + ']').attr('type')) >= 0;
                      var modifierSelected = $('select[data-code-alt=' + id + '] ');
                      if (modifierSelected.length > 0) {
                        if (ifModifierCheckbox) {
                          $('[name=' + modifierName + ']').attr('checked', true);
                        } else if (ifModifierRadio) {
                          $('[name=' + modifierName + '][value="true"]').attr('checked', true);
                        }
                      } else {
                        if (ifModifierRadio) {
                          $('[name=' + modifierName + '][value=false]').attr('checked', true);
                        } else if (ifModifierCheckbox) {
                          $('[name=' + modifierName + ']').attr('checked', false);
                        }
                      }
                    }
                  }
                  //Radio w/ Data-code only
                  else if (isRadioSolo) {
                    checkableEle = radioSolo;
                    //Radio w/ Radio-Modifier , setting False Radio
                    if (radioSolo.attr('data-code-modifier') != null && radioSolo.attr('data-code-modifier').length > 1) {
                      var modifierName = radioSolo.attr('data-code-modifier');
                      if ($('input[type=radio][name=' + modifierName + '][value=false]').length > 0) {
                        $('input[type=radio][name=' + modifierName + '][value=false]').prop('checked', true);
                      }
                    }
                  }
                  //Radio w/ Data-code and Data-Code-Modifier only (Alt code is selected) 
                  else if (isRadioWithModifier) {
                    var modId = radioWithModifier.attr('data-code-modifier');
                    checkableEle = radioWithModifier;
                    var ifModifierCheckbox = 'checkbox'.indexOf($('[name=' + modId + '],[id=' + modId + ']').attr('type')) >= 0;
                    var ifModifierRadio = 'radio'.indexOf($('[name=' + modId + ']').attr('type')) >= 0;
                    if (ifModifierCheckbox) {
                      $('#' + modId + '').attr('checked', true);
                    }
                    if (ifModifierRadio) {
                      if ($('input[type=radio][name=' + modId + '][value=true]').length > 0) {
                        $('input[type=radio][name=' + modId + '][value=true]').prop('checked', true);
                      }
                    }
                    preventClick = true;
                  }
                  //Checkbox w/ Data-code and Data-Code-Modifier only (Alt code is selected) 
                  else if (isCheckboxWithModifier) {
                    var modId = checkboxWithModifier.attr('data-code-modifier');
                    checkableEle = checkboxWithModifier;
                    preventClick = true;
                    $('#' + modId + '').attr('checked', true);
                  } else if (isSingleCheckbox) {
                    checkableEle = singleCheckbox;
                    preventClick = true;
                  }
                }
                if (checkableEle != null) {
                  if (!preventCheck) {
                    checkableEle.attr('checked', 'checked');
                  }
                  if (!preventClick) {
                    checkableEle.trigger('click');
                  }
                }
                //Multiple Data-Codes + Multiple Selects
                var dcMultiSelect = $('[data-code*=' + id + '][data-select-id*=","][data-code-toggle=true]');
                var dcMultiSelectCodes = dcMultiSelect.attr('data-code');
                var dcMultiSelectId = dcMultiSelect.attr('data-select-id');
                var usesDcMultiSelect = false;
                if ($(dcMultiSelect).length > 0 && $('#' + $(dcMultiSelect).attr('data-select-id')).length > 0) {
                  if (dcMultiSelectCodes.indexOf(',') > -1) {
                    var dcMultiSelectCodesArray = dcMultiSelectCodes.replace(' ', '').split(',');
                    for (var i = 0; i < dcMultiSelectCodesArray.length; i++) {
                      if (id == dcMultiSelectCodesArray[i]) {
                        usesDcMultiSelect = true;
                      }
                    }
                  } else if (id == dcMultiSelectCodes) {
                    usesDcMultiSelect = true;
                  }
                  if (usesDcMultiSelect) {
                    var selectableEle;
                    if (dcMultiSelectId.indexOf(',') > -1) {
                      var dcMultiSelectors = dcMultiSelectId.split(',');
                      for (var i = 0; i < dcMultiSelectors.length; i++) {
                        if ($('#' + dcMultiSelectors[i]).length > 0) {
                          var dcMultiSelectProduct = $('#' + dcMultiSelectors[i]).attr('data-select-product');
                          if (dcMultiSelectProduct == id) {
                            selectableEle = $('#' + dcMultiSelectors[i]);
                          }
                        }
                      }
                      if (selectableEle.length > 0) {
                        $(selectableEle).val(qty);
                      }
                      registerEvent("ToggleButtonInitialized", function() {
                        setToggleButton(id, 'Add');
                      });
                    }
                  }
                }
                // Data-Code + Select
                var dcSelect = $('[data-code=' + id + '][data-select-id][data-code-toggle=true]');
                if ($(dcSelect).length <= 0) {
                  dcSelect = $('[data-code-alt=' + id + '][data-select-id][data-code-toggle=true]');
                }
                if ($(dcSelect).length > 0 && $('#' + $(dcSelect).attr('data-select-id')).length > 0) {
                  var selectableEle = $('#' + $(dcSelect).attr('data-select-id'));
                  $(selectableEle).val(qty);
                  registerEvent("ToggleButtonInitialized", function() {
                    setToggleButton(id, 'Add');
                  });
                }
                // Regular Data Code w/ Toggle Button
                var toggleButton = $('[data-code=' + originalId + '][data-code-toggle=true]');
                if (toggleButton.length > 0) {
                  registerEvent("ToggleButtonInitialized", function() {
                    setToggleButton(originalId, 'Add');
                  });
                }
                // Regular Action Code / Quantity
                if ($('[name="ActionCode' + index + '"]').length == 0 || 'radio,checkbox'.indexOf(ele.attr('type')) >= 0) {
                  if (!ele.is(':checked')) {
                    ele.attr('checked', 'checked');
                    ele.trigger('click');
                  }
                  if ($('#ActionQuantity' + index).length > 0) {
                    $('#ActionQuantity' + index).val(qty);
                  }
                } else {
                  $('#ActionQuantity' + index).val(qty);
                }
                // Set Data-Conditions
                $.each($('[data-condition="' + id + '"][data-condition-value]:not([data-condition-missing])'), function() {
                  setDataCondition(this);
                });
                //Set qty value for Select with radio/checkbox
                var qtySelect = $('[data-code=' + id + '][data-qty-id][type=radio],[data-code=' + id + '][data-qty-id][type=checkbox]');
                if ($(qtySelect).length <= 0) {
                  qtySelect = $('[data-code-alt=' + id + '][data-qty-id][type=radio],[data-code-alt=' + id + '][data-qty-id][type=checkbox]');
                }
                if ($(qtySelect).length > 0 && $('#' + $(qtySelect).attr('data-qty-id')).length > 0) {
                  var selectableEle = $('#' + $(qtySelect).attr('data-qty-id'));
                  $(selectableEle).val(qty);
                }
              }

              function setDataCondition(obj) {
                var conditionMet = true;
                var type = $(obj).is('input[type="checkbox"]') ? "Checkbox" : $(obj).is('input[type="radio"]') ? "Radio" : "Text";
                var conditionValue = $(obj).attr('data-condition-value');
                if ($(this).attr('data-condition-qty') != null && $(obj).attr('data-condition-qty').length >= 0) {
                  conditionMet = qty == parseInt($(obj).attr('data-condition-qty'));
                }
                if (conditionMet) {
                  switch (type) {
                    case "Checkbox":
                      if (conditionValue.toLowerCase() == "true") {
                        if (!$(obj).is(':checked')) {
                          $(obj).trigger('click');
                        }
                      } else if (conditionValue.toLowerCase() == "false") {
                        if ($(obj).is(':checked')) {
                          $(obj).trigger('click');
                        }
                      } else {
                        console.log('Condition Value for Checkboxes must be set to "true" or "false"');
                      }
                      break;
                    case "Radio":
                      $(obj).attr('checked', 'checked');
                      $(obj).trigger('click');
                      break;
                    case "Text":
                      $(obj).val(conditionValue);
                      break;
                  }
                }
              }

              function handleCartChange(addItemId, overrideQty, atr, removeItems, additionalItems, evt) {
                if (typeof(onCartChangeBegin) == "function") {
                  onCartChangeBegin();
                }
                var html = '';
                var payload = {
                  t: new Date().getTime(),
                  covid: 'd4d40120-1681-ed11-8b98-a0369f1303c7',
                  zipcode: getZip(),
                  state: getState(),
                  country: getCountry()
                };
                var uniqueItems = getItems();
                var qtyCounter = uniqueItems.length;
                var toggleItems = [];
                var toggleButtonCaller = null;
                if (typeof(evt) !== 'undefined') {
                  var ev = typeof(event) === 'undefined' ? evt : evt || event;
                  if (ev != null && ev.currentTarget != null && $(ev.currentTarget).attr('data-code') != null) {
                    toggleButtonCaller = ev.currentTarget;
                    var tempdatacode = $(toggleButtonCaller).attr('data-code');
                    //Toggle Button Click
                    if ($(ev.currentTarget).attr('data-code-toggle') != null && $(ev.currentTarget).attr('data-code-toggle') == 'true') {
                      var isModified = ($(toggleButtonCaller).attr('data-code-modifier') != null && $(toggleButtonCaller).attr('data-code-modifier').length > 0 && $(toggleButtonCaller).attr('data-code-alt') != null && $(toggleButtonCaller).attr(
                        'data-code-alt').length > 0 && $('#' + $(toggleButtonCaller).attr('data-code-modifier')).is(':checked'));
                      //var tempdatacode = $(toggleButtonCaller).attr('data-code');
                      tempdatacode = isModified ? $(toggleButtonCaller).attr('data-code-alt') : tempdatacode;
                      var regex;
                      if (tempdatacode.indexOf(',') > -1) {
                        tempdatacode = tempdatacode.replace(',', ')$|^(');
                        regex = new RegExp("^(" + tempdatacode + ")$");
                      } else {
                        regex = new RegExp("^" + tempdatacode + "$");
                      }
                      var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                      var $toggleButtonCaller = $(toggleButtonCaller).find('[data-code-label]').length > 0 ? $(toggleButtonCaller).find('[data-code-label]') : $(toggleButtonCaller);
                      $toggleButtonCaller.html(active ? 'Removing...' : 'Adding...');
                    } else if (overrideQty == null) {
                      var qtyOverride = $(toggleButtonCaller).attr('data-qty-override');
                      if (qtyOverride != null) {
                        overrideQty = qtyOverride;
                      } else {
                        var actionCode = $('[name*="ActionCode"][value="' + tempdatacode + '"]');
                        if (actionCode != null && actionCode.length > 0) {
                          var actionQty = $('[name*="ActionQuantity' + $(actionCode).attr('id').replace('ActionCode', '') + '"]');
                          if (actionQty != null) {
                            overrideQty = $(actionQty).val();
                          }
                        }
                      }
                    }
                  }
                }
                for (var index = 0; index < uniqueItems.length; index++) {
                  var item = uniqueItems[index];
                  if (item.id != '' && item.id != 'none') {
                    payload['Item' + index] = item.id;
                    payload['Qty' + index] = item.qty;
                    payload['Atr' + index] = item.atr;
                    var isGroup = false;
                    $("[data-group-name][data-code-toggle=true]").each(function(i, v) {
                      var groupName = $(this).attr('data-group-name');
                      $('select[name=' + groupName + '] option[value=' + item.id + ']').parent().each(function(j, z) {
                        isGroup = true;
                        if (item.qty == 0) {
                          setToggleButton(groupName, 'Remove');
                        }
                        toggleItems.push(groupName);
                      });
                      $('input[type=radio][name=' + groupName + '][value=' + item.id + ']').each(function(j, z) {
                        isGroup = true;
                        if (item.qty == 0) {
                          setToggleButton(groupName, 'Remove');
                        }
                        toggleItems.push(groupName);
                      });
                      $('input[type=checkbox][name=' + groupName + '][value=' + item.id + ']').each(function(j, z) {
                        isGroup = true;
                        if (item.qty == 0) {
                          setToggleButton(groupName, 'Remove');
                        }
                        toggleItems.push(groupName);
                      });
                    });
                    if (item.qty == 0) {
                      if (!isGroup) {
                        setToggleButton(item.id, 'Remove');
                        toggleItems.push(item.id);
                      }
                    }
                  }
                }
                if (typeof addItemId == "string") {
                  var hasOverrideQty = !(typeof overrideQty == "undefinied" || overrideQty == null);
                  var itemExists = false;
                  for (var index = 0; index < uniqueItems.length; index++) {
                    if (payload['Item' + index] == addItemId) {
                      var qty = payload['Qty' + index];
                      if (!hasOverrideQty) {
                        payload['Qty' + index] = qty + 1;
                      } else {
                        payload['Qty' + index] = overrideQty;
                      }
                      payload['Atr' + index] = atr;
                      itemExists = true;
                      break;
                    }
                  }
                  if (!itemExists && addItemId != '') {
                    qtyCounter++;
                    payload['Item' + qtyCounter] = addItemId;
                    payload['Qty' + qtyCounter] = !hasOverrideQty ? 1 : overrideQty;
                    payload['Atr' + qtyCounter] = atr;
                    toggleItems.push(addItemId);
                  }
                  if (additionalItems != null && additionalItems.length > 0) {
                    for (var i = 0; i < additionalItems.length; i++) {
                      var extra = additionalItems[i];
                      var extraId = extra.Id;
                      var extraQty = extra.Qty;
                      if (extraId != '' && extraId != addItemId && removeItems.indexOf(extraId) < 0) {
                        qtyCounter++;
                        payload['Item' + qtyCounter] = extraId;
                        payload['Qty' + qtyCounter] = extraQty;
                        toggleItems.push(extraId);
                      }
                    };
                  }
                  if (removeItems != null && removeItems.length > 0) {
                    for (var i = 0; i < removeItems.length; i++) {
                      var removeItem = removeItems[i];
                      if (removeItem != '' && removeItem != addItemId) {
                        qtyCounter++;
                        payload['Item' + qtyCounter] = removeItem;
                        payload['Qty' + qtyCounter] = 0;
                        toggleItems.push(removeItem);
                      }
                    };
                  }
                }
                $('.ddlPromo').each(function(index, item) {
                  //if digits or not a space,number, hyphen or letter, then don't let keypress work.
                  $(item).keydown(function(event) {
                    var inputValue = event.which;
                    if ((inputValue > 64 && inputValue < 91) // uppercase
                      || (inputValue >= 96 && inputValue < 123) // lowercase + numpad numbers
                      || (inputValue >= 48 && inputValue <= 57) // numbers
                      || inputValue == 9 //tab
                      || inputValue == 8 // backspace
                      || inputValue == 46 // delete key
                      || (inputValue >= 37 && inputValue <= 40)) // arrows
                    {
                      return;
                    }
                    event.preventDefault();
                  });
                  //if value contains symbol , clear field
                  $(item).on("input", function(e) {
                    var value = $(item).val();
                    var regex = new RegExp("[^A-Za-z0-9]");
                    if (regex.test(value)) {
                      $(item).val("");
                    }
                  });
                  var id = $(item).val();
                  payload['PromoCode'] = id;
                });
                $('.cartParam').each(function(index, item) {
                  var id;
                  var paramName = $(item).data('paramname') || item.name;
                  if ('radio'.indexOf($(item).attr('type')) >= 0) {
                    id = $('[name=' + item.name + ']:checked').val();
                  } else if ('checkbox'.indexOf($(item).attr('type')) >= 0) {
                    id = $('[name=' + item.name + ']').is(':checked');
                  } else {
                    id = $(item).val();
                  }
                  if (payload["param_" + paramName] == null || payload["param_" + paramName] == '') {
                    payload["param_" + paramName] = id;
                  }
                });
                $.post(getCartUrl('Edit'), payload, function(data) {
                  $('.reviewTableBody').html('');
                  $('#orderFormReviewTableItems').html('');
                  $('.futurechargerow').html('');
                  var totalQty = 0;
                  var extendedPriceTotals = [];
                  for (var i = 0; i < data.items.length; i++) {
                    var excludeFromCartCount = false;
                    var dataItem = data.items[i];
                    if (dataItem.props && dataItem.props.length > 0) {
                      for (var pi = 0; pi < dataItem.props.length; pi++) {
                        var prop = dataItem.props[pi];
                        dataItem.props[prop["Key"]] = prop["Value"];
                        if (prop["Key"] == "ExcludeFromCartCount" && prop["Value"] == 'true') {
                          excludeFromCartCount = true;
                        }
                      }
                    }
                    if (!excludeFromCartCount) {
                      totalQty += dataItem.qty;
                    }
                    var tr = renderTr(dataItem, i);
                    $('.reviewTableBody').append(tr);
                    if (dataItem.numpay > 1) {
                      extendedPriceTotals.push({
                        item: dataItem,
                        total: dataItem.extPrice * dataItem.qty
                      });
                    }
                    $('#orderFormReviewTableItems').append(getItemHtml(dataItem, i));
                    var dataSelect = $("[data-code='" + dataItem.code + "'][data-select-id]");
                    if (dataSelect.length > 0) {
                      $("#" + dataSelect.attr("data-select-id")).val(dataItem.qty);
                    }
                    var dataCodeSelect = $("select[data-code=" + dataItem.code + "], select[data-code-alt=" + dataItem.code + "]");
                    if (dataCodeSelect.length > 0) {
                      dataCodeSelect.val(dataItem.qty);
                    }
                  }
                  var subtotal = data.totalPrice.toFixed(2);
                  $('.subtotal').html('$' + subtotal);
                  $('.phtotal').html('$' + data.totalShipping.toFixed(2));
                  $('.summary-total').html('$' + data.total.toFixed(2));
                  $('.cartTotalQty').html(totalQty > 0 ? '(' + totalQty + ')' : '');
                  $('.cartTotalQtyNumbersOnly').html(totalQty > 0 ? '' + totalQty + '' : '');
                  setTax(data.zipdata);
                  if (payload['PromoCode'] && typeof hidePromoErrors === "undefined") {
                    displayError(data.errors);
                  }
                  if (payload['PromoCode'] && typeof(onApplyPromo) == "function") {
                    var promoCode = payload['PromoCode'];
                    var hasPromo = promoCode == data.promoCode;
                    var promoItem = getItemWithKeyValue(data.items, 'id', data.promoCodeTarget);
                    if (hasPromo && promoItem != null) {
                      var fireOnApplyPromo = false;
                      $('.ddlPromo').each(function(i, item) {
                        var current = $(item).attr('data-current');
                        if (typeof(current) == "undefined" || current != promoCode) {
                          $(item).attr('data-current', promoCode);
                          fireOnApplyPromo = true;
                        }
                      });
                      if (fireOnApplyPromo) {
                        onApplyPromo(promoCode, promoItem);
                      }
                    }
                  }
                  var futureChargesValues = new Array();
                  var extendedOrderTotal = (data.zipdata != null) ? data.total + data.zipdata.Amount : data.total;
                  for (var key in extendedPriceTotals) {
                    if ($.isNumeric(key)) {
                      var numPayments = extendedPriceTotals[key].item.numpay - ((extendedPriceTotals[key].item.price + extendedPriceTotals[key].item.shipping) !== 0 ? 1 : 0);
                      var monthlyTotal = parseFloat(extendedPriceTotals[key].total) / numPayments;
                      extendedOrderTotal += monthlyTotal;
                      for (var i = 0; i < numPayments; i++) {
                        if (futureChargesValues[i] == undefined) {
                          futureChargesValues[i] = monthlyTotal;
                        } else {
                          futureChargesValues[i] += monthlyTotal;
                        }
                      }
                    }
                  }
                  var startingLabelIndex = 2;
                  var labelCount = startingLabelIndex;
                  var tr = '<tr class="futurechargerow"><td colspan="' + 4 + '"><b>' + "Future Charges" + '</b></td></tr>';
                  if (futureChargesValues.length > 0) {
                    for (var i = 0; i < futureChargesValues.length; i++) {
                      tr += '<tr class="futurechargerow"><td colspan="' + 3 + '"><i>' + getFutureChargesLabels(labelCount, startingLabelIndex) + '</i></td><td> $' + futureChargesValues[i].toFixed(2) + '</td></tr>';
                      labelCount++;
                    }
                    $('.reviewTableFoot').append(tr);
                  }

                  function getFutureChargesLabels(labelCount, startingLabelIndex) {
                    var additive = labelCount - startingLabelIndex;
                    var days = (additive + 1) * 30;
                    switch (labelCount) {
                      case 1:
                        var firstFutureChargeLabel = "" != "" ? "1 " + days + " " : "1st Payment in " + days + " days";
                        return firstFutureChargeLabel;
                      case 2:
                        var secondFutureChargeLabel = "" != "" ? "2 " + days + " " : "2nd Payment in " + days + " days";
                        return secondFutureChargeLabel;
                      case 3:
                        var thirdFutureChargeLabel = "" != "" ? "3 " + days + " " : "3rd Payment in " + days + " days";
                        return thirdFutureChargeLabel;
                      default:
                        var thFutureChargeLabel = "" != "" ? labelCount + " " + days + " " : labelCount + "th Payment in " + days + " days";
                        return thFutureChargeLabel;
                    }
                  }

                  function getFirstPaymentLabel(price, shipping, tax) {
                    var shippingString = (shipping > 0) ? " + $" + shipping.toFixed(2) : "";
                    var taxString = (tax > 0) ? " + $" + tax.toFixed(2) : "";
                    if (shipping > 0 || tax > 0) {
                      return "Your 1st payment is " + "$" + price.toFixed(2) + shippingString + taxString;
                    }
                    return "Your 1st payment is " + price.toFixed(2);
                  }

                  function getExtendedPaySummaryLabels(labelCount) {
                    switch (labelCount) {
                      case 2:
                        label = "Your 2nd payment is $";
                        break;
                      case 3:
                        label = "Your 3rd payment is $";
                        break;
                      default:
                        label = "Your " + labelCount + "th payment is $";
                        break;
                    }
                    return label;
                  }
                  if (typeof(onCartChangeComplete) == "function") {
                    onCartChangeComplete();
                  }
                  if (_dtmShoppingCart != null) {
                    setTimeout(function() {}, 800);
                    var rbgroups = [];
                    for (var i = 0; i < toggleItems.length; i++) {
                      var toggleItem = toggleItems[i];
                      var code = toggleItem;
                      var regex = new RegExp("^" + toggleItem + "$");
                      var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                      var isGroup = $('input[type=radio][name=' + toggleItem + ']').length > 0;
                      code = $('input[type=radio][value=' + toggleItem + '][name]:checked').length > 0 ? $('input[type=radio][value=' + toggleItem + '][name]:checked').attr('name') : code;
                      if (isGroup) {
                        var selectedItem = $('input[type=radio][name=' + toggleItem + ']:checked').val();
                        var cartRegex = new RegExp("^" + selectedItem + "$");
                        var cartItem = _dtmShoppingCart.SearchItems(cartRegex);
                        var hasItem = cartItem.length > 0;
                        if (hasItem) {
                          setToggleButtonQty(code, cartItem.TotalQuantity);
                        }
                      }
                      setToggleButton(code, active ? 'Add' : 'Remove');
                    };
                    $('[data-code-toggle=true][data-code]').not('[data-code-modifier]').each(function(index, item) {
                      var code = $(this).attr('data-code');
                      if (code.indexOf(',') > -1) {
                        var allDataCodes = code.split(',');
                        var datacodes = code.replace(',', ')$|^(');
                        var regex = new RegExp("^(" + datacodes + ")$");
                        var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                        setToggleButton(code, active ? 'Add' : 'Remove');
                      } else {
                        var isCB = 'checkbox'.indexOf($(this).attr('type')) >= 0;
                        var code = $(this).attr('data-code');
                        var regex = new RegExp("^" + code + "$");
                        var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                        if (isCB) {
                          $(this).prop("checked", active);
                        }
                        setToggleButton(code, active ? 'Add' : 'Remove');
                      }
                    });
                    $("[data-code-toggle=true][data-group-name]").each(function(i, item) {
                      var groupName = $(this).attr('data-group-name');
                      var isDataCheckbox = $(this).attr('data-checkbox') != null && $(this).attr('data-checkbox').length > 0;
                      var altCodes = "";
                      var hasQtySelect = $(this).attr('data-qty-id');
                      var selector = ($(item)[0].hasAttribute('data-select')) ? ('[name="' + groupName + '"] option[value != ""]') : ('[name="' + groupName + '"]');
                      var removeItems = [];
                      var dataCodes = $(selector).map(function() {
                        return this.value;
                      }).get().join(')$|^(');
                      var hasModifier = $(this).attr('data-code-modifier') != null && $(this).attr('data-code-modifier').length > 0;
                      if (hasModifier) {
                        altCodes = $('[name="' + groupName + '"]').map(function() {
                          return $(this).attr('data-code-alt');
                        }).get().join(')$|^(');
                      }
                      var regex = hasModifier ? new RegExp("^(" + dataCodes + ")$|^(" + altCodes + ")$") : new RegExp("^(" + dataCodes + ")$");
                      var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                      setToggleButton(groupName, active ? 'Add' : 'Remove');
                      if (active && typeof hasQtySelect !== typeof undefined) {
                        setToggleButtonQty(groupName, _dtmShoppingCart.SearchItems(regex).TotalQuantity);
                      }
                      if (isDataCheckbox) {
                        $('[name="' + groupName + '"]').each(function(idx, cbx) {
                          var modifier = hasModifier ? $(cbx).attr('data-code-modifier') : null;
                          var isModified = modifier != null ? $('#' + modifier + '').is(':checked') : false;
                          var code = isModified ? $(cbx).attr('data-code-alt') : $(cbx).val();
                          var regex = new RegExp("^" + code + "$");
                          var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                          $(cbx).prop("checked", active);
                        });
                      }
                    });
                    $('[data-code-toggle=true][data-code][data-code-modifier][data-code-alt]').each(function(index, item) {
                      var oldCode = $(this).attr('data-code');
                      var alt = $(this).attr('data-code-alt');
                      var modifier = $(this).attr('data-code-modifier');
                      var isChecked = $('#' + modifier).is(':checked');
                      var code = !isChecked ? $(this).attr('data-code') : $(this).attr('data-code-alt');
                      var regex = new RegExp("^" + code + "$");
                      var active = _dtmShoppingCart.SearchItems(regex).length > 0;
                      setToggleButton(oldCode, active ? 'Add' : 'Remove');
                    });
                  }
                  $('[data-code-toggle=true]').removeClass('disableToggleClick');
                  //Check if cart has any multipay items
                  var hasMultipay = false;
                  for (var i = 0; i < data.items.length; i++) {
                    var item = data.items[i];
                    if (item && item.numpay && item.numpay > 1) {
                      hasMultipay = true;
                      break;
                    }
                  }
                  //Toggle shipping Fields
                  toggleShippingFields(hasMultipay);
                  data.hasMultipay = hasMultipay;
                  _dtmShoppingCart.HasMultipay = hasMultipay;
                  triggerEvent("CartChange", data);
                }, "json").fail(function() {
                  if (typeof(onCartChangeComplete) == "function") {
                    onCartChangeComplete();
                  }
                  $('[data-code-toggle=true]').removeClass('disableToggleClick');
                });
              }

              function displayError(errorArray) {
                if (errorArray && errorArray.length > 0) {
                  var ele = $('form').find('span[style="color: #FF0000; font-weight: bold"]');
                  if (ele.length == 0 && $('.vse').length > 0) {
                    ele = $('.vse');
                  }
                  if (_firstRun) {
                    if (ele.children().length) {
                      $.each(ele.find('li'), function(index, item) {
                        data.errors.push($(item).text());
                      });
                    }
                  }
                  var html = '<div class="validation-summary-errors"><span>The following errors have occured:</span>' + '<ul>';
                  for (var i = 0; i < errorArray.length; i++) {
                    if (html.indexOf(errorArray[i]) < 0) {
                      html += '<li>' + errorArray[i] + '</li>';
                    }
                  }
                  html += '</ul></div>';
                  if (!_firstRun) {
                    ele.html(html);
                    _dtmShoppingCart.ScrollToErrors(ele);
                  } else {
                    _firstRun = false;
                  }
                } else if (!_firstRun) {
                  var ele = $('form').find('span[style="color: #FF0000; font-weight: bold"]');
                  if (ele.length == 0 && $('.vse').length > 0) {
                    ele = $('.vse');
                  }
                  ele.html('');
                }
              }

              function setToggleButton(code, mode) {
                triggerEvent("ChangeToggleButtonState", {
                  key: code,
                  state: mode
                });
              }

              function registerEvent(evType, fn, element, useCapture) {
                var elm = element || window;
                if (elm.addEventListener) {
                  elm.addEventListener(evType, fn, useCapture || false);
                } else if (elm.attachEvent) {
                  var r = elm.attachEvent(evType, fn);
                } else {
                  elm[evType] = fn;
                }
              }

              function triggerEvent(eventName, data, element) {
                try {
                  var event;
                  var payload = (data && typeof(data.detail) != "undefined") ? data : (data ? {
                    detail: data
                  } : {
                    detail: ''
                  });
                  if (typeof window.CustomEvent === 'function') {
                    event = new CustomEvent(eventName, payload || {
                      detail: ''
                    });
                  } else if (document.createEvent) {
                    event = document.createEvent('HTMLEvents');
                    event.detail = payload.detail;
                    event.initEvent(eventName, true, true);
                  } else if (document.createEventObject) {
                    event = document.createEventObject();
                    event.detail = payload.detail;
                    event.eventType = eventName;
                  }
                  event.eventName = eventName;
                  var el = element || window;
                  if (el.dispatchEvent) {
                    el.dispatchEvent(event);
                  } else if (el.fireEvent && htmlEvents[eventName]) {
                    el.fireEvent(event.eventType, event);
                  } else if (el[eventName]) {
                    el[eventName]();
                  } else if (el['on' + eventName]) {
                    el['on' + eventName]();
                  }
                } catch (error) {
                  console.log('Error executing ' + name + ' Event');
                }
              }

              function getItemWithKeyValue(items, key, value) {
                for (var i = 0; i < items.length; i++) {
                  var item = items[i];
                  if (item[key] == value) {
                    return item;
                  }
                }
                return null;
              }

              function renderTr(dataItem, i) {
                if (!dataItem.props["HideProduct"]) {
                  var tr = '<tr>';
                  tr += '<td data-eflex--category-label="Item">' + dataItem.name + '</td>';
                  var hasNoEditButton = $('[data-code=' + dataItem.code + '][data-code-toggle=true][data-noedit=true]').length > 0 || $('[data-code][data-code-alt=' + dataItem.code + '][data-code-toggle=true][data-noedit=true]').length > 0;
                  var noEditInput = $('[name=NoEdit][type=hidden]');
                  if (noEditInput.length > 0) {
                    var noEditArray = noEditInput.val().split(',');
                    hasNoEditButton = (noEditArray.indexOf(dataItem.code) > -1);
                  }
                  let textBoxThresholdString = (dataItem.props["TextBoxThreshold"] === null || dataItem.props["TextBoxThreshold"] === undefined) ? "0" : dataItem.props["TextBoxThreshold"];
                  let textBoxThreshold = parseInt(textBoxThresholdString);
                  if (dataItem.props["NoEdit"] || hasNoEditButton) {
                    tr += '<td data-cart-code="' + dataItem.code + 'Quantity" data-cart-noedit="true" data-eflex--category-label="Quantity">' + dataItem.qty + getQuantityHtml(dataItem, i) + '</td>';
                  } else {
                    tr += '<td data-cart-code="' + dataItem.code + 'Quantity" data-eflex--category-label="Quantity">' + getQtyDdl(dataItem, i, 'True', 'False', textBoxThreshold) + '</td>';
                  }
                  tr += '<td data-cart-code="' + dataItem.code + 'Price" data-eflex--category-label="Price">$' + (dataItem.price * dataItem.qty).toFixed(2) + '</td>';
                  tr += '<td data-cart-code="' + dataItem.code + 'Shipping" data-eflex--category-label="S&H">$' + (dataItem.shipping * dataItem.qty).toFixed(2) + '</td>';
                  tr += '</tr>';
                  return tr;
                }
                return '';
              }

              function updateTr(dataItem, i) {
                var qtyTd = $("[data-cart-code='" + dataItem.code + "Quantity']");
                if (qtyTd.length != 0) {
                  var Quantity = qtyTd.children("[name*='ActionQuantity']")[0];
                  $(Quantity).val(dataItem.qty);
                  if (qtyTd.attr('data-cart-noedit')) {
                    qtyTd.html(dataItem.qty);
                    qtyTd.append(Quantity);
                  }
                  $("[data-cart-code='" + dataItem.code + "Price']").html('$' + (dataItem.price * dataItem.qty).toFixed(2) + '');
                  $("[data-cart-code='" + dataItem.code + "Shipping']").html('$' + (dataItem.shipping * dataItem.qty).toFixed(2) + '');
                } else {
                  i = $('#orderFormReviewTableItems').children("input").length;
                  var tr = renderTr(dataItem, i);
                  $('.reviewTableBody').append(tr);
                }
              }

              function updateCartItems(dataItems) {
                $(dataItems).each(function(index, item) {
                  var exists = false;
                  $(cartItems).each(function(i, cartItem) {
                    if (cartItem.code == item.code) {
                      cartItem.added = true;
                      exists = true;
                      return;
                    }
                  });
                  if (!exists) {
                    cartItems.push({
                      code: item.code,
                      added: true
                    })
                  };
                });
                $(cartItems).each(function(index, cartItem) {
                  var exists = false;
                  $(dataItems).each(function(i, item) {
                    if (cartItem.code == item.code) {
                      exists = true;
                      return;
                    }
                  });
                  cartItem.added = exists;
                });
              }

              function updateRemovedTr() {
                $(cartItems).each(function(index, item) {
                  if (!item.added) {
                    var qtyTd = $("[data-cart-code='" + item.code + "Quantity']");
                    var Quantity = qtyTd.children("[name*='ActionQuantity']")[0];
                    $(Quantity).val('0');
                    if (qtyTd.attr('data-cart-noedit')) {
                      qtyTd.html('0');
                      qtyTd.append(Quantity);
                    }
                    $("[data-cart-code='" + item.code + "Price']").html('$' + (0).toFixed(2) + '');
                    $("[data-cart-code='" + item.code + "Shipping']").html('$' + (0).toFixed(2) + '');
                  }
                });
              }

              function setTax(data) {
                if (data != null) {
                  var zip = $('.zc').val();
                  var shipZip = $('#ShippingZip').val();
                  var billZip = $('#BillingZip').val();
                  var shipCity = $('#ShippingCity').val();
                  var billCity = $('#BillingCity').val();
                  var shipState = $('#ShippingState').val();
                  var billState = $('#BillingState').val();
                  var shipCountry = $('#ShippingCountry').val();
                  var billCountry = $('#BillingCountry').val();
                  if ($('#ShippingIsDifferentThanBilling').is(':checked') && lastChangeType == 'Shipping') {
                    if (data.City != '' && data.City != null && shipCity == "") {
                      $('#ShippingCity').val(data.City);
                    }
                    if (data.CountryCode != '' && data.CountryCode != null && shipCountry == "") {
                      $('#ShippingCountry').val(data.CountryCode);
                    }
                    if (data.StateCode != '' && data.StateCode != null && shipState == "") {
                      $('#ShippingState').val(data.StateCode);
                    }
                    if (shipZip == "") {
                      $('#ShippingZip').val(zip);
                    }
                  } else {
                    if (data.City != '' && data.City != null && billCity == "") {
                      $('#BillingCity').val(data.City);
                    }
                    if (data.CountryCode != '' && data.CountryCode != null && billCountry == "") {
                      $('#BillingCountry').val(data.CountryCode);
                    }
                    if (data.StateCode != '' && data.StateCode != null && billState == "") {
                      $('#BillingState').val(data.StateCode);
                    }
                    if (billZip == "") {
                      $('#BillingZip').val(zip);
                    }
                  }
                  $('.taxtotal').html('$' + data.Amount.toFixed(2));
                  $('.summary-total').html('$' + data.TaxTotal.toFixed(2));
                }
              }

              function getZip() {
                return $('#zc').val();
              }

              function getState() {
                return $('#ShippingIsDifferentThanBilling').is(':checked') ? $('#ShippingState').val() : $('#BillingState').val();
              }

              function getCountry() {
                return $('#ShippingIsDifferentThanBilling').is(':checked') ? $('#ShippingCountry').val() : $('#BillingCountry').val();
              }
              var currentzipcode = '',
                lastChangeType = '';

              function updateZip(zipcode, state, country) {
                if (zipcode != '' && zipcode != currentzipcode && zipcode.length >= 5) {
                  currentzipcode = zipcode;
                  $('.zc').val(zipcode);
                  handleCartChange();
                }
              }
              registerEvent("CartChange", function() {
                updateParentCodeQuantity();
              });

              function getQtyDdl(item, index, allowZero, enableTextbox, textboxThreshold) {
                var html = "";
                if (item.id.indexOf("_LI") !== -1) {
                  var parentCode = item.id.split("_")[0];
                  var childSuffix = item.id.split("_")[1];
                  if (childSuffix == "LI1") {
                    html += '<select id="LineItemQuantity' + index + '" name="LineItemQuantity' + index + '" data-parent-code="' + parentCode + '" data-index="' + index + '" onchange="$(\'#ActionQuantity' + index +
                      '\').val(this.value);triggerEvent(\'ActionQuantityChange\', \'' + index + '\');">';
                  } else {
                    var parentCodeIndex = $("input[data-parent-code=" + parentCode + "]").attr("data-index");
                    html += '<select id="LineItemQuantity' + index + '" name="LineItemQuantity' + index + '" data-parent-code="' + parentCode + '" data-index="' + parentCodeIndex + '" onchange="$(\'#ActionQuantity' + parentCodeIndex +
                      '\').val(this.value);triggerEvent(\'ActionQuantityChange\', \'' + parentCodeIndex + '\');">';
                  }
                } else if ((enableTextbox === "True" && item.qty >= textboxThreshold) || (enableTextbox === "True" && textboxThreshold === 0)) {
                  html = '<input class="c-brand--form__input fx--animate o-box" type="number" value="' + item.qty + '" name="ActionQuantity' + index + '" id="ActionQuantity' + index + '" data-index="' + index +
                    '" onchange="validateTextBoxInput(this,' + item.maxQty + ');$(\'#ActionQuantity' + index + '\').val(this.value);triggerEvent(\'ActionQuantityChange\', \'' + index + '\');">';
                } else {
                  html = '<select id="ActionQuantity' + index + '" name="ActionQuantity' + index + '" data-index="' + index + '" onchange="$(\'#ActionQuantity' + index + '\').val(this.value);triggerEvent(\'ActionQuantityChange\', \'' + index +
                    '\');">';
                }
                if (enableTextbox === "True" && item.qty < textboxThreshold) {
                  for (var i = (allowZero != null && allowZero != 'False' ? 0 : item.minQty); i <= textboxThreshold; i++) {
                    if (i === textboxThreshold && textboxThreshold !== 0) {
                      html += '<option value="' + i + '" ' + (item.qty == i ? 'selected="selected"' : '') + '>' + i + '+</option>';
                    } else {
                      html += '<option value="' + i + '" ' + (item.qty == i ? 'selected="selected"' : '') + '>' + i + '</option>';
                    }
                  }
                  html += ' </select>';
                }
                if (enableTextbox === "False") {
                  for (var i = (allowZero != null && allowZero != 'False' ? 0 : item.minQty); i <= item.maxQty; i++) {
                    html += '<option value="' + i + '" ' + (item.qty == i ? 'selected="selected"' : '') + '>' + i + '</option>';
                  }
                  html += ' </select>';
                }
                if (item.id.indexOf("_LI") !== -1) {
                  var parentCode = item.id.split("_")[0];
                  var childSuffix = item.id.split("_")[1];
                  var quantity = item.qty;
                  if (childSuffix == "LI1") {
                    if ($("input[name=ActionQuantity" + index + "]").length === 0) {
                      $("#orderFormReviewTableItems").append("<input type='hidden' id='ActionQuantity" + index + "' name='ActionQuantity" + index + "' data-index='" + index + "' value='" + quantity + "' data-parent-code='" + parentCode +
                        "' data-cart-code='" + parentCode + "Quantity'/>");
                    }
                  }
                }
                return html;
              }

              function updateParentCodeQuantity() {
                var items = getItems();
                var parentProducts = [];
                $("input[name^=ActionQuantity]").each(function() {
                  var parentCode = $(this).attr("data-parent-code");
                  if (typeof parentCode !== "undefined") {
                    let hasProduct = false;
                    $.each(items, function(key, value) {
                      if (parentCode === value.id) {
                        hasProduct = true;
                      }
                    });
                    if (hasProduct) {
                      parentProducts.push({
                        index: $(this).attr("data-index"),
                        code: $(this).attr("data-parent-code")
                      });
                    } else {
                      $("[data-parent-code=" + parentCode + "]").remove();
                    }
                  }
                });
                var parentProductsCount = parentProducts.length;
                if (parentProductsCount > 0) {
                  for (var i = 0; i < parentProductsCount; i++) {
                    for (var j = 0; j < items.length; j++) {
                      if (parentProducts[i].code === items[j].id) {
                        $("input[name=ActionQuantity" + parentProducts[i].code + "]").val(items[j].qty);
                      }
                    }
                  }
                }
              }

              function getItemHtml(item, index) {
                var html = "";
                if (item.id.indexOf("_LI") !== -1) {
                  var parentCode = item.id.split("_")[0];
                  var childSuffix = item.id.split("_")[1];
                  var parentIndex = $('[data-parent-code="' + parentCode + '"]').attr("data-index");
                  if (childSuffix == "LI1" && $("input[name=ActionCode" + parentIndex + "]").length === 0) {
                    html = '<input type="hidden" id="ActionCode' + parentIndex + '" name="ActionCode' + parentIndex + '"' + ' value="' + parentCode + '" />';
                  }
                } else {
                  html = '<input type="hidden" id="ActionCode' + index + '" name="ActionCode' + index + '"' + ' value="' + item.id + '" />';
                }
                return html;
              }

              function updateItemHtml(dataItem, i) {
                var i = $('#orderFormReviewTableItems').children("input").length;
                if ($('#orderFormReviewTableItems').children("[value='" + dataItem.code + "']").length == 0) {
                  $('#orderFormReviewTableItems').append(getItemHtml(dataItem, i));
                  i++;
                }
              }

              function getQuantityHtml(item, index) {
                return '<input type="hidden" id="ActionQuantity' + index + '" name="ActionQuantity' + index + '"' + ' value="' + item.qty + '" />';
              }

              function setItems(items) {
                $("[name*='ActionQuantity']").each(function(index, item) {
                  $(item).val(0);
                });
                $.get(getCartUrl('ClearCart'), {
                  t: new Date().getTime(),
                  covid: 'd4d40120-1681-ed11-8b98-a0369f1303c7',
                  zipcode: getZip(),
                  state: getState(),
                  country: getCountry()
                }, function() {
                  if (items && items.length > 0) {
                    var html = '';
                    for (var i = 0; i < items.length; i++) {
                      var item = items[i];
                      if (item.id && item.qty) {
                        html += '<input type="hidden" id="ActionCode' + i + '" name="ActionCode' + i + '" value="' + item.id + '" />' + '<input type="hidden" id="ActionQuantity' + i + '" name="ActionQuantity' + i + '" value="' + item.qty +
                        '" />';
                      }
                    }
                    $('#orderFormReviewTableItems').html(html);
                    handleCartChange();
                  }
                });
              }

              function getItems(items) {
                var uniqueItems = new Array();
                $("[name*='ActionQuantity']").each(function(index, item) {
                  var id;
                  var itemIndex = (item.getAttribute('data-index') ? item.getAttribute('data-index') : (item.id || '').replace('ActionQuantity', ''));
                  if ($('[name="ActionCode' + itemIndex + '"]').length == 0 || 'radio,checkbox'.indexOf($('[name="ActionCode' + itemIndex + '"]').attr('type')) >= 0) {
                    if ($('[name="ActionCode' + itemIndex + '"][data-upgrade]').length != 0) {
                      id = $('[name="ActionCode' + itemIndex + '"]').val();
                    } else {
                      id = $('[name="ActionCode' + itemIndex + '"]:checked').val();
                    }
                  } else {
                    id = $('[name="ActionCode' + itemIndex + '"]').val();
                    if ($('[name="ActionCode' + itemIndex + '"]').attr('data-checkbox')) {
                      var checkBoxName = $('[name="ActionCode' + itemIndex + '"]').attr('name').replace('Code', 'Checkbox');
                      var checkBoxEle = $('[name="' + checkBoxName + '"]');
                      if (checkBoxEle.attr('data-new') == id) {
                        checkBoxEle.prop('checked', true);
                      }
                    }
                  }
                  if (id != null && id != '' && id != 'none') {
                    var qty = $(item).val();
                    var atr;
                    if ($('[name="ActionAttribute' + itemIndex + '"]').length == 0 || 'radio,checkbox'.indexOf($('[name="ActionAttribute' + itemIndex + '"]').attr('type')) >= 0) {
                      if ($('[name="ActionAttribute' + itemIndex + '"]').length == 1) {
                        atr = $('[name="ActionAttribute' + itemIndex + '"]:checked').val();
                      } else {
                        var allValues = new Array();
                        $.each($('[name="ActionAttribute' + itemIndex + '"]:checked'), function() {
                          allValues.push($(this).val());
                        });
                        atr = allValues.join(',');
                      }
                    } else {
                      if ($('[name="ActionAttribute' + itemIndex + '"]').length == 1) {
                        atr = $('[name="ActionAttribute' + itemIndex + '"]').val();
                      } else {
                        var allValues = new Array();
                        $.each($('[name="ActionAttribute' + itemIndex + '"]'), function() {
                          allValues.push($(this).val());
                        });
                        atr = allValues.join(',');
                      }
                    }
                    if (uniqueItems[id]) {
                      for (var ui = 0; ui < uniqueItems.length; ui++) {
                        var uitem = uniqueItems[ui];
                        if (uitem.id == id) {
                          uitem.qty += parseInt(qty);
                          break;
                        }
                      }
                    } else {
                      uniqueItems[id] = true;
                      uniqueItems[uniqueItems.length] = {
                        id: id,
                        qty: parseInt(qty),
                        atr: atr
                      };
                    }
                    if ($('[name="MatchProductQuantity' + itemIndex + '"]').length == 0 || 'radio,checkbox'.indexOf($('[name="MatchProductQuantity' + itemIndex + '"]').attr('type')) >= 0) {
                      var match = $('[name="MatchProductQuantity' + itemIndex + '"]:checked').val();
                    } else {
                      var match = $('[name="MatchProductQuantity' + itemIndex + '"]').val();
                    }
                    if (typeof match != "undefined" && match.length > 0) {
                      if (uniqueItems[match]) {
                        for (var ui = 0; ui < uniqueItems.length; ui++) {
                          var uitem = uniqueItems[ui];
                          if (uitem.id == match) {
                            uitem.qty += parseInt(qty);
                            break;
                          }
                        }
                      } else {
                        uniqueItems[match] = true;
                        uniqueItems[uniqueItems.length] = {
                          id: match,
                          qty: parseInt(qty),
                          atr: atr
                        };
                      }
                    }
                  } else {
                    console.log('id was blank, skipping.')
                  }
                });
                return uniqueItems;
              }
              var DtmShoppingCart = function() {
                var self = this;
                self.scrollToTopPosition = parseFloat("-200");
                self.CurrentErrors = [];
                self.Count = function() {
                  return self.Items().length;
                }
                self.Items = function() {
                  return getItems();
                };
                self.HasMultipay = false;
                self.SearchItems = function(pattern) {
                  var items = getItems();
                  var results = [];
                  results["TotalQuantity"] = 0;
                  for (var i = 0; i < items.length; i++) {
                    var item = items[i];
                    if (new RegExp(pattern).test(item.id)) {
                      results[results.length] = item;
                      results[item.id] = item;
                      results["TotalQuantity"] += item.qty;
                    }
                  }
                  return results;
                };
                self.SetItems = function(items) {
                  setItems(items);
                }
                self.AddErrors = function(errorsArray) {
                  var allErrors = self.CurrentErrors.concat(errorsArray);
                  var uniqueErrors = [];
                  for (var i = 0, l = allErrors.length; i < l; i++) {
                    if (uniqueErrors.indexOf(allErrors[i]) === -1) {
                      uniqueErrors.push(allErrors[i]);
                    }
                  }
                  self.DisplayErrors(uniqueErrors, true);
                  self.ScrollToErrors();
                };
                self.RemoveErrors = function(errorsArray) {
                  var currentErrors = self.CurrentErrors;
                  var uniqueErrors = [];
                  for (var i = 0, l = currentErrors.length; i < l; i++) {
                    var currentError = currentErrors[i];
                    var alreadyExists = false;
                    for (var j = 0; j < errorsArray.length; j++) {
                      var toRemoveError = errorsArray[j];
                      if (currentErrors.indexOf(toRemoveError) > -1 && currentError == toRemoveError) {
                        alreadyExists = true;
                      }
                    }
                    if (uniqueErrors.indexOf(currentError) === -1 && !alreadyExists) {
                      uniqueErrors.push(currentError);
                    }
                  }
                  self.DisplayErrors(uniqueErrors, true);
                };
                self.ScrollToErrors = function(customElement) {
                  if (self.CurrentErrors.length > 0) {
                    var ele = getErrorElement();
                    $.scrollTo(ele, {
                      top: self.scrollToTopPosition
                    });
                  } else if (customElement) {
                    $.scrollTo(customElement, {
                      top: self.scrollToTopPosition
                    });
                  }
                };

                function getErrorElement() {
                  var ele = $('form').find('span[style="color: #FF0000; font-weight: bold"]');
                  if (ele.length == 0) {
                    //For IE
                    ele = $('form').find('span[style="color: rgb(255, 0, 0); font-weight: bold;"]');
                  }
                  if (ele.length == 0 && $('.vse').length > 0) {
                    ele = $('.vse');
                  }
                  return ele;
                }
                self.UpgradeItem = function(currentCode, newCode) {
                  var items = self.Items();
                  for (var i = 0; i < items.length; i++) {
                    var item = items[i];
                    if (item.id == currentCode) {
                      item.id = newCode;
                      break;
                    }
                  }
                  self.SetItems(items);
                };
                self.DisplayErrors = function(errorsArray, show) {
                  if (errorsArray && errorsArray.length > 0) {
                    var ele = getErrorElement();
                    if (_firstRun) {
                      if (ele.children().length) {
                        $.each(ele.find('li'), function(index, item) {
                          errorsArray.push($(item).text());
                        });
                      }
                    }
                    var html = '<div class="validation-summary-errors"><span>The following errors have occured:</span>' + '<ul>';
                    for (var i = 0; i < errorsArray.length; i++) {
                      if (html.indexOf(errorsArray[i]) < 0) {
                        html += '<li>' + errorsArray[i] + '</li>';
                      }
                    }
                    html += '</ul></div>';
                    self.CurrentErrors = errorsArray;
                    if (!_firstRun || show) {
                      ele.html(html);
                      self.ScrollToErrors();
                    } else {
                      _firstRun = false;
                    }
                  } else if (!_firstRun || show) {
                    var ele = getErrorElement();
                    ele.html('');
                    self.CurrentErrors = [];
                  }
                };
              };
              var _dtmShoppingCart = new DtmShoppingCart();
              //Disable and hide Shipping checkbox if isMultipay = true
              function toggleShippingFields(isMultipay) {
                let shippingCbx = $("[name='ShippingIsDifferentThanBilling']:checkbox");
                let shippingLabel = $("#ShippingIsSame");
                if (!shippingLabel) {
                  shippingLabel = shippingCbx.parent().parent();
                }
                if (isMultipay) {
                  if (shippingCbx.is(":checked")) {
                    shippingCbx.prop("checked", false);
                    toggleShipping();
                  }
                  shippingCbx.prop("disabled", true);
                  shippingLabel.hide();
                } else if ($('#otCARD').length == 0 || $('#otCARD').is(':checked')) {
                  shippingCbx.prop("disabled", false);
                  shippingLabel.show();
                }
              }
              registerEvent("PaymentOptionSelected", function() {
                if (_dtmShoppingCart) {
                  toggleShippingFields(_dtmShoppingCart.HasMultipay);
                }
              });
            </script>
          </div>
        </div>
      </div>
      <div class="form__item">
        <div class="form__group-section">
          <!-- Step 4 -->
          <div class="form__item form__section" data-viewport="">
            <div class="view__scroll form form--frame">
              <fieldset class="form__fieldset">
                <h2 class="form__title">STEP 5: Select Payment Type</h2>
                <div class="form__frame">
                  <!-- Card Type -->
                  <div class="form__span-item form message">
                    <div class="form__group">
                      <div id="cc" class="form__group form__payment-icons"><img id="visaImg" src="/shared/images/payment/visa.svg?v=6.0.1702.1524" alt="visa accepted." width="37"><img id="mastercardImg"
                          src="/shared/images/payment/mastercard.svg?v=6.0.1702.1524" alt="mastercard accepted." width="37"><img id="amexImg" src="/shared/images/payment/amex.svg?v=6.0.1702.1524" alt="amex accepted." width="37"><img id="discoverImg"
                          src="/shared/images/payment/discover.svg?v=6.0.1702.1524" alt="discover accepted." width="37"></div>
                    </div>
                  </div>
                  <div id="paymentInformation" data-express-checkout-order-type="CARD" class="form__span-item">
                    <div class="form__group">
                      <div role="alert" id="vse-payment" data-vse-scroll=""></div>
                      <!-- Card Number -->
                      <div class="form__span-item form message">
                        <div class="form__field-label">
                          <input type="tel" name="CardNumber" id="CardNumber" placeholder="#### #### #### ####" data-required="true" autocomplete="cc-number" class="dtm__restyle form__field " value="" aria-required="true" aria-invalid="true">
                          <label for="CardNumber" class="message__label">
                            <span class="form__error">* </span>Card Number </label>
                          <span class="message__group" role="alert">
                            <span class="message__invalid"> Please enter a valid card number. </span>
                          </span>
                          <input type="hidden" id="CardType" name="CardType">
                        </div>
                      </div>
                      <!-- Card Expiration Month -->
                      <div id="CardExpirationCt" class="form message">
                        <div class="form__field-label">
                          <div class="form form--select message__select">
                            <div class="form__contain">
                              <select autcomplete="cc-exp-month" class="form__field dtm__restyle" data-required="true" id="CardExpirationMonth" name="CardExpirationMonth" aria-required="true" aria-invalid="true">
                                <option value="01">01 - Jan</option>
                                <option value="02">02 - Feb</option>
                                <option value="03">03 - Mar</option>
                                <option value="04">04 - Apr</option>
                                <option value="05">05 - May</option>
                                <option value="06">06 - Jun</option>
                                <option value="07">07 - Jul</option>
                                <option value="08">08 - Aug</option>
                                <option value="09">09 - Sep</option>
                                <option value="10">10 - Oct</option>
                                <option value="11">11 - Nov</option>
                                <option value="12">12 - Dec</option>
                              </select>
                              <span class="form__field form__button">
                                <svg class="icon">
                                  <use href="#icon-chevron"></use>
                                </svg>
                              </span>
                            </div>
                          </div>
                          <label for="CardExpirationMonth" class="message__label"><span class="requiredIcon">*</span>Expiration Date<span class="labelColon">:</span></label>
                          <span class="message__group" role="alert">
                            <span class="message__invalid"> Please choose an expiration month. </span>
                          </span>
                        </div>
                      </div>
                      <!-- Card Expiration Year -->
                      <div id="CardExpirationYearCt" class="form message">
                        <div class="form__field-label">
                          <div class="form form--select message__select">
                            <div class="form__contain">
                              <select autocomplete="cc-exp-year" class="form__field dtm__restyle" id="CardExpirationYear" name="CardExpirationYear" data-required="true">
                                <option value="2023">2023</option>
                                <option value="2024">2024</option>
                                <option value="2025">2025</option>
                                <option value="2026">2026</option>
                                <option value="2027">2027</option>
                                <option value="2028">2028</option>
                                <option value="2029">2029</option>
                                <option value="2030">2030</option>
                                <option value="2031">2031</option>
                                <option value="2032">2032</option>
                                <option value="2033">2033</option>
                              </select>
                              <span class="form__field form__button">
                                <svg class="icon">
                                  <use href="#icon-chevron"></use>
                                </svg>
                              </span>
                            </div>
                          </div>
                          <label for="CardExpirationYear" class="message__label">
                            <span class="form__error">* </span>Card Expiration Year </label>
                          <span class="message__group" role="alert">
                            <span class="message__invalid"> Please enter an expiration year. </span>
                          </span>
                        </div>
                      </div>
                      <!-- Card CVV2 -->
                      <div id="CardCVV2Ct" class="form__span-item form message">
                        <div class="form__field-label form__cvv">
                          <input type="tel" name="CardCvv2" id="CardCvv2" autocomplete="cc-csc" placeholder="###" data-required="true" class="dtm__restyle form__field " value="" aria-required="true" aria-invalid="true">
                          <label for="CardCvv2" class="message__label">
                            <span class="form__error">* </span>CVV2 </label>
                          <span class="message__group" role="alert">
                            <span class="message__invalid"> Please enter a CVV number. </span>
                          </span>
                          <a data-modal-dialog-id="cvv2-modal-dialog" data-modal-dialog-actor="open" data-modal-dialog-iframe="" data-modal-dialog-title="About CVV2" href="/shared/cvv.html" title="Learn What is CVV2" id="cvv2" class="account__link form__link">What is CVV2?</a>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </fieldset>
            </div>
          </div>
          <div id="billingInformation" class="form__item form__section" data-express-checkout-order-type="CARD">
            <div class="form__copy view__scroll">
              <div class="form form--frame">
                <!-- Step 5 -->
                <fieldset class="form__fieldset">
                  <h2 class="form__title">STEP 6: Billing Address</h2>
                  <div class="form__span-item form__frame">
                    <div class="form__group">
                      <!-- First Name -->
                      <div class="form message">
                        <div class="form__field-label">
                          <input type="text" title="First name can only contain letter characters" data-required="true" autocomplete="billing given-name" name="BillingFirstName" id="BillingFirstName" placeholder="*First Name"
                            class="dtm__restyle form__field  o-grid__col @xs-u-vw--100" value="" aria-required="true" aria-invalid="true">
                          <label for="BillingFirstName" class="message__label">
                            <span class="form__error">* </span>First Name </label>
                          <span class="message__group" role="alert">
                            <span class="message__invalid"> Please enter a first name. </span>
                          </span>
                        </div>
                      </div>
                      <!-- Last Name -->
                      <div class="form message">
                        <div class="form__field-label">
                          <input type="text" name="BillingLastName" id="BillingLastName" placeholder="*Last Name" data-required="true" autocomplete="billing family-name" class="dtm__restyle form__field  o-grid__col @xs-u-vw--100" value=""
                            aria-required="true" aria-invalid="true">
                          <label for="BillingLastName" class="message__label">
                            <span class="form__error">* </span>Last Name </label>
                          <span class="message__group" role="alert">
                            <span class="message__invalid"> Please enter a last name. </span>
                          </span>
                        </div>
                      </div>
                      <!-- Street -->
                      <div class="form__span-item form message">
                        <div class="form__field-label">
                          <input type="text" name="BillingStreet" id="BillingStreet" placeholder="*Address" data-required="true" autocomplete="section-bill billing address-line1"
                            class="dtm__restyle form__field  o-grid__col @xs-u-vw--100 ui-autocomplete-input" value="" aria-required="true" aria-invalid="true">
                          <label for="BillingStreet" class="message__label">
                            <span class="form__error">* </span>Address </label>
                          <span class="message__group" role="alert">
                            <span class="message__invalid"> Please enter an address. </span>
                          </span>
                        </div>
                      </div>
                      <!-- Street 2 -->
                      <div class="form__span-item form message">
                        <div class="form__field-label">
                          <input type="text" name="BillingStreet2" id="BillingStreet2" placeholder="Suite / Apt" aria-describedby="BillingStreet2Description" autocomplete="billing address-line2"
                            class="dtm__restyle form__field  o-grid__col @xs-u-vw--100" value="">
                          <label for="BillingStreet2" class="message__label"> Address 2 </label>
                          <span class="message__group" role="alert">
                            <small id="BillingStreet2Description" class="message__label">Example: Suite / Apt., etc. </small>
                            <span class="message__invalid"> Please enter an address. </span>
                          </span>
                        </div>
                      </div>
                      <!-- City -->
                      <div class="form__take-some form message">
                        <div class="form__field-label">
                          <input type="text" name="BillingCity" id="BillingCity" placeholder="*City" data-required="true" autocomplete="billing address-level2" class="dtm__restyle form__field  o-grid__col @xs-u-vw--100" value="" aria-required="true"
                            aria-invalid="true">
                          <label for="BillingCity" class="message__label">
                            <span class="form__error">* </span>City </label>
                          <span class="message__group" role="alert">
                            <span class="message__invalid"> Please enter a city. </span>
                          </span>
                        </div>
                      </div>
                      <!-- State -->
                      <div class="form__take-some form message">
                        <div class="form__field-label" id="billStateParent">
                          <div class="form form--select message__select">
                            <div class="form__contain">
                              <select autocomplete="billing address-level1" class="dtm__restyle form__field" data-required="true" id="BillingState" name="BillingState" aria-required="true" aria-invalid="true">
                                <option value="AL">Alabama</option>
                                <option value="AK">Alaska</option>
                                <option value="AB">Alberta</option>
                                <option value="AZ">Arizona</option>
                                <option value="AR">Arkansas</option>
                                <option value="BC">British Columbia</option>
                                <option value="CA">California</option>
                                <option value="CO">Colorado</option>
                                <option value="CT">Connecticut</option>
                                <option value="DE">Delaware</option>
                                <option value="DC">District Of Columbia</option>
                                <option value="FL">Florida</option>
                                <option value="GA">Georgia</option>
                                <option value="GU">Guam</option>
                                <option value="HI">Hawaii</option>
                                <option value="ID">Idaho</option>
                                <option value="IL">Illinois</option>
                                <option value="IN">Indiana</option>
                                <option value="IA">Iowa</option>
                                <option value="KS">Kansas</option>
                                <option value="KY">Kentucky</option>
                                <option value="LA">Louisiana</option>
                                <option value="ME">Maine</option>
                                <option value="MB">Manitoba </option>
                                <option value="MD">Maryland</option>
                                <option value="MA">Massachusetts</option>
                                <option value="MI">Michigan</option>
                                <option value="MN">Minnesota</option>
                                <option value="MS">Mississippi</option>
                                <option value="MO">Missouri</option>
                                <option value="MT">Montana</option>
                                <option value="NE">Nebraska</option>
                                <option value="NV">Nevada</option>
                                <option value="NB">New Brunswick</option>
                                <option value="NH">New Hampshire</option>
                                <option value="NJ">New Jersey</option>
                                <option value="NM">New Mexico</option>
                                <option value="NY">New York</option>
                                <option value="NL">Newfoundland and Labrador</option>
                                <option value="NC">North Carolina</option>
                                <option value="ND">North Dakota</option>
                                <option value="NT">Northwest Territories</option>
                                <option value="NS">Nova Scotia</option>
                                <option value="NU">Nunavut</option>
                                <option value="OH">Ohio</option>
                                <option value="OK">Oklahoma</option>
                                <option value="ON">Ontario</option>
                                <option value="OR">Oregon</option>
                                <option value="PA">Pennsylvania</option>
                                <option value="PE">Prince Edward Island</option>
                                <option value="PR">Puerto Rico</option>
                                <option value="QC">Quebec</option>
                                <option value="RI">Rhode Island</option>
                                <option value="SK">Saskatchewan</option>
                                <option value="SC">South Carolina</option>
                                <option value="SD">South Dakota</option>
                                <option value="TN">Tennessee</option>
                                <option value="TX">Texas</option>
                                <option value="UT">Utah</option>
                                <option value="VT">Vermont</option>
                                <option value="VI">Virgin Islands</option>
                                <option value="VA">Virginia</option>
                                <option value="WA">Washington</option>
                                <option value="WV">West Virginia</option>
                                <option value="WI">Wisconsin</option>
                                <option value="WY">Wyoming</option>
                                <option value="YT">Yukon</option>
                              </select>
                              <span class="form__field form__button">
                                <svg class="icon">
                                  <use href="#icon-chevron"></use>
                                </svg>
                              </span>
                            </div>
                          </div>
                          <label for="BillingState" class="message__label">
                            <span class="form__error">* </span>State </label>
                          <span class="message__group" role="alert">
                            <span class="message__invalid"> Please choose a state. </span>
                          </span>
                        </div>
                      </div>
                      <!-- Zip Code -->
                      <div class="form__take-some form message">
                        <div class="form__field-label">
                          <input type="text" name="BillingZip" id="BillingZip" placeholder="*Zip Code" data-required="true" autocomplete="billing postal-code" class="dtm__restyle form__field  o-grid__col @xs-u-vw--100" value="" aria-required="true"
                            aria-invalid="true">
                          <label for="BillingZip" class="message__label">
                            <span class="form__error">* </span>Zip Code </label>
                          <span class="message__group" role="alert">
                            <span class="message__invalid"> Please enter a zip code. </span>
                          </span>
                        </div>
                      </div>
                      <!-- Country -->
                      <div class="form message">
                        <div class="form__field-label">
                          <div class="form form--select message__select">
                            <div class="form__contain">
                              <select autocomplete="billing country" class="dtm__restyle form__field" id="BillingCountry" name="BillingCountry">
                                <option value="CAN">Canada</option>
                                <option value="USA">United States</option>
                              </select>
                              <span class="form__field form__button">
                                <svg class="icon">
                                  <use href="#icon-chevron"></use>
                                </svg>
                              </span>
                            </div>
                          </div>
                          <label for="BillingCountry" class="message__label">
                            <span class="form__error">* </span>Country </label>
                          <span class="message__group" role="alert">
                            <span class="message__invalid"> Please choose a country. </span>
                          </span>
                        </div>
                      </div>
                      <!-- Phone -->
                      <div class="form__span-item form message">
                        <div class="form__field-label">
                          <input type="tel" name="Phone" id="Phone" placeholder="*Phone" data-required="true" autocomplete="billing tel" class="dtm__restyle form__field  o-grid__col @xs-u-vw--100" value="" aria-required="true" aria-invalid="true">
                          <label for="Phone" class="message__label">
                            <span class="form__error">* </span>Phone </label>
                          <span class="message__group" role="alert">
                            <span class="message__invalid"> Please enter a phone number. </span>
                          </span>
                        </div>
                      </div>
                      <!-- Email -->
                      <div class="form__span-item form message">
                        <div class="form__field-label">
                          <input type="email" name="Email" id="Email" title="Format example: someone@someplace.com" data-required="true" autocomplete="billing email" placeholder="*Email" class="dtm__restyle form__field  o-grid__col @xs-u-vw--100"
                            value="" aria-required="true" aria-invalid="true">
                          <label for="Email" class="message__label">
                            <span class="form__error">* </span>Email </label>
                          <span class="message__group" role="alert">
                            <span class="message__invalid"> Please enter an email address. </span>
                          </span>
                        </div>
                      </div>
                    </div>
                  </div>
                </fieldset>
              </div>
              <div class="form message" id="ShippingIsSame">
                <div class="form__checkbox-label form__copy">
                  <input type="checkbox" id="ShippingIsDifferentThanBilling" name="ShippingIsDifferentThanBilling" value="true" aria-labelledby="ShippingIsDifferentThanBillingLabel">
                  <input name="ShippingIsDifferentThanBilling" type="hidden" value="false">
                  <label for="ShippingIsDifferentThanBilling" class="form__label">
                    <span class="form__checkbox"></span>
                    <span id="ShippingIsDifferentThanBillingLabel">Check if your shipping address is different than your billing address.</span>
                  </label>
                  <div id="shippingInformation" class="form__span-item form form--frame" style="display: none;">
                    <fieldset class="form__fieldset">
                      <h2 class="form__title">STEP 7: Shipping Address</h2>
                      <div class="form__span-item form__frame">
                        <div class="form__group">
                          <!-- First Name -->
                          <div class="form message">
                            <div class="form__field-label">
                              <input type="text" title="Name can only contain letters" data-required="true" autocomplete="shipping given-name" name="ShippingFirstName" id="ShippingFirstName" placeholder="*First Name"
                                class="dtm__restyle form__field  shipping__field  o-grid__col @xs-u-vw--100" value="" aria-required="true" aria-invalid="true">
                              <label for="ShippingFirstName" class="message__label">
                                <span class="form__error">* </span>First Name </label>
                              <span class="message__group" role="alert">
                                <span class="message__invalid"> Please enter a first name. </span>
                              </span>
                            </div>
                          </div>
                          <!-- Last Name -->
                          <div class="form message">
                            <div class="form__field-label">
                              <input type="text" name="ShippingLastName" id="ShippingLastName" placeholder="*Last Name" data-required="true" autocomplete="shipping family-name"
                                class="dtm__restyle form__field  shipping__field  o-grid__col @xs-u-vw--100" value="" aria-required="true" aria-invalid="true">
                              <label for="ShippingLastName" class="message__label">
                                <span class="form__error">* </span>Last Name </label>
                              <span class="message__group" role="alert">
                                <span class="message__invalid"> Please enter a last name. </span>
                              </span>
                            </div>
                          </div>
                          <!-- Street -->
                          <div class="form__span-item form message">
                            <div class="form__field-label">
                              <input type="text" name="ShippingStreet" id="ShippingStreet" placeholder="*Address" data-required="true" autocomplete="section-ship shipping address-line1"
                                class="dtm__restyle form__field  shipping__field  o-grid__col @xs-u-vw--100 ui-autocomplete-input" value="" aria-required="true" aria-invalid="true">
                              <label for="ShippingStreet" class="message__label">
                                <span class="form__error">* </span>Address </label>
                              <span class="message__group" role="alert">
                                <span class="message__invalid"> Please enter an address. </span>
                              </span>
                            </div>
                          </div>
                          <!-- Street 2 -->
                          <div class="form__span-item form message">
                            <div class="form__field-label">
                              <input type="text" name="ShippingStreet2" id="ShippingStreet2" autocomplete="shipping address-line2" placeholder="Suite / Apt" aria-describedby="ShippingStreet2Description"
                                class="dtm__restyle form__field shipping__field  o-grid__col @xs-u-vw--100" value="">
                              <label for="ShippingStreet2" class="message__label"> Address 2 </label>
                              <span class="message__group" role="alert">
                                <small id="ShippingStreet2Description" class="message__label">Example: Street / Apt., etc.</small>
                                <span class="message__invalid"> Please enter an address. </span>
                              </span>
                            </div>
                          </div>
                          <!-- City -->
                          <div class="form__take-some form message">
                            <div class="form__field-label">
                              <input type="text" name="ShippingCity" id="ShippingCity" placeholder="*City" autocomplete="shipping address-level2" data-required="true" class="dtm__restyle form__field  shipping__field  o-grid__col @xs-u-vw--100"
                                value="" aria-required="true" aria-invalid="true">
                              <label for="ShippingCity" class="message__label">
                                <span class="form__error">* </span>City </label>
                              <span class="message__group" role="alert">
                                <span class="message__invalid"> Please enter a city. </span>
                              </span>
                            </div>
                          </div>
                          <!-- State -->
                          <div class="form__take-some form message">
                            <div class="form__field-label" id="shipStateParent">
                              <div class="form form--select message__select">
                                <div class="form__contain">
                                  <select autocomplete="shipping address-level1" class="dtm__restyle form__field shipping__field" id="ShippingState" name="ShippingState">
                                    <option value="AL">Alabama</option>
                                    <option value="AK">Alaska</option>
                                    <option value="AB">Alberta</option>
                                    <option value="AZ">Arizona</option>
                                    <option value="AR">Arkansas</option>
                                    <option value="BC">British Columbia</option>
                                    <option value="CA">California</option>
                                    <option value="CO">Colorado</option>
                                    <option value="CT">Connecticut</option>
                                    <option value="DE">Delaware</option>
                                    <option value="DC">District Of Columbia</option>
                                    <option value="FL">Florida</option>
                                    <option value="GA">Georgia</option>
                                    <option value="GU">Guam</option>
                                    <option value="HI">Hawaii</option>
                                    <option value="ID">Idaho</option>
                                    <option value="IL">Illinois</option>
                                    <option value="IN">Indiana</option>
                                    <option value="IA">Iowa</option>
                                    <option value="KS">Kansas</option>
                                    <option value="KY">Kentucky</option>
                                    <option value="LA">Louisiana</option>
                                    <option value="ME">Maine</option>
                                    <option value="MB">Manitoba </option>
                                    <option value="MD">Maryland</option>
                                    <option value="MA">Massachusetts</option>
                                    <option value="MI">Michigan</option>
                                    <option value="MN">Minnesota</option>
                                    <option value="MS">Mississippi</option>
                                    <option value="MO">Missouri</option>
                                    <option value="MT">Montana</option>
                                    <option value="NE">Nebraska</option>
                                    <option value="NV">Nevada</option>
                                    <option value="NB">New Brunswick</option>
                                    <option value="NH">New Hampshire</option>
                                    <option value="NJ">New Jersey</option>
                                    <option value="NM">New Mexico</option>
                                    <option value="NY">New York</option>
                                    <option value="NL">Newfoundland and Labrador</option>
                                    <option value="NC">North Carolina</option>
                                    <option value="ND">North Dakota</option>
                                    <option value="NT">Northwest Territories</option>
                                    <option value="NS">Nova Scotia</option>
                                    <option value="NU">Nunavut</option>
                                    <option value="OH">Ohio</option>
                                    <option value="OK">Oklahoma</option>
                                    <option value="ON">Ontario</option>
                                    <option value="OR">Oregon</option>
                                    <option value="PA">Pennsylvania</option>
                                    <option value="PE">Prince Edward Island</option>
                                    <option value="PR">Puerto Rico</option>
                                    <option value="QC">Quebec</option>
                                    <option value="RI">Rhode Island</option>
                                    <option value="SK">Saskatchewan</option>
                                    <option value="SC">South Carolina</option>
                                    <option value="SD">South Dakota</option>
                                    <option value="TN">Tennessee</option>
                                    <option value="TX">Texas</option>
                                    <option value="UT">Utah</option>
                                    <option value="VT">Vermont</option>
                                    <option value="VI">Virgin Islands</option>
                                    <option value="VA">Virginia</option>
                                    <option value="WA">Washington</option>
                                    <option value="WV">West Virginia</option>
                                    <option value="WI">Wisconsin</option>
                                    <option value="WY">Wyoming</option>
                                    <option value="YT">Yukon</option>
                                  </select>
                                  <span class="form__field form__button">
                                    <svg class="icon">
                                      <use href="#icon-chevron"></use>
                                    </svg>
                                  </span>
                                </div>
                              </div>
                              <label for="ShippingState" class="message__label">
                                <span class="form__error">* </span>State </label>
                              <span class="message__group" role="alert">
                                <span class="message__invalid"> Please choose a state. </span>
                              </span>
                            </div>
                          </div>
                          <!-- Zip Code -->
                          <div class="form__take-some form message">
                            <div class="form__field-label">
                              <input type="text" name="ShippingZip" id="ShippingZip" placeholder="*Zip Code" autocomplete="shipping postal-code" data-required="true" class="dtm__restyle form__field  o-grid__col @xs-u-vw--100" value=""
                                aria-required="true" aria-invalid="true">
                              <label for="ShippingZip" class="message__label">
                                <span class="form__error">* </span>Zip Code </label>
                              <span class="message__group" role="alert">
                                <span class="message__invalid"> Please enter a zip code. </span>
                              </span>
                            </div>
                          </div>
                          <!-- Country -->
                          <div class="form message">
                            <div class="form__field-label">
                              <div class="form form--select message__select">
                                <div class="form__contain">
                                  <select autocomplete="shipping country" class="dtm__restyle form__field" id="ShippingCountry" name="ShippingCountry">
                                    <option value="CAN">Canada</option>
                                    <option value="USA">United States</option>
                                  </select>
                                  <span class="form__field form__button">
                                    <svg class="icon">
                                      <use href="#icon-chevron"></use>
                                    </svg>
                                  </span>
                                </div>
                              </div>
                              <label for="ShippingCountry" class="message__label">
                                <span class="form__error">* </span>Country </label>
                              <label class="message__group" role="alert">
                                <span class="message__invalid"> Please choose a country. </span>
                              </label>
                            </div>
                          </div>
                        </div>
                      </div>
                    </fieldset>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div class="form form--checkbox-border message">
      <div class="form__checkbox-label">
        <input id="Terms" name="Terms" type="checkbox" value="True" data-required="" aria-required="true" aria-invalid="true">
        <label class="form__label" id="TermsLabel" for="Terms">
          <span class="form__checkbox"></span>
          <span>I accept the <a href="/CPISWAN/11.0000/Terms.cgi" target="_blank" data-track="dtm-link5">terms and conditions</a> of this purchase and use of this website, including the
            <a href="/CPISWAN/11.0000/ArbitrationAgreement.cgi" target="_blank" data-track="dtm-link6">arbitration agreement.</a></span>
        </label>
        <div class="message__group" role="alert">
          <span id="terms-error-message" class="message__invalid">Please read and accept the Terms and Conditions and Arbitration Agreement.</span>
        </div>
      </div>
    </div>
    <div class="form__copy form__action-text">
      <div class="form__action">
        <button type="submit" id="AcceptOfferButton" name="acceptOffer" class="button" data-express-checkout-order-type="card">
          <span class="order-btn">
            <span>Process Order</span>
          </span>
        </button>
      </div>
      <p id="ProcessOrderDisclaimer" data-express-checkout-order-type="card">By clicking Process Order, your credit card will be charged the amount above. Click only once.</p>
      <div class="form__ssl">
        <img src="/shared/images/PositiveSSL_tl_trans.png" alt="Secure Site SSL Encryption" width="100" height="100" loading="lazy">
      </div>
    </div>
  </div>
  <span class="svg-symbols">
    <svg>
      <symbol id="icon-chevron" x="0px" y="0px" viewBox="0 0 25.228 14.029">
        <g transform="translate(1.414 1.414)">
          <path d="M0,11.2,11.2,0m0,22.4L0,11.2" transform="translate(0 11.2) rotate(-90)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"></path>
        </g>
      </symbol>
    </svg>
  </span>
</form>

Text Content

EXCLUSIVE TV OFFER - Not Available in Stores! Order Now
Skip To Main Content?
Better Sleep Has Arrived!
Order Now or call
800-376-8720
Now Only 2 Payments of $29.99
was $120Now Only
2 Payments of
$ 29 99
FREE SHIPPING
Bundle and save on additional pillows!
$10 OFF each when you order a set of 2 See order form for details.
Watch The Show How To Use Expert Review User Testimonials


FEATURES & BENEFITS

 * Patented, Ergonomic Design Helps align your spine to reduce and relieve
   pressure in your neck, back shoulders, hips & legs
 * 7-in-1 Full Body Comfort Pillow provides full body support to cradle ANY body
   shape from head to toe.
 * Sleep in ANY Position pillow comforts back, side or stomach sleepers

Order Now


PROVIDES PRESSURE RELIEF

Before
 * Poor cervical neck support
 * Poor spine alignment
 * Pelvis rotation twisting sensitive joints
 * Uncomfortable knee & leg bone pressure

Body Pressure Map - Before
After
 * Cradles head, neck & shoulders
 * Improves lumbar & spine alignment
 * Helps stabilize your pelvis
 * Cushions legs & knees

Body Pressure Map - After


ERGONOMIC, FULL BODY COMFORT

 * Ergonomic design eliminates bulky pillows
 * Micro-coil spring fiber for long lasting support
 * Tapered fit for proper alignment to easily
   fit legs & slide under sheets
 * Breathable fabric for cooler sleep

Designed & Developed in Charlotte, NC


SLEEP SUPPORT IN ANY POSITION!

Side Sleppers Back Sleepers Stomach Sleepers Pregnancy


BETTER SLEEP HAS ARRIVED!

Adjustable, Full Body Support
to fit all body types Breathable, Cooler Fabric
cradles your body Easy to Clean
keeping pillow fresh


SIGNUP TO LEARN ABOUT NEW PRODUCTS AND SPECIAL OFFERS

Subscribe
This Offer Is Not Available In Stores
Fill out the form below to order your Contour Swan Pillow Now!


STEP 1: CHOOSE YOUR PAYMENT PLAN

Pay In Full Today
Or
Pay in 2 Easy Monthly Installments
Please choose a payment plan


STEP 2: CHOOSE YOUR PACKAGE

TV Offer 1 Contour Swan Pillow
1 Free Laundry Care Bag
FREE SHIPPING
List Price: $80 $59.98
List Price: $80 $59.98 2 Payments of $29.99
25% off
Double Offer 2 Contour Swan Pillows
2 Free Laundry Care Bags
FREE SHIPPING
List Price: $160 $99.96 Only $49.98 per pillow!
List Price: $160 $99.96 / $49.98 per pillow 2 Payments of $49.98
37% off
Save An Additional $10 Per Pillow!


STEP 3: OPTIONAL ADD-ONS

YES! Please include a Custom Fit Pillowcase for each pillow ordered today!
$24.99 + FREE SHIPPING
(per pillow ordered)
 * Protect and extend the life of your pillow
 * Cotton poly blend
 * Machine wash and dry


*Indicates required field


STEP 4: REVIEW YOUR ORDER

STEP 2: Review Your Order

Description Quantity Price S&H Contour Swan Pillow 2-pack01234 $99.96$0.00 Sub
Total: $99.96 State Tax:   Estimated Order Total $99.96




STEP 5: SELECT PAYMENT TYPE

* Card Number Please enter a valid card number.
01 - Jan 02 - Feb 03 - Mar 04 - Apr 05 - May 06 - Jun 07 - Jul 08 - Aug 09 - Sep
10 - Oct 11 - Nov 12 - Dec
*Expiration Date: Please choose an expiration month.
20232024202520262027202820292030203120322033
* Card Expiration Year Please enter an expiration year.
* CVV2 Please enter a CVV number. What is CVV2?


STEP 6: BILLING ADDRESS

* First Name Please enter a first name.
* Last Name Please enter a last name.
* Address Please enter an address.
Address 2 Example: Suite / Apt., etc. Please enter an address.
* City Please enter a city.
Alabama Alaska Alberta Arizona Arkansas British Columbia California Colorado
Connecticut Delaware District Of Columbia Florida Georgia Guam Hawaii Idaho
Illinois Indiana Iowa Kansas Kentucky Louisiana Maine Manitoba Maryland
Massachusetts Michigan Minnesota Mississippi Missouri Montana Nebraska Nevada
New Brunswick New Hampshire New Jersey New Mexico New York Newfoundland and
Labrador North Carolina North Dakota Northwest Territories Nova Scotia Nunavut
Ohio Oklahoma Ontario Oregon Pennsylvania Prince Edward Island Puerto Rico
Quebec Rhode Island Saskatchewan South Carolina South Dakota Tennessee Texas
Utah Vermont Virgin Islands Virginia Washington West Virginia Wisconsin Wyoming
Yukon
* State Please choose a state.
* Zip Code Please enter a zip code.
Canada United States
* Country Please choose a country.
* Phone Please enter a phone number.
* Email Please enter an email address.
Check if your shipping address is different than your billing address.


STEP 7: SHIPPING ADDRESS

* First Name Please enter a first name.
* Last Name Please enter a last name.
* Address Please enter an address.
Address 2 Example: Street / Apt., etc. Please enter an address.
* City Please enter a city.
Alabama Alaska Alberta Arizona Arkansas British Columbia California Colorado
Connecticut Delaware District Of Columbia Florida Georgia Guam Hawaii Idaho
Illinois Indiana Iowa Kansas Kentucky Louisiana Maine Manitoba Maryland
Massachusetts Michigan Minnesota Mississippi Missouri Montana Nebraska Nevada
New Brunswick New Hampshire New Jersey New Mexico New York Newfoundland and
Labrador North Carolina North Dakota Northwest Territories Nova Scotia Nunavut
Ohio Oklahoma Ontario Oregon Pennsylvania Prince Edward Island Puerto Rico
Quebec Rhode Island Saskatchewan South Carolina South Dakota Tennessee Texas
Utah Vermont Virgin Islands Virginia Washington West Virginia Wisconsin Wyoming
Yukon
* State Please choose a state.
* Zip Code Please enter a zip code.
Canada United States
* Country Please choose a country.
I accept the terms and conditions of this purchase and use of this website,
including the arbitration agreement.
Please read and accept the Terms and Conditions and Arbitration Agreement.
Process Order

By clicking Process Order, your credit card will be charged the amount above.
Click only once.


OFFER DETAILS:

Order your Contour Swan Pillow for 2 easy payments of $29.99. You may also
choose to make one convenient payment of $59.98. See order form for additional
offers including a 2-pack of pillows and our Custom Fit Pillowcase. All orders
include FREE SHIPPING.

State sales tax will be charged where applicable. For the 2-payment option, tax
on the full product price will be included on today's payment. We're sorry, but
this product cannot be shipped to a PO Box.

90-Day Money Back Comfort Guarantee: If for any reason you are not completely
satisfied with your product, simply return it within 90 days for a full credit
or refund (less any S&H). Please see Return Policy for full details.

Orders shipping to Canada and non-contiguous US locations will be charged a
$14.99 Shipping Surcharge per pillow. Shipping time varies per location outside
contiguous United States. Please expect Canadian deliveries within 6 to 10 days
and more distant territories may take up to 2 weeks.

Home FAQ Customer Service Shipping Policy Return Policy Privacy Policy Security
Policy Arbitration Agreement California Consumer Privacy Act Disclosures Terms
and Conditions Site Map Order Now
Manage Contact Settings
7z5xz41c0n0e8f85gnwmlsjjcwhsrj.html


THANK YOU FOR VISITING! WE JUST HAVE ONE QUESTION BEFORE YOU GO. WHAT IS YOUR
MAIN REASON FOR NOT ORDERING TODAY?

I’ll be back! I’m just not ready to order yet.
Not sure if this is a good value.
I want to buy it/see it at the store.
I am not sure if this is the best body pillow for me.
Other


Submit