/home/bdqbpbxa/demo-subdomains/homesearch.goodface.com.ua/frontend/js/script.js
// Custom scrollbar initialization
$(document).ready(function () {
  if ($(".--custom-scrollbar").length) {
    $(".--custom-scrollbar").each(function () {
      $(this).overlayScrollbars({
        className: "os-theme-dark",

        scrollbars: {
          clickScrolling: true,
        },
      });
    });
  }
});

// Set default value to dropdown
$(document).ready(function () {
  if ($(".--dropdown").length) {
    $(".--dropdown").each(function () {
      if (!$(this).find(".--dropdown__clear").length) {
        let text = $(this).find(".--dropdown__list-item").eq(0).text().trim();
        if ($(this).find(".--dropdown__value .--dropdown__value-text").length) {
          $(this).find(".--dropdown__value-text").html(text);
        } else {
          $(this).find(".--dropdown__value").html(text);
        }

        $(this).find("input").attr("value", text).change();
      }
    });
  }
});

// Show file name
$(document).on("change", 'input[type="file"]', function () {
  let container = $(this).closest(".file-uploader");
  let file = $(this).val();
  if (file) {
    let fileName = file.split("/").pop().split("\\").pop();
    container.find(".file-uploader__content").text(fileName);
    container.addClass("-file-uploaded");
  } else {
    container.removeClass("-file-uploaded");
  }
});

// Check header color on load
let headerDefaultClass = false;
$(document).ready(function () {
  let header = $(".header");
  if (header.data("default-color") === "white") {
    headerDefaultClass = "-white-mode";
    header.addClass("-white-mode");
  }
});

// Fill Header after scroll

// $(document).ready(addHeaderBg);
// $(window).scroll(addHeaderBg);

let lastScroll = 0;

$(window).on("scroll", function () {
  let header = $(".header");
  let scrollTop = $(window).scrollTop();

  if (scrollTop > 0) {
    header.addClass("-has-bg");
    if (!headerDefaultClass) {
      header.addClass("-white-mode");
    }
  } else {
    if (!$("body").hasClass("-scroll-lock")) {
      header.removeClass("-has-bg");
      if (!headerDefaultClass) {
        header.removeClass("-white-mode");
      }
    }
  }

  if (scrollTop > lastScroll) {
    if (scrollTop - lastScroll === scrollTop || scrollTop <= 0) {
    } else {
      header.addClass("-hide");
    }
  } else {
    header.removeClass("-hide");
  }

  lastScroll = scrollTop;
});

// Add shadow to bottom block on mob
function addShadowToButton() {
  const mobileMenu = $(".mobile-menu__list");
  if (mobileMenu.length) {
    let bottomBlock = mobileMenu.closest(".mobile-menu").find(".mobile-menu__bottom");
    if (mobileMenu[0].scrollHeight > mobileMenu[0].clientHeight) {
      bottomBlock.addClass("-has-shadow");
    } else {
      bottomBlock.removeClass("-has-shadow");
    }
  }
}

$(window).on("load resize", addShadowToButton);
fullTransitionendCallback(".mobile-menu__list .header-dropdown__visible", addShadowToButton, "color");

// Open/close mobile menu
$(document).on("click", ".open-mobile-menu", function () {
  if ($(".mobile-menu").hasClass("-active")) {
    unlockScroll();
  } else {
    lockScroll();
  }
  $(".mobile-menu").toggleClass("-active");
  $(".mobile-menu-bg").toggleClass("-active");
});

$(document).on("click", ".mobile-menu-bg.-active", function () {
  unlockScroll();
  $(".mobile-menu").toggleClass("-active");
  $(".mobile-menu-bg").toggleClass("-active");
});

// Open hovers dropdown on mob
$(document).on("click", ".--hover-dropdown", function () {
  $(this).toggleClass("-active");
});

customClickOutsideCallback(".--hover-dropdown.-active", function () {
  $(".--hover-dropdown.-active").removeClass("-active");
});

