﻿var _oProductComparison;
var _sIdLastPopupOptionOpened;

function initProductComparisonButton() {
  _oProductComparison = new ProductComparisonButton();
  _oProductComparison.idTimeOutPopup = null;
  _oProductComparison.mouseInPopup = false;
  _oProductComparison.mouseInPopupOpener = false;
  _oProductComparison.disablePopup = false;
  _oProductComparison.idProductComparisonButtonToClose = null;

  $j(document).ready(function() {

    $j(".comparisonButton").mouseenter(function() {
      var iPopupPositionTop;
      var iPopupHeight;
      var iPopupNewPosition;
      var iBtnOffset = $j(this).offset();
      var iBtnHeight = $j(this).height();

      var oJQDivBtnCompare = $j("#" + this.getAttribute("idDivBtnCompare"));

      _oProductComparison.mouseInPopupOpener = true;

      oJQDivBtnCompare.css("display", "block");
      iPopupPositionTop = oJQDivBtnCompare.offset().top - $j(window).scrollTop();
      iPopupHeight = oJQDivBtnCompare.outerHeight(true);

      if ((iPopupPositionTop + iPopupHeight) > $j(window).height()) {
        iPopupNewPosition = -((oJQDivBtnCompare.offset().top - iBtnOffset.top) + iPopupHeight);
        oJQDivBtnCompare.css("marginTop", iPopupNewPosition);
      }
      else {
        oJQDivBtnCompare.css("marginTop", "");
      }

      oJQDivBtnCompare.css("left", iBtnOffset.left);
      oJQDivBtnCompare.css("top", iBtnOffset.top + iBtnHeight);

      oJQDivBtnCompare.css("display", "none");
      ProductComparisonButton.showPopupAfterDelay(300, this.getAttribute("idDivBtnCompare"));

    }).mouseleave(function() {
      _oProductComparison.mouseInPopupOpener = false;
      ProductComparisonButton.hidePopupAfterDelay(300, this.getAttribute("idDivBtnCompare"));
    });


    $j(".divbtnCompare").mouseenter(function() {
      _oProductComparison.mouseInPopup = true;
    }).mouseleave(function() {
      _oProductComparison.mouseInPopup = false;
      ProductComparisonButton.hidePopupAfterDelay(300, this.id);
    });
  });
}

//Class
function ProductComparisonButton()
{ }

ProductComparisonButton.showPopupAfterDelay = function(viDelay, vsToShow) {
  if (_oProductComparison.idTimeOutPopup) {
    clearTimeout(_oProductComparison.idTimeOutPopup);
  }
  _oProductComparison.idTimeOutPopup = setTimeout(function() {
    if (_oProductComparison.idTimeOutPopup) {
      clearTimeout(_oProductComparison.idTimeOutPopup);
    }
    if (!_oProductComparison.disablePopup && (_oProductComparison.mouseInPopup || _oProductComparison.mouseInPopupOpener)) {
      if (_oProductComparison.idProductComparisonButtonToClose) {
        document.getElementById(_oProductComparison.idProductComparisonButtonToClose).style.display = "none";
      }
      document.getElementById(vsToShow).style.display = "block";
      _oProductComparison.idProductComparisonButtonToClose = vsToShow;
    }
  }, viDelay);
}

ProductComparisonButton.hidePopupAfterDelay = function(viDelay, vsToShow) {
  if (_oProductComparison.idTimeOutPopup) {
    clearTimeout(_oProductComparison.idTimeOutPopup);
  }

  _oProductComparison.idTimeOutPopup = setTimeout(function() {
    if ((!_oProductComparison.mouseInPopup && !_oProductComparison.mouseInPopupOpener)) {
      document.getElementById(vsToShow).style.display = "none";
      document.getElementById(vsToShow).style.marginTop = "";
      document.getElementById(vsToShow).style.left = "auto";
    }
  }, viDelay);
}

function initProductOption() {
  var sIdProductOption;

  $j(document).ready(function() {
    $j(".divProductOption").each(function() {
      sIdProductOption = "#" + this.getAttribute("idDivOptionBody");

      if ($j(sIdProductOption).length > 0 && !$j(sIdProductOption)[0].hasHeightInitialized) {
        if ($j(this).height() < 175) {
          $j(sIdProductOption).css("height", "auto");
        }
        else {
          $j(sIdProductOption).css("height", "175px");
        }
        $j(sIdProductOption)[0].hasHeightInitialized = true;
      }
    });

    $j(".productOptionButton").each(function() {
      // Check if the event has not been already bound
      if (!this.hasProductOptionClickEvent) {
        $j(this).click(function() {
          var sIdAddToCartBtn = this.id;
          var iProductOptionNewPos;
          var oAddToCartOffset;
          var oDiv = document.getElementById(this.getAttribute("idDivProductOption"));

          if (_sIdLastPopupOptionOpened && oDiv.id != _sIdLastPopupOptionOpened) {
            $j("#" + _sIdLastPopupOptionOpened).hide();
            _sIdLastPopupOptionOpened = null;
          }

          if (oDiv) {
            if (oDiv.style.display == "inline") {
              oDiv.style.display = "none";
            }
            else {
              oDiv.style.display = "inline";

              _sIdLastPopupOptionOpened = oDiv.id;

              if (oDiv.previousSibling) {

                if (oDiv.previousSibling.id) {

                  sIdAddToCartBtn = oDiv.previousSibling.id;
                  oAddToCartOffset = $j("#" + sIdAddToCartBtn).offset()

                  iProductOptionNewPos = -($j("#" + sIdAddToCartBtn).width());
                  iProductOptionNewPos = iProductOptionNewPos - (($j(oDiv).width() / 2) - ($j("#" + sIdAddToCartBtn).width() / 2));
                }
                else {
                  oAddToCartOffset = $j("#" + sIdAddToCartBtn).offset()
                  iProductOptionNewPos = -($j("#" + sIdAddToCartBtn).width());
                  iProductOptionNewPos = iProductOptionNewPos - (($j(oDiv).width() / 2) - ($j("#" + sIdAddToCartBtn).width() ));

                }
                if (sIdAddToCartBtn) {

                  $j(oDiv).css("left", "auto");
                  $j(oDiv).css("margin-left", iProductOptionNewPos);
                }
              }
              else {
                oAddToCartOffset = $j("#" + sIdAddToCartBtn).offset()
                iProductOptionNewPos = -($j("#" + sIdAddToCartBtn).width());
                iProductOptionNewPos = iProductOptionNewPos - (($j(oDiv).width() / 2) - ($j("#" + sIdAddToCartBtn).width() ));
                
                if (sIdAddToCartBtn) {

                  $j(oDiv).css("left", "auto");
                  $j(oDiv).css("margin-left", iProductOptionNewPos);
                  $j(oDiv).css("margin-top", 50);
                }
              }

             

              if ($j(oDiv).find("div.divProductOptionBody").length == 0) {
                //The content is not loaded, load it
                $j(oDiv).find("input.loadContent").click();
              }
            }
          }
        });
        this.hasProductOptionClickEvent = true;
      }
    });
  });
}