jQuery.fn.combobox = function(ayar) {
	var def = {OnSecim : 0 , AraMetni : 'Birkaç harf giriniz...', ajax:'', height:35, sayfaKayitSayisi:5,submit:false};
	
	var p = $.extend(def, ayar);
	var a = this;
    var c = 0;
    var hov = 0;
    var t = 0;
    var hoverActive = true;
    a.append('<div class="mesgul"></div>');
    a.append('<ul>'+p.AraMetni+'</ul>');
    var ul = $('ul',a);
    var text = $('input[type=text]',a);
    var ilktext = text.val(); 
    ul.css({'width':text[0].clientWidth+1, 'top':text[0].clientTop+text[0].clientHeight+1,'z-index':1000});
    
    text.bind({
    	click   : function(){ if(ilktext==text.val()) text.val(''); ul.show();},
    	focusin : function(){ ul.show();},
    	blur    : function(){ window.setTimeout(function() { ul.hide(); },500);},
    	keydown : function(b){
    		if((b.keyCode==38 || b.keyCode==40) && c){
    			dact($('li:eq('+hov+')',ul));
    			hov -= (hov>0) && (b.keyCode-39)<0 ? 1 : 0 ;
    			hov += (hov<c-1) && (b.keyCode-39)>0 ? 1 : 0 ;
    			
    			var l = $('li:eq('+hov+')',ul)[0];
    			var u = ul[0];
    			
    			act($('li:eq('+hov+')',ul));
    			if((l.offsetTop >= u.scrollTop + u.clientHeight) || (l.offsetTop < u.scrollTop))
    			{
    				ul.scrollTop(Math.ceil(u.scrollTop/p.height)*p.height+((b.keyCode-39)*p.height));
    				hoverActive = false;
    			}
    		}
    		if((b.keyCode==13))
    		{
    			sec(hov);
    			return false;
    		}
    	},
    	keyup   : function(b){
    		if(b.keyCode==38 || b.keyCode==40 || b.keyCode==13) return false;
    		ul.show();
    		
    		$.ajax({
    				url:p.ajax,
    				data:{b:$(this).val()},
    				success:function(d){
    					ul.html(d);
    					c = $('li',ul).size();
    					s = c < p.sayfaKayitSayisi ? ( c == 0 ? 16 : c*p.height ) : p.height*p.sayfaKayitSayisi;
    					ul.css('height',s+'px');
    					$('li',ul).hover(function(){ if(!hoverActive) return; act($(this)); hov = ($(this).index()); },function(){ if(!hoverActive) return; dact($(this));});
    					$('li',ul).click(function() { sec($(this).index()); });
    					act($('li:eq('+hov+')',ul));
    				}
    		});
    		
//   			$.get(p.ajax+$(this).val(),function(d){
//    		});    				
    	}
    });
    
    ul.mousemove(function(){ hoverActive = true; });
    
    var act  = function(o){ o.addClass('_cb_hover'); } 
    var dact = function(o){ o.removeClass('_cb_hover'); }
    
    var sec = function(i){
    	if((sel = $('li:eq('+i+')',ul).attr('id')) && p.submit) location.href = $('li:eq('+i+') a',ul).attr('href');	
    } 
};
