9 lines
21 KiB
JavaScript
Executable File
9 lines
21 KiB
JavaScript
Executable File
// Chosen, a Select Box Enhancer for jQuery and Protoype
|
|
// by Patrick Filler for Harvest, http://getharvest.com
|
|
//
|
|
// Version 0.9.7
|
|
// Full source at https://github.com/harvesthq/chosen
|
|
// Copyright (c) 2011 Harvest http://getharvest.com
|
|
// MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
|
|
// This file is generated by `cake build`, do not edit it by hand.
|
|
((function(){var a;a=function(){function a(){this.options_index=0;this.parsed=[]}a.prototype.add_node=function(a){return a.nodeName==="OPTGROUP"?this.add_group(a):this.add_option(a)};a.prototype.add_group=function(a){var b,c,d,e,f,g;b=this.parsed.length;this.parsed.push({array_index:b,group:!0,label:a.label,children:0,disabled:a.disabled});f=a.childNodes;g=[];for(d=0,e=f.length;d<e;d++){c=f[d];g.push(this.add_option(c,b,a.disabled))}return g};a.prototype.add_option=function(a,b,c){if(a.nodeName==="OPTION"){if(a.text!==""){b!=null&&(this.parsed[b].children+=1);this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:a.value,text:a.text,html:a.innerHTML,selected:a.selected,disabled:c===!0?c:a.disabled,group_array_index:b,classes:a.className,style:a.style.cssText})}else this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0});return this.options_index+=1}};return a}();a.select_to_array=function(b){var c,d,e,f,g;d=new a;g=b.childNodes;for(e=0,f=g.length;e<f;e++){c=g[e];d.add_node(c)}return d.parsed};this.SelectParser=a})).call(this);((function(){var a,b;b=this;a=function(){function a(a,b){this.form_field=a;this.options=b!=null?b:{};this.set_default_values();this.is_multiple=this.form_field.multiple;this.default_text_default=this.is_multiple?"Select Some Options":"Select an Option";this.setup();this.set_up_html();this.register_observers();this.finish_setup()}a.prototype.set_default_values=function(){var a=this;this.click_test_action=function(b){return a.test_active_click(b)};this.activate_action=function(b){return a.activate_field(b)};this.active_field=!1;this.mouse_on_container=!1;this.results_showing=!1;this.result_highlighted=null;this.result_single_selected=null;this.allow_single_deselect=this.options.allow_single_deselect!=null&&this.form_field.options[0]!=null&&this.form_field.options[0].text===""?this.options.allow_single_deselect:!1;this.disable_search_threshold=this.options.disable_search_threshold||0;this.choices=0;return this.results_none_found=this.options.no_results_text||"No results match"};a.prototype.mouse_enter=function(){return this.mouse_on_container=!0};a.prototype.mouse_leave=function(){return this.mouse_on_container=!1};a.prototype.input_focus=function(a){var b=this;if(!this.active_field)return setTimeout(function(){return b.container_mousedown()},50)};a.prototype.input_blur=function(a){var b=this;if(!this.mouse_on_container){this.active_field=!1;return setTimeout(function(){return b.blur_test()},100)}};a.prototype.result_add_option=function(a){var b,c;if(!a.disabled){a.dom_id=this.container_id+"_o_"+a.array_index;b=a.selected&&this.is_multiple?[]:["active-result"];a.selected&&b.push("result-selected");a.group_array_index!=null&&b.push("group-option");a.classes!==""&&b.push(a.classes);c=a.style.cssText!==""?' style="'+a.style+'"':"";return'<li id="'+a.dom_id+'" class="'+b.join(" ")+'"'+c+">"+a.html+"</li>"}return""};a.prototype.results_update_field=function(){this.result_clear_highlight();this.result_single_selected=null;return this.results_build()};a.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()};a.prototype.results_search=function(a){return this.results_showing?this.winnow_results():this.results_show()};a.prototype.keyup_checker=function(a){var b,c;b=(c=a.which)!=null?c:a.keyCode;this.search_field_scale();switch(b){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices>0)return this.keydown_backstroke();if(!this.pending_backstroke){this.result_clear_highlight();return this.results_search()}break;case 13:a.preventDefault();if(this.results_showing)return this.result_select(a);break;case 27:this.results_showing&&this.results_hide();return!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}};a.prototype.generate_field_id=function(){var a;a=this.generate_random_id();this.form_field.id=a;return a};a.prototype.generate_random_char=function(){var a,b,c;a="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ";c=Math.floor(Math.random()*a.length);return b=a.substring(c,c+1)};return a}();b.AbstractChosen=a})).call(this);((function(){var a,b,c,d,e=Object.prototype.hasOwnProperty,f=function(a,b){function d(){this.constructor=a}for(var c in b)e.call(b,c)&&(a[c]=b[c]);d.prototype=b.prototype;a.prototype=new d;a.__super__=b.prototype;return a};d=this;a=jQuery;a.fn.extend({chosen:function(c){return!a.browser.msie||a.browser.version!=="6.0"&&a.browser.version!=="7.0"?a(this).each(function(d){if(!a(this).hasClass("chzn-done"))return new b(this,c)}):this}});b=function(b){function e(){e.__super__.constructor.apply(this,arguments)}f(e,b);e.prototype.setup=function(){this.form_field_jq=a(this.form_field);return this.is_rtl=this.form_field_jq.hasClass("chzn-rtl")};e.prototype.finish_setup=function(){return this.form_field_jq.addClass("chzn-done")};e.prototype.set_up_html=function(){var b,d,e,f;this.container_id=this.form_field.id.length?this.form_field.id.replace(/(:|\.)/g,"_"):this.generate_field_id();this.container_id+="_chzn";this.f_width=this.form_field_jq.outerWidth();this.default_text=this.form_field_jq.data("placeholder")?this.form_field_jq.data("placeholder"):this.default_text_default;b=a("<div />",{id:this.container_id,"class":"chzn-container"+(this.is_rtl?" chzn-rtl":""),style:"width: "+this.f_width+"px;"});this.is_multiple?b.html('<ul class="chzn-choices"><li class="search-field"><input type="text" value="'+this.default_text+'" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chzn-drop" style="left:-9000px;"><ul class="chzn-results"></ul></div>'):b.html('<a href="javascript:void(0)" class="chzn-single"><span>'+this.default_text+'</span><div><b></b></div></a><div class="chzn-drop" style="left:-9000px;"><div class="chzn-search"><input type="text" autocomplete="off" /></div><ul class="chzn-results"></ul></div>');this.form_field_jq.hide().after(b);this.container=a("#"+this.container_id);this.container.addClass("chzn-container-"+(this.is_multiple?"multi":"single"));this.dropdown=this.container.find("div.chzn-drop").first();d=this.container.height();e=this.f_width-c(this.dropdown);this.dropdown.css({width:e+"px",top:d+"px"});this.search_field=this.container.find("input").first();this.search_results=this.container.find("ul.chzn-results").first();this.search_field_scale();this.search_no_results=this.container.find("li.no-results").first();if(this.is_multiple){this.search_choices=this.container.find("ul.chzn-choices").first();this.search_container=this.container.find("li.search-field").first()}else{this.search_container=this.container.find("div.chzn-search").first();this.selected_item=this.container.find(".chzn-single").first();f=e-c(this.search_container)-c(this.search_field);this.search_field.css({width:f+"px"})}this.results_build();this.set_tab_index();return this.form_field_jq.trigger("liszt:ready",{chosen:this})};e.prototype.register_observers=function(){var a=this;this.container.mousedown(function(b){return a.container_mousedown(b)});this.container.mouseup(function(b){return a.container_mouseup(b)});this.container.mouseenter(function(b){return a.mouse_enter(b)});this.container.mouseleave(function(b){return a.mouse_leave(b)});this.search_results.mouseup(function(b){return a.search_results_mouseup(b)});this.search_results.mouseover(function(b){return a.search_results_mouseover(b)});this.search_results.mouseout(function(b){return a.search_results_mouseout(b)});this.form_field_jq.bind("liszt:updated",function(b){return a.results_update_field(b)});this.search_field.blur(function(b){return a.input_blur(b)});this.search_field.keyup(function(b){return a.keyup_checker(b)});this.search_field.keydown(function(b){return a.keydown_checker(b)});if(this.is_multiple){this.search_choices.click(function(b){return a.choices_click(b)});return this.search_field.focus(function(b){return a.input_focus(b)})}return this.container.click(function(a){return a.preventDefault()})};e.prototype.search_field_disabled=function(){this.is_disabled=this.form_field_jq[0].disabled;if(this.is_disabled){this.container.addClass("chzn-disabled");this.search_field[0].disabled=!0;this.is_multiple||this.selected_item.unbind("focus",this.activate_action);return this.close_field()}this.container.removeClass("chzn-disabled");this.search_field[0].disabled=!1;if(!this.is_multiple)return this.selected_item.bind("focus",this.activate_action)};e.prototype.container_mousedown=function(b){var c;if(!this.is_disabled){c=b!=null?a(b.target).hasClass("search-choice-close"):!1;b&&b.type==="mousedown"&&b.stopPropagation();if(!this.pending_destroy_click&&!c){if(!this.active_field){this.is_multiple&&this.search_field.val("");a(document).click(this.click_test_action);this.results_show()}else if(!this.is_multiple&&b&&(a(b.target)[0]===this.selected_item[0]||a(b.target).parents("a.chzn-single").length)){b.preventDefault();this.results_toggle()}return this.activate_field()}return this.pending_destroy_click=!1}};e.prototype.container_mouseup=function(a){if(a.target.nodeName==="ABBR")return this.results_reset(a)};e.prototype.blur_test=function(a){if(!this.active_field&&this.container.hasClass("chzn-container-active"))return this.close_field()};e.prototype.close_field=function(){a(document).unbind("click",this.click_test_action);if(!this.is_multiple){this.selected_item.attr("tabindex",this.search_field.attr("tabindex"));this.search_field.attr("tabindex",-1)}this.active_field=!1;this.results_hide();this.container.removeClass("chzn-container-active");this.winnow_results_clear();this.clear_backstroke();this.show_search_field_default();return this.search_field_scale()};e.prototype.activate_field=function(){if(!this.is_multiple&&!this.active_field){this.search_field.attr("tabindex",this.selected_item.attr("tabindex"));this.selected_item.attr("tabindex",-1)}this.container.addClass("chzn-container-active");this.active_field=!0;this.search_field.val(this.search_field.val());return this.search_field.focus()};e.prototype.test_active_click=function(b){return a(b.target).parents("#"+this.container_id).length?this.active_field=!0:this.close_field()};e.prototype.results_build=function(){var a,b,c,e,f;this.parsing=!0;this.results_data=d.SelectParser.select_to_array(this.form_field);if(this.is_multiple&&this.choices>0){this.search_choices.find("li.search-choice").remove();this.choices=0}else if(!this.is_multiple){this.selected_item.find("span").text(this.default_text);this.form_field.options.length<=this.disable_search_threshold?this.container.addClass("chzn-container-single-nosearch"):this.container.removeClass("chzn-container-single-nosearch")}a="";f=this.results_data;for(c=0,e=f.length;c<e;c++){b=f[c];if(b.group)a+=this.result_add_group(b);else if(!b.empty){a+=this.result_add_option(b);if(b.selected&&this.is_multiple)this.choice_build(b);else if(b.selected&&!this.is_multiple){this.selected_item.find("span").text(b.text);this.allow_single_deselect&&this.single_deselect_control_build()}}}this.search_field_disabled();this.show_search_field_default();this.search_field_scale();this.search_results.html(a);return this.parsing=!1};e.prototype.result_add_group=function(b){if(!b.disabled){b.dom_id=this.container_id+"_g_"+b.array_index;return'<li id="'+b.dom_id+'" class="group-result">'+a("<div />").text(b.label).html()+"</li>"}return""};e.prototype.result_do_highlight=function(a){var b,c,d,e,f;if(a.length){this.result_clear_highlight();this.result_highlight=a;this.result_highlight.addClass("highlighted");d=parseInt(this.search_results.css("maxHeight"),10);f=this.search_results.scrollTop();e=d+f;c=this.result_highlight.position().top+this.search_results.scrollTop();b=c+this.result_highlight.outerHeight();if(b>=e)return this.search_results.scrollTop(b-d>0?b-d:0);if(c<f)return this.search_results.scrollTop(c)}};e.prototype.result_clear_highlight=function(){this.result_highlight&&this.result_highlight.removeClass("highlighted");return this.result_highlight=null};e.prototype.results_show=function(){var a;if(!this.is_multiple){this.selected_item.addClass("chzn-single-with-drop");this.result_single_selected&&this.result_do_highlight(this.result_single_selected)}a=this.is_multiple?this.container.height():this.container.height()-1;this.dropdown.css({top:a+"px",left:0});this.results_showing=!0;this.search_field.focus();this.search_field.val(this.search_field.val());return this.winnow_results()};e.prototype.results_hide=function(){this.is_multiple||this.selected_item.removeClass("chzn-single-with-drop");this.result_clear_highlight();this.dropdown.css({left:"-9000px"});return this.results_showing=!1};e.prototype.set_tab_index=function(a){var b;if(this.form_field_jq.attr("tabindex")){b=this.form_field_jq.attr("tabindex");this.form_field_jq.attr("tabindex",-1);if(this.is_multiple)return this.search_field.attr("tabindex",b);this.selected_item.attr("tabindex",b);return this.search_field.attr("tabindex",-1)}};e.prototype.show_search_field_default=function(){if(this.is_multiple&&this.choices<1&&!this.active_field){this.search_field.val(this.default_text);return this.search_field.addClass("default")}this.search_field.val("");return this.search_field.removeClass("default")};e.prototype.search_results_mouseup=function(b){var c;c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first();if(c.length){this.result_highlight=c;return this.result_select(b)}};e.prototype.search_results_mouseover=function(b){var c;c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first();if(c)return this.result_do_highlight(c)};e.prototype.search_results_mouseout=function(b){if(a(b.target).hasClass("active-result"))return this.result_clear_highlight()};e.prototype.choices_click=function(b){b.preventDefault();if(this.active_field&&!a(b.target).hasClass("search-choice")&&!this.results_showing)return this.results_show()};e.prototype.choice_build=function(b){var c,d,e=this;c=this.container_id+"_c_"+b.array_index;this.choices+=1;this.search_container.before('<li class="search-choice" id="'+c+'"><span>'+b.html+'</span><a href="javascript:void(0)" class="search-choice-close" rel="'+b.array_index+'"></a></li>');d=a("#"+c).find("a").first();return d.click(function(a){return e.choice_destroy_link_click(a)})};e.prototype.choice_destroy_link_click=function(b){b.preventDefault();if(!this.is_disabled){this.pending_destroy_click=!0;return this.choice_destroy(a(b.target))}return b.stopPropagation};e.prototype.choice_destroy=function(a){this.choices-=1;this.show_search_field_default();this.is_multiple&&this.choices>0&&this.search_field.val().length<1&&this.results_hide();this.result_deselect(a.attr("rel"));return a.parents("li").first().remove()};e.prototype.results_reset=function(b){this.form_field.options[0].selected=!0;this.selected_item.find("span").text(this.default_text);this.show_search_field_default();a(b.target).remove();this.form_field_jq.trigger("change");if(this.active_field)return this.results_hide()};e.prototype.result_select=function(a){var b,c,d,e;if(this.result_highlight){b=this.result_highlight;c=b.attr("id");this.result_clear_highlight();if(this.is_multiple)this.result_deactivate(b);else{this.search_results.find(".result-selected").removeClass("result-selected");this.result_single_selected=b}b.addClass("result-selected");e=c.substr(c.lastIndexOf("_")+1);d=this.results_data[e];d.selected=!0;this.form_field.options[d.options_index].selected=!0;if(this.is_multiple)this.choice_build(d);else{this.selected_item.find("span").first().text(d.text);this.allow_single_deselect&&this.single_deselect_control_build()}(!a.metaKey||!this.is_multiple)&&this.results_hide();this.search_field.val("");this.form_field_jq.trigger("change");return this.search_field_scale()}};e.prototype.result_activate=function(a){return a.addClass("active-result")};e.prototype.result_deactivate=function(a){return a.removeClass("active-result")};e.prototype.result_deselect=function(b){var c,d;d=this.results_data[b];d.selected=!1;this.form_field.options[d.options_index].selected=!1;c=a("#"+this.container_id+"_o_"+b);c.removeClass("result-selected").addClass("active-result").show();this.result_clear_highlight();this.winnow_results();this.form_field_jq.trigger("change");return this.search_field_scale()};e.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect&&this.selected_item.find("abbr").length<1)return this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>')};e.prototype.winnow_results=function(){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;this.no_results_clear();i=0;j=this.search_field.val()===this.default_text?"":a("<div/>").text(a.trim(this.search_field.val())).html();f=new RegExp("^"+j.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),"i");m=new RegExp(j.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),"i");r=this.results_data;for(n=0,p=r.length;n<p;n++){c=r[n];if(!c.disabled&&!c.empty)if(c.group)a("#"+c.dom_id).css("display","none");else if(!this.is_multiple||!c.selected){b=!1;h=c.dom_id;g=a("#"+h);if(f.test(c.html)){b=!0;i+=1}else if(c.html.indexOf(" ")>=0||c.html.indexOf("[")===0){e=c.html.replace(/\[|\]/g,"").split(" ");if(e.length)for(o=0,q=e.length;o<q;o++){d=e[o];if(f.test(d)){b=!0;i+=1}}}if(b){if(j.length){k=c.html.search(m);l=c.html.substr(0,k+j.length)+"</em>"+c.html.substr(k+j.length);l=l.substr(0,k)+"<em>"+l.substr(k)}else l=c.html;g.html(l);this.result_activate(g);c.group_array_index!=null&&a("#"+this.results_data[c.group_array_index].dom_id).css("display","list-item")}else{this.result_highlight&&h===this.result_highlight.attr("id")&&this.result_clear_highlight();this.result_deactivate(g)}}}return i<1&&j.length?this.no_results(j):this.winnow_results_set_highlight()};e.prototype.winnow_results_clear=function(){var b,c,d,e,f;this.search_field.val("");c=this.search_results.find("li");f=[];for(d=0,e=c.length;d<e;d++){b=c[d];b=a(b);b.hasClass("group-result")?f.push(b.css("display","auto")):!this.is_multiple||!b.hasClass("result-selected")?f.push(this.result_activate(b)):f.push(void 0)}return f};e.prototype.winnow_results_set_highlight=function(){var a,b;if(!this.result_highlight){b=this.is_multiple?[]:this.search_results.find(".result-selected.active-result");a=b.length?b.first():this.search_results.find(".active-result").first();if(a!=null)return this.result_do_highlight(a)}};e.prototype.no_results=function(b){var c;c=a('<li class="no-results">'+this.results_none_found+' "<span></span>"</li>');c.find("span").first().html(b);return this.search_results.append(c)};e.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()};e.prototype.keydown_arrow=function(){var b,c;if(!this.result_highlight){b=this.search_results.find("li.active-result").first();b&&this.result_do_highlight(a(b))}else if(this.results_showing){c=this.result_highlight.nextAll("li.active-result").first();c&&this.result_do_highlight(c)}if(!this.results_showing)return this.results_show()};e.prototype.keyup_arrow=function(){var a;if(!this.results_showing&&!this.is_multiple)return this.results_show();if(this.result_highlight){a=this.result_highlight.prevAll("li.active-result");if(a.length)return this.result_do_highlight(a.first());this.choices>0&&this.results_hide();return this.result_clear_highlight()}};e.prototype.keydown_backstroke=function(){if(this.pending_backstroke){this.choice_destroy(this.pending_backstroke.find("a").first());return this.clear_backstroke()}this.pending_backstroke=this.search_container.siblings("li.search-choice").last();return this.pending_backstroke.addClass("search-choice-focus")};e.prototype.clear_backstroke=function(){this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus");return this.pending_backstroke=null};e.prototype.keydown_checker=function(a){var b,c;b=(c=a.which)!=null?c:a.keyCode;this.search_field_scale();b!==8&&this.pending_backstroke&&this.clear_backstroke();switch(b){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(a);this.mouse_on_container=!1;break;case 13:a.preventDefault();break;case 38:a.preventDefault();this.keyup_arrow();break;case 40:this.keydown_arrow()}};e.prototype.search_field_scale=function(){var b,c,d,e,f,g,h,i,j;if(this.is_multiple){d=0;h=0;f="position:absolute; left: -1000px; top: -1000px; display:none;";g=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"];for(i=0,j=g.length;i<j;i++){e=g[i];f+=e+":"+this.search_field.css(e)+";"}c=a("<div />",{style:f});c.text(this.search_field.val());a("body").append(c);h=c.width()+25;c.remove();h>this.f_width-10&&(h=this.f_width-10);this.search_field.css({width:h+"px"});b=this.container.height();return this.dropdown.css({top:b+"px"})}};e.prototype.generate_random_id=function(){var b;b="sel"+this.generate_random_char()+this.generate_random_char()+this.generate_random_char();while(a("#"+b).length>0)b+=this.generate_random_char();return b};return e}(AbstractChosen);c=function(a){var b;return b=a.outerWidth()-a.width()};d.get_side_border_padding=c})).call(this);jQuery(function(){jQuery("select.country_select, select.state_select").chosen();jQuery("body").bind("country_to_state_changed",function(){jQuery("select.state_select").chosen().trigger("liszt:updated")})}); |