(function($) {
    $.fn.niceSelect = function(/* arguments */) {
        // do nothing for old browsers
        if ($.browser.mozilla && $.browser.version < '1.9') return;
        if ($.browser.msie && $.browser.version < '7') return;
        if ($.browser.opera && $.browser.version < '9.6') return;

        var opts = $.extend({
            icon: true,
            iconPrefix: 'img/',
            iconSuffix: '.png',
            className: ''
        }, arguments[0]);

        this.filter('select').each(function() {
            var $select = $(this);
            var $text = $('<span class="text"/>');
            var $list = $('<span class="list"/>');
            $select.find('option').each(function() {
                var s = $('<span/>').text(this.text).data('value', this.value);
                if (opts.icon) {
                    s.css('background-image', 'url(' + opts.iconPrefix + this.value + opts.iconSuffix + ')');
                }
                $list.append(s);
                if (this.selected) {
                  $text.append(s.clone());
                  s.addClass('selected');
                }
            });
            $select.after(
                $('<span class="niceSelect"/>')
                    .addClass(opts.className)
                    .append('<i class="strut"/><i class="arrow">\u25bc</i>', $text, $list)
                    .click(function() {
                        $list.toggle();
                    })
            ).hide();
            $list.hide().find('span').click(function() {
                $text.empty().append($(this).clone());
                $select.val($(this).data('value')).change();
                $list.find('span').removeClass('selected');
                $(this).addClass('selected');
            });
        });

        return this;
    }
})(jQuery);



