(function ($) {
    $.fn.coverTip = function (options) {
        var defaults = {}
        var options = $.extend(defaults, options);
        this.each(function (index) {
            var reg = new RegExp("^( |　|\f|\n|\r|\t|\v)*$");

            var $input = $(this);
            var cover_valign = 'middle';
            if ($input.attr('cover_valign') == 'top') {
                cover_valign = 'top';
            }
            var cover_size = 14;
            if ($input.attr('cover_size')) {
                cover_size = parseInt($input.attr('cover_size'));
            }
			var cover_color = '#ccc';
			if ($input.attr('cover_color')) {
                cover_color = $input.attr('cover_color');
            }

            if ($input.prev().attr('class') != 'textarea_tips') {
                $input.before('<div class="textarea_tips">' + $input.attr('cover_tip') + '</div>');
                var $cover = $input.prev();
                var line_height = $input.height();
                if (cover_valign == 'top') {
                    line_height = cover_size;
                }
                $cover.css({
                    'width': $input.width(),
                    'height': $input.height(),
                    'margin-left': $input.css('border-left-width'),
                    'margin-top': $input.css('border-top-width'),
                    'padding-top': $input.css('padding-top'),
                    'padding-right': $input.css('padding-right'),
                    'padding-bottom': $input.css('padding-bottom'),
                    'padding-left': $input.css('padding-left'),
                    'line-height': line_height + "px",
                    'font-size': cover_size+"px",
                    'position': 'absolute',
                    'overflow': 'hidden',
                    'color': cover_color,
                    'z-index': '1'
                });

                var content = $(this).val();
                if (reg.test(content)) {
                    $cover.show();
                    $input.val('');
                } else {
                    $cover.hide();
                }

                if ($input.attr('sexyInput')) {
                    $cover.bind({
                        'mouseover': function () {
                            if ($input.hasClass($input.attr('sexyInput'))) {
                                $input.removeClass($input.attr('sexyInput'));
                                $input.addClass($input.attr('sexyInput') + '_sexyInput');
                            }
                        },
                        'mouseout': function () {
                            if ($input.attr('sexy_Input') != 'true') {
                                if ($input.hasClass($input.attr('sexyInput') + '_sexyInput')) {
                                    $input.removeClass($input.attr('sexyInput') + '_sexyInput');
                                    $input.addClass($input.attr('sexyInput'));
                                }
                            }
                        }
                    });
                }

                $cover.bind('click', function () {
                    $cover.hide();
                    $input.focus();

                    if ($input.attr('sexyInput')) {
                        $input.attr('sexy_Input', 'true');
                    }
                });

                $input.bind('focus', function () {
                    $cover.hide();
                    if ($input.attr('sexyInput')) {
                        $input.attr('sexy_Input', 'true');
                        if ($input.hasClass($input.attr('sexyInput'))) {
                            $input.removeClass($input.attr('sexyInput'));
                            $input.addClass($input.attr('sexyInput') + '_sexyInput');
                        }
                    }
                });

                $input.bind('blur', function () {
                    var content = $(this).val();
                    if (reg.test(content)) {
                        $cover.show();
                        $input.val('');

                        if ($input.attr('sexyInput')) {
                            $input.removeAttr('sexy_Input');
                            $input.removeClass($input.attr('sexyInput') + '_sexyInput');
                            $input.addClass($input.attr('sexyInput'));
                        }
                    }
                });
                $input.bind("coverhide", function () {
                    $cover.hide();
                });
            }
        });
    }
})(jQuery);
