Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function(a) {
- a.fn.extend({
- troppinautocomplete: function(b, c) {
- var d = typeof b == "string";
- c = a.extend({}, a.TroppinAutocompleter.defaults, { url: d ? b : null, data: d ? null : b, delay: d ? a.TroppinAutocompleter.defaults.delay : 10, max: c && !c.scroll ? 10 : 150 }, c);
- c.highlight = c.highlight || function(e) { return e };
- c.formatMatch = c.formatMatch || c.formatItem;
- return this.each(function() {
- new a.TroppinAutocompleter(this, c)
- })
- }, result: function(b) { return this.bind("result", b) }, search: function(b) {
- return this.trigger("search", [b])
- }, flushCache: function() {
- return this.trigger("flushCache")
- }, setOptions: function(b) {
- return this.trigger("setOptions", [b])
- }, untroppinautocomplete: function() {
- return this.trigger("untroppinautocomplete")
- }
- });
- a.TroppinAutocompleter = function(l, g) {
- var c = { UP: 38, DOWN: 40, DEL: 46, TAB: 9, RETURN: 13, ESC: 27, COMMA: 188, PAGEUP: 33, PAGEDOWN: 34, BACKSPACE: 8 };
- var b = a(l).attr("troppinautocomplete", "off").addClass(g.inputClass);
- var j;
- var p = "";
- var m = a.TroppinAutocompleter.Cache(g);
- var e = 0;
- var u;
- var x = { mouseDownOnSelect: false };
- var r = a.TroppinAutocompleter.Select(g, l, d, x);
- var w;
- a.browser.opera && a(l.form).bind("submit.troppinautocomplete", function() {
- if (w) {
- w = false; return false
- }
- });
- b.bind((a.browser.opera ? "keypress" : "keydown") + ".troppinautocomplete", function(y) {
- u = y.keyCode;
- switch (y.keyCode) {
- case c.UP: y.preventDefault();
- if (r.visible()) {
- r.prev()
- } else {
- t(0, true)
- }
- break;
- case c.DOWN: y.preventDefault();
- if (r.visible()) {
- r.next()
- } else {
- t(0, true)
- } break;
- case c.PAGEUP: y.preventDefault();
- if (r.visible()) {
- r.pageUp()
- } else {
- t(0, true)
- } break;
- case c.PAGEDOWN: y.preventDefault();
- if (r.visible()) {
- r.pageDown()
- } else {
- t(0, true)
- } break;
- case g.multiple && a.trim(g.multipleSeparator) == "," && c.COMMA: case c.TAB: case c.RETURN: if (d()) {
- y.preventDefault();
- w = true;
- return false
- } break;
- case c.ESC: r.hide();
- break;
- default: clearTimeout(j);
- j = setTimeout(t, g.delay);
- break
- }
- }).focus(function() { e++ }).blur(function() {
- e = 0;
- if (!x.mouseDownOnSelect) {
- s()
- }
- }).click(function() {
- if (e++ > 1 && !r.visible()) {
- t(0, true)
- }
- }).bind("search", function() {
- var y = (arguments.length > 1) ? arguments[1] : null;
- function z(D, C) {
- var A;
- if (C && C.length) {
- for (var B = 0; B < C.length; B++) {
- if (C[B].result.toLowerCase() == D.toLowerCase()) {
- A = C[B];
- break
- }
- }
- }
- if (typeof y == "function") {
- y(A)
- } else {
- b.trigger("result", A && [A.data, A.value])
- }
- }
- a.each(h(b.val()), function(A, B) {
- f(B, z, z)
- })
- }).bind("flushCache", function() { m.flush() }).bind("setOptions", function() {
- a.extend(g, arguments[1]);
- if ("data" in arguments[1]) { m.populate() }
- }).bind("untroppinautocomplete", function() {
- r.unbind();
- b.unbind();
- a(l.form).unbind(".troppinautocomplete")
- });
- function d() {
- var z = r.selected();
- if (!z) { return false }
- var y = z.result;
- y = y.replace(/\s+\(\d+\)$/, "");
- p = y;
- if (g.multiple) {
- var A = h(b.val());
- if (A.length > 1) {
- y = A.slice(0, A.length - 1).join(g.multipleSeparator) + g.multipleSeparator + y
- } y += g.multipleSeparator
- }
- b.val(y);
- v();
- b.trigger("result", [z.data, z.value]); return true
- }
- function t(A, z) {
- if (u == c.DEL) {
- r.hide();
- return
- }
- var y = b.val();
- if (!z && y == p) { return }
- p = y;
- y = i(y);
- if (y.length >= g.minChars) {
- b.addClass(g.loadingClass);
- if (!g.matchCase) {
- y = y.toLowerCase()
- }
- f(y, k, v)
- } else {
- n();
- r.hide()
- }
- }
- function h(z) {
- if (!z) {
- return [""]
- }
- var A = z.split(g.multipleSeparator);
- var y = [];
- a.each(A, function(B, C) {
- if (a.trim(C)) {
- y[B] = a.trim(C)
- }
- });
- return y
- }
- function i(y) {
- if (!g.multiple) {
- return y
- }
- var z = h(y);
- return z[z.length - 1]
- }
- function q(y, z) {
- if (g.autoFill && (i(b.val()).toLowerCase() == y.toLowerCase()) && u != c.BACKSPACE) {
- b.val(b.val() + z.substring(i(p).length));
- a.TroppinAutocompleter.Selection(l, p.length, p.length + z.length)
- }
- }
- function s() {
- clearTimeout(j);
- j = setTimeout(v, 200)
- }
- function v() {
- var y = r.visible();
- r.hide();
- clearTimeout(j);
- n();
- if (g.mustMatch) {
- b.search(function(z) {
- if (!z) {
- if (g.multiple) {
- var A = h(b.val()).slice(0, -1);
- b.val(A.join(g.multipleSeparator) + (A.length ? g.multipleSeparator : ""))
- } else {
- b.val("")
- }
- }
- })
- }
- if (y) {
- a.TroppinAutocompleter.Selection(l, l.value.length, l.value.length)
- }
- }
- function k(z, y) {
- if (y && y.length && e) {
- n();
- r.display(y, z);
- q(z, y[0].value);
- r.show()
- } else {
- v()
- }
- }
- function f(z, B, y) {
- if (!g.matchCase) {
- z = z.toLowerCase()
- }
- var A = m.load(z);
- if (A && A.length) {
- B(z, A)
- } else {
- if ((typeof g.url == "string") && (g.url.length > 0)) {
- var C = { timestamp: +new Date() };
- a.each(g.extraParams, function(D, E) { C[D] = typeof E == "function" ? E() : E });
- a.ajax({ mode: "abort", port: "troppinautocomplete" + l.name, dataType: g.dataType, url: g.url + "/" + g.max + "/" + i(z), cache: false, success: function(E) {
- var D = g.parse && g.parse(E) || o(E);
- m.add(z, D);
- B(z, D)
- }
- })
- } else {
- r.emptyList();
- y(z)
- }
- }
- }
- function o(B) {
- var y = [];
- var A = B.split("\n");
- for (var z = 0; z < A.length; z++) {
- var C = a.trim(A[z]);
- if (C) {
- C = C.split("|");
- y[y.length] = { data: C, value: C[0], result: g.formatResult && g.formatResult(C, C[0]) || C[0]
- }
- }
- }
- return y
- }
- function n() {
- b.removeClass(g.loadingClass)
- }
- };
- a.TroppinAutocompleter.defaults = {
- inputClass: "ac_input",
- resultsClass: "ac_results",
- loadingClass: "ac_loading",
- minChars: 1,
- delay: 400,
- matchCase: false,
- matchSubset: true,
- matchContains: false,
- cacheLength: 10,
- max: 100,
- mustMatch: false,
- extraParams: {},
- selectFirst: true,
- formatItem: function(b) { return b[0] },
- formatMatch: null,
- formatResult: function(b) { return b[0] },
- autoFill: false,
- width: 0,
- multiple: false,
- multipleSeparator: ", ",
- highlight: function(c, b) { return c.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + b.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>") },
- scroll: true,
- scrollHeight: 180
- };
- a.TroppinAutocompleter.Cache = function(c) {
- var f = {};
- var d = 0;
- function h(l, k) {
- if (!c.matchCase) {
- l = l.toLowerCase()
- }
- var j = l.indexOf(k);
- if (j == -1) {
- return false
- }
- return j == 0 || c.matchContains
- }
- function g(j, i) {
- if (d > c.cacheLength) {
- b()
- }
- if (!f[j]) {
- d++
- }
- f[j] = i
- }
- function e() {
- if (!c.data) {
- return false
- }
- var k = {}, j = 0;
- if (!c.url) {
- c.cacheLength = 1
- }
- k[""] = [];
- for (var m = 0, l = c.data.length; m < l; m++) {
- var p = c.data[m];
- p = (typeof p == "string") ? [p] : p;
- var o = c.formatMatch(p, m + 1, c.data.length);
- if (o === false) {
- continue
- }
- var n = o.charAt(0).toLowerCase();
- if (!k[n]) {
- k[n] = []
- }
- var q = { value: o, data: p, result: c.formatResult && c.formatResult(p) || o };
- k[n].push(q);
- if (j++ < c.max) {
- k[""].push(q)
- }
- }
- a.each(k, function(r, s) {
- c.cacheLength++;
- g(r, s)
- })
- }
- setTimeout(e, 25);
- function b() {
- f = {};
- d = 0
- }
- return {
- flush: b,
- add: g,
- populate: e,
- load: function(n) {
- if (!c.cacheLength || !d) {
- return null
- }
- if (!c.url && c.matchContains) {
- var m = [];
- for (var j in f) {
- if (j.length > 0) {
- var o = f[j]; a.each(o, function(p, k) {
- if (h(k.value, n)) {
- m.push(k)
- }
- })
- }
- }
- return m
- } else {
- if (f[n]) {
- return f[n]
- } else {
- if (c.matchSubset) {
- for (var l = n.length - 1; l >= c.minChars; l--) {
- var o = f[n.substr(0, l)];
- if (o) {
- var m = [];
- a.each(o, function(p, k) {
- if (h(k.value, n)) {
- m[m.length] = k
- }
- });
- return m
- }
- }
- }
- }
- }
- return null
- }
- }
- };
- a.TroppinAutocompleter.Select = function(e, j, l, p) {
- var i = { ACTIVE: "ac_over" };
- var k, f = -1, r, m = "", s = true, c, o;
- function n() {
- if (!s) {
- return
- }
- c = a("<div/>").hide().addClass(e.resultsClass).css("position", "absolute").appendTo(document.body); o = a("<ul/>").appendTo(c).mouseover(function(t) {
- if (q(t).nodeName && q(t).nodeName.toUpperCase() == "LI") {
- f = a("li", o).removeClass(i.ACTIVE).index(q(t));
- a(q(t)).addClass(i.ACTIVE)
- }
- }).click(function(t) {
- a(q(t)).addClass(i.ACTIVE);
- l();
- j.focus();
- return false
- }).mousedown(function() { p.mouseDownOnSelect = true }).mouseup(function() { p.mouseDownOnSelect = false });
- if (e.width > 0) {
- c.css("width", e.width)
- }
- s = false
- }
- function q(u) {
- var t = u.target;
- while (t && t.tagName != "LI") {
- t = t.parentNode
- }
- if (!t) {
- return []
- }
- return t
- }
- function h(t) {
- k.slice(f, f + 1).removeClass(i.ACTIVE);
- g(t);
- var v = k.slice(f, f + 1).addClass(i.ACTIVE);
- if (e.scroll) {
- var u = 0;
- k.slice(0, f).each(function() {
- u += this.offsetHeight
- });
- if ((u + v[0].offsetHeight - o.scrollTop()) > o[0].clientHeight) {
- o.scrollTop(u + v[0].offsetHeight - o.innerHeight())
- } else {
- if (u < o.scrollTop()) {
- o.scrollTop(u)
- }
- }
- }
- }
- function g(t) {
- f += t;
- if (f < 0) {
- f = k.size() - 1
- } else {
- if (f >= k.size()) {
- f = 0
- }
- }
- }
- function b(t) {
- return e.max && e.max < t ? e.max : t
- }
- function d() {
- o.empty();
- var u = b(r.length);
- for (var v = 0; v < u; v++) {
- if (!r[v]) {
- continue
- }
- var w = e.formatItem(r[v].data, v + 1, u, r[v].value, m);
- if (w === false) {
- continue
- }
- var t = a("<li/>").html(e.highlight(w, m)).addClass(v % 2 == 0 ? "ac_even" : "ac_odd").appendTo(o)[0];
- a.data(t, "ac_data", r[v])
- }
- k = o.find("li");
- if (e.selectFirst) {
- k.slice(0, 1).addClass(i.ACTIVE);
- f = 0
- } if (a.fn.bgiframe) {
- o.bgiframe()
- }
- }
- return { display: function(u, t) {
- n();
- r = u;
- m = t;
- d()
- },
- next: function() { h(1) },
- prev: function() { h(-1) },
- pageUp: function() {
- if (f != 0 && f - 8 < 0) {
- h(-f)
- } else {
- h(-8)
- }
- },
- pageDown: function() {
- if (f != k.size() - 1 && f + 8 > k.size()) {
- h(k.size() - 1 - f)
- } else {
- h(8)
- }
- },
- hide: function() {
- c && c.hide();
- k && k.removeClass(i.ACTIVE);
- f = -1
- },
- visible: function() { return c && c.is(":visible") }, current: function() { return this.visible() && (k.filter("." + i.ACTIVE)[0] || e.selectFirst && k[0]) },
- show: function() {
- var v = a(j).offset();
- c.css({ width: typeof e.width == "string" || e.width > 0 ? e.width : a(j).width(), top: v.top + j.offsetHeight, left: v.left }).show();
- if (e.scroll) {
- o.scrollTop(0); o.css({ maxHeight: e.scrollHeight, overflow: "auto" });
- if (a.browser.msie && typeof document.body.style.maxHeight === "undefined") {
- var t = 0;
- k.each(function() {
- t += this.offsetHeight
- });
- var u = t > e.scrollHeight;
- o.css("height", u ? e.scrollHeight : t);
- if (!u) {
- k.width(o.width() - parseInt(k.css("padding-left")) - parseInt(k.css("padding-right")))
- }
- }
- }
- },
- selected: function() {
- var t = k && k.filter("." + i.ACTIVE).removeClass(i.ACTIVE);
- return t && t.length && a.data(t[0], "ac_data")
- }, emptyList: function() {
- o && o.empty()
- }, unbind: function() {
- c && c.remove()
- }
- }
- };
- a.TroppinAutocompleter.Selection = function(d, e, c) {
- if (d.createTextRange) {
- var b = d.createTextRange();
- b.collapse(true);
- b.moveStart("character", e);
- b.moveEnd("character", c);
- b.select()
- } else {
- if (d.setSelectionRange) {
- d.setSelectionRange(e, c)
- } else {
- if (d.selectionStart) {
- d.selectionStart = e;
- d.selectionEnd = c
- }
- }
- }
- d.focus()
- }
- })(jQuery);
- (function(a) {
- a.fn.bgIframe = a.fn.bgiframe = function(c) {
- if (a.browser.msie && /6.0/.test(navigator.userAgent)) {
- c = a.extend({ top: "auto", left: "auto", width: "auto", height: "auto", opacity: true, src: "javascript:false;" }, c || {});
- var d = function(e) {
- return e && e.constructor == Number ? e + "px" : e
- },
- b = '<iframe class="bgiframe"frameborder="0"tabindex="-1"src="' + c.src + '"style="display:block;position:absolute;z-index:-1;' + (c.opacity !== false ? "filter:Alpha(Opacity='0');" : "") + "top:" + (c.top == "auto" ? "expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+'px')" : d(c.top)) + ";left:" + (c.left == "auto" ? "expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+'px')" : d(c.left)) + ";width:" + (c.width == "auto" ? "expression(this.parentNode.offsetWidth+'px')" : d(c.width)) + ";height:" + (c.height == "auto" ? "expression(this.parentNode.offsetHeight+'px')" : d(c.height)) + ';"/>';
- return this.each(function() {
- if (a("> iframe.bgiframe", this).length == 0) {
- this.insertBefore(document.createElement(b), this.firstChild)
- }
- })
- }
- return this
- }
- })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement