diff --git a/fancy_input/jquery.fancy_input.js b/fancy_input/jquery.fancy_input.js
index 6501e02..c4c596d 100644
--- a/fancy_input/jquery.fancy_input.js
+++ b/fancy_input/jquery.fancy_input.js
@@ -5,122 +5,122 @@
* Released under the MIT license.
*/
(function($){
- $.fn.fancy_input = {
-
- timeout: null,
-
- default_options: {},
-
- keys: {
- BACKSPACE: 8,
- TAB: 9,
- RETURN: 13,
- ENTER: 13,
- SHIFT: 16,
- CTRL: 17,
- ALT: 18,
- PAUSE: 19,
- BREAK: 19,
- CAPSLOCK: 20,
- ESC: 27,
- PAGEUP: 33,
- PAGEDOWN: 34,
- END: 35,
- HOME: 36,
- ARROW_LEFT: 37,
- ARROW_UP: 38,
- ARROW_RIGHT: 39,
- ARROW_DOWN: 40,
- INSERT: 45,
- DELETE: 46,
- SPECIALS_END: 47
- },
+ $.fn.fancy_input = {
+
+ timeout: null,
+
+ default_options: {},
+
+ keys: {
+ BACKSPACE: 8,
+ TAB: 9,
+ RETURN: 13,
+ ENTER: 13,
+ SHIFT: 16,
+ CTRL: 17,
+ ALT: 18,
+ PAUSE: 19,
+ BREAK: 19,
+ CAPSLOCK: 20,
+ ESC: 27,
+ PAGEUP: 33,
+ PAGEDOWN: 34,
+ END: 35,
+ HOME: 36,
+ ARROW_LEFT: 37,
+ ARROW_UP: 38,
+ ARROW_RIGHT: 39,
+ ARROW_DOWN: 40,
+ INSERT: 45,
+ DELETE: 46,
+ SPECIALS_END: 47
+ },
- elm_uid: function(elm){
- if (elm.attr("id") !== "") {
- return "ID_" + elm.attr("id");
- } else if (elm.attr("class") !== "") {
- return "CL_" + elm.attr("class");
- } else if (elm.attr("name") !== "") {
- return "NA_" + elm.attr("name");
- };
- return "";
- },
-
- setTimeout: function(callback, delay){
- this.clearTimeout();
- this.timeout = setTimeout(callback, delay);
- },
+ elm_uid: function(elm){
+ if (elm.attr("id") !== "") {
+ return "ID_" + elm.attr("id");
+ } else if (elm.attr("class") !== "") {
+ return "CL_" + elm.attr("class");
+ } else if (elm.attr("name") !== "") {
+ return "NA_" + elm.attr("name");
+ };
+ return "";
+ },
+
+ setTimeout: function(callback, delay){
+ this.clearTimeout();
+ this.timeout = setTimeout(callback, delay);
+ },
- clearTimeout: function(){
- if (this.timeout !== null) {
- clearTimeout(this.timeout);
- this.timeout = null;
- };
- },
-
- mustache: function(string, data){
- if (typeof(string) === "string" && typeof(data) === "object") {
- for (var key in data) {
- string = string.replace(new RegExp("{{\\s*" + key + "\\s*}}", "g"), data[key]);
- }
- };
- return string;
- },
-
- replace_elm: function(target, replacement){
- if (typeof(target.attr("id")) !== "undefined" && target.attr("id") !== "") {
- replacement = replacement.attr("id", target.attr("id"));
- };
- if (typeof(target.attr("class")) !== "undefined" && target.attr("class") !== "") {
- replacement = replacement.attr("class", target.attr("class"));
- };
- target.replaceWith(replacement);
- return replacement;
- },
-
- /*
- redirect_to method from: http://gist.github.com/327227
- */
- redirect_to: function(url, location){
- var redirect_to = "";
- if (typeof(location) == "undefined") location = window.location;
- if (url.match(/^[a-zA-Z]+\:\/\/.+/) === null) {
- redirect_to += location.protocol + "//" + location.hostname;
- if (location.port != "") redirect_to += ":" + location.port;
- if (url.charAt(0) !== "/") redirect_to += location.pathname.substr(0, location.pathname.lastIndexOf("/")+1);
- window.location.href = redirect_to + url;
- } else {
- window.location.href = url;
- };
- },
-
- // "borrowed" from PutCursorAtEnd plugin: http://plugins.jquery.com/project/PutCursorAtEnd
- putCursorAtEnd: function(){
- return this.each(function(){
- $(this).focus();
- if (this.setSelectionRange) {
- var len = $(this).val().length * 2;
- this.setSelectionRange(len, len);
- } else {
- $(this).val($(this).val());
- }
- this.scrollTop = 999999;
- });
- }
-
-
- };
+ clearTimeout: function(){
+ if (this.timeout !== null) {
+ clearTimeout(this.timeout);
+ this.timeout = null;
+ };
+ },
+
+ mustache: function(string, data){
+ if (typeof(string) === "string" && typeof(data) === "object") {
+ for (var key in data) {
+ string = string.replace(new RegExp("{{\\s*" + key + "\\s*}}", "g"), data[key]);
+ }
+ };
+ return string;
+ },
+
+ replace_elm: function(target, replacement){
+ if (typeof(target.attr("id")) !== "undefined" && target.attr("id") !== "") {
+ replacement = replacement.attr("id", target.attr("id"));
+ };
+ if (typeof(target.attr("class")) !== "undefined" && target.attr("class") !== "") {
+ replacement = replacement.attr("class", target.attr("class"));
+ };
+ target.replaceWith(replacement);
+ return replacement;
+ },
+
+ /*
+ redirect_to method from: http://gist.github.com/327227
+ */
+ redirect_to: function(url, location){
+ var redirect_to = "";
+ if (typeof(location) == "undefined") location = window.location;
+ if (url.match(/^[a-zA-Z]+\:\/\/.+/) === null) {
+ redirect_to += location.protocol + "//" + location.hostname;
+ if (location.port != "") redirect_to += ":" + location.port;
+ if (url.charAt(0) !== "/") redirect_to += location.pathname.substr(0, location.pathname.lastIndexOf("/")+1);
+ window.location.href = redirect_to + url;
+ } else {
+ window.location.href = url;
+ };
+ },
+
+ // "borrowed" from PutCursorAtEnd plugin: http://plugins.jquery.com/project/PutCursorAtEnd
+ putCursorAtEnd: function(){
+ return this.each(function(){
+ $(this).focus();
+ if (this.setSelectionRange) {
+ var len = $(this).val().length * 2;
+ this.setSelectionRange(len, len);
+ } else {
+ $(this).val($(this).val());
+ }
+ this.scrollTop = 999999;
+ });
+ }
+
+
+ };
})(jQuery);
/*
- Crossbrowser hasOwnProperty solution, based on answers from:
- http://stackoverflow.com/questions/135448/how-do-i-check-to-see-if-an-object-has-an-attribute-in-javascript
+ Crossbrowser hasOwnProperty solution, based on answers from:
+ http://stackoverflow.com/questions/135448/how-do-i-check-to-see-if-an-object-has-an-attribute-in-javascript
*/
if ( !Object.prototype.hasOwnProperty ) {
- Object.prototype.hasOwnProperty = function(prop){
- var proto = obj.__proto__ || obj.constructor.prototype;
- return (prop in this) && (!(prop in proto) || proto[prop] !== this[prop]);
- };
+ Object.prototype.hasOwnProperty = function(prop){
+ var proto = obj.__proto__ || obj.constructor.prototype;
+ return (prop in this) && (!(prop in proto) || proto[prop] !== this[prop]);
+ };
}
diff --git a/fancy_input/jquery.fancy_suggest.css b/fancy_input/jquery.fancy_suggest.css
index 0251a65..4dc61eb 100644
--- a/fancy_input/jquery.fancy_suggest.css
+++ b/fancy_input/jquery.fancy_suggest.css
@@ -1,61 +1,61 @@
.fancy_suggest {
- border-bottom: 1px solid rgba(187,187,187,0.4);
- display: none;
- position: absolute;
- z-index: 1000;
+ border-bottom: 1px solid rgba(187,187,187,0.4);
+ display: none;
+ position: absolute;
+ z-index: 1000;
}
.fancy_suggest ol {
- background: #fbfbfb;
- border: 1px solid #bbb;
- border-top-style: none;
- margin: 0px;
- padding: 0px;
- list-style: none;
+ background: #fbfbfb;
+ border: 1px solid #bbb;
+ border-top-style: none;
+ margin: 0px;
+ padding: 0px;
+ list-style: none;
}
.fancy_suggest li {
- margin: 0px;
- border-bottom: 1px solid #ddd;
+ margin: 0px;
+ border-bottom: 1px solid #ddd;
}
.fancy_suggest li.result {
-
+
}
.fancy_suggest li.label {
- padding: 3px 5px;
- color: #888;
+ padding: 3px 5px;
+ color: #888;
}
.fancy_suggest li.first {
-
+
}
.fancy_suggest li.last {
- border-bottom: none !important;
+ border-bottom: none !important;
}
.fancy_suggest li.result a {
- color: #000;
- display: block;
- padding: 3px 5px;
- text-decoration: none;
+ color: #000;
+ display: block;
+ padding: 3px 5px;
+ text-decoration: none;
}
.fancy_suggest li.result a span {
- display: block;
+ display: block;
}
.fancy_suggest li.result.selected a {
- background: #698DE5;
- color: #fff;
+ background: #698DE5;
+ color: #fff;
}
.fancy_suggest li.result .highlight {
- background: #ddd;
- font-weight: bold;
+ background: #ddd;
+ font-weight: bold;
}
.fancy_suggest li.result.selected .highlight {
- background: #7893E5;
- color: #fff;
+ background: #7893E5;
+ color: #fff;
}
\ No newline at end of file
diff --git a/fancy_input/jquery.fancy_suggest.js b/fancy_input/jquery.fancy_suggest.js
index 0cf2121..c6695a9 100644
--- a/fancy_input/jquery.fancy_suggest.js
+++ b/fancy_input/jquery.fancy_suggest.js
@@ -5,322 +5,322 @@
* Released under the MIT license.
*/
(function($){
-
- var Super = $.fn.fancy_input;
- var Self = $.fn.fancy_suggest = function(options){
-
- var $options = $.extend({}, Self.default_options, options);
-
- return this.each(function(){
- var $e = $(this);
- Self.init_suggest($e, $options);
- $e.focus(function(){
- Self.attach_suggest_box($e, $options);
- if ($e.val().length > 0) {
- Self.setTimeout(function(){
- Self.suggest($e, $options);
- }, $options.delay);
- };
- }).blur(function(){
- Self.hide();
- }).keydown(function(e){
- switch(e.keyCode) {
- case Self.keys.ARROW_UP:
- Self.select_prev($e, $options);
- return false;
- case Self.keys.ARROW_DOWN:
- Self.select_next($e, $options);
- return false;
- case Self.keys.ESC:
- Self.clear($e, $options);
- break;
- case Self.keys.RETURN:
- if (Self.selected_result !== null) {
- Self.activate_selected($options);
- return false;
- }
- break;
- }
- }).keyup(function(e){
- var key = e.keyCode;
- Self.align_suggest_box($e, $options);
- if (key > Self.keys.SPECIALS_END || key == Self.keys.BACKSPACE || key == Self.keys.DELETE) {
- Self.clearTimeout();
- Self.suggest($e, $options);
- };
- });
- });
- };
-
- $.extend(Self, Super, {
-
- box: null,
- list: null,
- attached_to: null,
- current_results: [],
- selected_result: null,
- query_cache: [],
-
- default_options: $.extend({}, Super.default_options, {
- name: "",
- exact_match: true,
- limit: 6,
- no_results: true,
- no_results_label: "No Results",
- url: null,
- url_method: "get",
- url_query_var: "search",
- pos_top: 0,
- pos_left: 0,
- hide_delay: 0,
- data: null,
- tpl_container_id: "fancy_suggest",
- tpl_container_class: "fancy_suggest",
- tpl_container: '
',
- tpl_result_begin: '',
- tpl_result_body: '{{title}}',
- tpl_result_end: '',
- tpl_label: '{{label}}',
- tpl_highlight: '$1'
- }),
-
- init_suggest: function(elm, options){
- this.box = $("#" + options.tpl_container_id);
- if (this.box.length == 0) {
- $("body").append($(options.tpl_container).attr("id", options.tpl_container_id).attr("class", options.tpl_container_class));
- this.box = $("#" + options.tpl_container_id);
- };
- this.list = this.box.children("ol");
- },
-
- attach_suggest_box: function(elm, options){
- var elm_uid = this.elm_uid(elm);
- this.align_suggest_box(elm, options);
- if (elm_uid !== this.attached_to) {
- if (typeof(options.name) == "string" && options.name != "") {
- this.box.hide().addClass(options.name);
- };
- this.attached_to = elm_uid;
- };
- },
-
- align_suggest_box: function(elm, options){
- var offset = elm.offset();
-
- // left
- this.box.css("left", (offset.left + options.pos_left));
-
- // top
- var top = offset.top + elm.innerHeight();
- top += parseInt(elm.css("border-top-width"), 10) + parseInt(elm.css("border-bottom-width"), 10);
- top += options.pos_top;
- this.box.css("top", top);
-
- // width
- if (typeof(options.width) === "number" || (typeof(options.width) === "string" && options.width != "")) {
- this.box.css("width", options.width);
- } else {
- var width = elm.innerWidth();
- width += parseInt(elm.css("border-left-width"), 10) + parseInt(elm.css("border-right-width"), 10);
- width -= parseInt(this.box.css("border-left-width"), 10) + parseInt(this.box.css("border-right-width"), 10);
- this.box.css("width", width);
- };
- },
-
- suggest: function(elm, options){
- var terms = $.trim(this.get_value(elm, options));
- if (options.exact_match) terms = terms.split(/\s/);
- if ((typeof(terms) == "string" && terms != "") || (typeof(terms) == "object" && terms.length > 0)) {
- if (typeof(options.url) === "string" && options.url !== "") {
- this.query_for_data(elm, options);
- } else {
- this.current_results = this.filter_data(terms, options.data, options);
- this.prerender(elm, this.current_results, options);
- };
- };
- },
-
- filter_data: function(terms, data, options){
- if (typeof(terms) === "string") { terms = [terms]; };
- var matched = "";
- var results = [];
- var terms_length = terms.length;
- for (var i=0; i < terms_length; i++) {
- var term = terms[i];
- term = term.toLowerCase();
- if (data !== null && typeof(term) !== "undefined" && term !== "") {
- var data_length = data.length;
- for (var n=0; n < data_length; n++) {
- var title = data[n].title.toLowerCase();
- var match = (typeof(data[n].match) !== "undefined") ? data[n].match.toLowerCase() : "" ;
- if (title.indexOf(term) !== -1 || match.indexOf(term) !== -1) {
- if (matched.indexOf(":" + n + ":") == -1) {
- results.push(data[n]);
- matched += ":" + n + ":";
- if (results.length >= options.limit) {
- return results;
- };
- };
- };
- };
- };
- };
- return results;
- },
-
- query_for_data: function(elm, options){
- var term = this.get_value(elm, options);
- var uid = options.url + "?" + term + ":" + options.limit;
- if (term !== "") {
- if (this.query_cache.hasOwnProperty(uid)) {
- this.current_results = this.query_cache[uid];
- this.prerender(elm, this.current_results, options);
- } else {
- var data = { limit: options.limit };
- data[options.url_query_var] = term;
- var Self = this;
- $.ajax({
- type: options.url_method,
- url: options.url,
- data: data,
- dataType: "json",
- success: function(response){
- Self.current_results = response.results;
- Self.query_cache[uid] = Self.current_results;
- Self.prerender(elm, Self.current_results, options);
- }
- });
- };
- } else {
- this.no_results(elm, options);
- };
- },
-
- clear: function(elm, options){
- this.set_value(elm, "");
- this.hide();
- this.selected_result = null;
- },
-
- no_results: function(elm, options){
- if (options.no_results && this.get_value(elm, options) !== "") {
- var meta = {label: options.no_results_label, "class": "last"};
- this.list.html(this.mustache(options.tpl_label, meta));
- this.show();
- } else {
- this.hide(0);
- };
- },
-
- prerender: function(elm, results, options){
- if (results.length > 0) {
- this.render(elm, results, options);
- this.show();
- } else {
- this.no_results(elm, options);
- };
- },
-
- render: function(elm, results, options){
- var results_length = results.length;
- var html = "";
- for (var i=0; i < results_length; i++) {
- var elm_id = "fancy_suggest_result_" + i;
- var meta = $.extend({}, results[i], {id: elm_id, "class": "", result_id: i});
- if (i == 0) { $.extend(meta, {"class": "first"}); };
- if (i == results_length - 1) { $.extend(meta, {"class": "last"}); };
- meta["title"] = meta["title"].replace(new RegExp("(" + this.get_value(elm, options) + ")", "ig"), options.tpl_highlight);
- html += this.mustache(options.tpl_result_begin, meta);
- html += this.mustache(options.tpl_result_body, meta);
- html += this.mustache(options.tpl_result_end, meta);
- };
- this.list.html(html);
- var Self = this;
- $(".result a", this.list).mousedown(function(){
- Self.selected_result = parseInt($(this).parent().attr("result_id"), 10);
- Self.activate_selected(elm, options);
- }).click(function(){
- return false;
- });
- $(".result", this.list).hover(function(){
- $(".selected", Self.list).removeClass("selected");
- Self.selected_result = $(this).addClass("selected").attr("result_id");
- },function(){
- $(this).removeClass("selected");
- Self.selected_result = null;
- });
- },
-
- show: function(){
- this.box.show();
- },
+
+ var Super = $.fn.fancy_input;
+ var Self = $.fn.fancy_suggest = function(options){
+
+ var $options = $.extend({}, Self.default_options, options);
+
+ return this.each(function(){
+ var $e = $(this);
+ Self.init_suggest($e, $options);
+ $e.focus(function(){
+ Self.attach_suggest_box($e, $options);
+ if ($e.val().length > 0) {
+ Self.setTimeout(function(){
+ Self.suggest($e, $options);
+ }, $options.delay);
+ };
+ }).blur(function(){
+ Self.hide();
+ }).keydown(function(e){
+ switch(e.keyCode) {
+ case Self.keys.ARROW_UP:
+ Self.select_prev($e, $options);
+ return false;
+ case Self.keys.ARROW_DOWN:
+ Self.select_next($e, $options);
+ return false;
+ case Self.keys.ESC:
+ Self.clear($e, $options);
+ break;
+ case Self.keys.RETURN:
+ if (Self.selected_result !== null) {
+ Self.activate_selected($options);
+ return false;
+ }
+ break;
+ }
+ }).keyup(function(e){
+ var key = e.keyCode;
+ Self.align_suggest_box($e, $options);
+ if (key > Self.keys.SPECIALS_END || key == Self.keys.BACKSPACE || key == Self.keys.DELETE) {
+ Self.clearTimeout();
+ Self.suggest($e, $options);
+ };
+ });
+ });
+ };
+
+ $.extend(Self, Super, {
+
+ box: null,
+ list: null,
+ attached_to: null,
+ current_results: [],
+ selected_result: null,
+ query_cache: [],
+
+ default_options: $.extend({}, Super.default_options, {
+ name: "",
+ exact_match: true,
+ limit: 6,
+ no_results: true,
+ no_results_label: "No Results",
+ url: null,
+ url_method: "get",
+ url_query_var: "search",
+ pos_top: 0,
+ pos_left: 0,
+ hide_delay: 0,
+ data: null,
+ tpl_container_id: "fancy_suggest",
+ tpl_container_class: "fancy_suggest",
+ tpl_container: '',
+ tpl_result_begin: '',
+ tpl_result_body: '{{title}}',
+ tpl_result_end: '',
+ tpl_label: '{{label}}',
+ tpl_highlight: '$1'
+ }),
+
+ init_suggest: function(elm, options){
+ this.box = $("#" + options.tpl_container_id);
+ if (this.box.length == 0) {
+ $("body").append($(options.tpl_container).attr("id", options.tpl_container_id).attr("class", options.tpl_container_class));
+ this.box = $("#" + options.tpl_container_id);
+ };
+ this.list = this.box.children("ol");
+ },
+
+ attach_suggest_box: function(elm, options){
+ var elm_uid = this.elm_uid(elm);
+ this.align_suggest_box(elm, options);
+ if (elm_uid !== this.attached_to) {
+ if (typeof(options.name) == "string" && options.name != "") {
+ this.box.hide().addClass(options.name);
+ };
+ this.attached_to = elm_uid;
+ };
+ },
+
+ align_suggest_box: function(elm, options){
+ var offset = elm.offset();
+
+ // left
+ this.box.css("left", (offset.left + options.pos_left));
+
+ // top
+ var top = offset.top + elm.innerHeight();
+ top += parseInt(elm.css("border-top-width"), 10) + parseInt(elm.css("border-bottom-width"), 10);
+ top += options.pos_top;
+ this.box.css("top", top);
+
+ // width
+ if (typeof(options.width) === "number" || (typeof(options.width) === "string" && options.width != "")) {
+ this.box.css("width", options.width);
+ } else {
+ var width = elm.innerWidth();
+ width += parseInt(elm.css("border-left-width"), 10) + parseInt(elm.css("border-right-width"), 10);
+ width -= parseInt(this.box.css("border-left-width"), 10) + parseInt(this.box.css("border-right-width"), 10);
+ this.box.css("width", width);
+ };
+ },
+
+ suggest: function(elm, options){
+ var terms = $.trim(this.get_value(elm, options));
+ if (options.exact_match) terms = terms.split(/\s/);
+ if ((typeof(terms) == "string" && terms != "") || (typeof(terms) == "object" && terms.length > 0)) {
+ if (typeof(options.url) === "string" && options.url !== "") {
+ this.query_for_data(elm, options);
+ } else {
+ this.current_results = this.filter_data(terms, options.data, options);
+ this.prerender(elm, this.current_results, options);
+ };
+ };
+ },
+
+ filter_data: function(terms, data, options){
+ if (typeof(terms) === "string") { terms = [terms]; };
+ var matched = "";
+ var results = [];
+ var terms_length = terms.length;
+ for (var i=0; i < terms_length; i++) {
+ var term = terms[i];
+ term = term.toLowerCase();
+ if (data !== null && typeof(term) !== "undefined" && term !== "") {
+ var data_length = data.length;
+ for (var n=0; n < data_length; n++) {
+ var title = data[n].title.toLowerCase();
+ var match = (typeof(data[n].match) !== "undefined") ? data[n].match.toLowerCase() : "" ;
+ if (title.indexOf(term) !== -1 || match.indexOf(term) !== -1) {
+ if (matched.indexOf(":" + n + ":") == -1) {
+ results.push(data[n]);
+ matched += ":" + n + ":";
+ if (results.length >= options.limit) {
+ return results;
+ };
+ };
+ };
+ };
+ };
+ };
+ return results;
+ },
+
+ query_for_data: function(elm, options){
+ var term = this.get_value(elm, options);
+ var uid = options.url + "?" + term + ":" + options.limit;
+ if (term !== "") {
+ if (this.query_cache.hasOwnProperty(uid)) {
+ this.current_results = this.query_cache[uid];
+ this.prerender(elm, this.current_results, options);
+ } else {
+ var data = { limit: options.limit };
+ data[options.url_query_var] = term;
+ var Self = this;
+ $.ajax({
+ type: options.url_method,
+ url: options.url,
+ data: data,
+ dataType: "json",
+ success: function(response){
+ Self.current_results = response.results;
+ Self.query_cache[uid] = Self.current_results;
+ Self.prerender(elm, Self.current_results, options);
+ }
+ });
+ };
+ } else {
+ this.no_results(elm, options);
+ };
+ },
+
+ clear: function(elm, options){
+ this.set_value(elm, "");
+ this.hide();
+ this.selected_result = null;
+ },
+
+ no_results: function(elm, options){
+ if (options.no_results && this.get_value(elm, options) !== "") {
+ var meta = {label: options.no_results_label, "class": "last"};
+ this.list.html(this.mustache(options.tpl_label, meta));
+ this.show();
+ } else {
+ this.hide(0);
+ };
+ },
+
+ prerender: function(elm, results, options){
+ if (results.length > 0) {
+ this.render(elm, results, options);
+ this.show();
+ } else {
+ this.no_results(elm, options);
+ };
+ },
+
+ render: function(elm, results, options){
+ var results_length = results.length;
+ var html = "";
+ for (var i=0; i < results_length; i++) {
+ var elm_id = "fancy_suggest_result_" + i;
+ var meta = $.extend({}, results[i], {id: elm_id, "class": "", result_id: i});
+ if (i == 0) { $.extend(meta, {"class": "first"}); };
+ if (i == results_length - 1) { $.extend(meta, {"class": "last"}); };
+ meta["title"] = meta["title"].replace(new RegExp("(" + this.get_value(elm, options) + ")", "ig"), options.tpl_highlight);
+ html += this.mustache(options.tpl_result_begin, meta);
+ html += this.mustache(options.tpl_result_body, meta);
+ html += this.mustache(options.tpl_result_end, meta);
+ };
+ this.list.html(html);
+ var Self = this;
+ $(".result a", this.list).mousedown(function(){
+ Self.selected_result = parseInt($(this).parent().attr("result_id"), 10);
+ Self.activate_selected(elm, options);
+ }).click(function(){
+ return false;
+ });
+ $(".result", this.list).hover(function(){
+ $(".selected", Self.list).removeClass("selected");
+ Self.selected_result = $(this).addClass("selected").attr("result_id");
+ },function(){
+ $(this).removeClass("selected");
+ Self.selected_result = null;
+ });
+ },
+
+ show: function(){
+ this.box.show();
+ },
- hide: function(delay){
- if (typeof(delay) !== "number") { delay = this.default_options.hide_delay; };
- this.selected_result = null;
- var Self = this;
- this.setTimeout(function(){
- Self.selected_result = null;
- $(".selected", this.list).removeClass("selected");
- Self.box.hide();
- }, delay);
- },
-
- select_next: function(elm, options){
- var limit = this.current_results.length;
- var result_id = "fancy_suggest_result_";
- if (limit > 0) {
- if (this.selected_result === null) {
- $(".selected", this.list).removeClass("selected");
- this.selected_result = 0;
- $("#" + result_id + this.selected_result).addClass("selected");
- } else if (this.selected_result + 1 < limit) {
- $(".selected", this.list).removeClass("selected");
- this.selected_result++;
- $("#" + result_id + this.selected_result).addClass("selected");
- } else {
- $(".selected", this.list).removeClass("selected");
- this.selected_result = null;
- elm.putCursorAtEnd();
- };
- };
- return false;
- },
+ hide: function(delay){
+ if (typeof(delay) !== "number") { delay = this.default_options.hide_delay; };
+ this.selected_result = null;
+ var Self = this;
+ this.setTimeout(function(){
+ Self.selected_result = null;
+ $(".selected", this.list).removeClass("selected");
+ Self.box.hide();
+ }, delay);
+ },
+
+ select_next: function(elm, options){
+ var limit = this.current_results.length;
+ var result_id = "fancy_suggest_result_";
+ if (limit > 0) {
+ if (this.selected_result === null) {
+ $(".selected", this.list).removeClass("selected");
+ this.selected_result = 0;
+ $("#" + result_id + this.selected_result).addClass("selected");
+ } else if (this.selected_result + 1 < limit) {
+ $(".selected", this.list).removeClass("selected");
+ this.selected_result++;
+ $("#" + result_id + this.selected_result).addClass("selected");
+ } else {
+ $(".selected", this.list).removeClass("selected");
+ this.selected_result = null;
+ elm.putCursorAtEnd();
+ };
+ };
+ return false;
+ },
- select_prev: function(elm, options){
- var limit = this.current_results.length;
- var result_id = "fancy_suggest_result_";
- if (limit > 0) {
- if (this.selected_result === null) {
- $(".selected", this.list).removeClass("selected");
- this.selected_result = limit - 1;
- $("#" + result_id + this.selected_result).addClass("selected");
- } else if (this.selected_result > 0) {
- $(".selected", this.list).removeClass("selected");
- this.selected_result--;
- $("#" + result_id + this.selected_result).addClass("selected");
- } else {
- $(".selected", this.list).removeClass("selected");
- this.selected_result = null;
- elm.putCursorAtEnd();
- };
- };
- return false;
- },
-
- activate_selected: function(elm, options){
- if (this.selected_result !== null) {
- this.redirect_to(this.current_results[this.selected_result].href);
- };
- },
-
- get_value: function(elm, options) {
- return elm.val();
- },
-
- set_value: function(elm, value, options) {
- elm.val(value);
- }
-
- });
+ select_prev: function(elm, options){
+ var limit = this.current_results.length;
+ var result_id = "fancy_suggest_result_";
+ if (limit > 0) {
+ if (this.selected_result === null) {
+ $(".selected", this.list).removeClass("selected");
+ this.selected_result = limit - 1;
+ $("#" + result_id + this.selected_result).addClass("selected");
+ } else if (this.selected_result > 0) {
+ $(".selected", this.list).removeClass("selected");
+ this.selected_result--;
+ $("#" + result_id + this.selected_result).addClass("selected");
+ } else {
+ $(".selected", this.list).removeClass("selected");
+ this.selected_result = null;
+ elm.putCursorAtEnd();
+ };
+ };
+ return false;
+ },
+
+ activate_selected: function(elm, options){
+ if (this.selected_result !== null) {
+ this.redirect_to(this.current_results[this.selected_result].href);
+ };
+ },
+
+ get_value: function(elm, options) {
+ return elm.val();
+ },
+
+ set_value: function(elm, value, options) {
+ elm.val(value);
+ }
+
+ });
})(jQuery);