﻿

(function($) {
    $.watermark = {
        all: function(css) {
            if (!css) css = 'watermarked';
            $('.' + css).watermark({ cssclass: css })
        }
    };
    $.fn.watermark = function(options) {
        var defaults = { text: '', cssclass: 'watermarked' };
        var settings = jQuery.extend({}, defaults, options);

        return this.each(function() {
            var input = $(this);
            if (input.data("watermarkedInput") == true) { return; }
            var text = (settings.text != '') ? settings.text : input.prev('.watermarkedtext').eq(0).text();
            if (input.prev('.watermarkedtext')) input.prev('.watermarkedtext').hide();
            input.prev('.watermarkedtext').eq(0).css("color", "red");

            input.data("watermarkedInput", true);


            if (input.attr('type') != 'password') {

                var remove = function() {
                    input.filter(function() {
                        return ($(this).val() == "" || $(this).val() == text);
                    }).removeClass(settings.cssclass).val("");
                };

                var add = function() {
                    input.filter(function() {
                        return ($(this).val() == "" || $(this).val() == text);
                    }).addClass(settings.cssclass).val(text);

                };

                if (this.form) $(this.form).submit(remove);
                input.focus(remove).blur(add);
                $(function() {
                    if (input.val() == "" || input.val() == text) {
                        input.addClass(settings.cssclass).val(text);
                    } else {
                        input.removeClass(settings.cssclass);
                    }
                });

            } else {

                var copyAtts = function(from, to) {
                    for (var i = 0; i < from.attributes.length; i++) {
                        var node = from.attributes[i].nodeName
                        if (node.nodeName != 'type' && node.nodeName != 'id' && node.nodeName != 'name') {
                            to.setAttribute(node.nodeName, node.nodeValue);
                        }
                    }

                };

                var remove = function() {

                    input.show();
                    plainInput.hide();
                    input[0].focus();
                };

                var add = function(e) {
                    if (input.val() == '') {
                        input.hide();
                        plainInput.show();
                    } else {
                        input.show();
                        plainInput.hide();
                    }
                };
                var maybeAdd = function() {
                    if (event) {
                        if (event.propertyName == "value") {
                            if (input.val() != '') {
                                input.show();
                                plainInput.hide();
                            }
                        }
                    }
                }
                var newInput = document.createElement('input');
                newInput.setAttribute('type', 'text');
                newInput.setAttribute('id', 'plain_' + input[0].id);
                newInput.setAttribute('name', 'plain_' + input[0].name);
                copyAtts(newInput, input[0]);
                var plainInput = $(newInput);
                plainInput.data("watermarkedInput", true)
                plainInput.focus(remove);
                plainInput.addClass(settings.cssclass).val(text);

                input.after(newInput);
                input.blur(add);
                input.bind("propertychange", maybeAdd); //for IE autocomplete		              	
                $(function() { add(); }); 		//for firefox and chrome autocomplete
                input.hide();

            }
        })
    }

    $.fn.removeWatermark = function(options) {
        var defaults = { text: '', cssclass: 'watermarked' };
        var settings = jQuery.extend({}, defaults, options);

        return this.each(function() {
            var input = $(this);
            input.removeData("watermarkedInput");
            var text = (settings.text != '') ? settings.text : input.prev('.watermarkedtext').eq(0).text();

            input.filter(function() {
                return ($(this).val() == "" || $(this).val() == text);
            }).removeClass(settings.cssclass).val("");

        })
    }

})(jQuery);