// Callback after load all child images
function onLoadChildImages(el, callback) {
  el.data("loaded-images", "0");

  const images = el.find("img");
  const imagesCount = images.length;

  images.on("load", function () {
    $(this).outerWidth();

    if (!$(this).hasClass("-loaded")) {
      let loadedImages = Number(el.data("loaded-images"));

      loadedImages++;

      if (loadedImages === imagesCount) {
        setTimeout(() => {
          if (callback) callback();
        }, 100);
      } else {
        el.data("loaded-images", loadedImages);
      }
    } else {
      setTimeout(() => {
        if (callback) callback();
      }, 100);
    }
  });
}

// Conveyor line functionality
const conveyor = $(".conveyor-belt__belt");
function conveyorReady(conveyor) {
  let thisConveyor = conveyor;
  const part = thisConveyor.find(".conveyor-belt__belt-part");
  const partWidth = part.outerWidth();
  const windowWidth = window.screen.width;

  let partDublicateCount;
  let partHtml = part[0].outerHTML;
  let appendHtml = "";

  if (partWidth >= windowWidth) {
    partDublicateCount = 1;
  } else {
    partDublicateCount = Math.ceil(windowWidth / partWidth) - 1;
  }

  for (var i = 0; i < partDublicateCount; i++) {
    appendHtml += partHtml;
  }

  thisConveyor.append(appendHtml);

  lazyload(".conveyor-belt__belt");

  startConveyorAnimation(thisConveyor, partWidth);
}

function startConveyorAnimation(conveyor, partWidth) {
  let index = 0.7;
  if (!isPc) {
    index = 0.9;
  }
  // const speed = index * (partWidth / 100);
  const speed = 18;

  const animationVal = `conveyor-part ${speed}s linear infinite`;

  conveyor.find(".conveyor-belt__belt-part").css({
    animation: animationVal,
  });
}

// Conveyor start
conveyor.each(function () {
  const conveyor = $(this);

  onLoadChildImages(conveyor, function () {
    conveyorReady(conveyor);
  });
});

function swiperInit() {
  let swiperContainer = $(".testimonials");
  if (swiperContainer.length) {
    let testimonialsSwiper = new Swiper(swiperContainer[0], {
      slidesPerView: 1,
      spaceBetween: 66,
      speed: 900,
      autoHeight: true,
      navigation: {
        nextEl: swiperContainer.find(".testimonials__navigation-button.swiper-button-next")[0],
        prevEl: swiperContainer.find(".testimonials__navigation-button.swiper-button-prev")[0],
      },
      pagination: {
        el: swiperContainer.find(".swiper-pagination")[0],
        type: "bullets",
        clickable: true,
      },
      breakpoints: {
        760: {
          spaceBetween: 80,
        },
      },
    });
  }
}

$(window).on("load", swiperInit);

// Open/close modal windows

$(document).on("click", ".open-modal", function () {
  openModalWindow($(this));
});

$(document).on("click", ".modal-window__close", closeModalWindow);

$(document).on("click", ".modal-window__video-video", function () {
  let video = $(this).find("video")[0];
  if ($(this).hasClass("-active")) {
    video.pause();
  } else {
    video.play();
  }
  $(this).toggleClass("-active");
});

function openModalWindow(button) {
  let modalWrapper = $(".modals-wrapper");
  let modalName = button.data("to-modal");
  let modalWindow = modalWrapper.find($(`.modal-window[data-modal-name="${modalName}"]`));

  if (modalWindow.length) {
    lockScroll();
    modalWindow.addClass("-active");
    modalWrapper.addClass("-active");
    lazyload(modalWindow);
  }
}

function closeModalWindow() {
  let activeModal = $(".modal-window.-active");
  if ($(".modals-wrapper.-active").length) {
    let iframe = activeModal.find("iframe");
    activeModal.find(".modal-window__video-video.-active").click();
    iframe.attr("src", iframe.attr("src"));
    $(".modals-wrapper.-active").removeClass("-active");
    activeModal.removeClass("-active");
    unlockScroll();
  }
}

customClickOutsideCallback(".modal-window", function (e, selector) {
  closeModalWindow();
});

// ROI number formatted

function formatNumber(number) {
  return new Intl.NumberFormat("en-US").format(number);
}

function deFormatNumber(number) {
  return parseFloat(number.replaceAll(",", ""));
}

$(".calculator-question-box input").on("input", function () {
  this.value = this.value.replace(/[^\d.]/g, "");
  this.value = this.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
  getAllNumbers();
  calculatingROI();
});

