$(document).ready(function(){
    $('.select').live('click', function(e){
        var flag = $('ul', this).is(':hidden');
        $('.select ul').slideUp('fast');
        if(flag) $('ul', this).slideDown('fast');
        if (!e) var e = window.event;
        e.cancelBubble = true;
        if (e.stopPropagation) e.stopPropagation();
        e.preventDefault();
    });
    $('.select span').live('click', function(){
        var ctx = $(this).parents('.select');
        $('p', ctx).text($(this).text());
        if($('select', ctx)[0].selectedIndex != $('li', ctx).index($(this).parent())){
            $('select', ctx)[0].selectedIndex = $('li', ctx).index($(this).parent());
            $('select', ctx).change();
        }
        $('li', ctx).removeClass('current');
        $(this).parent().addClass('current');
    });
    $(window).click(function(){
        $('.select ul').slideUp('fast');
    });
    $('select').each(function(){
        var obj = $(this).clone();
        var ctx = $('<div class="select"><p></p><ul></ul></div>');
        obj.appendTo(ctx);
        obj.css('display', 'none');
        $('option', obj).each(function(){
            $('ul', ctx).append('<li><span>'+$(this).text()+'</span></li>');
        });
        var cur = $('li:eq('+obj[0].selectedIndex+')', ctx);
        cur.addClass('current');
        $('p', ctx).text(cur.text());
        $(this).replaceWith(ctx);
    });
});
