/* jQuery UI AutoComplete JSON Implemetation */
/* Copyright 2011 by Martin Zeitler, Germany */
/*           http://www.codefx.biz           */

$(function(){
	$("#destination").autocomplete({
			minLength: 3,
			delay: 200,
			autoFocus: false,
			source: function(request, response){
				$.ajax({
					url: '/inc/jquery-plugins/autocomplete/autocomplete-villaggi.act.php',
					dataType: 'json',
					data: {
						term: request.term,
						browser: ($.browser.msie) ? 'ie' : 'dom'
					},
					success: function(json) {
						if(json && typeof(json[0])!='undefined'){
							response(
								$.map(json,function(item){
									return {
										label: item.name,
										link: 'http://alloggio.it/villaggi/'+item.link+'.php?lingua=it',
										city:  item.city,
										state: item.state,
										premium: item.premium,
										category: item.category,
										cls:(item.premium=='Y') ? 'premium' : 'regular'
									}
								})
							);
						}
					}
				});
			},
			focus: function(event, ui) {
				$(this).val(ui.item.label);
				return false;
			},
			select: function(event, ui) {
				if(typeof(ui.item)!='undefined'){location.href=ui.item.link;return false;}
			},
			open: function() {
				$( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
			},
			close: function() {
				$( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
			}
	});
});

$.ui.autocomplete.prototype._renderMenu = function(ul, items) {
	var self = this;
	currentCategory = '';
	$.each(items, function(index, item) {
		if( item.category != currentCategory) {
			if(typeof(item.category)!='undefined'){
				ul.append( "<li class='ui-autocomplete-category'>"+item.category+":</li>" );
			}
			currentCategory = item.category;
		}
		self._renderItem(ul,item);
	});
};

$.ui.autocomplete.prototype._renderItem = function( ul, item) {
	if(typeof(item.city)!='undefined' && typeof(item.state)!='undefined'){
		return $('<li></li>')
			.data('item.autocomplete', item)
			.append('<a class="'+item.cls+'">'+item.label+'<br/>'+item.city+', '+item.state+'</a>')
			.appendTo(ul);
	}
	else {
		return $('<li></li>')
			.data('item.autocomplete', item)
			.append('<a class="'+item.cls+'">'+item.label+'</a>')
			.appendTo(ul);
	}
};
