code: function(elem, list, callback, opts) {
  				var button = $(elem);
  				list = $(list);
  				var on_button = false;
  				var dropUp = opts.dropUp;
  				if (dropUp) {
  					$(elem).addClass('dropup');
  				}
  				list.find('li').bind('mouseup', function() {
  					if (opts.seticon) {
  						setIcon('#cur_' + button[0].id , $(this).children());
  						$(this).addClass('current').siblings().removeClass('current');
  					}
  					callback.apply(this, arguments);
  
  				});
  
  				$(window).mouseup(function(evt) {
  					if (!on_button) {
  						button.removeClass('down');
  						list.hide();
  						list.css({top:0, left:0});
  					}
  					on_button = false;
  				});
  
  				// var height = list.height(); // Currently unused
  				button.bind('mousedown',function() {
  					var off = button.offset();
  					if (dropUp) {
  						off.top -= list.height();
  						off.left += 8;
  					} else {
  						off.top += button.height();
  					}
  					list.offset(off);
  
  					if (!button.hasClass('down')) {
  						list.show();
  						on_button = true;
  					} else {
  						// CSS position must be reset for Webkit
  						list.hide();
  						list.css({top:0, left:0});
  					}
  					button.toggleClass('down');
  				}).hover(function() {
  					on_button = true;
  				}).mouseout(function() {
  					on_button = false;
  				});
  
  				if (opts.multiclick) {
  					list.mousedown(function() {
  						on_button = true;
  					});
  				}
  			}
docs: TODO: Combine this with addDropDown or find other way to optimize