function calculatorReady() {
  let container = $(".calculator-item-result");
  if (container.length) {
    container.each(function () {
      let text = formatNumber($(this).find(".result span").html());
      $(this).find(".result span").html(text);
    });
  }
}

$(document).ready(function () {
  calculatorReady();
});

// ROI calculator

const calculatingObj = {};
function getAllNumbers() {
  calculatingObj.targetTurnover = deFormatNumber($(".input-box[data-property-name='target-turnover'] input").val());
  calculatingObj.averageFee = deFormatNumber($(".input-box[data-property-name='average-fee'] input").val());
  calculatingObj.saleConversion = deFormatNumber($(".input-box[data-property-name='sale-conversion'] input").val());
  calculatingObj.valuationConversionRate = deFormatNumber(
    $(".input-box[data-property-name='valuation-conversion-rate'] input").val()
  );
  calculatingObj.numberOfBranches = deFormatNumber(
    $(".input-box[data-property-name='number-of-branches'] input").val()
  );

  calculatingObj.individualLetterPrice = deFormatNumber(
    $('.calculator-item-result[data-property-name="individual-letter-price"] .result span').html()
  );
  calculatingObj.branchSubscription = deFormatNumber(
    $('.calculator-item-result[data-property-name="monthly-cost-per-branch"] .result span').html()
  );
}

function calculatingROI() {
  calculatingObj.salesNeeded = Math.ceil(calculatingObj.targetTurnover / calculatingObj.averageFee);
  calculatingObj.instructionsNeeded = Math.ceil((calculatingObj.salesNeeded / calculatingObj.saleConversion) * 100);
  calculatingObj.valuationsNeeded = Math.ceil(
    (calculatingObj.instructionsNeeded / calculatingObj.valuationConversionRate) * 100
  );
  calculatingObj.targetedProspectingLetters = calculatingObj.valuationsNeeded * 90;

  calculatingObj.monthlyTargetedProspectingLetters = calculatingObj.targetedProspectingLetters / 12;
  calculatingObj.monthlyTargetedProspectingLettersCost =
    calculatingObj.monthlyTargetedProspectingLetters * calculatingObj.individualLetterPrice;
  calculatingObj.monthlySubscriptionCost = calculatingObj.branchSubscription * calculatingObj.numberOfBranches;
  calculatingObj.monthlyAllPrice =
    calculatingObj.monthlySubscriptionCost + calculatingObj.monthlyTargetedProspectingLettersCost;

  calculatingObj.yearsTargetedProspectingLettersCost = calculatingObj.monthlyTargetedProspectingLettersCost * 12;
  calculatingObj.yearsSubscriptionCost = calculatingObj.monthlySubscriptionCost * 12;
  calculatingObj.yearsAllPrice =
    calculatingObj.yearsSubscriptionCost + calculatingObj.yearsTargetedProspectingLettersCost;

  calculatingObj.roiInPercent = Math.round((calculatingObj.targetTurnover / calculatingObj.yearsAllPrice) * 100);
  calculatingObj.roiInX = Math.round(calculatingObj.targetTurnover / calculatingObj.yearsAllPrice);

  checkResultStatus();
  DisplayROIResult();
}

function checkResultStatus() {
  let statusContainer = $("[data-can-has-status]");

  statusContainer.each(function () {
    $(this).removeClass("-negative -positive");
  });
  if (calculatingObj.roiInPercent < 100 || calculatingObj.roiInPercent === "NaN") {
    calculatingObj.roiInPercent = calculatingObj.roiInPercent - 100;
    calculatingObj.roiInX = calculatingObj.roiInPercent / 100;

    statusContainer.each(function () {
      $(this).addClass("-negative");
    });
  } else if (calculatingObj.roiInPercent > 100) {
    statusContainer.each(function () {
      $(this).addClass("-positive");
    });
  } else if (calculatingObj.roiInPercent === 100) {
    statusContainer.each(function () {
      $(this).removeClass("-negative -positive");
    });
  }
}

