        var start_s = 0;      
        var start_delay = 100; 
        var sres = {};
        var bv = "*\\\/\"\'$`~%^*<>;";                             
		jQuery(document).ready(function() {
			
			jQuery("#search").focus(function(e) { 
			  var ss = jQuery("#search").val(); 
			  if(ss=='Search Lessons & Dictionary') jQuery("#search").val('');
	          jQuery("#search").attr('class','s_search');
			 });
            
            jQuery("#search").blur(function(e) { 
			  var ss = jQuery("#search").val(); 
			  if(ss=='') {
			   jQuery("#search").val('Search Lessons & Dictionary');
	           jQuery("#search").attr('class','s_gsearch');
	          }
			 });			
			
			jQuery("#search").keyup(function (e) {			  		    
			  var ss = jQuery("#search").val();
			  ss = ss.replace(new RegExp("["+bv+"]",'g'),'');
			  if(sres[ss]) { 
			   jQuery('#sp-results').html(sres[ss]); 
			   jQuery('#sdiv').show();    
			   jQuery('#advlink').attr("href",'/search/' + ss.replace(' ','+')); 
			  } else { 
			   clearTimeout(start_s);			   
			   if(ss) {
			    start_s = setTimeout(
			    function (e) {           
			        jQuery("#sbutton").hide(); 
			    	jQuery("#search").attr('class','s_searching');
			    	jQuery.getJSON("/livesearch/backend.php?ss="+encodeURIComponent(ss),function(json) {
			    	  var res = '';			    	  
			    	  for(part in json) {  			    	    
			    	   if(json[part].data && json[part].data.length) {
			    	  	res+='<div class="s_part"><h3>'+json[part].title+'</h3></div>';			    	  	
			    	  	res+='<ul>';	
			    	  	for(l in json[part].data) {
			    	      var r = json[part].data[l]; 
			    	      if(r.result) {
			    	       res+='<li>'+
			    	       r.result.replace(new RegExp("(>[^<]*?)("+ss+")",'gi'), '$1<b class="h">$2</b>')+
			    	       '</li>';
			     	  	  }
		                 }        
		                 res+='</ul>';		                 		                 
		                }	          
		               if(json[part].more) res+='<div class="s_more">'+json[part].more+'</div>';      
		              } //for(part
		             if(!res) {
		              res+='<div class="s_nr">No results</div>';
		             }
		             sres[ss] = res;  		                
		             jQuery('#sp-results').html(res);
		             jQuery("#search").attr('class','s_search');
		             jQuery("#sbutton").show();
		             jQuery('#sdiv').show();
		             jQuery('#advlink').attr("href",'/search/' + ss.replace(' ','+')); 
   		          });			    				    	
			    	
			     },start_delay);
		       } else {
		       	//hide search div 
		       	jQuery('#sdiv').hide();
		       }
              }
             });
			   
			 
            jQuery("#clear").click(function(e) {
             jQuery.getJSON("/livesearch/livesearch.php?clear_cache=true",function(json) {
             	if(json.done) alert('Done');
             });            
            }); 
           
            jQuery("#clearjs").click(function(e) {
              sres = {};	
              alert('Done');        
            }); 
            
	jQuery(document).click(function() {
		jQuery('#sdiv').hide();
	        return true;
        });          
        jQuery("li.gray").mouseover(function() {
        	jQuery('#sdiv').hide();
        	return true;
        });
          }); //ready  
