
//搜索提示的插件
 (function($){
	$.fn.suggest=function(options){
			//预定义设置 
			var settings={text:"#q",search:"#search",width:"526px"};
			var self=this;
			var first;
		   //注意这里的options 没有传入值，用settings代替；如果有值那么就用options代替（拓展）setings 
	 if(options){$.extend(settings,options)}
	 
	  
	  $(document).click(function(){
	  	
	  	if(event.target==$(settings.text)[0] && $(settings.text).val()){
	  	   //self.find("ul").show(); 
	  	   self.find("ul li").length>0&&self.find("ul").show(); 

	  	}else{
	  		
	  	self.find("ul").fadeOut("fast");	
	  	}
		// console.log(event.target);						
							
		 });
	  
	/*  $(this).find(settings.text).bind('input propertychange', function() {
	  	
	  	console.log(222);
 	
	  }); 
	  */
	  
	  var request=0;
	  
	  var flag = true;
        $(settings.text).on('compositionstart',function(){
            flag = false;
        })
        $(settings.text).on('compositionend',function(){
            flag = true;
        })
        
	  // compositionend keyup propertychange
	  $(this).find(settings.text).bind('input',function(event){
				 var content = $(this).val();
				 var _this = this;
			 setTimeout(function(){
                if(flag){
                    console.log(content);
                
				first=$(_this).val().trim(); 
			    if(content===''){ self.find("ul").hide(); return false; }
				 // console.log(event.keyCode); 
				if(event.keyCode==38||event.keyCode==40){return false;}	
				if(event.keyCode==8 && content==''){ self.find("ul").fadeOut("fast"); return false;}	
			 
			  if(request!==0){  request.abort();}	
			 request = $.ajax({
				url: self.attr('ajaxurl')+'?'+self.serialize()+'&a=suggest_search',
				dataType: "json",
				data: {"q":content,'pagesize':10},
				success:function(req){
				 
					var htmldata = '';
					var data = req.data;
					if(data.length<=0 ){ self.find("ul").hide(); return false; }
					
					for(var i in data){
						
					htmldata+='<li>'+data[i].title+'</li>';	
						
					}
					console.log(data);
					
					
					 	self.find("ul").html(htmldata).show().css({zIndex:9999,width:settings.width,position:"absolute",backgroundColor:"white"});
					 	//,border:"solid #CCC 1px"
			     		self.find("ul li").mouseover(function(){
							 $(this).addClass("selected");
							 $(this).siblings().removeClass("selected"); 
							  });
		 				self.find("ul li").click(function(){
		 					 
							 self.find("ul").fadeOut("fast");
							 self.find(settings.text).val($(this).text() ); 
							 $(settings.search).click();
							}); 
						}
		});
		
           }
            },0) 	
	
		
	 });
	//keyup函数结束	
	//方向键控制函数 
	$(document).keydown(function(event){
	 switch(event.keyCode) {
		 case 38: movdir("up");if(self.find("ul li").length){return false;}   break;
		 case 40:movdir("down");if(self.find("ul li").length){return false;}  break;
		 case 13: movdir("sub"); break;
		 case 27:self.find("ul").fadeOut("fast");break;
		 default:break;
     }
  });	
    function movdir(dir){
		if(!self.find("ul").is(":visible")){return false;}
		 self.find(settings.text).blur(); 
		switch(dir){
			case "up": var has=true;
			 for(i=0;i<self.find("ul li").length;i++){
				   /*检测建议框是否 有选中 */   
				   if(self.find("ul li").eq(i).hasClass("selected")){
					 has=false; 
				  return  checkdir(i,dir);
				   }
			  }
			    if(has){
						
						 self.find("ul li").last().addClass("selected");
			             self.find("ul li").last().siblings().removeClass("selected");
						 self.find(settings.text).val(self.find("ul li").last().text());
						
						 }
						 break;
			case "down":  
		
			
	 var has=true;
			   for(i=0;i<self.find("ul li").length;i++){
				  /*检测建议框是否 有选中 */ 
				   if(self.find("ul li").eq(i).hasClass("selected")){
					 have=false; 
				  return  checkdir(i,dir); 
				    }
				  }
		 if(has){
			  
			  self.find("ul li").first().addClass("selected");
			  self.find("ul li").first().siblings().removeClass("selected");
			  if(self.find("ul li").length){ self.find(settings.text).val(self.find("ul li").first().text());} 
			 
				 }		
			    break;
			case "sub":  
			      
				    self.find("ul").fadeOut("fast");
					if(self.find(settings.text).val()==""){return false;}
					else{
					  $(settings.search).click();
					}
					  break;
		    }
		   
		   
		 
       
		function checkdir(j,dir){
			   
		     var m=j;
			 if(dir=="down"){
				  if(self.find("ul li").last().hasClass("selected")){
					 self.find("ul li").removeClass("selected");
					 self.find(settings.text).val(first);
					 self.find(settings.text).focus();
				  }
				  else{
			 var val=self.find("ul li").eq(m+1).text();
			      
			 	 if(self.find("ul li").length){self.find(settings.text).val(val);}
			  
			    self.find("ul li").eq(m+1).addClass("selected");
		
				self.find("ul li").eq(m).removeClass("selected");
				  }
			 }
			  if(dir=="up"){
				  if(self.find("ul li").eq(0).hasClass("selected")){
					  
					 self.find("ul li").removeClass("selected"); 
					 self.find(settings.text).val(first);
					 self.find(settings.text).focus();
					 
					  }
					  
					  else{
			 var val=self.find("ul li").eq(m-1).text();
			 
			 if(self.find("ul li").length){self.find(settings.text).val(val);}
			   self.find("ul li").eq(m-1).addClass("selected");
			   self.find("ul li").eq(m).removeClass("selected"); 
			
				 }
			 }
			 
		}
 }

self.submit(function(){
		var key=self.find(settings.text).val().trim();			 
		if(key===""){return false;}			 
		 return true;});
 
}})(jQuery);