function DisplayROIResult() {
  let globalResult = $(".calculator-result__global .counter");
  let resultInPercent = $('.calculator-item-result[data-property-name="return-on-investment-percent"] .result span');
  let resultInX = $('.calculator-item-result[data-property-name="return-on-investment-x"] .result span');
  let monthlyGlobalResult = $('.calculator-item-result[data-property-name="result-per-month"] .result span');

  let period = $(".calculator-top-result__dropdown input").val();

  let monthlySubscriptionCost = $(
    '.calculator-item-result[data-property-name="monthly-subscription-cost"] .result span'
  );
  let monthlyLetterCost = $('.calculator-item-result[data-property-name="monthly-letter-cost"] .result span');
  let targetedProspectingLetters = $(
    '.calculator-item-result[data-property-name="targeted-prospecting-letters"] .result span'
  );
  let monthlyTargetedProspectingLetters = $(
    '.calculator-item-result[data-property-name="monthly-targeted-prospecting-letters"] .result span'
  );

  let sales = $('.calculator-item-result[data-property-name="sales"] .result span');
  let instructions = $('.calculator-item-result[data-property-name="instructions"] .result span');
  let valuations = $('.calculator-item-result[data-property-name="valuations"] .result span');

  if (period === "per year") {
    displayROIResultItem(calculatingObj.yearsAllPrice, globalResult);
  } else {
    displayROIResultItem(calculatingObj.monthlyAllPrice, globalResult);
  }

  displayROIResultItem(calculatingObj.roiInPercent, resultInPercent);
  displayROIResultItem(calculatingObj.roiInX, resultInX);
  displayROIResultItem(calculatingObj.monthlyAllPrice, monthlyGlobalResult);
  displayROIResultItem(calculatingObj.monthlyTargetedProspectingLettersCost, monthlyLetterCost);
  displayROIResultItem(calculatingObj.targetedProspectingLetters, targetedProspectingLetters);
  displayROIResultItem(calculatingObj.monthlyTargetedProspectingLetters, monthlyTargetedProspectingLetters);
  displayROIResultItem(calculatingObj.salesNeeded, sales);
  displayROIResultItem(calculatingObj.instructionsNeeded, instructions);
  displayROIResultItem(calculatingObj.valuationsNeeded, valuations);
  displayROIResultItem(calculatingObj.monthlySubscriptionCost, monthlySubscriptionCost);
}

function displayROIResultItem(number, place) {
  if (number === "NaN" || !number || !isFinite(number)) {
    number = 0;
  }

  place.html(formatNumber(number));
}

$(".calculator-top-result__dropdown input").change(calculatingROI);

// ROI result on mobile

function ROIResultReady() {
  let allResultContainer = $(".calculator-content__right");
  if (allResultContainer.length) {
    let visiblePartHeight = allResultContainer.find(".calculator-top-result").outerHeight();
    allResultContainer.css({
      height: `${visiblePartHeight}px`,
    });
  }
}

fullTransitionendCallback(
  ".calculator-content__right",
  function (e) {
    if (!isPc) {
      const accordion = $(e.target).closest(".calculator-content__right");
      const isOpen = accordion.hasClass("-open");

      if (isOpen) {
        accordion.css("height", "auto");
      }
    }
  },
  "height"
);

$(document).ready(ROIResultReady);

if ($(".calculator-content__opener").length) {
  $(".calculator-content__opener").swipe({
    swipe: function (event, direction, distance, duration, fingerCount, fingerData) {
      let allResultContainer = $(".calculator-content__right");
      let allResultHeight = allResultContainer.find(".calculator-content__right-content").outerHeight();
      let visiblePartHeight = allResultContainer.find(".calculator-top-result").outerHeight();

      if (!allResultContainer.hasClass("-open") && direction === "up") {
        if (allResultHeight > window.innerHeight) {
          let innerHeight = parseInt(document.documentElement.style.getPropertyValue("--window-inner-height"));
          allResultHeight = innerHeight - 120;
        }

        allResultContainer.addClass("-open");
        allResultContainer.css({
          height: allResultHeight,
        });
      } else if (allResultContainer.hasClass("-open") && direction === "down") {
        allResultContainer.removeClass("-open");
        allResultContainer.css({
          height: allResultHeight,
        });
        allResultContainer.outerWidth();
        allResultContainer.css({
          height: `${visiblePartHeight}px`,
        });
      }
    },
    threshold: 0,
  });
}

$(document).ready(function () {
  if ($(".vacancy-title").length) {
    let text = $("h1").html();

    $(".vacancy-title").val(text).change();
  }
});