function StateSelector(h)
{
	this.nameForm = h['nameForm'];
	this.nameCountry = h['nameCountry'];
	this.nameCitizenship = h['nameCitizenship'];
	this.nameState = h['nameState'];
	this.arrCountries = h['countries'];
	this.idSelectedCountry = h['selectedCountry'];
	this.arrStates = h['states'];
	this.idSelectedState = h['selectedState'];
	this.countryClk = false;

	this.selectCountryOnchangeHandler = function()
	{
		this.idSelectedCountry = this.selectCountry.options[this.selectCountry.selectedIndex].value;
		this.idSelectedState = '';
		this.initState();
	}

	this.selectCountryOnclickHandler = function()
	{
		this.countryClk = true;
	}

	this.selectCitizenshipOnchangeHandler = function()
	{
		var i;

		this.selectCitizenship = document.forms[this.nameForm][this.nameCitizenship];

		for (i=0; !this.countryClk && i < this.selectCountry.length; i++)
		{
			if (this.selectCitizenship.options[this.selectCitizenship.selectedIndex].value == this.selectCountry.options[i].value)
			{
				this.selectCountry.selectedIndex = i;
				this.selectCountry.onchange();
				break;
			}
		}
	}

	this.initCountry = function()
	{
		var i;

		this.selectCountry = document.forms[this.nameForm][this.nameCountry];
		this.selectCountry.length = this.arrCountries.length;

		for (i = 0; i < this.arrCountries.length; i++)
		{
			this.selectCountry.options[i].value = this.arrCountries[i][StateSelector.CNTR_ID];
			this.selectCountry.options[i].text = this.arrCountries[i][StateSelector.CNTR_TITLE];

			if (0 < this.idSelectedCountry && this.idSelectedCountry == this.selectCountry.options[i].value)
			{
				this.selectCountry.options[i].selected = true;
			}
			else
			{
				this.selectCountry.options[i].selected = false;
			}
		}

		if (!(0 < this.idSelectedCountry))
		{
			this.idSelectedCountry = this.selectCountry.options[0].value;
		}
	}

	this.initState = function()
	{
		var i, k = 0;

		this.selectState = document.forms[this.nameForm][this.nameState];
		this.selectState.length = 1 + this.statesNum(this.idSelectedCountry);

		k++;

		for (i = 0; i < this.arrStates.length; i++)
		{
			if (this.arrStates[i][StateSelector.STT_CNTR_ID] == this.idSelectedCountry)
			{
				this.selectState.options[k].value = this.arrStates[i][StateSelector.STT_ID];
				this.selectState.options[k].text = this.arrStates[i][StateSelector.STT_TITLE];
				this.selectState.options[k].selected = (this.arrStates[i][StateSelector.STT_ID] == this.idSelectedState ? true : false);
				k++;
			}
		}
		this.selectState.disabled = (0 == this.selectState.options.length);
	}

	this.statesNum = function(idCountry)
	{
		var i, l = 0;

		for (i = 0; i < this.arrStates.length; i++)
		{
			if (this.arrStates[i][StateSelector.STT_CNTR_ID] == idCountry)
			{
				l++;
			}
		}
		return l;
	}
}

StateSelector.CNTR_ID = 0;
StateSelector.CNTR_TITLE = 1;

StateSelector.STT_CNTR_ID = 0;
StateSelector.STT_ID = 1;
StateSelector.STT_TITLE = 2;

StateSelector.init = function(h)
{
	var stateSelector = new StateSelector(h);

	stateSelector.initCountry();
	stateSelector.selectCountry.onchange = stateSelector.selectCountryOnchangeHandler.bind(stateSelector);
	stateSelector.selectCountry.onclick = stateSelector.selectCountryOnclickHandler.bind(stateSelector);

	if (stateSelector.nameCitizenship)
	{
		document.forms[stateSelector.nameForm][stateSelector.nameCitizenship].onchange = stateSelector.selectCitizenshipOnchangeHandler.bind(stateSelector);
	}
	stateSelector.initState();
}