API.select = new function(){	
	
	this.create = function(params){
		return new select(params);		
	}	

	var select = function(params){
		
		var instance = this;
	    this.params = {
			search: '#main select'	             
	    };
	    
	    $.extend(this.params, params);
	    
	    this.init = function(){    	
			var select = $(instance.params.search);
	    	select.each(function(){								
				instance.build(this);				
			});
	    }
	    
	    this.build = function(old){
			old = $(old);
			old.hide();
	    	var select = $('<div class="select">');
			var input_text = $('<input type="text" class="select" readonly="">');
			var input_hidden = $('<input type="hidden" readonly="">');
			
			var options = $('<div class="select_options">');
			
			var ooptions = old.find('option');
			if(ooptions.size() > 5){
				options.addClass('select_scroll');
			}
			ooptions.each(function(){
				var ooption = $(this);
				var selectedFlag = false;
				if(ooption.attr('selected')){
					selectedFlag = true;
				}
				var option = $('<div class="select_option"></div>');
				option.hover(
					function() {
						$(this).attr('class','select_option_on');
					},
					function() {
						$(this).attr('class','select_option');
					}
				);
				option.click(function(){
					var parent = $($(this).parents().get(2));
					old = $($(parent).find('select').get(0));
					
					var check = old.find('option:checked');
					check.removeAttr('selected');
					var input_hidden = parent.find('input[type="hidden"]');
						input_hidden.val(option.attr('id'));
					var input_text = parent.find('input[class="select"][type="text"]');
						input_text.val(option.html());
					//input_hidden.val(option.attr('id'));
					//input_text.val(option.html());
					var selected = old.find("option[value='"+$(this).attr('id')+"']");
					selected.attr('selected','selected');
					old.trigger('change');
					
				});
				option.html(this.innerHTML);
				option.attr('id',this.value);
				if(selectedFlag){
					input_hidden.val(option.attr('id'));
					input_text.val(option.html());
				}
				options.append(option);
			});			
			
			select.append(input_text);
			select.append(input_hidden);
			select.append(options);			
			
			
			select.click(function(){
				if ($(this).children('div').is(':hidden'))
				{
					$(this).children('div').slideDown('fast');
				}else{
					$(this).children('div').slideUp('fast');
				}
			});
			
			old.before(select);
		}
	    
	    $(document).ready(function(){
	    	instance.init();	   
	    });
	}
}
API.select.create();
