/** ===============

 .. Preloader
 .. header--search
 .. Fixed-header
 .. Menu
 .. Number rotator
 .. Skillbar
 .. Tab
 .. Accordion
 .. Isotope
 .. Prettyphoto
 .. Slick_slider
 .. Back to top 

 =============== */

jQuery(function ($) {
  "use strict";

  /*------------------------------------------------------------------------------*/
  /* Preloader
/*------------------------------------------------------------------------------*/
  // makes sure the whole site is loaded
  $(window).on("load", function () {
    $(".loader-blob").fadeOut(),
      $("#preloader")
        .delay(300)
        .fadeOut("slow", function () {
          $(this).remove();
        });
  });

  /*------------------------------------------------------------------------------*/
  /* header--search
/*------------------------------------------------------------------------------*/

  $(".header--search").each(function () {
    $(".search_btn", this).on("click", function (e) {
      e.preventDefault();
      e.stopPropagation();

      $(".header--search_content").toggleClass("on");

      if ($(".header--search a").hasClass("open")) {
        $(".header--search a i").removeClass("ti-close").addClass("ti-search");

        $(this).removeClass("open").addClass("sclose");
      } else {
        $(".header--search a").removeClass("sclose").addClass("open");

        $(".header--search a i").removeClass("ti-search").addClass("ti-close");
      }
    });
  });

  /*------------------------------------------------------------------------------*/
  /* Fixed-header
/*------------------------------------------------------------------------------*/

  $(window).on("scroll", function () {
    if (matchMedia("only screen and (min-width: 1200px)").matches) {
      if ($(window).scrollTop() >= 50) {
        $(".ct-stickable-header").addClass("fixed-header");
      } else {
        $(".ct-stickable-header").removeClass("fixed-header");
      }
    }
  });

  /*------------------------------------------------------------------------------*/
  /* Menu
/*------------------------------------------------------------------------------*/

  var menu = {
    initialize: function () {
      this.Menuhover();
    },

    Menuhover: function () {
      var getNav = $("nav.main-menu"),
        getWindow = $(window).width(),
        getHeight = $(window).height(),
        getIn = getNav.find("ul.menu").data("in"),
        getOut = getNav.find("ul.menu").data("out");

      if (matchMedia("only screen and (max-width: 1200px)").matches) {
        // Enable click event
        $("nav.main-menu ul.menu").each(function () {
          // Dropdown Fade Toggle
          $("a.mega-menu-link", this).on("click", function (e) {
            e.preventDefault();
            var t = $(this);
            t.toggleClass("active").next("ul").toggleClass("active");
          });

          // Megamenu style
          $(".megamenu-fw", this).each(function () {
            $(".col-menu", this).each(function () {
              $(".title", this).off("click");
              $(".title", this).on("click", function () {
                $(this)
                  .closest(".col-menu")
                  .find(".content")
                  .stop()
                  .toggleClass("active");
                $(this).closest(".col-menu").toggleClass("active");
                return false;
                e.preventDefault();
              });
            });
          });
        });
      }
    },
  };

  $(".btn-show-menu-mobile").on("click", function (e) {
    $(this).toggleClass("is-active");
    $(".menu-mobile").toggleClass("show");
    return false;
    e.preventDefault();
  });

  // Initialize
  $(document).ready(function () {
    menu.initialize();
  });

  var $bannerSlider = jQuery(".banner-slider");
  var $bannerFirstSlide = $("div.slide:first-child");

  $bannerSlider.on("init", function (e, slick) {
    var $firstAnimatingElements = $bannerFirstSlide.find("[data-animation]");
    slideanimate($firstAnimatingElements);
  });
  $bannerSlider.on(
    "beforeChange",
    function (e, slick, currentSlide, nextSlide) {
      var $animatingElements = $(
        'div.slick-slide[data-slick-index="' + nextSlide + '"]'
      ).find("[data-animation]");
      slideanimate($animatingElements);
    }
  );
  $bannerSlider.slick({
    slidesToShow: 1,
    slidesToScroll: 1,
    arrows: true,
    fade: true,
    dots: false,
    swipe: true,
    adaptiveHeight: true,
    responsive: [
      {
        breakpoint: 1200,
        settings: {
          arrows: false,
        },
      },
      {
        breakpoint: 767,
        settings: {
          slidesToShow: 1,
          slidesToScroll: 1,
          arrows: false,
          autoplay: false,
          autoplaySpeed: 4000,
          swipe: true,
        },
      },
    ],
  });

  function slideanimate(elements) {
    var animationEndEvents =
      "webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend";
    elements.each(function () {
      var $this = $(this);
      var $animationDelay = $this.data("delay");
      var $animationType = "animated " + $this.data("animation");
      $this.css({
        "animation-delay": $animationDelay,
        "-webkit-animation-delay": $animationDelay,
      });

      $this.addClass($animationType).one(animationEndEvents, function () {
        $this.removeClass($animationType);
      });
    });
  }

  /*------------------------------------------------------------------------------*/
  /* Animation on scroll: Number rotator
/*------------------------------------------------------------------------------*/

  $("[data-appear-animation]").each(function () {
    var self = $(this);
    var animation = self.data("appear-animation");
    var delay = self.data("appear-animation-delay")
      ? self.data("appear-animation-delay")
      : 0;

    if ($(window).width() > 959) {
      self.html("0");
      self.waypoint(
        function (direction) {
          if (!self.hasClass("completed")) {
            var from = self.data("from");
            var to = self.data("to");
            var interval = self.data("interval");
            self.numinate({
              format: "%counter%",
              from: from,
              to: to,
              runningInterval: 2000,
              stepUnit: interval,
              onComplete: function (elem) {
                self.addClass("completed");
              },
            });
          }
        },
        { offset: "85%" }
      );
    } else {
      if (animation == "animateWidth") {
        self.css("width", self.data("width"));
      }
    }
  });

  /*------------------------------------------------------------------------------*/
  /* Skillbar
/*------------------------------------------------------------------------------*/

  $(".progress-bar--container").each(function () {
    $(this).find(".progress-bar").width(0);
  });

  $(".progress-bar--container").each(function () {
    $(this)
      .find(".progress-bar")
      .animate(
        {
          width: $(this).attr("data-percent"),
        },
        2000
      );
  });

  // Part of the code responsible for loading percentages:

  $(".progress-bar-percent[data-percentage]").each(function () {
    var progress = $(this);
    var percentage = Math.ceil($(this).attr("data-percentage"));

    $({ countNum: 0 }).animate(
      { countNum: percentage },
      {
        duration: 2000,
        easing: "linear",
        step: function () {
          // What todo on every count
          var pct = "";
          if (percentage === "0") {
            pct = Math.floor(this.countNum) + "%";
          } else {
            pct = Math.floor(this.countNum + 1) + "%";
          }
          progress.text(pct);
        },
      }
    );
  });

  /*------------------------------------------------------------------------------*/
  /* Tab
/*------------------------------------------------------------------------------*/

  $(".ct-tabs > .tabs")
    .children("li")
    .on("click", function (e) {
      var tab = $(this).closest(".ct-tabs > .tabs > .tab"),
        index = $(this).closest(".ct-tabs > .tabs > li").index();

      $(this)
        .parents(".ct-tabs")
        .children(".tabs")
        .children("li.active ")
        .removeClass("active");

      $(this).addClass("active");
      $(this)
        .addClass("active")
        .parents(".ct-tabs")
        .children(".content-tab")
        .find(".content-inner")
        .not(".content-inner:eq(" + index + ")")
        .slideUp();
      $(this)
        .addClass("active")
        .parents(".ct-tabs")
        .children(".content-tab")
        .find(".content-inner:eq(" + index + ")")
        .slideDown();

      e.preventDefault();
    });

  /*------------------------------------------------------------------------------*/
  /* Accordion
/*------------------------------------------------------------------------------*/

  var allPanels = $(".accordion > .toggle").children(".toggle-content").hide();

  $(".toggle-title").on("click", function (e) {
    e.preventDefault();
    var $this = $(this);
    $this
      .parent()
      .parent()
      .find(".toggle .toggle-title a")
      .removeClass("active");

    if ($this.next().hasClass("show")) {
      $this.next().removeClass("show");
      $this.next().slideUp("easeInExpo");
    } else {
      $this
        .parent()
        .parent()
        .find(".toggle .toggle-content")
        .removeClass("show");
      $this
        .parent()
        .parent()
        .find(".toggle .toggle-content")
        .slideUp("easeInExpo");
      $this.next().toggleClass("show");
      $this.next().removeClass("show");
      $this.next().slideToggle("easeInExpo");
      $this.next().parent().children().children().addClass("active");
    }
  });

  /*------------------------------------------------------------------------------*/
  /* Isotope
/*------------------------------------------------------------------------------*/

  $(function () {
    if ($().isotope) {
      var $container = $(".isotope-project");
      $container.imagesLoaded(function () {
        $container.isotope({
          itemSelector: ".project_item",
          transitionDuration: "1s",
          layoutMode: "fitRows",
        });
      });

      $(".portfolio-filter li").on("click", function () {
        var selector = $(this).find("a").attr("data-filter");
        $(".portfolio-filter li").removeClass("active");
        $(this).addClass("active");
        $container.isotope({ filter: selector });
        return false;
      });
    }
  });

  /*------------------------------------------------------------------------------*/
  /* Prettyphoto
/*------------------------------------------------------------------------------*/
  $(function () {
    // Normal link
    jQuery(
      'a[href*=".jpg"], a[href*=".jpeg"], a[href*=".png"], a[href*=".gif"]'
    ).each(function () {
      if (
        jQuery(this).attr("target") != "_blank" &&
        !jQuery(this).hasClass("prettyphoto")
      ) {
        var attr = $(this).attr("rel");
        if (
          typeof attr !== typeof undefined &&
          attr !== false &&
          attr != "prettyPhoto"
        ) {
          jQuery(this).attr("data-rel", "prettyPhoto");
        }
      }
    });

    jQuery('a[data-rel^="prettyPhoto"]').prettyPhoto();
    jQuery("a.base_prettyphoto").prettyPhoto();
    jQuery('a[rel^="prettyPhoto"]').prettyPhoto();
  });

  /*------------------------------------------------------------------------------*/
  /* Slick_slider
/*------------------------------------------------------------------------------*/
  $(".slick-container").slick({
    speed: 1000,
    infinite: true,
    arrows: false,
    dots: false,
    autoplay: false,
    centerMode: false,

    responsive: [
      {
        breakpoint: 1360,
        settings: {
          slidesToShow: 3,
          slidesToScroll: 3,
        },
      },
      {
        breakpoint: 1024,
        settings: {
          slidesToShow: 3,
          slidesToScroll: 3,
        },
      },
      {
        breakpoint: 680,
        settings: {
          slidesToShow: 2,
          slidesToScroll: 2,
        },
      },
      {
        breakpoint: 575,
        settings: {
          slidesToShow: 1,
          slidesToScroll: 1,
        },
      },
    ],
  });

  /* testimonials */
  var testinav = jQuery(".testimonials-nav", this);
  var testiinfo = jQuery(".testimonials-info", this);

  jQuery(".testimonials-info", this).slick({
    slidesToShow: 1,
    slidesToScroll: 1,
    fade: false,
    arrows: false,
    asNavFor: testinav,
    adaptiveHeight: true,
    speed: 1700,
    autoplay: false,
    autoplaySpeed: 1700,
    infinite: true,
  });

  jQuery(".testimonials-nav", this).slick({
    slidesToShow: 1,
    slidesToScroll: 1,
    asNavFor: testiinfo,
    centerMode: true,
    centerPadding: 0,
    focusOnSelect: true,
    autoplay: false,
    autoplaySpeed: 1700,
    speed: 1700,
    arrows: false,
    dots: false,
    variableWidth: true,
    infinite: true,
  });

  /*------------------------------------------------------------------------------*/
  /* Back to top
/*------------------------------------------------------------------------------*/

  // ===== Scroll to Top ====
  jQuery("#totop").hide();

  $(window).on("scroll", function () {
    if (jQuery(this).scrollTop() >= 500) {
      // If page is scrolled more than 50px
      jQuery("#totop").fadeIn(200); // Fade in the arrow
      jQuery("#totop").addClass("top-visible");
    } else {
      jQuery("#totop").fadeOut(200); // Else fade out the arrow
      jQuery("#totop").removeClass("top-visible");
    }
  });

  jQuery("#totop").on("click", function () {
    // When arrow is clicked
    jQuery("body,html").animate(
      {
        scrollTop: 0, // Scroll to top of body
      },
      500
    );
    return false;
  });
});
