﻿/*
* jQuery Watermark Plugin (v0.1)
*
* Copyright (c) 2009 Infusion Development
*
*/
(function($) {
    $.fn.watermark = function(options) {
        options = $.extend({}, $.fn.watermark.defaults, options);
        return this.each(function() {
            var $input = $(this);

            // Checks to see if watermark already applied.
            var $watermark = $input.data("watermark");

            // Only create watermark if title attribute exists
            if (!$watermark && this.title) {

                // Get position of the textbox
                var pos = $input.position();
                var textboxWidth = $input.width();

                // Inserts a span and set as positioning context
                var $watermark = $("<span/>")
					.addClass(options.cssClass)
                    .insertBefore(this)
                    .hide()
					.bind("show", function() {
					    $(this).children().fadeIn("fast");
					})
                    .bind("hide", function() {
                        $(this).children().hide();
                    }).css({
                        position: 'relative',
                        width: 0,
                        height: $input.height(),
                        verticalAlign: 'middle'
                    });
                    
                /* IE7/6 hasLayout hack */
                if($.browser.msie) {
                    $watermark.css('zoom', 1);
                }
                
                // Positions watermark label relative to positioning context
                var txtboxLeftMargin = 0;
                txtboxLeftMargin = $input.css('marginLeft');
                $("<label/>").appendTo($watermark)
                    .text(this.title)
                    .attr("for", this.id)
                    .css({
                        position: 'absolute',
                        height: $watermark.height(),
                        top: 0,
                        left: (txtboxLeftMargin === 'auto' ? '0' : txtboxLeftMargin),
                        'white-space': 'nowrap',
                        cursor: 'text',
                        verticalAlign: 'middle'
                    });
                                        
                // Associate input element with watermark plugin.
                $input.data("watermark", $watermark);
            }
            // Hook up blur/focus handlers to show/hide watermark.
            if ($watermark) {
                $input
                    .focus(function(ev) {
                        $watermark.trigger("hide");
                    })
                    .blur(function(ev) {
                        if (!$(this).val()) {
                            $watermark.trigger("show");
                        }
                    });
                // Sets initial watermark state.
                if (!$input.val()) {
                    $watermark.show();
                }
            }
        });
    };
    $.fn.watermark.defaults = {
        cssClass: "watermark"
    };
    $.watermark = {
        attachAll: function(options) {
            $("input:text[title!=''],input:password[title!=''],textarea[title!='']").watermark(options);
        }
    };
})(jQuery);

