// Search feature
var searchText = "";
// var searchTextQuery = searchText ? "search=" + searchText + "&" : "";
var searchQueryTimeout = null;

function fetchPublications(url, search, category, callback) {
  if (!url) {
    console.warn("url is required");
    return;
  }
  if (!callback) {
    console.warn("callback is required");
    return;
  }
  var qs = (search ? "search=" + search + "&" : "") + (category ? "category=" + category : "");
  return $.get(url + (qs ? "?" + qs : ""), callback).fail(function (error) {
    console.warn(error);
  });
}

function searchHandler() {
  if (!searchText) {
    document.getElementById("publication-listing") &&
      document.getElementById("publication-listing").classList.remove("searching");
  } else {
    document.getElementById("publication-listing") &&
      document.getElementById("publication-listing").classList.add("searching");
  }

  if (searchQueryTimeout) {
    clearTimeout(searchQueryTimeout);
  }

  var timeoutInMilliseconds = searchText ? 500 : 10;

  searchQueryTimeout = setTimeout(function () {
    // searchTextQuery = searchText ? "search=" + searchText + "&" : "";
    var category = $("[data-category].active").data("category");
    fetchPublications("/feeds/publications-integration-posts", searchText, category, function (data) {
      $(".feed-wrapper--publications").html(data);
      attachPaginationListeners();
      $(window).scrollTop($(".article-list--publications").offset().top);
      document.getElementById("publication-listing") &&
        document.getElementById("publication-listing").classList.remove("searching");
    });
  }, timeoutInMilliseconds);
}

function attachSearchListeners() {
  var searchInput = document.getElementById("search-input");
  if (!searchInput) return;
  function handleSearch(event) {
    if (event.keyCode && event.keyCode == 13) return;
    if (searchText == event.target.value) return;
    if (event.target.value && searchInput.value !== event.target.value) {
      console.warn("Mismatch on search input values");
    }
    searchText = searchInput.value;
    searchHandler();
  }
  searchInput.addEventListener("keyup", handleSearch);
  searchInput.addEventListener("change", handleSearch);
  searchInput.addEventListener("search", handleSearch);
  searchInput.addEventListener("input", handleSearch);
}

// If user has JS, replace CMS URLs with dynamic
$(document).ready(function () {
  $(".pagination a").each(function () {
    // this.href = this.href.replace("/news/", "/feeds/news-posts/");
    // this.href = this.href.replace("/uutiset/", "/feeds/news-posts/");
    this.href = this.href.replace("/blog/", "/feeds/blog-posts/");
    this.href = this.href.replace("/blogi/", "/feeds/blog-posts/");
	this.href = this.href.replace("/publications/", "/feeds/publications-integration-posts/");
  });
});

function attachPaginationListeners() {
  $(".feed-wrapper .pagination a").click(function (e) {
    var $el = $(this);
    e.preventDefault();
    $.get($(this).attr("href"), function (data) {
      $el.parents(".feed-wrapper").html(data);
      attachPaginationListeners();
      $(window).scrollTop($el.parents(".feed-wrapper").offset().top);
    }).fail(function (error) {
      console.error(error);
    });
  });
}
attachPaginationListeners();

// Publications english
$(".article-list--publications__en [data-category]").click(function (e) {
  e.preventDefault();
  var $el = $(this);
  var $parent = $el.parent();
  $parent.find("a.active").removeClass("active");
  $el.addClass("active");
  var category = $el.data("category");
  fetchPublications("/feeds/publications-integration-posts", searchText, category, function (data) {
    console.log("data", data);
    $(".feed-wrapper--publications").html(data);
    attachPaginationListeners();
    $(window).scrollTop($(".article-list--publications").offset().top);
  });
  // $.get("/feeds/publications-integration-posts?" + searchTextQuery + "category=" + category, function (data) {
  //
  // }).fail(function (error) {
  //   console.error(error);
  // });
});

