﻿/**
* Simple jQuery watermark plugin
* (c) 2009 J.B. van der Burgh
*/

(function ($) {
    var defaults = {
        attribute: 'data-watermark',
        watermarkClass: 'watermark',
        noWatermarkClass: 'no-watermark'
    };

    //var items = [];
    $.fn.watermark = function (config) {
        config = $.extend({}, config, defaults);

        this.each(function () {
            var me = $(this),
                focusFld = me,
                blurFld = me;
            me.removeClass(config.watermarkClass)
                .removeClass(config.noWatermarkClass);



            var txt = me.attr(config.attribute);
            var isPassword = me.attr('type') == 'password';

            if (isPassword) {
                //create a fake field for pasword fields
                var fakeField = $('<input />', { type: 'text' });
                fakeField[0].className = this.className;
                fakeField.addClass(config.watermarkClass);
                fakeField.val(txt);

                focusFld = fakeField;
                fakeField.insertBefore(me);

                me.addClass(config.noWatermarkClass);
                me.hide();
            }



            blurFld.bind('blur', function () {
                if (isPassword) {
                    if (this.value == '') {
                        focusFld.show();
                        blurFld.hide();
                    }
                    return;
                }
                if (this.value == '') {
                    this.value = txt;
                    if (config.noWatermarkClass)
                        blurFld.removeClass(config.noWatermarkClass);
                    blurFld.addClass(config.watermarkClass);
                }
            });

            focusFld.bind('focus', function () {
                if (isPassword) {
                    blurFld.show();
                    focusFld.hide();
                    blurFld.focus();
                    return;
                }
                if (this.value == txt) {
                    this.value = '';
                    focusFld.removeClass(config.watermarkClass);
                    if (config.noWatermarkClass)
                        focusFld.addClass(config.noWatermarkClass);
                }
            });

            if (!isPassword) {
                if (this.value == '') {
                    this.value = txt;
                    me.addClass(config.watermarkClass);
                } else {
                    if (config.noWatermarkClass)
                        me.addClass(config.noWatermarkClass);
                }
            }
            $('form').bind('submit', function () {
                //undo watermarks
                var el = me.get(0);
                if (el.value == txt) el.value = '';
            });

        });
    };



})(jQuery);

