﻿/*
* jQuery Watermark Plugin
*   http://updatepanel.net/2009/04/17/jquery-watermark-plugin/
*
* Copyright (c) 2009 Ting Zwei Kuei
*
* Dual licensed under the MIT and GPL licenses.
*   http://www.opensource.org/licenses/mit-license.php
*   http://www.opensource.org/licenses/gpl-3.0.html
*/ 

(function($) {

    $.fn.updnWatermark = function(options) {

        options = $.extend({}, $.fn.updnWatermark.defaults, options);

        return this.each(function() {

            var $input = $(this);

            var $watermark = $input.data("watermark");

            // only create watermark if title attribute exists 

            if (!$watermark && this.title) {

                var $watermark = $("<label/>")

                    .insertBefore(this)

                    .text(this.title)

                    .attr("for", this.id)

                    .addClass(options.cssClass)

                    .hide()

                    .bind("position", function() {

                        var pos = $input.position();

                        $(this).css({

                            position: "absolute",

                            left: pos.left,

                            top: pos.top

                        })

                    })

                    .bind("show", function() {

                        $(this).fadeIn("fast");

                    })

                    .bind("hide", function() {

                        $(this).hide();

                    })

                    .bind("update", function() {

                        ($input.is(":visible") ? $(this).trigger("position").show() : $(this).hide());

                    });

                $input.data("watermark", $watermark);

            }

            if ($watermark) {

                $input

                    .focus(function(ev) {

                        $watermark.trigger("hide");

                    })

                    .blur(function(ev) {

                        if (!$(this).val()) {

                            $watermark.trigger("show");

                        }

                    });

                // set initial state 

                if (!$input.val()) {

                    $watermark.trigger("position").show();

                }

            }

        });

    };

    $.fn.updnWatermark.defaults = {

        cssClass: "updnWatermark"

    };

    $.updnWatermark = {

        attachAll: function(options) {

            $.updnWatermark.all = $("input:text[title!=''],input:password[title!=''],textarea[title!='']").updnWatermark(options);

        },

        updateAll: function() {

            ($.updnWatermark.all && $.updnWatermark.all.each(function() {

                var $watermark = $(this).data("watermark");

                ($watermark && $watermark.trigger("update"));

            }));

        }

    };

})(jQuery);