(function ($) {
"use strict";
gsap.registerPlugin(ScrollTrigger, SplitText);
gsap.config({
nullTargetWarn: false,
trialWarn: false
});
/*---- Functions ----*/
function getpercentage(x, y, elm) {
elm.find('.pbmit-fid-inner').html(y + '/' + x);
var cal = Math.round((y * 100) / x);
return cal;
}
/*---- Title Animation ----*/
function pbmit_title_animation() {
ScrollTrigger.matchMedia({
"(min-width: 1025px)": function() {
var pbmit_var = jQuery('.pbmit-custom-heading, .pbmit-heading-subheading');
if (!pbmit_var.length) {
return;
}
const quotes = document.querySelectorAll(".pbmit-custom-heading .pbmit-title , .pbmit-heading-subheading .pbmit-title");
quotes.forEach(quote => {
var getclass = quote.closest('.pbmit-custom-heading ,.pbmit-heading-subheading').className;
var animation = getclass.split('animation-');
if (animation[1] == "style1") return
//Reset if needed
if (quote.animation) {
quote.animation.progress(1).kill();
quote.split.revert();
}
quote.split = new SplitText(quote, {
type: "lines,words,chars",
linesClass: "split-line"
});
gsap.set(quote, { perspective: 400 });
if (animation[1] == "style2") {
gsap.set(quote.split.chars, {
opacity: 0,
y: "90%",
rotateX: "-40deg"
});
}
if (animation[1] == "style3") {
gsap.set(quote.split.chars, {
opacity: 0,
x: "50"
});
}
if (animation[1] == "style4") {
gsap.set(quote.split.chars, {
opacity: 0,
});
}
quote.animation = gsap.to(quote.split.chars, {
scrollTrigger: {
trigger: quote,
start: "top 90%",
},
x: "0",
y: "0",
rotateX: "0",
opacity: 1,
duration: 1,
ease: Back.easeOut,
stagger: .02
});
});
},
});
}
/*---- Sticky Header ----*/
var pbmit_sticky_header = function () {
if (jQuery('.pbmit-header-sticky-yes').length > 0) {
var header_html = jQuery('#masthead .pbmit-main-header-area').html();
jQuery('.pbmit-sticky-header').append(header_html);
jQuery('.pbmit-sticky-header #menu-toggle').attr('id', 'menu-toggle2');
jQuery('#menu-toggle2').on('click', function () {
jQuery("#menu-toggle").trigger("click");
});
jQuery('.pbmit-sticky-header .main-navigation ul, .pbmit-sticky-header .main-navigation ul li, .pbmit-sticky-header .main-navigation ul li a').removeAttr('id');
jQuery('.pbmit-sticky-header h1').each(function () {
var thisele = jQuery(this);
var thisele_class = jQuery(this).attr('class');
thisele.replaceWith('' + jQuery(thisele).html() + '');
});
// For infostack header
if (jQuery('.pbmit-main-header-area').hasClass('pbmit-infostack-header')) {
jQuery(".pbmit-sticky-header .pbmit-header-content").insertAfter(".pbmit-sticky-header .site-branding");
jQuery('.pbmit-sticky-header .pbmit-header-text-box, .pbmit-sticky-header .pbmit-header-info, .pbmit-sticky-header .pbmit-mobile-search').remove();
}
}
};
var pbmit_sticky_header_class = function () {
var lastScroll = 0;
if (jQuery('#wpadminbar').length > 0) {
jQuery('#masthead').addClass('pbmit-adminbar-exists');
}
jQuery(window).on('scroll', function () {
var scroll = jQuery(window).scrollTop();
var header_height = 0;
if (jQuery('.pbmit-main-header-area').length > 0) {
header_height = jQuery('.pbmit-main-header-area').height();
}
if (scroll === 0) {
jQuery('#masthead .pbmit-sticky-header').removeClass('pbmit-fixed-header');
} else {
if (scroll > 300) {
// Above 300px → show sticky
jQuery('#masthead .pbmit-sticky-header').addClass('pbmit-fixed-header');
} else {
// Below 300px → hide sticky
jQuery('#masthead .pbmit-sticky-header').removeClass('pbmit-fixed-header');
}
}
lastScroll = scroll;
});
};
var pbmit_menu_span = function() {
jQuery('.pbmit-max-mega-menu-override #page #site-navigation .mega-menu-wrap>ul>li.mega-menu-item .mega-sub-menu a, .pbmit-navbar ul ul a').each(function(i, v) {
jQuery(v).contents().eq(0).wrap('');
});
}
var pbmit_toggleSidebar = function() {
jQuery('#menu-toggle').on('click', function() {
jQuery("body:not(.mega-menu-pbminfotech-top) .pbmit-navbar > div, body:not(.mega-menu-pbminfotech-top)").toggleClass("active");
})
if (jQuery('.pbmit-navbar > div > .closepanel').length == 0) {
jQuery('.pbmit-navbar > div').append('');
jQuery('.pbmit-navbar > div > .closepanel, .mega-menu-pbminfotech-top .nav-menu-toggle').on('click', function() {
jQuery(".pbmit-navbar > div, body, .mega-menu-wrap").toggleClass("active");
});
return false;
}
}
/*---- Burger Menu ----*/
var pbmit_burger_menu = function() {
if (jQuery('.pbmit-header-style-3').length > 0) {
jQuery('.pbmit-header-style-3 .pbmit-header-overlay .main-navigation').clone().appendTo( '.pbmit-burger-menu-area-inner' ).insertBefore(".pbmit-burger-content");
jQuery('.pbmit-burger-menu-area .main-navigation, .pbmit-burger-menu-area .main-navigation ul, .pbmit-burger-menu-area .main-navigation ul li, .pbmit-burger-menu-area .main-navigation ul li a').removeAttr('id');
jQuery('.pbmit-burger-menu-area .main-navigation').removeClass('pbmit-navbar');
jQuery('.pbmit-burger-menu-area .sub-menu-toggle').remove();
jQuery('.pbmit-burger-menu-area ul.menu li:has(ul) > a').after("");
jQuery('.pbmit-burger-menu-area .sub-menu-toggle').on('click', function() {
if (jQuery(this).siblings('.sub-menu, .children').css('display') == 'block'){
jQuery(this).siblings('.sub-menu, .children').slideUp();
jQuery('i', jQuery(this)).removeClass('pbmit-base-icon-up-open-big').addClass('pbmit-base-icon-down-open-big');
} else {
jQuery(this).siblings('.sub-menu, .children').slideDown();
jQuery('i', jQuery(this)).removeClass('pbmit-base-icon-down-open-big').addClass('pbmit-base-icon-up-open-big');
}
return false;
});
jQuery('.pbmit-burger-menu-link').click(function() {
jQuery('.pbmit-burger-menu-area').addClass('show');
});
jQuery('.pbmit-burger-menu-area .pbmit-closepanel').click(function() {
jQuery('.pbmit-burger-menu-area').removeClass('show');
});
}
}
/*---- Search Btn ----*/
var pbmit_search_btn = function() {
jQuery(function() {
var search_form = jQuery(".pbmit-header-search-form");
var search_field = jQuery('.pbmit-header-search-form .search-field');
var $body = jQuery('body');
jQuery(".pbmit-header-search-btn").on('click', function(e) {
if (!search_form.hasClass('active')) {
search_form.addClass('active');
setTimeout(function() { search_field.get(0).focus(); }, 500);
} else if (search_field.val() === '') {
search_form.removeClass('active');
search_field.get(0).focus();
}
e.preventDefault();
return false;
});
jQuery(".pbmit-header-search-form .pbmit-search-overlay, .pbmit-header-search-form .pbmit-search-close").on('click', function (e) {
$body.addClass('pbmit-search-animation-out');
setTimeout(function () {
$body.removeClass('pbmit-search-animation-out');
}, 800);
setTimeout(function () {
search_form.removeClass('active');
}, 800);
e.preventDefault();
return false;
});
});
}
/*---- Sticky Sidebar ----*/
var pbmit_thia_sticky = function() {
if(typeof jQuery.fn.theiaStickySidebar == "function"){
jQuery('.pbmit-sticky-sidebar').theiaStickySidebar({
additionalMarginTop: 120
});
jQuery('.pbmit-sticky-column').theiaStickySidebar({
additionalMarginTop: 180
});
}
}
/*---- Sortable ----*/
var pbmit_sorting = function() {
jQuery('.pbmit-sortable-yes:not(.pbmit-ajax-sortable-yes)').each(function() {
var boxes = jQuery('.pbmit-element-posts-wrapper', this);
var links = jQuery('.pbmit-sortable-list a', this);
boxes.isotope({
animationEngine: 'best-available',
layoutMode: 'masonry',
masonry: {
horizontalOrder: true
}
});
links.on('click', function(e) {
var selector = jQuery(this).data('sortby');
if (selector != '*') {
var selector = '.' + selector;
}
boxes.isotope({
animationEngineString : 'best-available',
filter: selector,
itemSelector: '.pbmit-ele',
layoutMode: 'masonry',
masonry: {
horizontalOrder: true
}
});
links.removeClass('pbmit-selected');
jQuery(this).addClass('pbmit-selected');
e.preventDefault();
});
});
}
/*---- Active Hover ----*/
var pbmit_active_hover = function() {
var pbmit_var = jQuery('.pbmit-element-static-box-style-1, .pbmit-element-static-box-style-2, .pbmit-element-portfolio-style-2 ,.pbmit-element-service-style-3, .pbmit-element-miconheading-style-7');
if (!pbmit_var.length) {
return;
}
pbmit_var.each(function() {
var pbmit_Class = '.pbmit-static-box-style-1, .pbmit-hover-inner .pbmit-title-wrapper, .pbmit-portfolio-style-2, .pbmit-hover-inner li, .pbmit-miconheading-style-7';
jQuery(this)
.find(pbmit_Class).first()
.addClass('pbmit-active');
jQuery(this)
.find(pbmit_Class)
.on('mouseover', function() {
jQuery(this).addClass('pbmit-active').siblings().removeClass('pbmit-active');
});
});
}
/* Static Box Slider */
var pbmit_staticbox_hover_slide = function() {
if (typeof Swiper !== 'undefined') {
var pbmit_hover = new Swiper(".pbmit-static-image", {
speed: 6000,
effect: 'fade',
allowTouchMove: false
});
jQuery('.pbmit-hover-inner li').on('mouseover', function(e) {
e.preventDefault();
var myindex = jQuery(this).index();
pbmit_hover.slideTo(myindex, 1000, false);
});
}
}
/*---- Active Hover Pricing ----*/
var pbmit_active_hover_pricing = function() {
var pbmit_var = jQuery('.pbminfotech-ele-ptable-style-2');
if (!pbmit_var.length) {
return;
}
pbmit_var.each(function() {
var pbmit_Class = '.pbmit-ptable-col';
jQuery(this)
.find(pbmit_Class).first()
.addClass('pbmit-active');
jQuery(this)
.find(pbmit_Class)
.on('click', function() {
jQuery(this).addClass('pbmit-active').siblings().removeClass('pbmit-active');
});
});
}
/*---- Tween Effect ----*/
var pbmit_tween_effect = function() {
if (jQuery(window).width() < 768) return;
jQuery(window).on('scroll resize', function () {
jQuery('.pbmit-tween-effect').each(function () {
let $el = jQuery(this),
rect = this.getBoundingClientRect(),
inView = rect.top < window.innerHeight && rect.bottom > 0;
if (!inView) return;
let progress = 1 - (rect.top / window.innerHeight);
progress = Math.max(0, Math.min(1, progress)); // Clamp 0–1
const getVal = (attr) => parseFloat($el.data(attr)) || 0;
let tx = getVal('x-start') + (getVal('x-end') - getVal('x-start')) * progress,
ty = getVal('y-start') + (getVal('y-end') - getVal('y-start')) * progress,
scale = getVal('scale-x-start') + (getVal('scale-x-end') - getVal('scale-x-start')) * progress,
skewX = getVal('skew-x-start') + (getVal('skew-x-end') - getVal('skew-x-start')) * progress,
skewY = getVal('skew-y-start') + (getVal('skew-y-end') - getVal('skew-y-start')) * progress,
rotate = getVal('rotate-x-start') + (getVal('rotate-x-end') - getVal('rotate-x-start')) * progress;
$el.css('transform', `translate(${tx}%, ${ty}%) scale(${scale}) skew(${skewX}deg, ${skewY}deg) rotate(${rotate}deg)`);
});
}).trigger('scroll');
}
/*---- Tabs ----*/
var pbmit_tabs_element = function() {
var tab_number = '';
jQuery('.pbmit-tab-link').on('click', function(){
if( !jQuery(this).hasClass('pbmit-tab-li-active') ){
var parent = jQuery(this).closest('ul.pbmit-tabs-links');
jQuery( 'li', parent).each(function(){
jQuery(this).removeClass('pbmit-tab-li-active')
});
jQuery(this).addClass('pbmit-tab-li-active');
tab_number = jQuery( this ).data('pbmit-tab');
jQuery(this).parent().parent().find('.pbmit-tab-content').removeClass('pbmit-tab-active');
jQuery(this).parent().parent().find('.pbmit-tab-content-'+tab_number).addClass('pbmit-tab-active');
}
});
var this_title = '';
jQuery('.pbmit-tab-content-title').on('click', function(){
this_title = jQuery(this);
tab_number = jQuery( this ).data('pbmit-tab');
jQuery( this ).closest('.pbmit-tabs').find('li.pbmit-tab-link[data-pbmit-tab="'+tab_number+'"]', ).trigger('click');
var animateTo = jQuery(this_title).offset().top - 10;
if (jQuery('#wpadminbar').length > 0) {
animateTo = animateTo - jQuery('#wpadminbar').height();
}
jQuery('html, body').animate({
scrollTop: animateTo
}, 500);
});
};
/*---- Video Popup ----*/
var pbmit_video_popup = function() {
jQuery('.pbmit-popup').on('click', function(event) {
event.preventDefault();
var href = jQuery(this).attr('href');
var title = jQuery(this).attr('title');
window.open(href, title, "width=600,height=500");
});
}
ScrollTrigger.matchMedia({
"(max-width: 1200px)": function() {
ScrollTrigger.getAll().forEach(t => t.kill());
}
});
// on load
jQuery(window).on('load', function(){
pbmit_title_animation();
pbmit_sticky_header();
pbmit_sticky_header_class();
pbmit_menu_span();
pbmit_toggleSidebar();
pbmit_burger_menu();
pbmit_search_btn();
pbmit_thia_sticky();
pbmit_sorting();
pbmit_active_hover();
pbmit_staticbox_hover_slide();
pbmit_active_hover_pricing();
pbmit_tween_effect();
pbmit_tabs_element();
pbmit_video_popup();
gsap.delayedCall(1, () =>
ScrollTrigger.getAll().forEach((t) => {
t.refresh();
})
);
});
})($);