Statistics
| Branch: | Tag: | Revision:

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);