// Publications finnish
$(".article-list--publications__fi [data-category]").click(function (e) {
  e.preventDefault();
  var $el = $(this);
  var $parent = $el.parent();
  $parent.find("a.active").removeClass("active");
  $el.addClass("active");
  var category = $el.data("category");
  fetchPublications("/fi/feeds/publications-integration-posts", searchText, category, function (data) {
    console.log("data", data);
    $(".feed-wrapper--publications").html(data);
    attachPaginationListeners();
    $(window).scrollTop($(".article-list--publications").offset().top);
  });
  // $.get("/fi/feeds/publications-integration-posts?" + searchTextQuery + "category=" + category, function (data) {

  // }).fail(function (error) {
  //   console.error(error);
  // });
});

// Blog english
$(".article-list--blog__en [data-category]").click(function (e) {
  e.preventDefault();
  var $el = $(this);
  var $parent = $el.parent();
  $parent.find("a.active").removeClass("active");
  $el.addClass("active");
  var category = $el.data("category");
  fetchPublications("/feeds/blog-posts", searchText, category, function (data) {
    console.log("data", data);
    $(".feed-wrapper--blog").html(data);
    attachPaginationListeners();
    $(window).scrollTop($(".article-list--blog").offset().top);
  });
  // $.get("/feeds/blog-posts?" + searchTextQuery + "category=" + category, function (data) {}).fail(function (error) {
  //   console.error(error);
  // });
});

// Blog finnish
$(".article-list--blog__fi [data-category]").click(function (e) {
  e.preventDefault();
  var $el = $(this);
  var $parent = $el.parent();
  $parent.find("a.active").removeClass("active");
  $el.addClass("active");
  var category = $el.data("category");
  fetchPublications("/fi/feeds/blog-posts", searchText, category, function (data) {
    // $.get("/fi/feeds/blog-posts?" + searchTextQuery + "category=" + category, function (data) {
    console.log("data", data);
    $(".feed-wrapper--blog").html(data);
    attachPaginationListeners();
    $(window).scrollTop($(".article-list--blog").offset().top);
  });
  // .fail(function (error) {
  //   console.error(error);
  // });
});

// News english
$(".article-list--news__en [data-category]").click(function (e) {
  e.preventDefault();
  var $el = $(this);
  var $parent = $el.parent();
  $parent.find("a.active").removeClass("active");
  $el.addClass("active");
  var category = $el.data("category");
  fetchPublications("/feeds/news-posts", searchText, category, function (data) {
    console.log("data", data);
    $(".feed-wrapper--news").html(data);
    attachPaginationListeners();
    $(window).scrollTop($(".article-list--news").offset().top);
  });
  $.get("/feeds/news-posts?" + searchTextQuery + "category=" + category, function (data) {
    console.log("data", data);
    $(".feed-wrapper--news").html(data);
    attachPaginationListeners();
    $(window).scrollTop($(".article-list--news").offset().top);
  }).fail(function (error) {
    console.error(error);
  });
});

// News english
$(".article-list--news__fi [data-category]").click(function (e) {
  e.preventDefault();
  var $el = $(this);
  var $parent = $el.parent();
  $parent.find("a.active").removeClass("active");
  $el.addClass("active");
  var category = $el.data("category");
  fetchPublications("/fi/feeds/news-posts", searchText, category, function (data) {
    console.log("data", data);
    $(".feed-wrapper--news").html(data);
    attachPaginationListeners();
    $(window).scrollTop($(".article-list--news").offset().top);
  });
  // $.get("/fi/feeds/news-posts?" + searchTextQuery + "category=" + category, function (data) {
  //   console.log("data", data);
  //   $(".feed-wrapper--news").html(data);
  //   attachPaginationListeners();
  //   $(window).scrollTop($(".article-list--news").offset().top);
  // }).fail(function (error) {
  //   console.error(error);
  // });
});

$(function () {
  attachSearchListeners();
});
