// Region Javascript Elements
var country_select_id;
var country_caption_cell_id;
var state_select_id;
var state_caption_cell_id;
var city_caption_id;
var city_text_box_id;
var city_text_box_div_id;
var city_select_id;
var city_select_div_id;

// Boolean Values
var show_drop_of_cities = 1;
var show_US_and_Canada_Only = 1;

//Default Values
var country_default_value;
var state_default_value;
var city_default_value;

function fill_country_menu()
{
	var form_element = document.getElementById(country_select_id);
	clear_select_options(country_select_id);
	
	if(show_US_and_Canada_Only == 1)
	{
		var temp_array = new Array(new Array('United States', 'US'), new Array('Canada', 'CA'));
	
		form_element.options[0] = new Option('- Select -','');
		
		for (var i = 0; i < temp_array.length; i++) {
			addSelectOption(form_element, temp_array[i][0], temp_array[i][1]);
		}
	}
	else if(show_US_and_Canada_Only == 0)
	{
		get_ajax('/includes/ajax_data_servers/countries.xml.php', 'GET', false);

		form_element.options[0] = new Option('- Select -','');
		
	  	for (var i = 0; i < num_of_records; i++) {
			addSelectOption(form_element, get_xml_field('countryname', i), get_xml_field('countryiso', i));
		}
	}
	
	if(country_default_value.length > 1)
	{
		set_selected_index(form_element, country_default_value);
	}
	else
	{
		set_selected_index(form_element, 'US');
	}
	
	if(document.getElementById(country_select_id).value != 'US' && document.getElementById(country_select_id).value != 'CA')
	{
		//International Country By Default
		show_international_cities();
	}
}

function fill_state_menu()
{
	var form_element = document.getElementById(state_select_id);
	form_element.disabled = false;
	clear_select_options(state_select_id);

	if(document.getElementById(country_select_id).value == 'US')
	{
		//Show US States
		change_table_cell_data(state_caption_cell_id, 'State:');	
		get_ajax('/includes/ajax_data_servers/us_states.xml.php', 'GET', false);
	}
	else if(document.getElementById(country_select_id).value == 'CA')
	{
		//Show Canada Provinces	
		change_table_cell_data(state_caption_cell_id, 'Province:');	
		get_ajax('/includes/ajax_data_servers/canada_provinces.xml.php', 'GET', false);
	}
	else
	{
		change_table_cell_data(state_caption_cell_id, 'State:');	
		form_element.options[0] = new Option('Not Required','');
		form_element.disabled = true;
	}

	if(num_of_records > 0 && form_element.disabled == false)
	{
		clear_select_options(state_select_id);
		form_element.options[0] = new Option('- Select -','');
		
		for (var i = 0; i < num_of_records; i++) {
			addSelectOption(form_element, get_xml_field('statename', i), get_xml_field('statecode', i));
		}
	
		if(state_default_value.length > 1)
		{
			set_selected_index(form_element, state_default_value);
		}
	}
	
	if(document.getElementById(country_select_id).value == 'US' && document.getElementById(state_select_id).value == 'HI')
	{
		//Hawaii is selected by default
		state_change();
	}	
}

function fill_drop_down_with_canada_provinces(drop_id)
{
	document.getElementById(drop_id).disabled = false;

	clear_select_options(drop_id);
	get_ajax('/includes/ajax_data_servers/canada_provinces.xml.php', 'GET', false);

	document.getElementById(drop_id).options[0] = new Option('- Select -','');
	
	for (var i = 0; i < num_of_records; i++) {
		addSelectOption(document.getElementById(drop_id), get_xml_field('statename', i), get_xml_field('statecode', i));
	}
}

function fill_drop_down_with_us_states(drop_id)
{
	document.getElementById(drop_id).disabled = false;

	clear_select_options(drop_id);
	get_ajax('/includes/ajax_data_servers/us_states.xml.php', 'GET', false);

	document.getElementById(drop_id).options[0] = new Option('- Select -','');
	
	for (var i = 0; i < num_of_records; i++) {
		addSelectOption(document.getElementById(drop_id), get_xml_field('statename', i), get_xml_field('statecode', i));
	}
}

function country_change()
{
	if(document.getElementById(country_select_id).value != 'US' && document.getElementById(country_select_id).value != 'CA')
	{
		//International
		clear_select_options(state_select_id);
		change_table_cell_data(state_caption_cell_id, 'State:');	
		document.getElementById(state_select_id).options[0] = new Option('Not Required','');
		document.getElementById(state_select_id).disabled = true;

		if(show_drop_of_cities == 1)
		{
			show_international_cities();
		}
	}
	else
	{
		clear_select_options(city_select_id);
	}

	if(document.getElementById(country_select_id).value == 'US' || document.getElementById(country_select_id).value == 'CA')
	{
		fill_state_menu();
	}
}

