/home/bdqbpbxa/demo-subdomains/billine.goodface.com.ua/js/script.js
// Preloader settings
$(document).ready(function () {
const getPreloader = $(".preloader");
if (getPreloader.length) {
lockScroll();
}
});
$(window).on("load", function () {
const getPreloader = $(".preloader");
if (getPreloader.length) {
setTimeout(function () {
unlockScroll();
getPreloader.fadeOut(700, function () {
getPreloader.remove();
});
}, 4000);
}
});
// Custom scrollbar init
$(window).on("load", function () {
const getScrollbar = $(".--custom-scrollbar");
if (!getScrollbar.length) return;
$(".--custom-scrollbar").each(function () {
if ($(this).is(".api-navigation")) return;
$(this).overlayScrollbars({
className: "os-theme-dark",
scrollbars: {
clickScrolling: true,
},
});
});
});
// Dropdowns functionality
$(document).on("mouseenter", ".--dropdown__value", function () {
$(this).closest(".--dropdown").addClass("-active");
});
$(document).on("mouseleave", ".--dropdown", function () {
$(this).closest(".--dropdown").removeClass("-active");
});
// customClickOutsideCallback(".--dropdown.-active", function (e, selector) {
// $(selector).removeClass("-active");
// });
// Mobile menu functionality
$(".header__open-menu-button").on("click", function () {
const header = $(this).closest(".header");
const menu = header.find(".header__menu");
if ($(this).hasClass("-active")) {
unlockScroll();
$(this).removeClass("-active");
menu.removeClass("-active");
header.removeClass("-menu-opened");
} else {
lockScroll();
$(this).addClass("-active");
menu.addClass("-active");
header.addClass("-menu-opened");
}
});
// Scroll header style
$(window).on("scroll", function () {
const offset = $(this)[0].scrollY;
if (offset <= 0) {
$(".header").removeClass("-scrolled");
} else {
$(".header").addClass("-scrolled");
}
});
// Gradient hover init
$(window).on("load", function () {
const getGradientHover = $(".--gradient-hover");
if (!getGradientHover.length) return;
getGradientHover.each(function () {
const getText = $(this).text().trim();
$(this).attr("data-hover-text", getText);
});
});
// Sending form settings
function loadingFormSending(container) {
container.find(".--sending-loading").addClass("-active");
}
function formSendingSuccess(container) {
container.find(".--sending-success").addClass("-active");
}
function formSendingError(container) {
container.find(".--sending-error").addClass("-active");
}
function backToForm(container) {
container.find(".--sending-block").removeClass("-active");
}
function resetForm(form) {
form
.find("[data-important], .input")
.removeClass("-valid -invalid -focus -fill");
form.find("input, textarea").each(function () {
$(this)[0].value = "";
});
}
$(document).on("submit", ".form form", function (e) {
e.preventDefault();
const form = $(this)[0];
const isFormValid = formValidation(e.target);
if (isFormValid) {
const getFormBlock = $(form.closest(".form"));
const getFormSendingContainer = $(
form.closest(".--sending-form-container")
);
loadingFormSending(getFormSendingContainer);
let formData = new FormData();
let url = "";
let social = "";
let message = "";
let phone = "";
let file = "";
const name = $(this)[0].name.value;
const email = $(this)[0].email.value;
const formName = $(this).attr("name");
const language = document.documentElement.lang.toUpperCase();
if (formName == "connect") {
formData.append("formName", "Заявка на підключення");
url = $(this)[0].url.value;
social = $(this)[0].social.value;
message = $(this)[0].message.value;
} else if (formName == "join") {
formData.append("formName", "Заявка на роботу в команді");
phone = $(this)[0].phone.value;
file = $(this)[0].file.files[0];
}
formData.append("send", true);
formData.append("language", language);
formData.append("name", name);
formData.append("url", url);
formData.append("email", email);
formData.append("social", social);
formData.append("message", message);
formData.append("phone", phone);
formData.append("file", file);
$.ajax({
type: "post",
processData: false,
contentType: false,
url: "mail.php",
data: formData,
success: function (data) {
formSendingSuccess(getFormSendingContainer);
resetForm(getFormBlock);
},
error: function () {
formSendingError(getFormSendingContainer);
},
});
}
});
$(document).on("click", ".--back-to-form", function () {
const container = $(this).closest(".--sending-form-container");
backToForm(container);
});
// Accordions
function openCustomAccordion(accordion) {
const container = accordion.find(".--accordion__content-container").eq(0);
const contentHeight = accordion
.find(".--accordion__content")
.eq(0)
.outerHeight();
accordion.addClass("-open");
container.css("height", `${contentHeight}px`);
closeSameAccordionGroup(accordion);
}
function closeCustomAccordion(accordion) {
const container = accordion.find(".--accordion__content-container").eq(0);
const containerCurrentHeight = container.outerHeight();
container.css({
height: `${containerCurrentHeight}px`,
transition: "unset",
});
container.outerHeight(); // Lifehack
container.css({
height: "0px",
transition: "",
});
accordion.removeClass("-open");
closeAccordionChildren(accordion);
}
function closeAccordionChildren(accordion) {
if (accordion.is("[data-close-children]")) {
accordion.find(".--accordion").each(function () {
closeCustomAccordion($(this));
});
}
}
function closeSameAccordionGroup(accordion) {
const groupName = accordion.attr("data-accordion-group");
if (groupName) {
$(`.--accordion[data-accordion-group="${groupName}"]`).each(function () {
if (accordion[0] !== this) {
closeCustomAccordion($(this));
}
});
}
}
fullTransitionendCallback(
".--accordion__content-container",
function (e) {
const accordion = $(e.target).closest(".--accordion");
const isOpen = accordion.hasClass("-open");
accordion.removeAttr("data-accordion-in-process");
if (isOpen) {
$(e.target).css("height", "auto");
}
},
"height"
);
$(document).on("click", ".--accordion__open", function () {
const accordion = $(this).closest(".--accordion");
const isAccordionLock =
accordion.find("[data-accordion-in-process]").length ||
accordion.parent().closest("[data-accordion-in-process]").length;
if (isAccordionLock) return;
accordion.attr("data-accordion-in-process", true);
const isOpen = accordion.hasClass("-open");
if (isOpen) {
closeCustomAccordion(accordion);
} else {
openCustomAccordion(accordion);
}
});
// API editor settings
$(document).ready(function () {
const getEditor = $(".api-editor");
if (!getEditor.length) return;
getEditor.each(function () {
const getLink = $(this).find("a");
getLink.each(function () {
$(this).addClass("--gradient-hover default-link");
});
});
});
$(".--copy-code").on("click", function () {
const getText = $(this).text().trim();
const getContainer = $(this).closest(".--code-container");
const getCopyButton = getContainer.find(".copy-to-clipboard-button");
getCopyButton.trigger("click");
$(this).addClass("-copied");
$(this).text("Copied!");
setTimeout(() => {
$(this).removeClass("-copied");
$(this).text(getText);
}, 1500);
});
// API | Code expand/collapse
function expandCollapseCodeFunction(ths, action) {
const getContainer = $(ths).closest(".--code-container");
const getCode = getContainer.find(".--code-response");
const getDetails = getCode.find("details");
getDetails.each(function () {
if (action == "open") {
$(this).attr("open", "");
} else {
$(this).removeAttr("open");
}
});
}
$(".--collapse-code").on("click", function () {
expandCollapseCodeFunction(this);
});
$(".--expand-code").on("click", function () {
expandCollapseCodeFunction(this, "open");
});
$(document).ready(function () {
const getCodeRespones = $(".--code-response");
if (!getCodeRespones.length) return;
$(".--code-response").each(function () {
expandCollapseCodeFunction(this);
});
});
// API | Navigation settings
$(document).ready(function () {
const getNavigationBlock = $(".api-navigation");
if (!getNavigationBlock.length) return;
const getContainer = $(".api-content-container");
getContainer.each(function () {
if ($(this).find("h1").length) return;
let createAccordionHTML = "";
const getH2 = $(this).find("h2");
const getH3 = $(this).find("h3");
const getH2Id = getH2.attr("id");
const getH2Text = getH2.text().trim();
createAccordionHTML = `
<div class="api-nav__accordion">
<div class="api-nav__button">
<a href="#${getH2Id}" class="text-2 mob-text-2 --bold-text --gradient-hover">
${getH2Text}
</a>
</div>
</div>
`;
if (getH3.length) {
let createAccordionContentHTML = "";
getH3.each(function () {
const getH3Id = $(this).attr("id");
const getH3Text = $(this).text().trim();
const getH3Method = $(this).attr("data-method");
if (getH3Method == "get") {
createAccordionContentHTML += `
<li class="api-nav__nav">
<span class="api-nav__request -get">GET</span>
<a href="#${getH3Id}" class="api-nav__nav-link text-3 --gradient-hover">
${getH3Text}
</a>
</li>
`;
} else if (getH3Method == "post") {
createAccordionContentHTML += `
<li class="api-nav__nav">
<span class="api-nav__request -post">POST</span>
<a href="#${getH3Id}" class="api-nav__nav-link text-3 --gradient-hover">
${getH3Text}
</a>
</li>
`;
} else {
createAccordionContentHTML += `
<li class="api-nav__nav">
<a href="#${getH3Id}" class="api-nav__nav-link text-3 --gradient-hover">
${getH3Text}
</a>
</li>
`;
}
});
if (document.documentElement.lang !== "uk") {
createAccordionHTML = `
<div class="api-nav__accordion --accordion">
<div class="api-nav__button --accordion-button">
<a href="#${getH2Id}" class="text-2 mob-text-2 --bold-text --gradient-hover">
${getH2Text}
</a>
<span
class="--mask-item --accordion__open"
style="
-webkit-mask-image: url('../images/icons/caret-down.svg');
mask-image: url('../images/icons/caret-down.svg');
"
></span>
</div>
<div class="api-nav__content --accordion__content-container">
<div class="--accordion__content">
<ul>
${createAccordionContentHTML}
</ul>
</div>
</div>
</div>
`;
} else {
createAccordionHTML = `
<div class="api-nav__accordion --accordion">
<div class="api-nav__button --accordion-button">
<a href="#${getH2Id}" class="text-2 mob-text-2 --bold-text --gradient-hover">
${getH2Text}
</a>
<span
class="--mask-item --accordion__open"
style="
-webkit-mask-image: url('images/icons/caret-down.svg');
mask-image: url('images/icons/caret-down.svg');
"
></span>
</div>
<div class="api-nav__content --accordion__content-container">
<div class="--accordion__content">
<ul>
${createAccordionContentHTML}
</ul>
</div>
</div>
</div>
`;
}
}
getNavigationBlock.append(createAccordionHTML);
});
getNavigationBlock.overlayScrollbars({
className: "os-theme-dark",
scrollbars: {
clickScrolling: true,
},
});
});
// $(document).ready(function () {
// const getNavBlock = $(".api-navigation");
//
// if (!getNavBlock.length) return;
//
// getNavBlock.find(".--accordion").each(function () {
// openCustomAccordion($(this));
// });
// });
// API | Anchor settings
$(document).ready(function () {
const getApiContent = $(".api-content");
if (!getApiContent.length) return;
const getAnchor = getApiContent.find("[id]");
getAnchor.each(function () {
const getText = $(this).text().trim();
const getArray = getText.split(" ");
const getLastWord = getArray.splice(-1, 1);
const newTag = `<span>${getLastWord[0]}</span>`;
getArray.push(newTag);
const newAnchorText = getArray.join(" ");
$(this)[0].innerHTML = newAnchorText;
});
});
$(".api-editor [id]").on("click", function () {
const getId = $(this).attr("id");
history.pushState(
{
id: getId,
source: "web",
},
"Welcome",
`#${getId}`
);
$("html, body").animate(
{
scrollTop: $(this).offset().top - 138,
},
600,
function () {}
);
});
$(window).on("load", function () {
if (!$(".api-section").length) return;
const getId = window.location.hash.substr(1);
if (getId) {
const getAnchor = $(`#${getId}`);
const getOffset = getAnchor.offset().top - 140;
window.scrollTo(0, getOffset);
}
});
$(window).on("scroll", function () {
const getNavigationBlock = $(".api-navigation");
if (!getNavigationBlock.length) return;
getNavigationBlock.find("[href]").removeClass("-active");
const getApiContent = $(".api-content");
const getScrollOffsetTop = window.scrollY + 140;
let isActiveAnchor = null;
getApiContent.each(function () {
const getAnchor = $(this).find("[id]");
if (!getAnchor.length) return;
getAnchor.each(function () {
const getAnchorOffsetTop = $(this).offset().top;
if (getScrollOffsetTop >= getAnchorOffsetTop) {
isActiveAnchor = $(this);
}
});
});
if (isActiveAnchor) {
const getId = isActiveAnchor.attr("id");
const getActiveNavLink = getNavigationBlock.find(`[href="#${getId}"]`);
getActiveNavLink.addClass("-active");
}
// getNavigationBlock.find(".--accordion").each(function () {
// const getAccordionContent = $(this).find(".--accordion__content-container");
// const getActiveLink = getAccordionContent.find(".-active");
//
// if (getActiveLink.length) {
// openCustomAccordion($(this));
// return;
// }
//
// closeCustomAccordion($(this));
// });
});
// Get random number
function getRandomNumber(min, max) {
const getRandomNumber = Math.random() * (max - min) + min;
const getFixedRandomNumber = +getRandomNumber.toFixed(2);
return getFixedRandomNumber;
}
// Levitation animation adjustment
$(document).ready(function () {
const getAnimation = $(
".info-block.-integration .info-block__image-box, .info-block.-payment .info-block__image-box"
);
if (!getAnimation.length) return;
getAnimation.each(function () {
const getNumber = getRandomNumber(0, 10);
$(this).css("animation-delay", `-${getNumber}s`);
});
});
// Currency interactive image adjustment
$(".currency-ani-block__button").on("click", function () {
$(this).closest(".currency-ani-block__item").toggleClass("-active");
});
// Graph interactive image adjustment
$(document).on("mouseenter", ".graph-ani-block__graph", function () {
const getIndex = $(this).index();
const getContainer = $(this).closest(".graph-ani-block__graph-box");
const getMonth = getContainer.find(".graph-ani-block__month").eq(getIndex);
$(this).addClass("-active");
$(this).siblings().removeClass("-active");
getMonth.addClass("-active");
getMonth.siblings().removeClass("-active");
});
// Connect way animation adjustment
$(document).ready(function () {
const getBlock = $(".connect-main__way");
if (!getBlock.length) return;
let setDelayNumber = 0.3;
$(".connect-way__item").each(function () {
if ($(this).css("display") == "none") return;
let getPrevItem = $(this).prev();
if (getPrevItem.length) {
if (
!getPrevItem.hasClass("connect-way__item") ||
getPrevItem.css("display") == "none"
) {
getPrevItem = getPrevItem.prev();
}
const getPrevItemOffset = getPrevItem.offset().top;
const getCurrentItemOffset = $(this).offset().top;
if (getPrevItemOffset < getCurrentItemOffset) {
setDelayNumber += 0.2;
}
}
$(this).css("transition-delay", `${setDelayNumber}s`);
setDelayNumber += 0.1;
});
$(".connect-main__way-img .way-img").each(function () {
let setDelayNumberArrow = 0.5;
$(this)
.find(".way-arrow")
.each(function () {
$(this).css("transition-delay", `${setDelayNumberArrow}s`);
setDelayNumberArrow += 0.2;
});
});
let oldDateObj = new Date();
let newDateObj = new Date();
let timeIndex = 0;
$(".connect-way__time").each(function () {
if (timeIndex === 1) {
newDateObj.setTime(oldDateObj.getTime() + 5 * 60 * 1000);
} else if (timeIndex === 2) {
newDateObj.setTime(oldDateObj.getTime() + 10 * 60 * 1000);
} else if (timeIndex === 3) {
newDateObj.setTime(oldDateObj.getTime() + 40 * 60 * 1000);
} else if (timeIndex === 4) {
newDateObj.setTime(oldDateObj.getTime() + 50 * 60 * 1000);
} else if (timeIndex === 5) {
newDateObj.setTime(oldDateObj.getTime() + 60 * 60 * 1000);
} else if (timeIndex === 6) {
newDateObj.setTime(oldDateObj.getTime() + 150 * 60 * 1000);
} else if (timeIndex === 7) {
newDateObj.setTime(oldDateObj.getTime() + 210 * 60 * 1000);
}
const getHours = newDateObj.getHours();
const getMinutes = String(newDateObj.getMinutes()).padStart(2, "0");
$(this).append(`
${getHours}<span>:</span>${getMinutes}
`);
timeIndex++;
});
});
// Cookie adjustment
$(document).ready(function () {
const getCookie = $.cookie("cookiePermission");
if (getCookie) {
$(".cookie-block").remove();
}
});
$(".cookie__button").on("click", function () {
$(this)
.closest(".cookie-block")
.fadeOut(400, function () {
$(this).remove();
});
$.cookie("cookiePermission", true, { expires: 365, path: "/" });
});