--- a +++ b/monsters/licenses/Monsters 2D Pack No 2. | OpenGameArt.org_files/compact_forms.js @@ -0,0 +1,110 @@ +// $Id: compact_forms.js,v 1.11 2011/01/09 05:51:15 sun Exp $ + +(function ($) { + +Drupal.compactForms = {}; + +/** + * Compact Forms jQuery plugin. + */ +$.fn.compactForm = function (stars) { + stars = stars || 0; + + this.each(function () { + $(this).addClass('compact-form').find('label').each(function () { + var context = this.form; + var $label = $(this); + if (!$label.attr('for')) { + return; + } + var $field = $('#' + $label.attr('for'), context); + if (!$field.length || !$field.is('input:text,input:password,textarea')) { + return; + } + // Store the initial field value, in case the browser is going to + // automatically fill it in upon focus. + var initial_value = $field.val(); + + if (initial_value != '') { + // Firefox doesn't like .hide() here for some reason. + $label.css('display', 'none'); + } + + $label.parent().addClass('compact-form-wrapper'); + $label.addClass('compact-form-label'); + $field.addClass('compact-form-field'); + + if (stars === 0) { + $label.find('.form-required').hide(); + } + else if (stars === 2) { + $label.find('.form-required').insertAfter($field).prepend(' '); + } + + $field.focus(function () { + // Some browsers (e.g., Firefox) are automatically inserting a stored + // username and password into login forms. In case the password field is + // manually emptied afterwards, and the user jumps back to the username + // field (without changing it), and forth to the password field, then + // the browser automatically re-inserts the password again. Therefore, + // we also need to test against the initial field value. + if ($field.val() === initial_value || $field.val() === '') { + $label.fadeOut('fast'); + } + }); + + $field.blur(function () { + if ($field.val() === '') { + $label.fadeIn('slow'); + } + }); + + // Chrome adds passwords after page load, so we need to track changes. + $field.change(function () { + if ($field.get(0) != document.activeElement) { + if ($field.val() === '') { + $label.fadeIn('fast'); + } + else { + $label.css('display', 'none'); + } + } + }); + }); + }); +}; + +/** + * Attach compact forms behavior to all enabled forms upon page load. + */ +Drupal.behaviors.compactForms = { + attach: function (context, settings) { + if (!settings || !settings.compactForms) { + return; + } + $('#' + settings.compactForms.forms.join(',#'), context).compactForm(settings.compactForms.stars); + + // Safari adds passwords without triggering any event after page load. + // We therefore need to wait a bit and then check for field values. + if ($.browser.safari) { + setTimeout(Drupal.compactForms.fixSafari, 200); + } + } +}; + +/** + * Checks for field values and hides the corresponding label if non-empty. + * + * @todo Convert $.fn.compactForm to always use a function like this. + */ +Drupal.compactForms.fixSafari = function () { + $('label.compact-form-label').each(function () { + var $label = $(this); + var context = this.form; + if ($('#' + $label.attr('for'), context).val() != '') { + $label.css('display', 'none'); + } + }); +} + +})(jQuery);