var arrivalCities=[];
var autocompleteCities={
	servData:{
		noMatchMessage:"Ninguna coincidencia.",
		changeToSelectList:"Seleccionar de un listado",
		changeToAutoText:"Escribir ciudad, código o país"
	},
	load:function(){
		if (autocompleteCities.useAjaxSelectors) {
			if($(".IBMUSE").length) multipleRoutes.load();
			var inputText = $("<input type='text' class='autocompleteCities'></input>");
			var destinationCities = dom.getElementsById("ciudadDestino")
			var dataLoaded=false;
			for (var xx = 0; xx < destinationCities.length; xx++) {
				if (destinationCities[xx].type != "hidden") {
					inputText = inputText.clone()
					//Cargar los datos del combo en el campo autocompletar
					if (!dataLoaded) {
						autocompleteCities.loadData(destinationCities[xx]);
						dataLoaded=true
					}
					autocompleteCities.loadInput(inputText, destinationCities[xx]);
					autocompleteCities.loadPopupLink($("label[for=text_" + destinationCities[xx].id + "]"), inputText);
				}
			}
			var changeFirstOrigin = $("#totalWrapper.OWADVS, #totalWrapper.IBCOSE").length;
			var destinationCities = dom.getElementsById("ciudadOrigen")
			for (var xx = changeFirstOrigin?0:1; xx < destinationCities.length; xx++) {
				if(destinationCities[xx].type!="hidden"){
					inputText = inputText.clone()
					//Cargar los datos del combo en el campo autocompletar
					if (!dataLoaded) {
						autocompleteCities.loadData(destinationCities[xx]);
						dataLoaded=true;
					}
					autocompleteCities.loadInput(inputText, destinationCities[xx]);
					autocompleteCities.loadPopupLink($("label[for=text_"+destinationCities[xx].id+"]"), inputText);
				}
			}
		}
		
	},
	loadData:function(select){
		arrivalCities=[];
		for(var i = 0; i < select.length; i++){
			if (select[i].value != "-1" && select[i].value != "")
				arrivalCities.push({text:select[i].text, value:select[i].value});
		}
	},
	loadInput:function(inputText, destinationCitie){
		$(inputText).attr("id", "text_"+destinationCitie.id)
					.attr("name","text_"+destinationCitie.name)
		if(destinationCitie.value!="-1" && destinationCitie.value!="")$(inputText).val(destinationCitie[destinationCitie.selectedIndex].text)
		else $(inputText).val("")
		
		autocompleteCities.loadAutocomplete(inputText);
		$(destinationCitie).before(inputText).addClass("invisible").attr("tabIndex","-1")
		$("label[for="+destinationCitie.id+"]").attr("for","text_"+destinationCitie.id)
				//.after($(destinationCitie));
		
		
	},
	loadAutocomplete:function(inputText){
		//$(inputText).autocomplete("searchArrivalCitiesAjax.do", {
		$(inputText).autocomplete(arrivalCities, {
			matchContains: true,
			max: 300,
			cacheLength:300,
			minChars: 3,
			//mustMatch: true,
			selectFirst:true,
			width: 250,
			noMatchMessage: autocompleteCities.servData.noMatchMessage,
			formatItem: function(row, i, max) {
				return row.text;
			},
			formatMatch:function(row, i, max) {
				return autocompleteCities.removeTildeCharacters(row.text);
			},
			formatResult: function(row) {
				return row.text;
			},
			/*extraParams:{
				q: function(){
					return autocompleteCities.removeTildeCharacters($("#" + input.attr("id")).val())
				},
				language: ombCombo.language,
				originCountry:function(){return page.$("originCountry").value},
				market: ombCombo.navigationMarket
			},*/
			highlight: function(value, term) {
				var auxValue = autocompleteCities.removeTildeCharacters(value);
				var auxTerm = autocompleteCities.removeTildeCharacters(term)//.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1"));
				var i = auxValue.length;
				while (i > -1) {
					var i = auxValue.lastIndexOf(auxTerm, i);
					if (i != -1) {
						value = value.substr(0, i) + "<strong>" + value.substr(i, auxTerm.length) + "</strong>" + value.substr(i + auxTerm.length, value.length)
						i = i - auxTerm.length;
					}
				}
				return value;
			}
		}).result(function(event, data, formatted) {
			$("#"+this.id.replace("text_","")).val( !data ? "-1" : data.value);
		});
	},
	reloadCities:function(){
		$("input.autocompleteCities").setOptions({data: arrivalCities}).search();
	},
	loadPopupLink:function(label, inputText){
		/*$(label)//.wrapInner('<a title="Abre las opciones en una ventana nueva" href="#" class="linkNaranja"></a>')
				.click(autocompleteCities.openPopup)*/
		var link = $("<a href='#' class='linkNaranja'>"+autocompleteCities.servData.changeToSelectList+"</a>")
		.click(function(){
			autocompleteCities.toggleInput(this, inputText, label)
			return false;
		})
		
		$(inputText).parent().append( $("<p class='autocompleteLink'/>").append(link) );
	},
	/*openPopup:function(){
		alert("Popup")
		autocompleteCities.servData.changeToSelectList
		autocompleteCities.servData.changeToAutoText
	},*/
	toggleInput:function(link , inputText, label){
		var id = $(inputText).attr("id").replace("text_","");
		var select = $("#"+id);
		if(inputText.hasClass("invisible")){
			$(select).addClass("invisible").attr("tabIndex","-1")
			if($(select).val()!="-1" && $(select).val()!="")$(inputText).val( $(select)[0][$(select)[0].selectedIndex].text )
			$(inputText).removeClass("invisible").removeAttr("tabIndex")
			$(label).attr("for","text_"+id)
			$(link).html(autocompleteCities.servData.changeToSelectList)
		}else if(select.hasClass("invisible")){
			$(inputText).addClass("invisible").attr("tabIndex","-1")
			$(select).removeClass("invisible").removeAttr("tabIndex")
			$(label).attr("for",id)
			$(link).html(autocompleteCities.servData.changeToAutoText)
		}
	},
	removeTildeCharacters:function(entry){
		var key = entry.toLowerCase();
		key = key.split(/[áàäâ]/).join('a');
		key = key.split(/[éèëê]/).join('e');
		key = key.split(/[íìïî]/).join('i');
		key = key.split(/[óòöô]/).join('o');
		key = key.split(/[úùüû]/).join('u');
		key = key.split(/[ñ]/).join('n');
		return key;
	}
}
ev.addEvent(window,"load",autocompleteCities.load,false)
