var countrySelect;
var stateSelect;
var citySelect;

var selectedCountry = "blank";
var selectedState = "blank";
var selectedCity = "blank";

var haveCountry;
var haveState;
var haveCity;

function handleLoadCountries(dataId, doc, selected)
{
	var dataEl = doc.forms[dataId]
	var haveSelectedCountry = false;

	countrySelect.length = 0;

	for (var ii = 0; ii < dataEl.elements.length; ii++)
	{
		if (dataEl.elements[ii].name != '')
		{
			newOption = new Option(dataEl.elements[ii].value, dataEl.elements[ii].name);
			countrySelect.options[countrySelect.length] = newOption;

			if (selected == dataEl.elements[ii].name)
			{
				if (selected !== "blank")
				{
					haveSelectedCountry = true;
					countrySelect.options[countrySelect.options.length - 1].selected = true;
				}
			}
		}
	}

	if (haveSelectedCountry)
	{
		loadCountry();
	}
}

function handleLoadCountry(dataId, doc, selected)
{
	var dataEl = doc.forms[dataId]
	var haveSelectedRegion = false;

	stateSelect.length = 0;

	for (var ii = 0; ii < dataEl.elements.length; ii++)
	{
		if (dataEl.elements[ii].name != '')
		{
			newOption = new Option(dataEl.elements[ii].value, dataEl.elements[ii].name);
			stateSelect.options[stateSelect.length] = newOption;

			if (selected == dataEl.elements[ii].name)
			{
				if (selected !== "blank")
				{
					haveSelectedRegion = true;
					stateSelect.options[stateSelect.options.length - 1].selected = true;
				}
			}
		}
	}

	if (haveSelectedRegion)
	{
		loadRegion();
	}
}

function handleLoadRegion(dataId, doc, selected)
{
	var dataEl = doc.forms[dataId]

	citySelect.length = 0;

	for (var ii = 0; ii < dataEl.elements.length; ii++)
	{
		if (dataEl.elements[ii].name != '')
		{
			newOption = new Option(dataEl.elements[ii].value, dataEl.elements[ii].name);
			citySelect.options[citySelect.length] = newOption;

			if (selected == dataEl.elements[ii].name)
			{
				if (selected !== "blank")
				{
					citySelect.options[citySelect.options.length - 1].selected = true;
				}
			}
		}
	}
}

function initLocationSelects(countryId, stateId, cityId)
{
	countrySelect = document.getElementById(countryId);
	stateSelect = document.getElementById(stateId);
	citySelect = document.getElementById(cityId);

	loadCountries();

	repaintSelects();
}

function setLoading(select, value)
{
	if (value)
	{
		select.length = 0;
		select.options[select.options.length] = new Option('Loading...', '');
	}
}

function repaintSelects()
{
	if (haveCountry)
	{
		stateSelect.disabled = false;
	}
	else
	{
		stateSelect.length = 0;
		stateSelect.disabled = true;

		haveState = false;
	}

	if (haveState)
	{
		citySelect.disabled = false;
	}
	else
	{
		citySelect.length = 0;
		citySelect.disabled = true;
	}

}



function loadCountries()
{
	setLoading(countrySelect, true);
	URL = baseUrl + '?action=load_countries&selected=' + selectedCountry;
	callToServer();

	haveCountry = false;
	haveState = false;
	haveCity = false;

	repaintSelects();
}

function loadCountry()
{
	var val = countrySelect.options[countrySelect.selectedIndex].value;

	if (val !== "blank")
	{
		setLoading(stateSelect, true);
		URL = baseUrl + '?action=load_country&countryId=' + val + '&selected=' + selectedState;
		callToServer();

		haveCountry = true;
		haveState = false;
	}
	else
	{
		haveCountry = false;
	}

	repaintSelects();
}

function loadRegion()
{
	var val = stateSelect.options[stateSelect.selectedIndex].value;

	if (val !== "blank")
	{
		setLoading(citySelect, true);
		URL = baseUrl + '?action=load_region&regionId=' + val + '&selected=' + selectedCity;
		callToServer();

		haveCountry = true;
		haveState = true;
	}
	else
	{
		haveState = false;
	}

	repaintSelects();
}

function setCity(cId)
{
	selectedCity = cId;
}

function setCountry(cId)
{
	selectedCountry = cId;
}

function setRegion(rId)
{
	selectedState = rId;
}
