(function($) {
	$.fn.select_replacement = function(options){

		var settings = {
			//Opzioni a default
			style:'select_replacement'
		};
		

		//Estendo le opzioni
		options = options || {};
	   	$.extend(settings, options);

		$(document).bind("click",function(e){
			var $tgt = $(e.target);
			if (!$tgt.hasClass(settings.style)) $('ul:visible','div.'+settings.style).hide();
		})
		
		$(this).each(function(i){
			
			var select_list = this;
			
			if(!$(select_list).hasClass(settings.style+'_replaced')) {
				$(select_list).addClass(settings.style+'_replaced');
				
				if($('option:selected',select_list).length) {
					var text = $('option:selected',select_list).text();
					var index = $('option',select_list).index($('option:selected',select_list));	
				}else{
					var text = $('option:first',select_list).text();	
					var index = 1;
				}
										
				$(select_list).wrap('<div class="'+settings.style+'" id="'+settings.style+'_'+i+'"></div>');		
				
				var select_replacement = $('div#'+settings.style+'_'+i);
				
				$(select_replacement).prepend('<div><span class="">'+text+'</span><a class="select_close" href="#"></a></div><ul style="display:none" class=""></ul>');
								
				var innerHtml='';
				for (var o = 0; this.options[o]; o++) {
					
					if(o == index) selected = ' class="selected" ';
					else selected='';
					
		           	innerHtml+='<li><a href="#"'+selected+'>'+this.options[o].text+'</a></li>';
		        }			
				
				
				
				$('ul',select_replacement).html(innerHtml);
				
				$('a.select_close',select_replacement).click(function(e){
					e.preventDefault();
					$('ul',select_replacement).slideToggle('fast');
					return false;
				})
				
				$('ul li',select_replacement).click(function(e){
					e.preventDefault();
					
					//gia selezionato
					if($('a',this).hasClass('selected')) return false;
					
					$('ul li a',select_replacement).removeClass('selected');
					$('a',this).addClass('selected');
					$('span',select_replacement).text($('a',this).text());
					$('ul',select_replacement).hide();
	
					var index = parseInt($('li',$(this).parent()).index(this));
	
					$('option:nth-child('+(index+1)+')',select_list).attr('selected', true);	
					
					$(select_list).trigger('change')			
					return false;
				});
				
			
				$(select_list).hide();	
			}		
		});
		

		return this;
	}
	
})(jQuery);
