function RemoveElements(obj)
{
	while(obj.length>0)
	{
		obj.remove(0);
	}
	
	return true;
}

function AddElement(obj,value,text,pos)
{
	if(document.createElement)
	{
		var CreateOption=document.createElement('option');
		CreateOption.value=value;
		CreateOption.text=text;
		
		try 
		{
			obj.add(CreateOption,CitiesSelect); // DOM
		}
		catch(e)
		{
			try
			{
				obj.add(CreateOption,pos); // IE
			}
			catch(e)
			{
				obj.add(CreateOption,null); // Мозіла сцука бла! 05:02 ранку, найшов чо не паше
			}
		}
	}
	else
	{
		obj.options[i]=new Option(ListArr[i][0],ListArr[i][1],false,false);
	}
	
	return true;
}

var StatesList=null;
function initStatesList()
{
	if(StatesList==null)
	{
		StatesList=document.getElementById('StatesList');
	}
	
	return true;
}

var CitiesList=null;
function initCitiesList()
{
	if(CitiesList==null)
	{
		CitiesList=document.getElementById('CitiesList');
	}
	
	return true;
}

var StreetsList=null;
function initStreetsList()
{
	if(StreetsList==null)
	{
		StreetsList=document.getElementById('StreetsList');
	}
}

function DisableStates()
{
	initStatesList();
	initCitiesList();
	initStreetsList();
	
	//state
	document.getElementById('manualState').style.display='none';
	
	//city
	RemoveElements(CitiesList);
	AddElement(CitiesList,'list','- виберіть населений пункт -',0);
	CitiesList.disabled=true;
	document.getElementById('manualCity').style.display='none';
	
	//street
	RemoveElements(StreetsList);
	AddElement(StreetsList,'list','- виберіть вулицю -',0);
	StreetsList.disabled=true;
	document.getElementById('manualStreet').style.display='none';
}

function DisableCities()
{
	initCitiesList();
	initStreetsList();
	
	//city
	document.getElementById('manualCity').style.display='none';
	
	//street
	RemoveElements(StreetsList);
	AddElement(StreetsList,'list','- виберіть вулицю -',0);
	StreetsList.disabled=true;
	document.getElementById('manualStreet').style.display='none';
}

function DisableStreets()
{
	//street
	document.getElementById('manualStreet').style.display='none';
}

function State(id,urlPrm)
{
	DisableStates();
	
	if(id!='list' && id!='add')
	{
		StatesList.disabled=true;
		
		RemoveElements(CitiesList);
		AddElement(CitiesList,'list','завантаження...',0);
		
		initReqObj();
		ReqObj.onreadystatechange=function()
		{
			if(ReqObj.readyState==4)
			{
				try
				{
					DisableStates();
					
					ListArr=ReqObj.responseJS.result;
					ListArrCount=ListArr.length;
					
					position=1;
					for(i=0;i<ListArrCount;i++)
					{
						AddElement(CitiesList,ListArr[i][0],ListArr[i][1],position);
						position++;
					}
					
					AddElement(CitiesList,'add',':: немає в списку ::',position);
					StatesList.disabled=false;
					CitiesList.disabled=false;
				}
				catch(e)
				{
					StatesList.disabled=false;
					alert(e.message+' | '+ReqObj.responseText);
				}
			}
		}
	
		ReqObj.open(null,urlPrm,true);
		ReqObj.send({id:id});
	}
	else
	{
		if(id=='add')
		{
			document.getElementById('manualState').style.display='';
			City('add');
		}
	}
	
	return true;
}

function City(id,urlPrm)
{
	DisableCities();
	
	if(id!='list' && id!='add')
	{
		CitiesList.disabled=true;
		
		RemoveElements(StreetsList);
		AddElement(StreetsList,'list','завантаження...',0);
		
		initReqObj();
		ReqObj.onreadystatechange=function()
		{
			if(ReqObj.readyState==4)
			{
				try
				{
					DisableCities();
					
					ListArr=ReqObj.responseJS.result;
					ListArrCount=ListArr.length;
					
					position=1;
					for(i=0;i<ListArrCount;i++)
					{
						AddElement(StreetsList,ListArr[i][0],ListArr[i][1],position);
						position++;
					}
					
					AddElement(StreetsList,'add',':: немає в списку ::',position);
					CitiesList.disabled=false;
					StreetsList.disabled=false;
				}
				catch(e)
				{
					CitiesList.disabled=false;
					alert(e.message+' | '+ReqObj.responseText);
				}
			}
		}
	
		ReqObj.open(null,urlPrm,true);
		ReqObj.send({id:id});
	}
	else
	{
		if(id=='add')
		{
			document.getElementById('manualCity').style.display='';
			Street('add');
		}
	}
	
	return true;
}

function Street(id)
{
	DisableStreets();
	
	if(id=='add')
	{
		document.getElementById('manualStreet').style.display='';
	}
	
	return true;
}

function EnableCities()
{
	initCitiesList();
	CitiesList.disabled=false;
}

function EnableStreets()
{
	initStreetsList();
	StreetsList.disabled=false;
}
