var search_form = {};

var previous_ids = '';
var previous_name = '';

var hidden_resort_ids = new Array();
var hidden_resort_names = new Array();

var option_selected = false;
var just_focused = false;

search_form.setup_autocomplete = function() {
	var text_field = $("#resort_autocomplete");
	var real_field_name = text_field.attr('name');
	
	text_field.attr( 'name', 'ajax_dummy_' + real_field_name );
	
	hidden_resort_ids[3] = $('<input type="hidden" name="resort_dd[3]" />').insertAfter(text_field);
	hidden_resort_ids[2] = $('<input type="hidden" name="resort_dd[2]" />').insertAfter(text_field);
	hidden_resort_ids[1] = $('<input type="hidden" name="resort_dd[1]" value="' + text_field.val() + '" />').insertAfter(text_field);

	hidden_resort_names[3] = $('<input type="hidden" name="resort_name[3]" />').insertAfter(text_field);
	hidden_resort_names[2] = $('<input type="hidden" name="resort_name[2]" />').insertAfter(text_field);
	hidden_resort_names[1] = $('<input type="hidden" name="resort_name[1]" />').insertAfter(text_field);

	if( $('input[id^=repop_resort_dd_id]') 
	 && $('input[id^=repop_resort_dd_name]').val()
	 && $('input[id^=repop_resort_dd_name]').val()!=' ' )
	{
		for (i=1; i<$('input[id^=repop_resort_dd_id]').length+1; i++)
		{
			hidden_resort_ids[i].attr('value', $('input[id^=repop_resort_dd_id]').eq(i-1).val() + ',true');
			hidden_resort_names[i].attr('value', $('input[id^=repop_resort_dd_name]').eq(i-1).val());
		}
		set_resort_name();
	}
	
	// srhfrm_update_accomm(document.getElementById(form_id), $('#srhfrm_accomm').val());
	var ac = $(text_field).autocomplete(
		"/fetch_opts.php",
		{
			maxItemsToShow  : 30,
			minChars    : 3,
			cacheLength : 1,
			width       : "330px",
			cellSeparator : "~",
			selectFirst : true,
			
			<!-- BEGIN sigma_comments_dont_seem_to_work_so_im_doing_this_in_stead -->
			// noResultsMessage required some changes to jquery.autocomplete.js so they will 
			// need to be made again if the script is ever updated on, at the time of writing, line 276
			<!-- END sigma_comments_dont_seem_to_work_so_im_doing_this_in_stead -->
			noResultsMessage: autocomplete_no_results,

			extraParams	: get_extra_params(),
			
			formatItem  : function(e)
			{
				if (e[2] == 'f')
				{
					return '<span style="display: none;">' + e[0] + '</span><span class="ac_disabled">' + e[1] + "</span>";
				}
				else
				{
					return '<span style="display: none;">' + e[0] + '</span><span>' + e[1] + "</span>";
				}
			},
			
			onItemSelect : function(li_elem)
			{
				option_selected = true;
				var resort_dd_ids = previous_ids = $(li_elem).find('span').eq(0).text();
				var display_text = previous_name = $(li_elem).find('span').eq(1).text();

				var resort_dd_ids = resort_dd_ids.split(',');
				var resort_dd_names = display_text.split(',');

				resort_dd_ids.reverse().push('-1','-1');
				
				for (i=0; i<3; i++)
				{
					if(resort_dd_ids[i])
					{
						hidden_resort_ids[i+1].attr('value',resort_dd_ids[i]+',true');
						hidden_resort_names[i+1].attr('value',resort_dd_names[i]);
					}
					else
					{
						hidden_resort_ids[i+1].attr('value',' ');
						hidden_resort_names[i+1].attr('value',' ');
					}
				}
				set_resort_name();
				//text_field.val(display_text);
				if ($(li_elem).children().hasClass('ac_disabled')) 
				{
					$('#inactive_resort_message').html(text_search_form_messages_inactive_resort_message);
				}
				else
				{
					$('#inactive_resort_message').html('');
				}
				srhfrm_update_accomm(document.getElementById(form_id), $('#srhfrm_accomm').val());
				//srhfrm_save_values(document.getElementById(form_id));
			}
		}
	);

	function get_extra_params(){
		var airport_id = '';
		if ($('[name=srhfrm_departure_airport_combined]').length > 0 && $('[name=srhfrm_departure_airport_combined]').val() != '-1')
		{
			airport_id = $('[name=srhfrm_departure_airport_combined]').val().substr(1);
		}
		return { 
			mode 				: "resort_dd_autocomplete", 
			resort_dd_set_id 	: resort_dd_set_id, 
			format 				: "raw",
			dep_airport_id		: airport_id
		};
	}
	$(text_field).focus(function(event) {
		if ($(text_field).val() == text_search_form_messages_enter_resort_name) { 
			$(text_field).val(''); 
		}
		$(text_field).select();
		just_focused = true;
		option_selected = false;
	});
	$(text_field).blur(function(){
		if (!option_selected)
		{
			$(text_field).val(previous_name);
		}
		if ($(text_field).val() == '') { 
			$(text_field).val(text_search_form_messages_enter_resort_name);
		}
	});
	$(text_field).mouseup(function(event) {
		if (just_focused)
		{
			event.preventDefault();
		}
		just_focused = false;
	});
	$('[name=airportfromid]').change(function(){
		ac[0].autocompleter.setExtraParams(get_extra_params());
		ac[0].autocompleter.flushCache();
	});
	function set_resort_name()
	{
		var name = '';
		for (i=1; i<hidden_resort_names.length; i++)
		{
			if(hidden_resort_names[i].val() && hidden_resort_names[i].val() != ' ')
			{
				name += hidden_resort_names[i].val() + ', ';
			}
		}
		name = name.substr(0,name.length-2);
		text_field.attr( 'value', name );
		previous_name = name;
	}
}
