/*!

* Simple-Jekyll-Search v1.7.2 (https://github.com/christian-fei/Simple-Jekyll-Search)
* Copyright 2015-2018, Christian Fei
* Licensed under the MIT License.
*/

!(function() {

"use strict";
var f = {
  load: function w(t, e) {
    var n = (function r() {
      return window.XMLHttpRequest
        ? new window.XMLHttpRequest()
        : new ActiveXObject("Microsoft.XMLHTTP");
    })();
    n.open("GET", t, !0),
      (n.onreadystatechange = (function i(e, n) {
        return function() {
          if (4 === e.readyState && 200 === e.status)
            try {
              n(null, JSON.parse(e.responseText));
            } catch (t) {
              n(t, null);
            }
        };
      })(n, e)),
      n.send();
  }
};
(function y(t) {
  if (
    !(function e(t) {
      return (
        !!t && "undefined" != typeof t.required && t.required instanceof Array
      );
    })(t)
  )
    throw new Error("-- OptionsValidator: required options missing");
  if (!(this instanceof y)) return new y(t);
  var r = t.required;
  (this.getRequiredOptions = function() {
    return r;
  }),
    (this.validate = function(e) {
      var n = [];
      return (
        r.forEach(function(t) {
          "undefined" == typeof e[t] && n.push(t);
        }),
        n
      );
    });
});
var n = function g(t, e) {
    var n = e.length,
      r = t.length;
    if (n < r) return !1;
    if (r === n) return t === e;
    t: for (var i = 0, o = 0; i < r; i++) {
      for (var u = t.charCodeAt(i); o < n; )
        if (e.charCodeAt(o++) === u) continue t;
      return !1;
    }
    return !0;
  },
  e = new (function t() {
    this.matches = function(t, e) {
      return n(e.toLowerCase(), t.toLowerCase());
    };
  })();
var r = new (function O() {
  this.matches = function(e, t) {
    return (
      !!e &&
      ((e = e.trim().toLowerCase()),
      (t = t.trim().toLowerCase()).split(" ").filter(function(t) {
        return 0 <= e.indexOf(t);
      }).length === t.split(" ").length)
    );
  };
})();
var l = {
  put: function z(t) {
    if (c(t)) return s(t);
    if (
      (function e(t) {
        return (
          Boolean(t) && "[object Array]" === Object.prototype.toString.call(t)
        );
      })(t)
    )
      return (function i(t) {
        var e = [];
        a();
        for (var n = 0, r = t.length; n < r; n++) c(t[n]) && e.push(s(t[n]));
        return e;
      })(t);
    return undefined;
  },
  clear: a,
  search: function S(t) {
    return t
      ? (function a(t, e, n, r) {
          for (var i = [], o = 0; o < t.length && i.length < r.limit; o++) {
            var u = d(t[o], e, n, r);
            u && i.push(u);
          }
          return i;
        })(o, t, u.searchStrategy, u).sort(u.sort)
      : [];
  },
  setOptions: function q(t) {
    ((u = t || {}).fuzzy = t.fuzzy || !1),
      (u.limit = t.limit || 10),
      (u.searchStrategy = t.fuzzy ? e : r),
      (u.sort = t.sort || i);
  }
};
function i() {
  return 0;
}
var o = [],
  u = {};
function a() {
  return (o.length = 0), o;
}
function c(t) {
  return (
    Boolean(t) && "[object Object]" === Object.prototype.toString.call(t)
  );
}
function s(t) {
  return o.push(t), o;
}
function d(t, e, n, r) {
  for (var i in t) if (!p(t[i], r.exclude) && n.matches(t[i], e)) return t;
}
function p(t, e) {
  for (var n = !1, r = 0, i = (e = e || []).length; r < i; r++) {
    var o = e[r];
    !n && new RegExp(t).test(o) && (n = !0);
  }
  return n;
}
(u.fuzzy = !1),
  (u.limit = 10),
  (u.searchStrategy = u.fuzzy ? e : r),
  (u.sort = i);
var h = {
    compile: function j(r) {
      return m.template.replace(m.pattern, function(t, e) {
        var n = m.middleware(e, r[e], m.template);
        return void 0 !== n ? n : r[e] || t;
      });
    },
    setOptions: function C(t) {
      (m.pattern = t.pattern || m.pattern),
        (m.template = t.template || m.template),
        "function" == typeof t.middleware && (m.middleware = t.middleware);
    }
  },
  m = {};
(m.pattern = /\{(.*?)\}/g), (m.template = ""), (m.middleware = function() {});
var v = {
  merge: function L(t, e) {
    var n = {};
    for (var r in t)
      (n[r] = t[r]), "undefined" != typeof e[r] && (n[r] = e[r]);
    return n;
  },
  isJSON: function M(t) {
    try {
      return !!(t instanceof Object && JSON.parse(JSON.stringify(t)));
    } catch (e) {
      return !1;
    }
  }
};
!(function(t) {
  var o = {
      searchInput: null,
      resultsContainer: null,
      json: [],
      success: Function.prototype,
      searchResultTemplate:
        '<li><a href="{url}" title="{desc}">{title}</a></li>',
      templateMiddleware: Function.prototype,
      sortMiddleware: function() {
        return 0;
      },
      noResultsText: "No results found",
      limit: 10,
      fuzzy: !1,
      exclude: []
    },
    n = ["searchInput", "resultsContainer", "json"],
    r = (function y(e) {
      if (
        !(function n(t) {
          return (
            !!t &&
            "undefined" != typeof t.required &&
            t.required instanceof Array
          );
        })(e)
      )
        throw new Error("-- OptionsValidator: required options missing");
      if (!(this instanceof y)) return new y(e);
      var r = e.required;
      (this.getRequiredOptions = function() {
        return r;
      }),
        (this.validate = function(e) {
          var n = [];
          return (
            r.forEach(function(t) {
              "undefined" == typeof e[t] && n.push(t);
            }),
            n
          );
        });
    })({ required: n });
  function i(t) {
    o.success(t),
      l.put(t),
      (function e() {
        o.searchInput.addEventListener("keyup", function(t) {
          (function e(t) {
            return -1 === [13, 16, 20, 37, 38, 39, 40, 91].indexOf(t);
          })(t.which) && (u(), c(t.target.value));
        });
      })();
  }
  function u() {
    o.resultsContainer.innerHTML = "";
  }
  function a(t) {
    o.resultsContainer.innerHTML += t;
  }
  function c(t) {
    (function e(t) {
      return t && 0 < t.length;
    })(t) &&
      (u(),
      (function i(t, e) {
        var n = t.length;
        if (0 === n) return a(o.noResultsText);
        for (var r = 0; r < n; r++) (t[r].query = e), a(h.compile(t[r]));
      })(l.search(t), t));
  }
  function s(t) {
    throw new Error("SimpleJekyllSearch --- " + t);
  }
  t.SimpleJekyllSearch = function(t) {
    return (
      0 < r.validate(t).length &&
        s("You must specify the following required options: " + n),
      (o = v.merge(o, t)),
      h.setOptions({
        template: o.searchResultTemplate,
        middleware: o.templateMiddleware
      }),
      l.setOptions({
        fuzzy: o.fuzzy,
        limit: o.limit,
        sort: o.sortMiddleware
      }),
      v.isJSON(o.json)
        ? i(o.json)
        : (function e(n) {
            f.load(n, function(t, e) {
              t && s("failed to get JSON (" + n + ")"), i(e);
            });
          })(o.json),
      { search: c }
    );
  };
})(window);

})();