/* @license
 * jQuery.print, version 1.6.2
 * Licence: CC-By (http://creativecommons.org/licenses/by/3.0/)
 *--------------------------------------------------------------------------*/
!(function (h) {
  "use strict";
  function f(e, t, n) {
    for (
      var r,
        o,
        a,
        e = h(e),
        n = e.clone(t, n),
        i = e.find("textarea").add(e.filter("textarea")),
        l = n.find("textarea").add(n.filter("textarea")),
        c = e.find("select").add(e.filter("select")),
        d = n.find("select").add(n.filter("select")),
        s = e.find("canvas").add(e.filter("canvas")),
        f = n.find("canvas").add(n.filter("canvas")),
        p = 0,
        u = i.length;
      p < u;
      ++p
    )
      h(l[p]).val(h(i[p]).val());
    for (p = 0, u = c.length; p < u; ++p) for (r = 0, o = c[p].options.length; r < o; ++r) !0 === c[p].options[r].selected && (d[p].options[r].selected = !0);
    for (p = 0, u = s.length; p < u; ++p) (a = s[p].getContext("2d")) && (f[p].getContext("2d").drawImage(s[p], 0, 0), h(f[p]).attr("data-jquery-print", a.canvas.toDataURL()));
    return n;
  }
  function p(t) {
    var n = h("");
    try {
      n = f(t);
    } catch (e) {
      n = h("<span />").html(t);
    }
    return n;
  }
  function u(t, e, n) {
    var r = h.Deferred();
    try {
      t = t.contentWindow || t.contentDocument || t;
      try {
        t.resizeTo(window.innerWidth, window.innerHeight);
      } catch (e) {
        console.warn(e);
      }
      var o = t.document || t.contentDocument || t;
      n.doctype && o.write(n.doctype), o.write(e);
      try {
        for (var a = o.querySelectorAll("canvas"), i = 0; i < a.length; i++) {
          var l = a[i].getContext("2d"),
            c = new Image();
          (c.onload = function () {
            l.drawImage(c, 0, 0);
          }),
            (c.src = a[i].getAttribute("data-jquery-print"));
        }
      } catch (e) {
        console.warn(e);
      }
      o.close();
      var d = !1,
        s = function () {
          if (!d) {
            t.focus();
            try {
              t.document.execCommand("print", !1, null) || t.print(), h("body").focus();
            } catch (e) {
              t.print();
            }
            t.close(), (d = !0), r.resolve();
          }
        };
      h(t).on("load", s), setTimeout(s, n.timeout);
    } catch (e) {
      r.reject(e);
    }
    return r;
  }
  function y(e, t) {
    return u(window.open(), e, t).always(function () {
      try {
        t.deferred.resolve();
      } catch (e) {
        console.warn("Error notifying deferred", e);
      }
    });
  }
  function m(e) {
    return "object" == typeof Node ? e instanceof Node : e && "object" == typeof e && "number" == typeof e.nodeType && "string" == typeof e.nodeName;
  }
  h.print = h.fn.print = function () {
    var e = this;
    e instanceof h && (e = e.get(0)), m(e) ? ((o = h(e)), 0 < arguments.length && (t = arguments[0])) : 0 < arguments.length ? (m((o = h(arguments[0]))[0]) ? 1 < arguments.length && (t = arguments[1]) : ((t = arguments[0]), (o = h("html")))) : (o = h("html"));
    var e = { globalStyles: !0, mediaPrint: !1, stylesheet: null, noPrintSelector: ".no-print", iframe: !0, append: null, prepend: null, manuallyCopyFormValues: !0, deferred: h.Deferred(), timeout: 750, title: null, doctype: "<!doctype html>" },
      t = h.extend({}, e, t || {}),
      n = h("");
    if ((t.globalStyles ? (n = h("style, link, meta, base, title")) : t.mediaPrint && (n = h("link[media=print]")), t.stylesheet)) {
      (h.isArray || Array.isArray)(t.stylesheet) || (t.stylesheet = [t.stylesheet]);
      for (var r = 0; r < t.stylesheet.length; r++) n = h.merge(n, h('<link rel="stylesheet" href="' + t.stylesheet[r] + '">'));
    }
    var o,
      a = f(o, !0, !0);
    (a = h("<span/>").append(a)).find(t.noPrintSelector).remove(),
      a.append(f(n)),
      t.title && (0 === (o = h("title", a)).length && ((o = h("<title />")), a.append(o)), o.text(t.title)),
      a.append(p(t.append)),
      a.prepend(p(t.prepend)),
      t.manuallyCopyFormValues &&
        (a.find("input").each(function () {
          var e = h(this);
          e.is("[type='radio']") || e.is("[type='checkbox']") ? e.prop("checked") && e.attr("checked", "checked") : e.attr("value", e.val());
        }),
        a.find("select").each(function () {
          h(this).find(":selected").attr("selected", "selected");
        }),
        a.find("textarea").each(function () {
          var e = h(this);
          e.text(e.val());
        }));
    var i,
      l,
      c,
      d,
      s = a.html();
    try {
      t.deferred.notify("generated_markup", s, a);
    } catch (e) {
      console.warn("Error notifying deferred", e);
    }
    if ((a.remove(), t.iframe))
      try {
        (i = s),
          (c = h((l = t).iframe + "")),
          0 === (d = c.length) && (c = h('<iframe height="0" width="0" border="0" wmode="Opaque"/>').prependTo("body").css({ position: "absolute", top: -999, left: -999 })),
          u(c.get(0), i, l)
            .done(function () {
              setTimeout(function () {
                0 === d && c.remove();
              }, 1e3);
            })
            .fail(function (e) {
              console.error("Failed to print from iframe", e), y(i, l);
            })
            .always(function () {
              try {
                l.deferred.resolve();
              } catch (e) {
                console.warn("Error notifying deferred", e);
              }
            });
      } catch (e) {
        console.error("Failed to print from iframe", e.stack, e.message), y(s, t);
      }
    else y(s, t);
    return this;
  };
})(jQuery);
