root / snf-astakos-app / astakos / im / static / im / js / jquery.uniform.js @ b87429e1
History | View | Annotate | Download (19.1 kB)
1 | f932b578 | Olga Brani | /*
|
---|---|---|---|
2 | f932b578 | Olga Brani | |
3 | f932b578 | Olga Brani | Uniform v1.7.5
|
4 | f932b578 | Olga Brani | Copyright © 2009 Josh Pyles / Pixelmatrix Design LLC
|
5 | f932b578 | Olga Brani | http://pixelmatrixdesign.com
|
6 | f932b578 | Olga Brani | |
7 | f932b578 | Olga Brani | Requires jQuery 1.4 or newer
|
8 | f932b578 | Olga Brani | |
9 | f932b578 | Olga Brani | Much thanks to Thomas Reynolds and Buck Wilson for their help and advice on this
|
10 | f932b578 | Olga Brani | |
11 | f932b578 | Olga Brani | Disabling text selection is made possible by Mathias Bynens <http://mathiasbynens.be/>
|
12 | f932b578 | Olga Brani | and his noSelect plugin. <http://github.com/mathiasbynens/noSelect-jQuery-Plugin>
|
13 | f932b578 | Olga Brani | |
14 | f932b578 | Olga Brani | Also, thanks to David Kaneda and Eugene Bond for their contributions to the plugin
|
15 | f932b578 | Olga Brani | |
16 | f932b578 | Olga Brani | License:
|
17 | f932b578 | Olga Brani | MIT License - http://www.opensource.org/licenses/mit-license.php
|
18 | f932b578 | Olga Brani | |
19 | f932b578 | Olga Brani | Enjoy!
|
20 | f932b578 | Olga Brani | |
21 | f932b578 | Olga Brani | */
|
22 | f932b578 | Olga Brani | |
23 | f932b578 | Olga Brani | (function($) { |
24 | f932b578 | Olga Brani | $.uniform = {
|
25 | f932b578 | Olga Brani | options: {
|
26 | f932b578 | Olga Brani | selectClass: 'selector', |
27 | f932b578 | Olga Brani | radioClass: 'radio', |
28 | f932b578 | Olga Brani | checkboxClass: 'checker', |
29 | f932b578 | Olga Brani | fileClass: 'uploader', |
30 | f932b578 | Olga Brani | filenameClass: 'filename', |
31 | f932b578 | Olga Brani | fileBtnClass: 'action', |
32 | f932b578 | Olga Brani | fileDefaultText: 'No file selected', |
33 | f932b578 | Olga Brani | fileBtnText: 'Choose File', |
34 | f932b578 | Olga Brani | checkedClass: 'checked', |
35 | f932b578 | Olga Brani | focusClass: 'focus', |
36 | f932b578 | Olga Brani | disabledClass: 'disabled', |
37 | f932b578 | Olga Brani | buttonClass: 'button', |
38 | f932b578 | Olga Brani | activeClass: 'active', |
39 | f932b578 | Olga Brani | hoverClass: 'hover', |
40 | f932b578 | Olga Brani | useID: true, |
41 | f932b578 | Olga Brani | idPrefix: 'uniform', |
42 | f932b578 | Olga Brani | resetSelector: false, |
43 | f932b578 | Olga Brani | autoHide: true |
44 | f932b578 | Olga Brani | }, |
45 | f932b578 | Olga Brani | elements: []
|
46 | f932b578 | Olga Brani | }; |
47 | f932b578 | Olga Brani | |
48 | f932b578 | Olga Brani | if($.browser.msie && $.browser.version < 7){ |
49 | f932b578 | Olga Brani | $.support.selectOpacity = false; |
50 | f932b578 | Olga Brani | }else{
|
51 | f932b578 | Olga Brani | $.support.selectOpacity = true; |
52 | f932b578 | Olga Brani | } |
53 | f932b578 | Olga Brani | |
54 | f932b578 | Olga Brani | $.fn.uniform = function(options) { |
55 | f932b578 | Olga Brani | |
56 | f932b578 | Olga Brani | options = $.extend($.uniform.options, options); |
57 | f932b578 | Olga Brani | |
58 | f932b578 | Olga Brani | var el = this; |
59 | f932b578 | Olga Brani | //code for specifying a reset button
|
60 | f932b578 | Olga Brani | if(options.resetSelector != false){ |
61 | f932b578 | Olga Brani | $(options.resetSelector).mouseup(function(){ |
62 | f932b578 | Olga Brani | function resetThis(){ |
63 | f932b578 | Olga Brani | $.uniform.update(el);
|
64 | f932b578 | Olga Brani | } |
65 | f932b578 | Olga Brani | setTimeout(resetThis, 10);
|
66 | f932b578 | Olga Brani | }); |
67 | f932b578 | Olga Brani | } |
68 | f932b578 | Olga Brani | |
69 | f932b578 | Olga Brani | function doInput(elem){ |
70 | f932b578 | Olga Brani | $el = $(elem); |
71 | f932b578 | Olga Brani | $el.addClass($el.attr("type")); |
72 | f932b578 | Olga Brani | storeElement(elem); |
73 | f932b578 | Olga Brani | } |
74 | f932b578 | Olga Brani | |
75 | f932b578 | Olga Brani | function doTextarea(elem){ |
76 | f932b578 | Olga Brani | $(elem).addClass("uniform"); |
77 | f932b578 | Olga Brani | storeElement(elem); |
78 | f932b578 | Olga Brani | } |
79 | f932b578 | Olga Brani | |
80 | f932b578 | Olga Brani | function doButton(elem){ |
81 | f932b578 | Olga Brani | var $el = $(elem); |
82 | f932b578 | Olga Brani | |
83 | f932b578 | Olga Brani | var divTag = $("<div>"), |
84 | f932b578 | Olga Brani | spanTag = $("<span>"); |
85 | f932b578 | Olga Brani | |
86 | f932b578 | Olga Brani | divTag.addClass(options.buttonClass); |
87 | f932b578 | Olga Brani | |
88 | f932b578 | Olga Brani | if(options.useID && $el.attr("id") != "") divTag.attr("id", options.idPrefix+"-"+$el.attr("id")); |
89 | f932b578 | Olga Brani | |
90 | f932b578 | Olga Brani | var btnText;
|
91 | f932b578 | Olga Brani | |
92 | f932b578 | Olga Brani | if($el.is("a") || $el.is("button")){ |
93 | f932b578 | Olga Brani | btnText = $el.text();
|
94 | f932b578 | Olga Brani | }else if($el.is(":submit") || $el.is(":reset") || $el.is("input[type=button]")){ |
95 | f932b578 | Olga Brani | btnText = $el.attr("value"); |
96 | f932b578 | Olga Brani | } |
97 | f932b578 | Olga Brani | |
98 | f932b578 | Olga Brani | btnText = btnText == "" ? $el.is(":reset") ? "Reset" : "Submit" : btnText; |
99 | f932b578 | Olga Brani | |
100 | f932b578 | Olga Brani | spanTag.html(btnText); |
101 | f932b578 | Olga Brani | |
102 | f932b578 | Olga Brani | $el.css("opacity", 0); |
103 | f932b578 | Olga Brani | $el.wrap(divTag);
|
104 | f932b578 | Olga Brani | $el.wrap(spanTag);
|
105 | f932b578 | Olga Brani | |
106 | f932b578 | Olga Brani | //redefine variables
|
107 | f932b578 | Olga Brani | divTag = $el.closest("div"); |
108 | f932b578 | Olga Brani | spanTag = $el.closest("span"); |
109 | f932b578 | Olga Brani | |
110 | f932b578 | Olga Brani | if($el.is(":disabled")) divTag.addClass(options.disabledClass); |
111 | f932b578 | Olga Brani | |
112 | f932b578 | Olga Brani | divTag.bind({ |
113 | f932b578 | Olga Brani | "mouseenter.uniform": function(){ |
114 | f932b578 | Olga Brani | divTag.addClass(options.hoverClass); |
115 | f932b578 | Olga Brani | }, |
116 | f932b578 | Olga Brani | "mouseleave.uniform": function(){ |
117 | f932b578 | Olga Brani | divTag.removeClass(options.hoverClass); |
118 | f932b578 | Olga Brani | divTag.removeClass(options.activeClass); |
119 | f932b578 | Olga Brani | }, |
120 | f932b578 | Olga Brani | "mousedown.uniform touchbegin.uniform": function(){ |
121 | f932b578 | Olga Brani | divTag.addClass(options.activeClass); |
122 | f932b578 | Olga Brani | }, |
123 | f932b578 | Olga Brani | "mouseup.uniform touchend.uniform": function(){ |
124 | f932b578 | Olga Brani | divTag.removeClass(options.activeClass); |
125 | f932b578 | Olga Brani | }, |
126 | f932b578 | Olga Brani | "click.uniform touchend.uniform": function(e){ |
127 | f932b578 | Olga Brani | if($(e.target).is("span") || $(e.target).is("div")){ |
128 | f932b578 | Olga Brani | if(elem[0].dispatchEvent){ |
129 | f932b578 | Olga Brani | var ev = document.createEvent('MouseEvents'); |
130 | f932b578 | Olga Brani | ev.initEvent( 'click', true, true ); |
131 | f932b578 | Olga Brani | elem[0].dispatchEvent(ev);
|
132 | f932b578 | Olga Brani | }else{
|
133 | f932b578 | Olga Brani | elem[0].click();
|
134 | f932b578 | Olga Brani | } |
135 | f932b578 | Olga Brani | } |
136 | f932b578 | Olga Brani | } |
137 | f932b578 | Olga Brani | }); |
138 | f932b578 | Olga Brani | |
139 | f932b578 | Olga Brani | elem.bind({ |
140 | f932b578 | Olga Brani | "focus.uniform": function(){ |
141 | f932b578 | Olga Brani | divTag.addClass(options.focusClass); |
142 | f932b578 | Olga Brani | }, |
143 | f932b578 | Olga Brani | "blur.uniform": function(){ |
144 | f932b578 | Olga Brani | divTag.removeClass(options.focusClass); |
145 | f932b578 | Olga Brani | } |
146 | f932b578 | Olga Brani | }); |
147 | f932b578 | Olga Brani | |
148 | f932b578 | Olga Brani | $.uniform.noSelect(divTag);
|
149 | f932b578 | Olga Brani | storeElement(elem); |
150 | f932b578 | Olga Brani | |
151 | f932b578 | Olga Brani | } |
152 | f932b578 | Olga Brani | |
153 | f932b578 | Olga Brani | function doSelect(elem){ |
154 | f932b578 | Olga Brani | var $el = $(elem); |
155 | f932b578 | Olga Brani | |
156 | f932b578 | Olga Brani | var divTag = $('<div />'), |
157 | f932b578 | Olga Brani | spanTag = $('<span />'); |
158 | f932b578 | Olga Brani | |
159 | f932b578 | Olga Brani | if(!$el.css("display") == "none" && options.autoHide){ |
160 | f932b578 | Olga Brani | divTag.hide(); |
161 | f932b578 | Olga Brani | } |
162 | f932b578 | Olga Brani | |
163 | f932b578 | Olga Brani | divTag.addClass(options.selectClass); |
164 | f932b578 | Olga Brani | |
165 | f932b578 | Olga Brani | if(options.useID && elem.attr("id") != ""){ |
166 | f932b578 | Olga Brani | divTag.attr("id", options.idPrefix+"-"+elem.attr("id")); |
167 | f932b578 | Olga Brani | } |
168 | f932b578 | Olga Brani | |
169 | f932b578 | Olga Brani | var selected = elem.find(":selected:first"); |
170 | f932b578 | Olga Brani | if(selected.length == 0){ |
171 | f932b578 | Olga Brani | selected = elem.find("option:first");
|
172 | f932b578 | Olga Brani | } |
173 | f932b578 | Olga Brani | spanTag.html(selected.html()); |
174 | f932b578 | Olga Brani | |
175 | f932b578 | Olga Brani | elem.css('opacity', 0); |
176 | f932b578 | Olga Brani | elem.wrap(divTag); |
177 | f932b578 | Olga Brani | elem.before(spanTag); |
178 | f932b578 | Olga Brani | |
179 | f932b578 | Olga Brani | //redefine variables
|
180 | f932b578 | Olga Brani | divTag = elem.parent("div");
|
181 | f932b578 | Olga Brani | spanTag = elem.siblings("span");
|
182 | f932b578 | Olga Brani | |
183 | f932b578 | Olga Brani | elem.bind({ |
184 | f932b578 | Olga Brani | "change.uniform": function() { |
185 | f932b578 | Olga Brani | spanTag.text(elem.find(":selected").html());
|
186 | f932b578 | Olga Brani | divTag.removeClass(options.activeClass); |
187 | f932b578 | Olga Brani | }, |
188 | f932b578 | Olga Brani | "focus.uniform": function() { |
189 | f932b578 | Olga Brani | divTag.addClass(options.focusClass); |
190 | f932b578 | Olga Brani | }, |
191 | f932b578 | Olga Brani | "blur.uniform": function() { |
192 | f932b578 | Olga Brani | divTag.removeClass(options.focusClass); |
193 | f932b578 | Olga Brani | divTag.removeClass(options.activeClass); |
194 | f932b578 | Olga Brani | }, |
195 | f932b578 | Olga Brani | "mousedown.uniform touchbegin.uniform": function() { |
196 | f932b578 | Olga Brani | divTag.addClass(options.activeClass); |
197 | f932b578 | Olga Brani | }, |
198 | f932b578 | Olga Brani | "mouseup.uniform touchend.uniform": function() { |
199 | f932b578 | Olga Brani | divTag.removeClass(options.activeClass); |
200 | f932b578 | Olga Brani | }, |
201 | f932b578 | Olga Brani | "click.uniform touchend.uniform": function(){ |
202 | f932b578 | Olga Brani | divTag.removeClass(options.activeClass); |
203 | f932b578 | Olga Brani | }, |
204 | f932b578 | Olga Brani | "mouseenter.uniform": function() { |
205 | f932b578 | Olga Brani | divTag.addClass(options.hoverClass); |
206 | f932b578 | Olga Brani | }, |
207 | f932b578 | Olga Brani | "mouseleave.uniform": function() { |
208 | f932b578 | Olga Brani | divTag.removeClass(options.hoverClass); |
209 | f932b578 | Olga Brani | divTag.removeClass(options.activeClass); |
210 | f932b578 | Olga Brani | }, |
211 | f932b578 | Olga Brani | "keyup.uniform": function(){ |
212 | f932b578 | Olga Brani | spanTag.text(elem.find(":selected").html());
|
213 | f932b578 | Olga Brani | } |
214 | f932b578 | Olga Brani | }); |
215 | f932b578 | Olga Brani | |
216 | f932b578 | Olga Brani | //handle disabled state
|
217 | f932b578 | Olga Brani | if($(elem).attr("disabled")){ |
218 | f932b578 | Olga Brani | //box is checked by default, check our box
|
219 | f932b578 | Olga Brani | divTag.addClass(options.disabledClass); |
220 | f932b578 | Olga Brani | } |
221 | f932b578 | Olga Brani | $.uniform.noSelect(spanTag);
|
222 | f932b578 | Olga Brani | |
223 | f932b578 | Olga Brani | storeElement(elem); |
224 | f932b578 | Olga Brani | |
225 | f932b578 | Olga Brani | } |
226 | f932b578 | Olga Brani | |
227 | f932b578 | Olga Brani | function doCheckbox(elem){ |
228 | f932b578 | Olga Brani | var $el = $(elem); |
229 | f932b578 | Olga Brani | |
230 | f932b578 | Olga Brani | var divTag = $('<div />'), |
231 | f932b578 | Olga Brani | spanTag = $('<span />'); |
232 | f932b578 | Olga Brani | |
233 | f932b578 | Olga Brani | if(!$el.css("display") == "none" && options.autoHide){ |
234 | f932b578 | Olga Brani | divTag.hide(); |
235 | f932b578 | Olga Brani | } |
236 | f932b578 | Olga Brani | |
237 | f932b578 | Olga Brani | divTag.addClass(options.checkboxClass); |
238 | f932b578 | Olga Brani | |
239 | f932b578 | Olga Brani | //assign the id of the element
|
240 | f932b578 | Olga Brani | if(options.useID && elem.attr("id") != ""){ |
241 | f932b578 | Olga Brani | divTag.attr("id", options.idPrefix+"-"+elem.attr("id")); |
242 | f932b578 | Olga Brani | } |
243 | f932b578 | Olga Brani | |
244 | f932b578 | Olga Brani | //wrap with the proper elements
|
245 | f932b578 | Olga Brani | $(elem).wrap(divTag);
|
246 | f932b578 | Olga Brani | $(elem).wrap(spanTag);
|
247 | f932b578 | Olga Brani | |
248 | f932b578 | Olga Brani | //redefine variables
|
249 | f932b578 | Olga Brani | spanTag = elem.parent(); |
250 | f932b578 | Olga Brani | divTag = spanTag.parent(); |
251 | f932b578 | Olga Brani | |
252 | f932b578 | Olga Brani | //hide normal input and add focus classes
|
253 | f932b578 | Olga Brani | $(elem)
|
254 | f932b578 | Olga Brani | .css("opacity", 0) |
255 | f932b578 | Olga Brani | .bind({ |
256 | f932b578 | Olga Brani | "focus.uniform": function(){ |
257 | f932b578 | Olga Brani | divTag.addClass(options.focusClass); |
258 | f932b578 | Olga Brani | }, |
259 | f932b578 | Olga Brani | "blur.uniform": function(){ |
260 | f932b578 | Olga Brani | divTag.removeClass(options.focusClass); |
261 | f932b578 | Olga Brani | }, |
262 | f932b578 | Olga Brani | "click.uniform touchend.uniform": function(){ |
263 | f932b578 | Olga Brani | if(!$(elem).attr("checked")){ |
264 | f932b578 | Olga Brani | //box was just unchecked, uncheck span
|
265 | f932b578 | Olga Brani | spanTag.removeClass(options.checkedClass); |
266 | f932b578 | Olga Brani | }else{
|
267 | f932b578 | Olga Brani | //box was just checked, check span.
|
268 | f932b578 | Olga Brani | spanTag.addClass(options.checkedClass); |
269 | f932b578 | Olga Brani | } |
270 | f932b578 | Olga Brani | }, |
271 | f932b578 | Olga Brani | "mousedown.uniform touchbegin.uniform": function() { |
272 | f932b578 | Olga Brani | divTag.addClass(options.activeClass); |
273 | f932b578 | Olga Brani | }, |
274 | f932b578 | Olga Brani | "mouseup.uniform touchend.uniform": function() { |
275 | f932b578 | Olga Brani | divTag.removeClass(options.activeClass); |
276 | f932b578 | Olga Brani | }, |
277 | f932b578 | Olga Brani | "mouseenter.uniform": function() { |
278 | f932b578 | Olga Brani | divTag.addClass(options.hoverClass); |
279 | f932b578 | Olga Brani | }, |
280 | f932b578 | Olga Brani | "mouseleave.uniform": function() { |
281 | f932b578 | Olga Brani | divTag.removeClass(options.hoverClass); |
282 | f932b578 | Olga Brani | divTag.removeClass(options.activeClass); |
283 | f932b578 | Olga Brani | } |
284 | f932b578 | Olga Brani | }); |
285 | f932b578 | Olga Brani | |
286 | f932b578 | Olga Brani | //handle defaults
|
287 | f932b578 | Olga Brani | if($(elem).attr("checked")){ |
288 | f932b578 | Olga Brani | //box is checked by default, check our box
|
289 | f932b578 | Olga Brani | spanTag.addClass(options.checkedClass); |
290 | f932b578 | Olga Brani | } |
291 | f932b578 | Olga Brani | |
292 | f932b578 | Olga Brani | //handle disabled state
|
293 | f932b578 | Olga Brani | if($(elem).attr("disabled")){ |
294 | f932b578 | Olga Brani | //box is checked by default, check our box
|
295 | f932b578 | Olga Brani | divTag.addClass(options.disabledClass); |
296 | f932b578 | Olga Brani | } |
297 | f932b578 | Olga Brani | |
298 | f932b578 | Olga Brani | storeElement(elem); |
299 | f932b578 | Olga Brani | } |
300 | f932b578 | Olga Brani | |
301 | f932b578 | Olga Brani | function doRadio(elem){ |
302 | f932b578 | Olga Brani | var $el = $(elem); |
303 | f932b578 | Olga Brani | |
304 | f932b578 | Olga Brani | var divTag = $('<div />'), |
305 | f932b578 | Olga Brani | spanTag = $('<span />'); |
306 | f932b578 | Olga Brani | |
307 | f932b578 | Olga Brani | if(!$el.css("display") == "none" && options.autoHide){ |
308 | f932b578 | Olga Brani | divTag.hide(); |
309 | f932b578 | Olga Brani | } |
310 | f932b578 | Olga Brani | |
311 | f932b578 | Olga Brani | divTag.addClass(options.radioClass); |
312 | f932b578 | Olga Brani | |
313 | f932b578 | Olga Brani | if(options.useID && elem.attr("id") != ""){ |
314 | f932b578 | Olga Brani | divTag.attr("id", options.idPrefix+"-"+elem.attr("id")); |
315 | f932b578 | Olga Brani | } |
316 | f932b578 | Olga Brani | |
317 | f932b578 | Olga Brani | //wrap with the proper elements
|
318 | f932b578 | Olga Brani | $(elem).wrap(divTag);
|
319 | f932b578 | Olga Brani | $(elem).wrap(spanTag);
|
320 | f932b578 | Olga Brani | |
321 | f932b578 | Olga Brani | //redefine variables
|
322 | f932b578 | Olga Brani | spanTag = elem.parent(); |
323 | f932b578 | Olga Brani | divTag = spanTag.parent(); |
324 | f932b578 | Olga Brani | |
325 | f932b578 | Olga Brani | //hide normal input and add focus classes
|
326 | f932b578 | Olga Brani | $(elem)
|
327 | f932b578 | Olga Brani | .css("opacity", 0) |
328 | f932b578 | Olga Brani | .bind({ |
329 | f932b578 | Olga Brani | "focus.uniform": function(){ |
330 | f932b578 | Olga Brani | divTag.addClass(options.focusClass); |
331 | f932b578 | Olga Brani | }, |
332 | f932b578 | Olga Brani | "blur.uniform": function(){ |
333 | f932b578 | Olga Brani | divTag.removeClass(options.focusClass); |
334 | f932b578 | Olga Brani | }, |
335 | f932b578 | Olga Brani | "click.uniform touchend.uniform": function(){ |
336 | f932b578 | Olga Brani | if(!$(elem).attr("checked")){ |
337 | f932b578 | Olga Brani | //box was just unchecked, uncheck span
|
338 | f932b578 | Olga Brani | spanTag.removeClass(options.checkedClass); |
339 | f932b578 | Olga Brani | }else{
|
340 | f932b578 | Olga Brani | //box was just checked, check span
|
341 | f932b578 | Olga Brani | var classes = options.radioClass.split(" ")[0]; |
342 | f932b578 | Olga Brani | $("." + classes + " span." + options.checkedClass + ":has([name='" + $(elem).attr('name') + "'])").removeClass(options.checkedClass); |
343 | f932b578 | Olga Brani | spanTag.addClass(options.checkedClass); |
344 | f932b578 | Olga Brani | } |
345 | f932b578 | Olga Brani | }, |
346 | f932b578 | Olga Brani | "mousedown.uniform touchend.uniform": function() { |
347 | f932b578 | Olga Brani | if(!$(elem).is(":disabled")){ |
348 | f932b578 | Olga Brani | divTag.addClass(options.activeClass); |
349 | f932b578 | Olga Brani | } |
350 | f932b578 | Olga Brani | }, |
351 | f932b578 | Olga Brani | "mouseup.uniform touchbegin.uniform": function() { |
352 | f932b578 | Olga Brani | divTag.removeClass(options.activeClass); |
353 | f932b578 | Olga Brani | }, |
354 | f932b578 | Olga Brani | "mouseenter.uniform touchend.uniform": function() { |
355 | f932b578 | Olga Brani | divTag.addClass(options.hoverClass); |
356 | f932b578 | Olga Brani | }, |
357 | f932b578 | Olga Brani | "mouseleave.uniform": function() { |
358 | f932b578 | Olga Brani | divTag.removeClass(options.hoverClass); |
359 | f932b578 | Olga Brani | divTag.removeClass(options.activeClass); |
360 | f932b578 | Olga Brani | } |
361 | f932b578 | Olga Brani | }); |
362 | f932b578 | Olga Brani | |
363 | f932b578 | Olga Brani | //handle defaults
|
364 | f932b578 | Olga Brani | if($(elem).attr("checked")){ |
365 | f932b578 | Olga Brani | //box is checked by default, check span
|
366 | f932b578 | Olga Brani | spanTag.addClass(options.checkedClass); |
367 | f932b578 | Olga Brani | } |
368 | f932b578 | Olga Brani | //handle disabled state
|
369 | f932b578 | Olga Brani | if($(elem).attr("disabled")){ |
370 | f932b578 | Olga Brani | //box is checked by default, check our box
|
371 | f932b578 | Olga Brani | divTag.addClass(options.disabledClass); |
372 | f932b578 | Olga Brani | } |
373 | f932b578 | Olga Brani | |
374 | f932b578 | Olga Brani | storeElement(elem); |
375 | f932b578 | Olga Brani | |
376 | f932b578 | Olga Brani | } |
377 | f932b578 | Olga Brani | |
378 | f932b578 | Olga Brani | function doFile(elem){ |
379 | f932b578 | Olga Brani | //sanitize input
|
380 | f932b578 | Olga Brani | var $el = $(elem); |
381 | f932b578 | Olga Brani | |
382 | f932b578 | Olga Brani | var divTag = $('<div />'), |
383 | f932b578 | Olga Brani | filenameTag = $('<span>'+options.fileDefaultText+'</span>'), |
384 | f932b578 | Olga Brani | btnTag = $('<span>'+options.fileBtnText+'</span>'); |
385 | f932b578 | Olga Brani | |
386 | f932b578 | Olga Brani | if(!$el.css("display") == "none" && options.autoHide){ |
387 | f932b578 | Olga Brani | divTag.hide(); |
388 | f932b578 | Olga Brani | } |
389 | f932b578 | Olga Brani | |
390 | f932b578 | Olga Brani | divTag.addClass(options.fileClass); |
391 | f932b578 | Olga Brani | filenameTag.addClass(options.filenameClass); |
392 | f932b578 | Olga Brani | btnTag.addClass(options.fileBtnClass); |
393 | f932b578 | Olga Brani | |
394 | f932b578 | Olga Brani | if(options.useID && $el.attr("id") != ""){ |
395 | f932b578 | Olga Brani | divTag.attr("id", options.idPrefix+"-"+$el.attr("id")); |
396 | f932b578 | Olga Brani | } |
397 | f932b578 | Olga Brani | |
398 | f932b578 | Olga Brani | //wrap with the proper elements
|
399 | f932b578 | Olga Brani | $el.wrap(divTag);
|
400 | f932b578 | Olga Brani | $el.after(btnTag);
|
401 | f932b578 | Olga Brani | $el.after(filenameTag);
|
402 | f932b578 | Olga Brani | |
403 | f932b578 | Olga Brani | //redefine variables
|
404 | f932b578 | Olga Brani | divTag = $el.closest("div"); |
405 | f932b578 | Olga Brani | filenameTag = $el.siblings("."+options.filenameClass); |
406 | f932b578 | Olga Brani | btnTag = $el.siblings("."+options.fileBtnClass); |
407 | f932b578 | Olga Brani | |
408 | f932b578 | Olga Brani | //set the size
|
409 | f932b578 | Olga Brani | if(!$el.attr("size")){ |
410 | f932b578 | Olga Brani | var divWidth = divTag.width();
|
411 | f932b578 | Olga Brani | //$el.css("width", divWidth);
|
412 | f932b578 | Olga Brani | $el.attr("size", divWidth/10); |
413 | f932b578 | Olga Brani | } |
414 | f932b578 | Olga Brani | |
415 | f932b578 | Olga Brani | //actions
|
416 | f932b578 | Olga Brani | var setFilename = function() |
417 | f932b578 | Olga Brani | { |
418 | f932b578 | Olga Brani | var filename = $el.val(); |
419 | f932b578 | Olga Brani | if (filename === '') |
420 | f932b578 | Olga Brani | { |
421 | f932b578 | Olga Brani | filename = options.fileDefaultText; |
422 | f932b578 | Olga Brani | } |
423 | f932b578 | Olga Brani | else
|
424 | f932b578 | Olga Brani | { |
425 | f932b578 | Olga Brani | filename = filename.split(/[\/\\]+/);
|
426 | f932b578 | Olga Brani | filename = filename[(filename.length-1)];
|
427 | f932b578 | Olga Brani | } |
428 | f932b578 | Olga Brani | filenameTag.text(filename); |
429 | f932b578 | Olga Brani | }; |
430 | f932b578 | Olga Brani | |
431 | f932b578 | Olga Brani | // Account for input saved across refreshes
|
432 | f932b578 | Olga Brani | setFilename(); |
433 | f932b578 | Olga Brani | |
434 | f932b578 | Olga Brani | $el
|
435 | f932b578 | Olga Brani | .css("opacity", 0) |
436 | f932b578 | Olga Brani | .bind({ |
437 | f932b578 | Olga Brani | "focus.uniform": function(){ |
438 | f932b578 | Olga Brani | divTag.addClass(options.focusClass); |
439 | f932b578 | Olga Brani | }, |
440 | f932b578 | Olga Brani | "blur.uniform": function(){ |
441 | f932b578 | Olga Brani | divTag.removeClass(options.focusClass); |
442 | f932b578 | Olga Brani | }, |
443 | f932b578 | Olga Brani | "mousedown.uniform": function() { |
444 | f932b578 | Olga Brani | if(!$(elem).is(":disabled")){ |
445 | f932b578 | Olga Brani | divTag.addClass(options.activeClass); |
446 | f932b578 | Olga Brani | } |
447 | f932b578 | Olga Brani | }, |
448 | f932b578 | Olga Brani | "mouseup.uniform": function() { |
449 | f932b578 | Olga Brani | divTag.removeClass(options.activeClass); |
450 | f932b578 | Olga Brani | }, |
451 | f932b578 | Olga Brani | "mouseenter.uniform": function() { |
452 | f932b578 | Olga Brani | divTag.addClass(options.hoverClass); |
453 | f932b578 | Olga Brani | }, |
454 | f932b578 | Olga Brani | "mouseleave.uniform": function() { |
455 | f932b578 | Olga Brani | divTag.removeClass(options.hoverClass); |
456 | f932b578 | Olga Brani | divTag.removeClass(options.activeClass); |
457 | f932b578 | Olga Brani | } |
458 | f932b578 | Olga Brani | }); |
459 | f932b578 | Olga Brani | |
460 | f932b578 | Olga Brani | // IE7 doesn't fire onChange until blur or second fire.
|
461 | f932b578 | Olga Brani | if ($.browser.msie){ |
462 | f932b578 | Olga Brani | // IE considers browser chrome blocking I/O, so it
|
463 | f932b578 | Olga Brani | // suspends tiemouts until after the file has been selected.
|
464 | f932b578 | Olga Brani | $el.bind('click.uniform.ie7', function() { |
465 | f932b578 | Olga Brani | setTimeout(setFilename, 0);
|
466 | f932b578 | Olga Brani | }); |
467 | f932b578 | Olga Brani | }else{
|
468 | f932b578 | Olga Brani | // All other browsers behave properly
|
469 | f932b578 | Olga Brani | $el.bind('change.uniform', setFilename); |
470 | f932b578 | Olga Brani | } |
471 | f932b578 | Olga Brani | |
472 | f932b578 | Olga Brani | //handle defaults
|
473 | f932b578 | Olga Brani | if($el.attr("disabled")){ |
474 | f932b578 | Olga Brani | //box is checked by default, check our box
|
475 | f932b578 | Olga Brani | divTag.addClass(options.disabledClass); |
476 | f932b578 | Olga Brani | } |
477 | f932b578 | Olga Brani | |
478 | f932b578 | Olga Brani | $.uniform.noSelect(filenameTag);
|
479 | f932b578 | Olga Brani | $.uniform.noSelect(btnTag);
|
480 | f932b578 | Olga Brani | |
481 | f932b578 | Olga Brani | storeElement(elem); |
482 | f932b578 | Olga Brani | |
483 | f932b578 | Olga Brani | } |
484 | f932b578 | Olga Brani | |
485 | f932b578 | Olga Brani | $.uniform.restore = function(elem){ |
486 | f932b578 | Olga Brani | if(elem == undefined){ |
487 | f932b578 | Olga Brani | elem = $($.uniform.elements); |
488 | f932b578 | Olga Brani | } |
489 | f932b578 | Olga Brani | |
490 | f932b578 | Olga Brani | $(elem).each(function(){ |
491 | f932b578 | Olga Brani | if($(this).is(":checkbox")){ |
492 | f932b578 | Olga Brani | //unwrap from span and div
|
493 | f932b578 | Olga Brani | $(this).unwrap().unwrap(); |
494 | f932b578 | Olga Brani | }else if($(this).is("select")){ |
495 | f932b578 | Olga Brani | //remove sibling span
|
496 | f932b578 | Olga Brani | $(this).siblings("span").remove(); |
497 | f932b578 | Olga Brani | //unwrap parent div
|
498 | f932b578 | Olga Brani | $(this).unwrap(); |
499 | f932b578 | Olga Brani | }else if($(this).is(":radio")){ |
500 | f932b578 | Olga Brani | //unwrap from span and div
|
501 | f932b578 | Olga Brani | $(this).unwrap().unwrap(); |
502 | f932b578 | Olga Brani | }else if($(this).is(":file")){ |
503 | f932b578 | Olga Brani | //remove sibling spans
|
504 | f932b578 | Olga Brani | $(this).siblings("span").remove(); |
505 | f932b578 | Olga Brani | //unwrap parent div
|
506 | f932b578 | Olga Brani | $(this).unwrap(); |
507 | f932b578 | Olga Brani | }else if($(this).is("button, :submit, :reset, a, input[type='button']")){ |
508 | f932b578 | Olga Brani | //unwrap from span and div
|
509 | f932b578 | Olga Brani | $(this).unwrap().unwrap(); |
510 | f932b578 | Olga Brani | } |
511 | f932b578 | Olga Brani | |
512 | f932b578 | Olga Brani | //unbind events
|
513 | f932b578 | Olga Brani | $(this).unbind(".uniform"); |
514 | f932b578 | Olga Brani | |
515 | f932b578 | Olga Brani | //reset inline style
|
516 | f932b578 | Olga Brani | $(this).css("opacity", "1"); |
517 | f932b578 | Olga Brani | |
518 | f932b578 | Olga Brani | //remove item from list of uniformed elements
|
519 | f932b578 | Olga Brani | var index = $.inArray($(elem), $.uniform.elements); |
520 | f932b578 | Olga Brani | $.uniform.elements.splice(index, 1); |
521 | f932b578 | Olga Brani | }); |
522 | f932b578 | Olga Brani | }; |
523 | f932b578 | Olga Brani | |
524 | f932b578 | Olga Brani | function storeElement(elem){ |
525 | f932b578 | Olga Brani | //store this element in our global array
|
526 | f932b578 | Olga Brani | elem = $(elem).get();
|
527 | f932b578 | Olga Brani | if(elem.length > 1){ |
528 | f932b578 | Olga Brani | $.each(elem, function(i, val){ |
529 | f932b578 | Olga Brani | $.uniform.elements.push(val);
|
530 | f932b578 | Olga Brani | }); |
531 | f932b578 | Olga Brani | }else{
|
532 | f932b578 | Olga Brani | $.uniform.elements.push(elem);
|
533 | f932b578 | Olga Brani | } |
534 | f932b578 | Olga Brani | } |
535 | f932b578 | Olga Brani | |
536 | f932b578 | Olga Brani | //noSelect v1.0
|
537 | f932b578 | Olga Brani | $.uniform.noSelect = function(elem) { |
538 | f932b578 | Olga Brani | function f() { |
539 | f932b578 | Olga Brani | return false; |
540 | f932b578 | Olga Brani | }; |
541 | f932b578 | Olga Brani | $(elem).each(function() { |
542 | f932b578 | Olga Brani | this.onselectstart = this.ondragstart = f; // Webkit & IE |
543 | f932b578 | Olga Brani | $(this) |
544 | f932b578 | Olga Brani | .mousedown(f) // Webkit & Opera
|
545 | f932b578 | Olga Brani | .css({ MozUserSelect: 'none' }); // Firefox |
546 | f932b578 | Olga Brani | }); |
547 | f932b578 | Olga Brani | }; |
548 | f932b578 | Olga Brani | |
549 | f932b578 | Olga Brani | $.uniform.update = function(elem){ |
550 | f932b578 | Olga Brani | if(elem == undefined){ |
551 | f932b578 | Olga Brani | elem = $($.uniform.elements); |
552 | f932b578 | Olga Brani | } |
553 | f932b578 | Olga Brani | //sanitize input
|
554 | f932b578 | Olga Brani | elem = $(elem);
|
555 | f932b578 | Olga Brani | |
556 | f932b578 | Olga Brani | elem.each(function(){
|
557 | f932b578 | Olga Brani | //do to each item in the selector
|
558 | f932b578 | Olga Brani | //function to reset all classes
|
559 | f932b578 | Olga Brani | var $e = $(this); |
560 | f932b578 | Olga Brani | |
561 | f932b578 | Olga Brani | if($e.is("select")){ |
562 | f932b578 | Olga Brani | //element is a select
|
563 | f932b578 | Olga Brani | var spanTag = $e.siblings("span"); |
564 | f932b578 | Olga Brani | var divTag = $e.parent("div"); |
565 | f932b578 | Olga Brani | |
566 | f932b578 | Olga Brani | divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass); |
567 | f932b578 | Olga Brani | |
568 | f932b578 | Olga Brani | //reset current selected text
|
569 | f932b578 | Olga Brani | spanTag.html($e.find(":selected").html()); |
570 | f932b578 | Olga Brani | |
571 | f932b578 | Olga Brani | if($e.is(":disabled")){ |
572 | f932b578 | Olga Brani | divTag.addClass(options.disabledClass); |
573 | f932b578 | Olga Brani | }else{
|
574 | f932b578 | Olga Brani | divTag.removeClass(options.disabledClass); |
575 | f932b578 | Olga Brani | } |
576 | f932b578 | Olga Brani | |
577 | f932b578 | Olga Brani | }else if($e.is(":checkbox")){ |
578 | f932b578 | Olga Brani | //element is a checkbox
|
579 | f932b578 | Olga Brani | var spanTag = $e.closest("span"); |
580 | f932b578 | Olga Brani | var divTag = $e.closest("div"); |
581 | f932b578 | Olga Brani | |
582 | f932b578 | Olga Brani | divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass); |
583 | f932b578 | Olga Brani | spanTag.removeClass(options.checkedClass); |
584 | f932b578 | Olga Brani | |
585 | f932b578 | Olga Brani | if($e.is(":checked")){ |
586 | f932b578 | Olga Brani | spanTag.addClass(options.checkedClass); |
587 | f932b578 | Olga Brani | } |
588 | f932b578 | Olga Brani | if($e.is(":disabled")){ |
589 | f932b578 | Olga Brani | divTag.addClass(options.disabledClass); |
590 | f932b578 | Olga Brani | }else{
|
591 | f932b578 | Olga Brani | divTag.removeClass(options.disabledClass); |
592 | f932b578 | Olga Brani | } |
593 | f932b578 | Olga Brani | |
594 | f932b578 | Olga Brani | }else if($e.is(":radio")){ |
595 | f932b578 | Olga Brani | //element is a radio
|
596 | f932b578 | Olga Brani | var spanTag = $e.closest("span"); |
597 | f932b578 | Olga Brani | var divTag = $e.closest("div"); |
598 | f932b578 | Olga Brani | |
599 | f932b578 | Olga Brani | divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass); |
600 | f932b578 | Olga Brani | spanTag.removeClass(options.checkedClass); |
601 | f932b578 | Olga Brani | |
602 | f932b578 | Olga Brani | if($e.is(":checked")){ |
603 | f932b578 | Olga Brani | spanTag.addClass(options.checkedClass); |
604 | f932b578 | Olga Brani | } |
605 | f932b578 | Olga Brani | |
606 | f932b578 | Olga Brani | if($e.is(":disabled")){ |
607 | f932b578 | Olga Brani | divTag.addClass(options.disabledClass); |
608 | f932b578 | Olga Brani | }else{
|
609 | f932b578 | Olga Brani | divTag.removeClass(options.disabledClass); |
610 | f932b578 | Olga Brani | } |
611 | f932b578 | Olga Brani | }else if($e.is(":file")){ |
612 | f932b578 | Olga Brani | var divTag = $e.parent("div"); |
613 | f932b578 | Olga Brani | var filenameTag = $e.siblings(options.filenameClass); |
614 | f932b578 | Olga Brani | btnTag = $e.siblings(options.fileBtnClass);
|
615 | f932b578 | Olga Brani | |
616 | f932b578 | Olga Brani | divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass); |
617 | f932b578 | Olga Brani | |
618 | f932b578 | Olga Brani | filenameTag.text($e.val());
|
619 | f932b578 | Olga Brani | |
620 | f932b578 | Olga Brani | if($e.is(":disabled")){ |
621 | f932b578 | Olga Brani | divTag.addClass(options.disabledClass); |
622 | f932b578 | Olga Brani | }else{
|
623 | f932b578 | Olga Brani | divTag.removeClass(options.disabledClass); |
624 | f932b578 | Olga Brani | } |
625 | f932b578 | Olga Brani | }else if($e.is(":submit") || $e.is(":reset") || $e.is("button") || $e.is("a") || elem.is("input[type=button]")){ |
626 | f932b578 | Olga Brani | var divTag = $e.closest("div"); |
627 | f932b578 | Olga Brani | divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass); |
628 | f932b578 | Olga Brani | |
629 | f932b578 | Olga Brani | if($e.is(":disabled")){ |
630 | f932b578 | Olga Brani | divTag.addClass(options.disabledClass); |
631 | f932b578 | Olga Brani | }else{
|
632 | f932b578 | Olga Brani | divTag.removeClass(options.disabledClass); |
633 | f932b578 | Olga Brani | } |
634 | f932b578 | Olga Brani | |
635 | f932b578 | Olga Brani | } |
636 | f932b578 | Olga Brani | |
637 | f932b578 | Olga Brani | }); |
638 | f932b578 | Olga Brani | }; |
639 | f932b578 | Olga Brani | |
640 | f932b578 | Olga Brani | return this.each(function() { |
641 | f932b578 | Olga Brani | if($.support.selectOpacity){ |
642 | f932b578 | Olga Brani | var elem = $(this); |
643 | f932b578 | Olga Brani | |
644 | f932b578 | Olga Brani | if(elem.is("select")){ |
645 | f932b578 | Olga Brani | //element is a select
|
646 | f932b578 | Olga Brani | if(elem.attr("multiple") != true){ |
647 | f932b578 | Olga Brani | //element is not a multi-select
|
648 | f932b578 | Olga Brani | if(elem.attr("size") == undefined || elem.attr("size") <= 1){ |
649 | f932b578 | Olga Brani | doSelect(elem); |
650 | f932b578 | Olga Brani | } |
651 | f932b578 | Olga Brani | } |
652 | f932b578 | Olga Brani | }else if(elem.is(":checkbox")){ |
653 | f932b578 | Olga Brani | //element is a checkbox
|
654 | f932b578 | Olga Brani | doCheckbox(elem); |
655 | f932b578 | Olga Brani | }else if(elem.is(":radio")){ |
656 | f932b578 | Olga Brani | //element is a radio
|
657 | f932b578 | Olga Brani | doRadio(elem); |
658 | f932b578 | Olga Brani | }else if(elem.is(":file")){ |
659 | f932b578 | Olga Brani | //element is a file upload
|
660 | f932b578 | Olga Brani | doFile(elem); |
661 | f932b578 | Olga Brani | }else if(elem.is(":text, :password, input[type='email']")){ |
662 | f932b578 | Olga Brani | doInput(elem); |
663 | f932b578 | Olga Brani | }else if(elem.is("textarea")){ |
664 | f932b578 | Olga Brani | doTextarea(elem); |
665 | f932b578 | Olga Brani | }else if(elem.is("a") || elem.is(":submit") || elem.is(":reset") || elem.is("button") || elem.is("input[type=button]")){ |
666 | f932b578 | Olga Brani | doButton(elem); |
667 | f932b578 | Olga Brani | } |
668 | f932b578 | Olga Brani | |
669 | f932b578 | Olga Brani | } |
670 | f932b578 | Olga Brani | }); |
671 | f932b578 | Olga Brani | }; |
672 | f932b578 | Olga Brani | })(jQuery); |