templates/mootools/mootools.formalize.js in compass_formalize-0.0.4 vs templates/mootools/mootools.formalize.js in compass_formalize-0.0.5

- old
+ new

@@ -1,38 +1,49 @@ -// -// Note: This file depends on the MooTools library. -// +/* + Formalize - version 1.2 + Note: This file depends on the MooTools library. +*/ + // Module pattern: -// http://yuiblog.com/blog/2007/06/12/module-pattern/ +// http://yuiblog.com/blog/2007/06/12/module-pattern var FORMALIZE = (function(window, document, undefined) { + // Internet Explorer detection. + function IE(version) { + var b = document.createElement('b'); + b.innerHTML = '<!--[if IE ' + version + ']><br><![endif]-->'; + return !!b.getElementsByTagName('br').length; + } + // Private constants. var PLACEHOLDER_SUPPORTED = 'placeholder' in document.createElement('input'); var AUTOFOCUS_SUPPORTED = 'autofocus' in document.createElement('input'); - var WEBKIT = 'webkitAppearance' in document.createElement('select').style; - var IE6 = Browser.ie6; - var IE7 = Browser.ie7; + var IE6 = IE(6); + var IE7 = IE(7); // Expose innards of FORMALIZE. return { // FORMALIZE.go go: function() { - for (var i in FORMALIZE.init) { - FORMALIZE.init[i](); + var i, j = this.init; + + for (i in j) { + j.hasOwnProperty(i) && j[i](); } }, // FORMALIZE.init init: { - // FORMALIZE.init.detect_webkit - detect_webkit: function() { - if (!WEBKIT) { - return; - } + // FORMALIZE.init.disable_link_button + disable_link_button: function() { + $(document.documentElement).addEvent('click', function(ev) { + var el = ev.target; + var is_disabled = el.tagName.toLowerCase() === 'a' && el.className.match('button_disabled'); - // Tweaks for Safari + Chrome. - // <html class="is_webkit"> - $(document.documentElement).addClass('is_webkit'); + if (is_disabled) { + ev.preventDefault(); + } + }); }, // FORMALIZE.init.full_input_size full_input_size: function() { if (!IE7 || !$$('textarea, input.input_full').length) { return; @@ -92,11 +103,15 @@ autofocus: function() { if (AUTOFOCUS_SUPPORTED || !$$('[autofocus]').length) { return; } - $$('[autofocus]')[0].focus(); + var el = $$('[autofocus]')[0]; + + if (!el.disabled) { + el.focus(); + } }, // FORMALIZE.init.placeholder placeholder: function() { if (PLACEHOLDER_SUPPORTED || !$$('[placeholder]').length) { // Exit if placeholder is supported natively, @@ -105,10 +120,16 @@ } FORMALIZE.misc.add_placeholder(); $$('[placeholder]').each(function(el) { + // Placeholder obscured in older browsers, + // so there's no point adding to password. + if (el.type === 'password') { + return; + } + var text = el.get('placeholder'); el.addEvents({ focus: function() { if (el.value === text) { @@ -120,11 +141,13 @@ } }); // Prevent <form> from accidentally // submitting the placeholder text. - el.getParent('form').addEvents({ + var form = el.getParent('form'); + + form && form.addEvents({ 'submit': function() { if (el.value === text) { el.set('value', '').removeClass('placeholder_text'); } }, @@ -144,9 +167,15 @@ // or if page does not have any placeholder. return; } $$('[placeholder]').each(function(el) { + // Placeholder obscured in older browsers, + // so there's no point adding to password. + if (el.type === 'password') { + return; + } + var text = el.get('placeholder'); if (!el.value || el.value === text) { el.set('value', text).addClass('placeholder_text'); } \ No newline at end of file