1;(function ( $, window, document, undefined ) { 2 3 var plugin_name = "FakeSelect"; 4 5 6 var defaults = { 7 8 opened_class : 'opened', 9 blur_elem_id : 'portfolio_body_blur', 10 original_title : null, 11 12 }; 13 14 15 function FakeSelect(elem, options) { 16 17 var t = this; 18 t.element = $(elem); 19 t._defaults = $.extend({}, defaults, options); 20 t._name = plugin_name; 21 22 t.event_names = { 23 'init' : 'fs-inited', 24 'change' : 'fs-changed', 25 'open' : 'fs-opened', 26 'close' : 'fs-closed' 27 }; 28 29 t.init(); 30 31 } 32 33 34 FakeSelect.prototype.isMobile = function () { 35 36 if($(window).width() <= 640 || /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)){ 37 return true; 38 } 39 return false; 40 41 }; 42 43 44 FakeSelect.prototype.init = function () { 45 46 var t = this; 47 t._defaults.original_title = t.element.find(".fake-select-title").text(); 48 t.element.trigger(t.event_names['init']); 49 50 t.element.click(function (e) { 51 e.stopPropagation(); 52 t.toggleAll(); 53 return false; 54 }); 55 56 t.element.find('.fake-option').click(function (e) { 57 e.stopPropagation(); 58 if($(this).hasClass('empty')) { 59 t.deselectOption($(this)); 60 }else{ 61 t.selectOption($(this)); 62 } 63 64 t.hideBlur(); 65 66 return false; 67 68 }); 69 70 $("#"+t._defaults.blur_elem_id).click(function (e) { 71 e.stopPropagation(); 72 t.hideBlur(); 73 t.closeCurrent(); 74 return false; 75 }); 76 77 $(document).click(function() { 78 t.closeCurrent(); 79 }); 80 81 }; 82 83 84 FakeSelect.prototype.deselectOption = function (elem) { 85 var t = this; 86 t.element.find('.fake-option').each(function () { 87 $(this).removeClass("selected"); 88 }); 89 t.element.find(".fake-option.empty").addClass("hidden-elem"); 90 var elem_title = t.element.find(".fake-select-title"); 91 elem_title.text(t._defaults.original_title); 92 t.closeCurrent(); 93 t.element.trigger(t.event_names['change'], [{selected_option: null}]); 94 }; 95 96 FakeSelect.prototype.selectOption = function (selected_option) { 97 var t = this; 98 t.element.find('.fake-option').each(function () { 99 if($(this)!=selected_option){ 100 $(this).removeClass("selected"); 101 } 102 }); 103 selected_option.addClass("selected"); 104 var elem_title = t.element.find(".fake-select-title"); 105 t.element.find(".fake-option.empty.hidden-elem").removeClass("hidden-elem"); 106 elem_title.attr("data-original-txt", t._defaults.original_title); 107 elem_title.text(selected_option.text()); 108 t.closeCurrent(); 109 t.element.trigger(t.event_names['change'], [{selected_option: selected_option}]); 110 }; 111 112 FakeSelect.prototype.closeCurrent = function () { 113 114 var t = this; 115 t.element.removeClass(t._defaults.opened_class); 116 t.element.trigger(t.event_names['close']); 117 }; 118 119 FakeSelect.prototype.toggleAll = function () { 120 121 var t = this; 122 if(t.element.hasClass(t._defaults.opened_class)) { 123 124 $(".fake-select.opened").each(function () { 125 $(this).removeClass(t._defaults.opened_class); 126 }); 127 128 t.hideBlur(); 129 130 t.element.trigger(t.event_names['close']); 131 132 }else{ 133 134 $(".fake-select.opened").each(function () { 135 if(t.element != $(this)) { 136 $(this).removeClass(t._defaults.opened_class); 137 } 138 }); 139 140 t.element.addClass(t._defaults.opened_class); 141 t.showBlur(); 142 t.element.trigger(t.event_names['open']); 143 } 144 145 }; 146 147 FakeSelect.prototype.showBlur = function () { 148 var t = this; 149 if(!t.isMobile()) { 150 $("#"+t._defaults.blur_elem_id).addClass("active"); 151 } 152 }; 153 154 FakeSelect.prototype.hideBlur = function () { 155 var t = this; 156 $("#"+t._defaults.blur_elem_id).removeClass("active"); 157 }; 158 159 160 $.fn[plugin_name] = function ( options ) { 161 return this.each(function () { 162 if (!$.data(this, 'plugin_' + plugin_name)) { 163 $.data(this, 'plugin_' + plugin_name, 164 new FakeSelect( this, options )); 165 } 166 }); 167 }; 168 169 170})(jQuery, window, document );
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.