(function( $ ) { 
	$( document ).tooltip({ tooltipClass: "custom-tooltip-styling" } );
	myAutoComplete();
  })( jQuery ); 	
	function myAutoComplete(){
		
		//alert("hello");
			$.widget( ".combobox", { _create: function() {
								//alert("hello");
								/* var self = this;
								var select = this.element.hide(); */
								this.wrapper = $( "<span>" ).addClass( "ui-combobox" ).insertAfter( this.element );         
								this._createAutocomplete();        
								//this._createShowAllButton();      
								},       
								_createAutocomplete: function() {        
										var selected = this.element.children( ":selected" ),
										value = selected.val() ? selected.text() : "";
										var witdthSize=this.element.width();
										//alert("witdthSize:"+witdthSize);         
										this.input = $( "<input>" )          
										.appendTo( this.wrapper )          
										.val( value )          
										//.attr( "title", "Please type user name" ) 
										 .css("width",witdthSize)       
										.addClass( "ui-combobox-input ui-widget ui-widget-content ui-corner-left" )          
										.autocomplete({            
										delay: 0,            
										minLength: 0,            
										source: $.proxy( this, "_source" )         
										})          
										.tooltip({tooltipClass: "custom-tooltip-styling"})
										;         
										this._on( this.input, { autocompleteselect: function( event, ui ) {ui.item.option.selected = true;            
										this._trigger( "select", event, {              
										item: ui.item.option            
										});          
										},           
										autocompletechange: "_removeIfInvalid"});      
									},       
									_createShowAllButton: function() {        
										var wasOpen = false;         
										$( "<a>" )          
										.attr( "tabIndex", -1 )          
										.attr( "title", "Show All Items" )          
										.tooltip()          
										.appendTo( this.wrapper )          
										.button({            
										icons: {              
										primary: "ui-icon-triangle-1-s"            },
										text: false          })          
										.removeClass( "ui-corner-all" )          
										.addClass( "ui-corner-right ui-combobox-toggle" )          
										.mousedown(function() {            
										wasOpen = input.autocomplete( "widget" ).is( ":visible" );          })          
										.click(function() { 
										//alert("hello");
										input.focus();             
										// Close if already visible            
										if ( wasOpen ) {              
										return;            
										}             // Pass empty string as value to search for, displaying all results            
										input.autocomplete( "search", "" );          });     
									},      
									_source: function( request, response ) {        
										var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );        
										response( this.element.children( "option" ).map(function() {          
										var text = $( this ).text();          
										if ( this.value && ( !request.term || matcher.test(text) ) )            
										return {              
											label: text,   
											value: text,             
											option: this            
											};        
											}) 
											);     
									},      
									 _removeIfInvalid: function( event, ui ) {         
										 // Selected an item, nothing to do        
										if ( ui.item ) {          return;        }         
										// Search for a match (case-insensitive)       
										var value = this.input.val(),         
										valueLowerCase = value.toLowerCase(),         
										valid = false;       
										this.element.children( "option" ).each(function() {         
										if ( $( this ).text().toLowerCase() === valueLowerCase ) {           
										this.selected = valid = true;            return false;          }       
										});         // Found a match, nothing to do      
										if ( valid ) {          return;        }        
										// Remove invalid value 
										//alert("to destroy");      
										this.input.val( "-" )        
										.attr( "title", value + " didn't match any item" )         
										.tooltip( "open" );        
										this.element.val( "0" );      
										this._delay(function() {         
										this.input.tooltip( "close" ).attr( "title", "" );        
										}, 2500 );    
										this.input.data( "ui-autocomplete" ).term = "";      
									},    
									_destroy: function() { 
										this.wrapper.remove();    
										this.element.show();      
									}    
									});
							}
							 
							
	$(function() {  
		
		if($( ".combobox" ).length>0){
			$( ".combobox" ).combobox();
			//alert("1st");
			    
								     
			$( ".combobox" ).hide();  
		}
		
		  
	});  
							