(function($){
	$.fn.comboSelect = function(options){
		var defaults = {
            key: "id",
            value: "label"
        };

		var settings = $.extend({}, defaults, options);
		
		if (!(settings.target instanceof $)) settings.target = $(settings.target);
		
		return this.each(function(){
			var qobj = this;
			
			hidealltarget = function(){
				$(settings.target).hide();
				$(settings.target).parent().parent().hide();
				$(settings.target).empty();
				
				if(settings.target2 != ''){
					$(settings.target2).hide();
					$(settings.target2).parent().parent().hide();
					$(settings.target2).empty();
				}
				if(settings.target3 != ''){
					$(settings.target3).hide();
					$(settings.target3).parent().parent().hide();
					$(settings.target3).empty();
				}
			}
			
			if($(settings.target).val() == '' || $(settings.target).val() == null){
				hidealltarget();
			}
			
			loadOptions = function(){
				$(settings.target).hide();
				$(settings.target).parent().parent().hide();
				$(settings.target).empty();
				
				if(settings.target2 != ''){
					$(settings.target2).hide();
					$(settings.target2).parent().parent().hide();
					$(settings.target2).empty();
				}
				if(settings.target3 != ''){
					$(settings.target3).hide();
					$(settings.target3).parent().parent().hide();
					$(settings.target3).empty();
				}
				qval = $(qobj).val();
				if(qval!=null && qval!=''){
					$.getJSON(settings.url, {q: qval}, function(j){
						var setoptions = '';
						if(j.length > 0 && qval != ''){
							for (var i = 0; i < j.length; i++) 
								setoptions += '<option value="' + j[i].oV + '">' + j[i].oT + '</option>';
							$(settings.target).html(setoptions);
							if (!$.browser.msie)
								$("option:first", settings.target).attr("selected","selected");
							$(settings.target).show();
							$(settings.target).parent().parent().show();
						}else {
							$(settings.target).hide();
							$(settings.target).parent().parent().hide();
							$(settings.target).empty();							
							
							if(settings.target2 != ''){
								$(settings.target2).hide();
								$(settings.target2).parent().parent().hide();
								$(settings.target2).empty();
							}
							if(settings.target3 != ''){
								$(settings.target3).hide();
								$(settings.target3).parent().parent().hide();
								$(settings.target3).empty();
							}
						}
					});//end JSON
				}else{
					$(settings.target).hide();
					$(settings.target).parent().parent().hide();
					$(settings.target).empty();
					
					if(settings.target2 != ''){
						$(settings.target2).hide();
						$(settings.target2).parent().parent().hide();
						$(settings.target2).empty();
					}
					if(settings.target3 != ''){
						$(settings.target3).hide();
						$(settings.target3).parent().parent().hide();
						$(settings.target3).empty();
					}
				}
			}
			$(this).change(loadOptions);//end change fn
			if(defaults.pageload && $(qobj).val() != ''){
				loadOptions();
			}
		});//end return for each
	}
})(jQuery);
