﻿/*
Watermark v3.0.4 (January 14, 2010) plugin for jQuery
http://jquery-watermark.googlecode.com/
Copyright (c) 2009-2010 Todd Northrop
http://www.speednet.biz/
Licensed under GPL 3, see  <http://www.gnu.org/licenses/>
*/
(function(a) {
    var k = "function",
        i = "password",
        c = "maxLength",
        e = "type",
        b = true,
        d = false,
        s = "watermark",
        t, m = s,
        h = "watermarkClass",
        p = "watermarkFocus",
        j = "watermarkSubmit",
        l = "watermarkMaxLength",
        g = "watermarkPassword",
        f = "watermarkText",
        r = ":data(" + m + ")",
        n = ":text,:password,:search,textarea",
        o = ["Page_ClientValidate"],
        q = d;
    a.extend(a.expr[":"], {
        search: function(a) {
            return "search" === a.type
        },
        data: function(f, h, g) {
            var e, c = /^((?:[^=!^$*]|[!^$*](?!=))+)(?:([!^$*]?=)(.*))?$/.exec(g[3]);
            if (c) {
                e = a(f).data(c[1]);
                if (e !== t) {
                    if (c[2]) {
                        e = "" + e;
                        switch (c[2]) {
                            case "=":
                                return e == c[3];
                            case "!=":
                                return e != c[3];
                            case "^=":
                                return e.slice(0, c[3].length) == c[3];
                            case "$=":
                                return e.slice(-c[3].length) == c[3];
                            case "*=":
                                return e.indexOf(c[3]) !== -1
                        }
                    }
                    return b
                }
            }
            return d
        }
    });
    a.watermark = {
        version: "3.0.4",
        options: {
            className: s,
            useNative: b
        },
        hide: function(b) {
            a(b).filter(r).each(function() {
                a.watermark._hide(a(this))
            })
        },
        _hide: function(a, i) {
            if (a.val() == a.data(f)) {
                a.val("");
                if (a.data(g)) if (a.attr(e) === "text") {
                    var d = a.data(g),
                        b = a.parent();
                    b[0].removeChild(a[0]);
                    b[0].appendChild(d[0]);
                    a = d
                }
                if (a.data(l)) {
                    a.attr(c, a.data(l));
                    a.removeData(l)
                }
                if (i) {
                    a.attr("autocomplete", "off");
                    window.setTimeout(function() {
                        a.select()
                    }, 0)
                }
            }
            a.removeClass(a.data(h))
        },
        show: function(b) {
            a(b).filter(r).each(function() {
                a.watermark._show(a(this))
            })
        },
        _show: function(d) {
            var r = d.val(),
                j = d.data(f),
                m = d.attr(e);
            if ((r.length == 0 || r == j) && !d.data(p)) {
                q = b;
                if (d.data(g)) if (m === i) {
                    var o = d.data(g),
                        n = d.parent();
                    n[0].removeChild(d[0]);
                    n[0].appendChild(o[0]);
                    d = o;
                    d.attr(c, j.length)
                }
                if (m === "text" || m === "search") {
                    var k = d.attr(c);
                    if (k > 0 && j.length > k) {
                        d.data(l, k);
                        d.attr(c, j.length)
                    }
                }
                d.addClass(d.data(h));
                d.val(j)
            } else a.watermark._hide(d)
        },
        hideAll: function() {
            if (q) {
                a.watermark.hide(n);
                q = d
            }
        },
        showAll: function() {
            a.watermark.show(n)
        }
    };
    a.fn.watermark = function(q, l) {
        var o = "string",
            s = typeof q === o,
            r;
        if (typeof l === "object") {
            r = typeof l.className === o;
            l = a.extend({}, a.watermark.options, l)
        } else if (typeof l === o) {
            r = b;
            l = a.extend({}, a.watermark.options, {
                className: l
            })
        } else l = a.watermark.options;
        if (typeof l.useNative !== k) l.useNative = l.useNative ?
        function() {
            return b
        } : function() {
            return d
        };
        return this.each(function() {
            var u = "dragleave",
                t = "dragenter",
                w = this,
                d = a(w);
            if (!d.is(n)) return;
            if (d.data(m)) {
                if (s || r) {
                    a.watermark._hide(d);
                    s && d.data(f, q);
                    r && d.data(h, l.className)
                }
            } else {
                if (l.useNative.call(w, d)) if (("" + d.css("-webkit-appearance")).replace("undefined", "") !== "" && d.attr("tagName") !== "TEXTAREA") {
                    s && d.attr("placeholder", q);
                    return
                }
                d.data(f, s ? q : "");
                d.data(h, l.className);
                d.data(m, 1);
                if (d.attr(e) === i) {
                    var x = d.wrap("<span>").parent(),
                        k = a(x.html().replace(/type=["']?password["']?/i, 'type="text"'));
                    k.data(f, d.data(f));
                    k.data(h, d.data(h));
                    k.data(m, 1);
                    k.attr(c, q.length);
                    k.focus(function() {
                        a.watermark._hide(k, b)
                    }).bind(t, function() {
                        a.watermark._hide(k)
                    }).bind("dragend", function() {
                        window.setTimeout(function() {
                            k.blur()
                        }, 1)
                    });
                    d.blur(function() {
                        a.watermark._show(d)
                    }).bind(u, function() {
                        a.watermark._show(d)
                    });
                    k.data(g, d);
                    d.data(g, k)
                } else d.focus(function() {
                    d.data(p, 1);
                    a.watermark._hide(d, b)
                }).blur(function() {
                    d.data(p, 0);
                    a.watermark._show(d)
                }).bind(t, function() {
                    a.watermark._hide(d)
                }).bind(u, function() {
                    a.watermark._show(d)
                }).bind("dragend", function() {
                    window.setTimeout(function() {
                        a.watermark._show(d)
                    }, 1)
                }).bind("drop", function(b) {
                    var a = b.originalEvent.dataTransfer.getData("Text");
                    d.val().replace(a, "") === d.data(f) && d.val(a);
                    d.focus()
                });
                if (w.form) {
                    var o = w.form,
                        v = a(o);
                    if (!v.data(j)) {
                        v.submit(a.watermark.hideAll);
                        if (o.submit) {
                            v.data(j, o.submit);
                            o.submit = function(c, b) {
                                return function() {
                                    var d = b.data(j);
                                    a.watermark.hideAll();
                                    if (d.apply) d.apply(c, Array.prototype.slice.call(arguments));
                                    else d()
                                }
                            } (o, v)
                        } else {
                            v.data(j, 1);
                            o.submit = function(b) {
                                return function() {
                                    a.watermark.hideAll();
                                    delete b.submit;
                                    b.submit()
                                }
                            } (o)
                        }
                    }
                }
            }
            a.watermark._show(d)
        }).end()
    };
    o.length && a(function() {
        for (var b, c, d = o.length - 1; d >= 0; d--) {
            b = o[d];
            c = window[b];
            if (typeof c === k) window[b] = function(b) {
                return function() {
                    a.watermark.hideAll();
                    b.apply(null, Array.prototype.slice.call(arguments))
                }
            } (c)
        }
    })
})(jQuery);
