﻿(function($) {

    $.fn.watermark = function(options) {

        var defaults = {};
        var options = $.extend(defaults, options);

        return this.each(function() {

            var input = $(this);

            if (input.val() == "")
                input.val(input.attr("title")).addClass("inactive");

            input.focus(function(evt) { $(this).val() == $(this).attr("title") ? $(this).val("").removeClass("inactive") : null; });
            input.blur(function(evt) { $(this).val().trim() == "" ? $(this).val($(this).attr("title")).addClass("inactive") : $(this).val($(this).val().trim()); });

        });

    }

    $.fn.textbox = function(options) {

        var defaults = {
            watermark: true
        };

        var options = $.extend(defaults, options);

        return this.each(function() {

            var input = $(this);

            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(input.width());
            input.width(input.width() - parseInt(input.css("padding-left")) - parseInt(input.css("padding-right")));
            cback.width(input.width() - parseInt(input.css("margin-left")) - parseInt(input.css("margin-right")));

            if (options.watermark) {
                input.watermark();
            }

        });

    };

    $.fn.checkbox = function(options) {

        var defaults = {};

        var options = $.extend(defaults, options);

        return this.each(function() {

            var input = $(this);

            input.wrap("<div class='checkbox'></div>");

            var wrapper = input.parent();

            wrapper.prepend("<div class='cbox'></div>");

            if (input.attr("checked"))
                wrapper.addClass("checked");

            wrapper.click(function(evt) {

                if (wrapper.find("input").attr("checked")) {
                    wrapper.removeClass("checked");
                    wrapper.find("input").attr("checked", "");
                } else {
                    wrapper.addClass("checked");
                    wrapper.find("input").attr("checked", "checked");
                }

            });

            input.change(function(evt) {

                if (wrapper.find("input").attr("checked")) {
                    wrapper.removeClass("checked");
                    wrapper.find("input").attr("checked", "");
                } else {
                    wrapper.addClass("checked");
                    wrapper.find("input").attr("checked", "checked");
                }

            });

        });

    };

    $.fn.select = function(options) {

        var defaults = {};

        var options = $.extend(defaults, options);

        return this.each(function() {

            var select = $(this);

            select.wrap("<div class='select'></div>");

            var wrapper = select.parent();
            wrapper.width(select.outerWidth());

            wrapper.prepend("<div class='cleft'></div><span class='selected'>" + select.attr("title") + "</span>").append("<div class='cright'></div><div class='cback'></div>");

            var cback = wrapper.find(".cback");

            cback.width(select.outerWidth() - parseInt(cback.css("margin-left")) - parseInt(cback.css("margin-right")));

            select.prev().text(select.find(":selected").text());

            select.css("opacity", 0).change(function(evt) {

                //if ($(this).val() != "")
                    $(this).prev().text($(this).find(":selected").text());
                //else
                //    $(this).prev().text("");

            });

        });

    }

})(jQuery);

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, "");
}