jQuery.fn.dropdown = function(){
	jQuery(this).each(function(n, el) {
		var $this = jQuery(el);
		if ($this.attr('dropdowned')=='dropdowned') {
			return;
		}
		$this.attr('dropdowned','dropdowned');


		$this
		.css({display:'none'})
		.wrap('<div class="dropdown"><\/div>')
		.before('<div class="button clickable"><!-- IE --><\/div>')
		.before('<div class="right clickable">&nbsp;<\/div>')
		.after('<div class="clear"><!-- IE --><\/div>')
		.each(function(m, el){
			el = jQuery(el);
			el.parent().css({'z-index':5999-n}).parent().css({'z-index':5999-n});

			el.bind('empty', function (){
					el.prev().html('');
					jQuery(el).empty();
				})
				.bind('select', function(ev, opt){
					opt = jQuery(opt);
					if (opt.attr('selected')!='selected') {
						opt.attr('selected', 'selected');
						opt.parent().trigger('change');
					}
					el.prev().html( opt.html() );
				});

			el.prev().html( jQuery('option:selected', el).html() );

			jQuery('.right', el.parent()).width(el.parent().width() - jQuery('.button', el.parent()).width() -2 - 10);

			function clickDropdown ()
			{
				if (jQuery('.list', el.parent()).length > 0) {
					jQuery('.dropdown .list').remove();
					return false;
				}

				jQuery('.dropdown .list').remove();
				var list = jQuery('<ul class="list"><\/ul>')
							.width( el.parent().width() - jQuery('.button', el.parent()).width() -1 );
				q = 0;
				jQuery('option[value!=""]', el).each(function(m, opt){
					q = m;
					opt = jQuery(opt);
					var li = jQuery('<li><\/li>')
								.html(opt.html())
								.click(function(){
									jQuery('.dropdown .list').remove();
									if (opt.attr('selected')!='selected') {
										opt.attr('selected', 'selected');
										opt.parent().trigger('change');
									}
									el.prev().html( opt.html() );
								})
								.appendTo(list)
								.mouseover(function(){li.addClass('hover');})
								.mouseout(function(){li.removeClass('hover');});
				})
				.parent().before(list);
				if (q>10) {
					//alert(jQuery('li:first', list).height());
					list.height(160);
					//list.height( jQuery('li:first', list).height() * 10 );
				}
				else 
				{
					list.height(jQuery('li', list).length * 16);
				}
				return false;
			}

			jQuery('.clickable', el.parent()).click(clickDropdown);
		});
	});

	jQuery(document).click(function(){jQuery('.dropdown .list').remove();});
};

jQuery(document).ready(function(){
	jQuery('select').dropdown();
});