jQuery &&
(function (jQuery) {
    jQuery.fn.extend({
        hintedForm: function () {
            var that = this;

            function FormField(my) {
                var myNode = jQuery(my),
                    label  = myNode.parents('form').find('[for=' + String(myNode.attr('id')) + ']');

                function writeDefault() {
                    if (myNode.val() === '') {
                        myNode.val(label.text());
                    }
                }

                function clearDefault() {
                    if (myNode.val() === label.text()) {
                        myNode.val('');
                    }
                }

                label.hide();
                writeDefault();
                myNode.focus(clearDefault)
                      .blur(writeDefault)
                      .parents('form')
                      .submit(clearDefault)
                      .addClass('js');

                return {};
            };

            function HintedMessage(my) {
                var myNode = jQuery(my),
                    message = myNode.parents('.field').find('.message');

                if (message.length !== 0) {
                    message.hide();
                    myNode.addClass('validationError');
                }

                return {};
            }

            jQuery(this).each(function () {
                FormField(this);
                HintedMessage(this);
            });

            return {};
        }
    });
    
    jQuery(function () {
        jQuery('#newsletter form input:text').hintedForm();
    })
})(jQuery);
