// autocomplete initialization function

function autocompleteInit(element_id,localData,ajaxUrl,element_code,dataReference, hidden2, elemMinWidth) {

  $(element_id).autocomplete(localData,{
		url:ajaxUrl,
		minChars: 0,
		max: 1200,
		cachelength:0,
    scrollHeight: 380,
    delay:400,
		resultsEmptyClass:'wg_empty',	
		//autoFill: true,
		dataType:'jsonp',
		extraParams:{format:'jsonp',limit:50},
		instructions:'Select below or type above.',
		instructionsClass:'ac_instructions',
		width: 'auto',
		minWidth: elemMinWidth,
		loadingClass:'ac_loading',
		parse:function(data){
			if(data&&data.r&&data.r.length>0){
				
				var parsed=[];
				for(var i=0,l=data.r.length;i<l;i++){
					var result=data.r[i];
					parsed[i]={data:result,value:result.id,result:result.fn};							
				}
				return parsed;
			}else{
			   // No results - show a message.
			   //$(element_id).removeClass('ac_loading');
			   return [{ data: { fn: 'No match found.', c: '' }, value: '', result: '' }];
			}
		},
		formatItem:function(result){
			var listItem  = (( result.c && result.c.length > 0)? '<em>' + result.fn+'</em>' + '<p>' + result.c+'</p>' : '');					
			listItem = listItem.length > 0 ? listItem : result.fn;
			return listItem;
		},
		formatItemValue: function (value){
			var inputVal = value.replace(new RegExp(".*<em>([^<]*)</em>.*", "gi"), "$1");
			inputVal = (inputVal.length > 0 ? inputVal : value.replace(new RegExp(".*<p>([^<]*)</p>.*", "gi"), "$1")); 
			return inputVal;
		}
	});
	
	  var callRouteHandler = function()
    {
        module.handleRouteChange();
    };
	
	
	$(element_id).result(function(event, data, formatted) {
		var hidden = $(element_code);
	  switch(dataReference) {
	    case ("flights"):
	      hidden.val(data.c);
	      break;
    
	    case ("hotels"):
	      hidden.val(data.id);
 	      $(hidden2).val(data.c);
	      break;
		}

	});

}