(function ($) {

    $.fn.watermark = function (options) {

        var defaults = {};

        var options = $.extend(defaults, options);

        return this.each(function () {

            var input = $(this);

            switch (input.attr("type")) {

                case "password":

                    input.before("<input type='text' id='" + input.attr("id") + "alt" + "' class='" + input.attr("class") + "' />")
                    var inputalt = input.prev();

                    if (input.val() == "") {
                        inputalt.val(input.attr("title"));
                        input.hide();
                    } else {
                        input.show();
                        inputalt.hide();
                    }

                    inputalt.focus(function (evt) {
                        var inputalt = $(this);
                        var input = inputalt.next();

                        inputalt.hide();
                        input.show().focus();
                    });

                    input.blur(function (evt) {
                        var input = $(this);
                        var inputalt = input.prev();

                        if (input.val() == "") {
                            input.hide();
                            inputalt.show();
                        }
                    });

                    break;

                default:
                    if (input.val() == "")
                        input.val(input.attr("title"));

                    input.focus(function (evt) {
                        var input = $(this);
                        input.val() == input.attr("title") ? input.val("").addClass("active") : null;
                    });

                    input.blur(function (evt) {
                        var input = $(this);
                        input.val().trim() == "" ? input.val(input.attr("title")).removeClass("active") : input.val(input.val().trim());
                    });

                    input.closest("form").submit(function () {

                        if (input.val() == input.attr("title"))
                            input.val("");

                    });

            }

        });

    };

    $.fn.textbox = function (options) {

        var defaults = {
            width: 135,
            height: 29,
            watermark: true
        };

        var options = $.extend(defaults, options);

        return this.each(function () {

            var input = $(this);

            var width = input.outerWidth();
            input.wrap("<div class='textbox'></div>");

            var wrapper = $(this).parent();
            wrapper.prepend("<div class='cleft'></div>").append("<div class='cright'></div><div class='cback'></div>");

            var cleft = wrapper.find(".cleft");
            var cright = wrapper.find(".cright");
            var cback = wrapper.find(".cback");

            wrapper.width(width);
            input.width(width - parseInt(input.css("padding-left")) - parseInt(input.css("padding-right")));

            if (options.watermark)
                input.watermark();

        });

    };

    $.fn.select = function (options) {

        var defaults = {};

        var options = $.extend(defaults, options);

        return this.each(function () {

            var select = $(this);
            var origwidth = select.width();

            select.wrap("<div class='select'></div>");

            var wrapper = select.parent();
            wrapper.width(select.width());

            wrapper.prepend("<div class='cleft'></div><span class='selected'>" + select.children(":selected").text() + "</span>").append("<div class='cright'></div><div class='cback'></div>");

            var cback = wrapper.find(".cback");

            cback.width(select.width() - parseInt(cback.css("margin-left")) - parseInt(cback.css("margin-right")));

            select.css("opacity", 0).change(function (evt) {

                $(this).siblings("span").text($(this).children(":selected").text());

            });

            var autowidth = select.width("auto").width();

            if (origwidth > autowidth)
                select.width(origwidth);

        });

    };

})(jQuery);

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}