function state_change()
{
	if(document.getElementById(state_select_id).value == 'HI')
	{
		//Hawaii Was Chosen
		if(show_drop_of_cities == 1)
		{
			hide_div_layer(city_text_box_div_id);
			show_div_layer(city_select_div_id);
			show_hawaii_islands();
		}
		change_table_cell_data(city_caption_id, 'Island/County:');	
	}
	else
	{
		//Something Other Was Chosen
		if(document.getElementById(country_select_id).value == 'US' || document.getElementById(country_select_id).value == 'CA')
		{
			//US or Canada Captions
			hide_div_layer(city_select_div_id);
			show_div_layer(city_text_box_div_id);
			change_table_cell_data(city_caption_id, 'City or Postal Code:');	
		}
		else if(document.getElementById(country_select_id).value.length > 1)
		{
			//International Country
			if(show_drop_of_cities == 1)
			{
				hide_div_layer(city_text_box_div_id);
				show_div_layer(city_select_div_id);
			}
			change_table_cell_data(city_caption_id, 'City/Region:');
		}
		else
		{
			//No Country Chosen Caption
			hide_div_layer(city_select_div_id);
			show_div_layer(city_text_box_div_id);
			change_table_cell_data(city_caption_id, 'City or Postal Code:');	
		}
	}
}

function show_international_cities()
{
	change_table_cell_data(city_caption_id, 'City/Region:');
	if(show_drop_of_cities == 1)
	{
		hide_div_layer(city_text_box_div_id);
		show_div_layer(city_select_div_id);
	
		var form_element = document.getElementById(city_select_id);
		
		clear_select_options(city_select_id);
		form_element.disabled = false;
		get_ajax('/includes/ajax_data_servers/international_cities_for_country.xml.php?country=' + URLEncode(document.getElementById(country_select_id).value), 'GET', false);

		form_element.options[0] = new Option('Select All','all');
		
		if(num_of_records > 2)
		{
			for (var i = 0; i < num_of_records; i++) {
				addSelectOption(form_element, get_xml_field('cityname', i), get_xml_field('cityname', i));
			}
		}
	
		if(city_default_value.length > 1)
		{
			set_selected_index(document.getElementById(city_select_id), city_default_value);
		}
	}
}

function fill_int_cities(country, fill_drop_id)
{
	clear_select_options(fill_drop_id);
	get_ajax('/includes/ajax_data_servers/international_cities_for_country.xml.php?country=' + URLEncode(country), 'GET', false);
	
	var form_element = document.getElementById(fill_drop_id);

	addSelectOption(form_element, '- Select All -', 'all');
	
	if(num_of_records > 1)
	{
		for (var i = 0; i < num_of_records; i++) {
			if(get_xml_field('cityname', i).length > 1)
			{
				addSelectOption(form_element, get_xml_field('cityname', i), get_xml_field('cityname', i));
			}
		}
	}
}

function show_hawaii_islands()
{
	var form_element = document.getElementById(city_select_id);
	
	clear_select_options(city_select_id);
	form_element.disabled=false;
	get_ajax('/includes/ajax_data_servers/hawaii_islands.xml.php', 'GET', false);

	form_element.options[0] = new Option('- Select -','');
	for (var i = 0; i < num_of_records; i++) {
		addSelectOption(form_element, get_xml_field('islandname', i), get_xml_field('islandcode', i));
	}

	if(city_default_value.length > 1)
	{
		set_selected_index(document.getElementById(city_select_id), city_default_value);
	}
}

function check_zip_code_validity(zipcode)
{
	if (!isNaN(zipcode))
	{
		get_ajax('/includes/ajax_data_servers/zip_code_check.xml.php?zipcode=' + URLEncode(zipcode), 'GET', false);
		
		if(get_xml_field('zipcheck', 0) == 'Invalid')
		{
			return false;
		}
		else
		{
			return true;	
		}
	}
	else
	{
		return true;	
	}
}

function check_valid_state_and_city(city, state)
{
	var ajax_url = '/includes/ajax_data_servers/zip_code_check.xml.php?city=' + URLEncode(city) + '&state=' + URLEncode(state);

	get_ajax(ajax_url, 'GET', false);
	
	if(get_xml_field('zipcheck', 0) == 'Invalid')
	{
		return false;
	}
	else
	{
		return true;	
	}
}

function return_city_and_state_for_zip(zipcode)
{
	get_ajax('/includes/ajax_data_servers/zip_code_city_state_lookup.xml.php?zipcode=' + URLEncode(zipcode), 'GET', false);
	
	if(get_xml_field('zipcheck', 0) == 'Invalid')
	{
		return false;
	}
	else if(get_xml_field('zipcheck', 0) == 'Valid')
	{
		var temp_array = new Array(new Array(get_xml_field('zipcity', 0), get_xml_field('zipstate', 0)));
		return temp_array;	
	}
	
}
