Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / ui / new_ui / ui / javascripts / foundation / foundation.forms.js @ 77d5883f

History | View | Annotate | Download (13 kB)

1 b3c1328b Olga Brani
/*jslint unparam: true, browser: true, indent: 2 */
2 b3c1328b Olga Brani
3 b3c1328b Olga Brani
;(function ($, window, document, undefined) {
4 b3c1328b Olga Brani
  'use strict';
5 b3c1328b Olga Brani
6 b3c1328b Olga Brani
  Foundation.libs.forms = {
7 b3c1328b Olga Brani
    name : 'forms',
8 b3c1328b Olga Brani
9 b3c1328b Olga Brani
    version : '4.0.4',
10 b3c1328b Olga Brani
11 b3c1328b Olga Brani
    settings : {
12 b3c1328b Olga Brani
      disable_class: 'no-custom'
13 b3c1328b Olga Brani
    },
14 b3c1328b Olga Brani
15 b3c1328b Olga Brani
    init : function (scope, method, options) {
16 b3c1328b Olga Brani
      this.scope = scope || this.scope;
17 b3c1328b Olga Brani
18 b3c1328b Olga Brani
      if (typeof method === 'object') {
19 b3c1328b Olga Brani
        $.extend(true, this.settings, method);
20 b3c1328b Olga Brani
      }
21 b3c1328b Olga Brani
22 b3c1328b Olga Brani
      if (typeof method != 'string') {
23 b3c1328b Olga Brani
        if (!this.settings.init) {
24 b3c1328b Olga Brani
          this.events();
25 b3c1328b Olga Brani
        }
26 b3c1328b Olga Brani
27 b3c1328b Olga Brani
        this.assemble();
28 b3c1328b Olga Brani
29 b3c1328b Olga Brani
        return this.settings.init;
30 b3c1328b Olga Brani
      } else {
31 b3c1328b Olga Brani
        return this[method].call(this, options);
32 b3c1328b Olga Brani
      }
33 b3c1328b Olga Brani
    },
34 b3c1328b Olga Brani
35 b3c1328b Olga Brani
    assemble : function () {
36 b3c1328b Olga Brani
      $('form.custom input[type="radio"]', $(this.scope)).not('[data-customforms="disabled"]')
37 b3c1328b Olga Brani
        .each(this.append_custom_markup);
38 b3c1328b Olga Brani
      $('form.custom input[type="checkbox"]', $(this.scope)).not('[data-customforms="disabled"]')
39 b3c1328b Olga Brani
        .each(this.append_custom_markup);
40 b3c1328b Olga Brani
      $('form.custom select', $(this.scope)).not('[data-customforms="disabled"]')
41 b3c1328b Olga Brani
        .each(this.append_custom_select);
42 b3c1328b Olga Brani
    },
43 b3c1328b Olga Brani
44 b3c1328b Olga Brani
    events : function () {
45 b3c1328b Olga Brani
      var self = this;
46 b3c1328b Olga Brani
47 b3c1328b Olga Brani
      $(this.scope)
48 b3c1328b Olga Brani
        .on('change.fndtn.forms', 'form.custom select:not([data-customforms="disabled"])', function (e) {
49 b3c1328b Olga Brani
          self.refresh_custom_select($(this));
50 b3c1328b Olga Brani
        })
51 b3c1328b Olga Brani
        .on('click.fndtn.forms', 'form.custom label', function (e) {
52 b3c1328b Olga Brani
          var $associatedElement = $('#' + self.escape($(this).attr('for')) + ':not([data-customforms="disabled"])'),
53 b3c1328b Olga Brani
              $customCheckbox,
54 b3c1328b Olga Brani
              $customRadio;
55 b3c1328b Olga Brani
          if ($associatedElement.length !== 0) {
56 b3c1328b Olga Brani
            if ($associatedElement.attr('type') === 'checkbox') {
57 b3c1328b Olga Brani
              e.preventDefault();
58 b3c1328b Olga Brani
              $customCheckbox = $(this).find('span.custom.checkbox');
59 b3c1328b Olga Brani
60 b3c1328b Olga Brani
              //the checkbox might be outside after the label
61 b3c1328b Olga Brani
              if ($customCheckbox.length == 0) {
62 b3c1328b Olga Brani
                $customCheckbox = $(this).next('span.custom.checkbox');
63 b3c1328b Olga Brani
              }
64 b3c1328b Olga Brani
              //the checkbox might be outside before the label
65 b3c1328b Olga Brani
              if ($customCheckbox.length == 0) {
66 b3c1328b Olga Brani
                $customCheckbox = $(this).prev('span.custom.checkbox');
67 b3c1328b Olga Brani
              }
68 b3c1328b Olga Brani
              self.toggle_checkbox($customCheckbox);
69 b3c1328b Olga Brani
            } else if ($associatedElement.attr('type') === 'radio') {
70 b3c1328b Olga Brani
              e.preventDefault();
71 b3c1328b Olga Brani
              $customRadio = $(this).find('span.custom.radio');
72 b3c1328b Olga Brani
              //the radio might be outside after the label
73 b3c1328b Olga Brani
              if ($customRadio.length == 0) {
74 b3c1328b Olga Brani
                $customRadio = $(this).next('span.custom.radio');
75 b3c1328b Olga Brani
              }
76 b3c1328b Olga Brani
              //the radio might be outside before the label
77 b3c1328b Olga Brani
              if ($customRadio.length == 0) {
78 b3c1328b Olga Brani
                $customRadio = $(this).prev('span.custom.radio');
79 b3c1328b Olga Brani
              }
80 b3c1328b Olga Brani
              self.toggle_radio($customRadio);
81 b3c1328b Olga Brani
            }
82 b3c1328b Olga Brani
          }
83 b3c1328b Olga Brani
        })
84 b3c1328b Olga Brani
        .on('click.fndtn.forms', 'form.custom div.custom.dropdown a.current, form.custom div.custom.dropdown a.selector', function (e) {
85 b3c1328b Olga Brani
          var $this = $(this),
86 b3c1328b Olga Brani
              $dropdown = $this.closest('div.custom.dropdown'),
87 b3c1328b Olga Brani
              $select = $dropdown.prev();
88 b3c1328b Olga Brani
89 b3c1328b Olga Brani
          // make sure other dropdowns close
90 b3c1328b Olga Brani
          if(!$dropdown.hasClass('open'))
91 b3c1328b Olga Brani
            $(self.scope).trigger('click');
92 b3c1328b Olga Brani
93 b3c1328b Olga Brani
          e.preventDefault();
94 b3c1328b Olga Brani
          if (false === $select.is(':disabled')) {
95 b3c1328b Olga Brani
            $dropdown.toggleClass('open');
96 b3c1328b Olga Brani
97 b3c1328b Olga Brani
            if ($dropdown.hasClass('open')) {
98 b3c1328b Olga Brani
              $(self.scope).on('click.fndtn.forms.customdropdown', function () {
99 b3c1328b Olga Brani
                $dropdown.removeClass('open');
100 b3c1328b Olga Brani
                $(self.scope).off('.fndtn.forms.customdropdown');
101 b3c1328b Olga Brani
              });
102 b3c1328b Olga Brani
            } else {
103 b3c1328b Olga Brani
              $(self.scope).on('.fndtn.forms.customdropdown');
104 b3c1328b Olga Brani
            }
105 b3c1328b Olga Brani
            return false;
106 b3c1328b Olga Brani
          }
107 b3c1328b Olga Brani
        })
108 b3c1328b Olga Brani
        .on('click.fndtn.forms touchend.fndtn.forms', 'form.custom div.custom.dropdown li', function (e) {
109 b3c1328b Olga Brani
          var $this = $(this),
110 b3c1328b Olga Brani
              $customDropdown = $this.closest('div.custom.dropdown'),
111 b3c1328b Olga Brani
              $select = $customDropdown.prev(),
112 b3c1328b Olga Brani
              selectedIndex = 0;
113 b3c1328b Olga Brani
114 b3c1328b Olga Brani
          e.preventDefault();
115 b3c1328b Olga Brani
          e.stopPropagation();
116 b3c1328b Olga Brani
117 b3c1328b Olga Brani
          if ( ! $(this).hasClass('disabled')) {
118 b3c1328b Olga Brani
            $('div.dropdown').not($customDropdown).removeClass('open');
119 b3c1328b Olga Brani
120 b3c1328b Olga Brani
            var $oldThis= $this
121 b3c1328b Olga Brani
              .closest('ul')
122 b3c1328b Olga Brani
              .find('li.selected');
123 b3c1328b Olga Brani
            $oldThis.removeClass('selected');
124 b3c1328b Olga Brani
125 b3c1328b Olga Brani
            $this.addClass('selected');
126 b3c1328b Olga Brani
127 b3c1328b Olga Brani
            $customDropdown
128 b3c1328b Olga Brani
              .removeClass('open')
129 b3c1328b Olga Brani
              .find('a.current')
130 b3c1328b Olga Brani
              .html($this.html());
131 b3c1328b Olga Brani
132 b3c1328b Olga Brani
            $this.closest('ul').find('li').each(function (index) {
133 b3c1328b Olga Brani
              if ($this[0] == this) {
134 b3c1328b Olga Brani
                selectedIndex = index;
135 b3c1328b Olga Brani
              }
136 b3c1328b Olga Brani
137 b3c1328b Olga Brani
            });
138 b3c1328b Olga Brani
            $select[0].selectedIndex = selectedIndex;
139 b3c1328b Olga Brani
140 b3c1328b Olga Brani
            //store the old value in data
141 b3c1328b Olga Brani
            $select.data('prevalue', $oldThis.html());
142 b3c1328b Olga Brani
            $select.trigger('change');
143 b3c1328b Olga Brani
          }
144 b3c1328b Olga Brani
        });
145 b3c1328b Olga Brani
146 b3c1328b Olga Brani
      this.settings.init = true;
147 b3c1328b Olga Brani
    },
148 b3c1328b Olga Brani
149 b3c1328b Olga Brani
    append_custom_markup : function (idx, sel) {
150 b3c1328b Olga Brani
      var $this = $(sel).hide(),
151 b3c1328b Olga Brani
          type  = $this.attr('type'),
152 b3c1328b Olga Brani
          $span = $this.next('span.custom.' + type);
153 b3c1328b Olga Brani
154 b3c1328b Olga Brani
      if ($span.length === 0) {
155 b3c1328b Olga Brani
        $span = $('<span class="custom ' + type + '"></span>').insertAfter($this);
156 b3c1328b Olga Brani
      }
157 b3c1328b Olga Brani
158 b3c1328b Olga Brani
      $span.toggleClass('checked', $this.is(':checked'));
159 b3c1328b Olga Brani
      $span.toggleClass('disabled', $this.is(':disabled'));
160 b3c1328b Olga Brani
    },
161 b3c1328b Olga Brani
162 b3c1328b Olga Brani
    append_custom_select : function (idx, sel) {
163 b3c1328b Olga Brani
      var self = Foundation.libs.forms,
164 b3c1328b Olga Brani
          $this = $( sel ),
165 b3c1328b Olga Brani
          $customSelect = $this.next( 'div.custom.dropdown' ),
166 b3c1328b Olga Brani
          $customList = $customSelect.find( 'ul' ),
167 b3c1328b Olga Brani
          $selectCurrent = $customSelect.find( ".current" ),
168 b3c1328b Olga Brani
          $selector = $customSelect.find( ".selector" ),
169 b3c1328b Olga Brani
          $options = $this.find( 'option' ),
170 b3c1328b Olga Brani
          $selectedOption = $options.filter( ':selected' ),
171 b3c1328b Olga Brani
          copyClasses = $this.attr('class') ? $this.attr('class').split(' ') : [],
172 b3c1328b Olga Brani
          maxWidth = 0,
173 b3c1328b Olga Brani
          liHtml = '',
174 b3c1328b Olga Brani
          $listItems,
175 b3c1328b Olga Brani
          $currentSelect = false;
176 b3c1328b Olga Brani
177 b3c1328b Olga Brani
      if ($this.hasClass(self.settings.disable_class)) return;
178 b3c1328b Olga Brani
179 b3c1328b Olga Brani
      if ($customSelect.length === 0) {
180 b3c1328b Olga Brani
        var customSelectSize = $this.hasClass( 'small' )   ? 'small'   :
181 b3c1328b Olga Brani
                               $this.hasClass( 'medium' )  ? 'medium'  :
182 b3c1328b Olga Brani
                               $this.hasClass( 'large' )   ? 'large'   :
183 b3c1328b Olga Brani
                               $this.hasClass( 'expand' )  ? 'expand'  : '';
184 b3c1328b Olga Brani
185 b3c1328b Olga Brani
        $customSelect = $('<div class="' + ['custom', 'dropdown', customSelectSize ].concat(copyClasses).filter(function(item, idx,arr){ if(item == '') return false; return arr.indexOf(item) == idx; }).join( ' ' ) + '"><a href="#" class="selector"></a><ul /></div>');
186 b3c1328b Olga Brani
        $selector = $customSelect.find(".selector");
187 b3c1328b Olga Brani
        $customList = $customSelect.find("ul");
188 b3c1328b Olga Brani
        liHtml = $options.map(function() { return "<li>" + $( this ).html() + "</li>"; } ).get().join( '' );
189 b3c1328b Olga Brani
        $customList.append(liHtml);
190 b3c1328b Olga Brani
        $currentSelect = $customSelect.prepend('<a href="#" class="current">' + $selectedOption.html() + '</a>' ).find( ".current" );
191 b3c1328b Olga Brani
        $this
192 b3c1328b Olga Brani
          .after( $customSelect )
193 b3c1328b Olga Brani
          .hide();
194 b3c1328b Olga Brani
195 b3c1328b Olga Brani
      } else {
196 b3c1328b Olga Brani
        liHtml = $options.map(function() {
197 b3c1328b Olga Brani
            return "<li>" + $( this ).html() + "</li>";
198 b3c1328b Olga Brani
          })
199 b3c1328b Olga Brani
          .get().join('');
200 b3c1328b Olga Brani
        $customList
201 b3c1328b Olga Brani
          .html('')
202 b3c1328b Olga Brani
          .append(liHtml);
203 b3c1328b Olga Brani
204 b3c1328b Olga Brani
      } // endif $customSelect.length === 0
205 b3c1328b Olga Brani
      $customSelect.toggleClass('disabled', $this.is( ':disabled' ) );
206 b3c1328b Olga Brani
      $listItems = $customList.find( 'li' );
207 b3c1328b Olga Brani
208 b3c1328b Olga Brani
      $options.each( function ( index ) {
209 b3c1328b Olga Brani
        if ( this.selected ) {
210 b3c1328b Olga Brani
          $listItems.eq( index ).addClass( 'selected' );
211 b3c1328b Olga Brani
212 b3c1328b Olga Brani
          if ($currentSelect) {
213 b3c1328b Olga Brani
            $currentSelect.html( $( this ).html() );
214 b3c1328b Olga Brani
          }
215 b3c1328b Olga Brani
216 b3c1328b Olga Brani
        }
217 b3c1328b Olga Brani
        if ($(this).is(':disabled')) {
218 b3c1328b Olga Brani
          $listItems.eq( index ).addClass( 'disabled' );
219 b3c1328b Olga Brani
        }
220 b3c1328b Olga Brani
      });
221 b3c1328b Olga Brani
222 b3c1328b Olga Brani
      //
223 b3c1328b Olga Brani
      // If we're not specifying a predetermined form size.
224 b3c1328b Olga Brani
      //
225 b3c1328b Olga Brani
      if (!$customSelect.is('.small, .medium, .large, .expand')) {
226 b3c1328b Olga Brani
227 b3c1328b Olga Brani
        // ------------------------------------------------------------------------------------
228 b3c1328b Olga Brani
        // This is a work-around for when elements are contained within hidden parents.
229 b3c1328b Olga Brani
        // For example, when custom-form elements are inside of a hidden reveal modal.
230 b3c1328b Olga Brani
        //
231 b3c1328b Olga Brani
        // We need to display the current custom list element as well as hidden parent elements
232 b3c1328b Olga Brani
        // in order to properly calculate the list item element's width property.
233 b3c1328b Olga Brani
        // -------------------------------------------------------------------------------------
234 b3c1328b Olga Brani
235 b3c1328b Olga Brani
        $customSelect.addClass( 'open' );
236 b3c1328b Olga Brani
        //
237 b3c1328b Olga Brani
        // Quickly, display all parent elements.
238 b3c1328b Olga Brani
        // This should help us calcualate the width of the list item's within the drop down.
239 b3c1328b Olga Brani
        //
240 b3c1328b Olga Brani
        var self = Foundation.libs.forms;
241 b3c1328b Olga Brani
        self.hidden_fix.adjust( $customList );
242 b3c1328b Olga Brani
243 b3c1328b Olga Brani
        maxWidth = ( self.outerWidth($listItems) > maxWidth ) ? self.outerWidth($listItems) : maxWidth;
244 b3c1328b Olga Brani
245 b3c1328b Olga Brani
        Foundation.libs.forms.hidden_fix.reset();
246 b3c1328b Olga Brani
247 b3c1328b Olga Brani
        $customSelect.removeClass( 'open' );
248 b3c1328b Olga Brani
249 b3c1328b Olga Brani
      } // endif
250 b3c1328b Olga Brani
251 b3c1328b Olga Brani
    },
252 b3c1328b Olga Brani
253 b3c1328b Olga Brani
    refresh_custom_select : function ($select) {
254 b3c1328b Olga Brani
      var self = this;
255 b3c1328b Olga Brani
      var maxWidth = 0,
256 b3c1328b Olga Brani
        $customSelect = $select.next(),
257 b3c1328b Olga Brani
        $options = $select.find('option');
258 b3c1328b Olga Brani
259 b3c1328b Olga Brani
      $customSelect.find('ul').html('');
260 b3c1328b Olga Brani
261 b3c1328b Olga Brani
      $options.each(function () {
262 b3c1328b Olga Brani
        var $li = $('<li>' + $(this).html() + '</li>');
263 b3c1328b Olga Brani
        $customSelect.find('ul').append($li);
264 b3c1328b Olga Brani
      });
265 b3c1328b Olga Brani
266 b3c1328b Olga Brani
      // re-populate
267 b3c1328b Olga Brani
      $options.each(function (index) {
268 b3c1328b Olga Brani
        if (this.selected) {
269 b3c1328b Olga Brani
          $customSelect.find('li').eq(index).addClass('selected');
270 b3c1328b Olga Brani
          $customSelect.find('.current').html($(this).html());
271 b3c1328b Olga Brani
        }
272 b3c1328b Olga Brani
        if ($(this).is(':disabled')) {
273 b3c1328b Olga Brani
          $customSelect.find('li').eq(index).addClass('disabled');
274 b3c1328b Olga Brani
        }
275 b3c1328b Olga Brani
      });
276 b3c1328b Olga Brani
277 b3c1328b Olga Brani
      // fix width
278 b3c1328b Olga Brani
      $customSelect.removeAttr('style')
279 b3c1328b Olga Brani
        .find('ul').removeAttr('style');
280 b3c1328b Olga Brani
      $customSelect.find('li').each(function () {
281 b3c1328b Olga Brani
        $customSelect.addClass('open');
282 b3c1328b Olga Brani
        if (self.outerWidth($(this)) > maxWidth) {
283 b3c1328b Olga Brani
          maxWidth = self.outerWidth($(this));
284 b3c1328b Olga Brani
        }
285 b3c1328b Olga Brani
        $customSelect.removeClass('open');
286 b3c1328b Olga Brani
      });
287 b3c1328b Olga Brani
    },
288 b3c1328b Olga Brani
289 b3c1328b Olga Brani
    toggle_checkbox : function ($element) {
290 b3c1328b Olga Brani
      var $input = $element.prev(),
291 b3c1328b Olga Brani
          input = $input[0];
292 b3c1328b Olga Brani
293 b3c1328b Olga Brani
      if (false === $input.is(':disabled')) {
294 b3c1328b Olga Brani
        input.checked = ((input.checked) ? false : true);
295 b3c1328b Olga Brani
        $element.toggleClass('checked');
296 b3c1328b Olga Brani
297 b3c1328b Olga Brani
        $input.trigger('change');
298 b3c1328b Olga Brani
      }
299 b3c1328b Olga Brani
    },
300 b3c1328b Olga Brani
301 b3c1328b Olga Brani
    toggle_radio : function ($element) {
302 b3c1328b Olga Brani
      var $input = $element.prev(),
303 b3c1328b Olga Brani
          $form = $input.closest('form.custom'),
304 b3c1328b Olga Brani
          input = $input[0];
305 b3c1328b Olga Brani
306 b3c1328b Olga Brani
      if (false === $input.is(':disabled')) {
307 b3c1328b Olga Brani
        $form.find('input[type="radio"][name="' + this.escape($input.attr('name')) + '"]').next().not($element).removeClass('checked');
308 b3c1328b Olga Brani
        if ( !$element.hasClass('checked') ) {
309 b3c1328b Olga Brani
          $element.toggleClass('checked');
310 b3c1328b Olga Brani
        }
311 b3c1328b Olga Brani
        input.checked = $element.hasClass('checked');
312 b3c1328b Olga Brani
313 b3c1328b Olga Brani
        $input.trigger('change');
314 b3c1328b Olga Brani
      }
315 b3c1328b Olga Brani
    },
316 b3c1328b Olga Brani
317 b3c1328b Olga Brani
    escape : function (text) {
318 b3c1328b Olga Brani
      return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
319 b3c1328b Olga Brani
    },
320 b3c1328b Olga Brani
321 b3c1328b Olga Brani
    hidden_fix : {
322 b3c1328b Olga Brani
      /**
323 b3c1328b Olga Brani
       * Sets all hidden parent elements and self to visibile.
324 b3c1328b Olga Brani
       *
325 b3c1328b Olga Brani
       * @method adjust
326 b3c1328b Olga Brani
       * @param {jQuery Object} $child
327 b3c1328b Olga Brani
       */
328 b3c1328b Olga Brani
329 b3c1328b Olga Brani
      // We'll use this to temporarily store style properties.
330 b3c1328b Olga Brani
      tmp : [],
331 b3c1328b Olga Brani
332 b3c1328b Olga Brani
      // We'll use this to set hidden parent elements.
333 b3c1328b Olga Brani
      hidden : null,
334 b3c1328b Olga Brani
335 b3c1328b Olga Brani
      adjust : function( $child ) {
336 b3c1328b Olga Brani
        // Internal reference.
337 b3c1328b Olga Brani
        var _self = this;
338 b3c1328b Olga Brani
339 b3c1328b Olga Brani
        // Set all hidden parent elements, including this element.
340 b3c1328b Olga Brani
        _self.hidden = $child.parents().andSelf().filter( ":hidden" );
341 b3c1328b Olga Brani
342 b3c1328b Olga Brani
        // Loop through all hidden elements.
343 b3c1328b Olga Brani
        _self.hidden.each( function() {
344 b3c1328b Olga Brani
345 b3c1328b Olga Brani
          // Cache the element.
346 b3c1328b Olga Brani
          var $elem = $( this );
347 b3c1328b Olga Brani
348 b3c1328b Olga Brani
          // Store the style attribute.
349 b3c1328b Olga Brani
          // Undefined if element doesn't have a style attribute.
350 b3c1328b Olga Brani
          _self.tmp.push( $elem.attr( 'style' ) );
351 b3c1328b Olga Brani
352 b3c1328b Olga Brani
          // Set the element's display property to block,
353 b3c1328b Olga Brani
          // but ensure it's visibility is hidden.
354 b3c1328b Olga Brani
          $elem.css( { 'visibility' : 'hidden', 'display' : 'block' } );
355 b3c1328b Olga Brani
        });
356 b3c1328b Olga Brani
357 b3c1328b Olga Brani
      }, // end adjust
358 b3c1328b Olga Brani
359 b3c1328b Olga Brani
      /**
360 b3c1328b Olga Brani
       * Resets the elements previous state.
361 b3c1328b Olga Brani
       *
362 b3c1328b Olga Brani
       * @method reset
363 b3c1328b Olga Brani
       */
364 b3c1328b Olga Brani
      reset : function() {
365 b3c1328b Olga Brani
        // Internal reference.
366 b3c1328b Olga Brani
        var _self = this;
367 b3c1328b Olga Brani
        // Loop through our hidden element collection.
368 b3c1328b Olga Brani
        _self.hidden.each( function( i ) {
369 b3c1328b Olga Brani
          // Cache this element.
370 b3c1328b Olga Brani
          var $elem = $( this ),
371 b3c1328b Olga Brani
              _tmp = _self.tmp[ i ]; // Get the stored 'style' value for this element.
372 b3c1328b Olga Brani
373 b3c1328b Olga Brani
          // If the stored value is undefined.
374 b3c1328b Olga Brani
          if( _tmp === undefined )
375 b3c1328b Olga Brani
            // Remove the style attribute.
376 b3c1328b Olga Brani
            $elem.removeAttr( 'style' );
377 b3c1328b Olga Brani
          else
378 b3c1328b Olga Brani
            // Otherwise, reset the element style attribute.
379 b3c1328b Olga Brani
            $elem.attr( 'style', _tmp );
380 b3c1328b Olga Brani
381 b3c1328b Olga Brani
        });
382 b3c1328b Olga Brani
        // Reset the tmp array.
383 b3c1328b Olga Brani
        _self.tmp = [];
384 b3c1328b Olga Brani
        // Reset the hidden elements variable.
385 b3c1328b Olga Brani
        _self.hidden = null;
386 b3c1328b Olga Brani
387 b3c1328b Olga Brani
      } // end reset
388 b3c1328b Olga Brani
389 b3c1328b Olga Brani
    },
390 b3c1328b Olga Brani
391 b3c1328b Olga Brani
    off : function () {
392 b3c1328b Olga Brani
      $(this.scope).off('.fndtn.forms');
393 b3c1328b Olga Brani
    }
394 b3c1328b Olga Brani
  };
395 b3c1328b Olga Brani
}(Foundation.zj, this, this.document));