var selectedList;

var selectedCity = false;

function setCity()
{
    if(selectedCity)
    {
        document.getElementById('cityName').value = selectedCity.childNodes[0].innerHTML;
        document.getElementById('city').value = selectedCity.getElementsByTagName('span')[0].id.replace(/^.+?_/, '');
        document.getElementById('citySearch').style.visibility = 'hidden';
        
        selectedCity = false;
    }
}

function setCityMenu()
{
    if(selectedCity)
    {
        document.getElementById('cityNameMenu').value = selectedCity.childNodes[0].innerHTML;
        document.getElementById('cityMenu').value = selectedCity.getElementsByTagName('span')[0].id.replace(/^.+?_/, '');
        document.getElementById('citySearchMenu').style.visibility = 'hidden';
        
        selectedCity = false;
    }
}

function setCityGoto()
{
    if(selectedCity)
    {
        document.getElementById('cityNameGoto').value = selectedCity.childNodes[0].innerHTML;
        document.getElementById('cityGoto').value = selectedCity.getElementsByTagName('span')[0].id.replace(/^.+?_/, '');
        document.getElementById('citySearchGoto').style.visibility = 'hidden';
        
        selectedCity = false;
    }
}

function setCitySearch()
{
	if(selectedCity)
	{
		document.getElementById('cityNameSearch').value = selectedCity.childNodes[0].innerHTML;
		document.getElementById('citySearchSearch').style.visibility = 'hidden';
		
		selectedCity = false;
	}
}

function setSelectedCity(div)
{
	if(selectedCity)
	{
		selectedCity.style.background = '#FFF';
		selectedCity.getElementsByTagName('span')[0].style.color = '#000';
	}
	
	selectedCity = div;
	
	selectedCity.style.background = '#00F';
	selectedCity.getElementsByTagName('span')[0].style.color = '#FFF';
}

function unsetSelectedCity()
{
	if(selectedCity)
	{
		selectedCity.style.background = '#FFF';
		selectedCity.getElementsByTagName('span')[0].style.color = '#000';
		
		selectedCity = false;
	}
}

var cityListExpand = false;

function lostFocusCity()
{
    document.getElementById('citySearch').style.visibility = 'hidden';
    selectedCity = false;
    cityListExpand = false; 
    listFocus = false;
    getCityId();
}

function lostFocusCityMenu()
{
    document.getElementById('citySearchMenu').style.visibility = 'hidden';
    selectedCity = false;
    cityListExpand = false; 
    listFocus = false;
    getCityIdMenu();
}

function lostFocusCityGoto()
{
    document.getElementById('citySearchGoto').style.visibility = 'hidden';
    selectedCity = false;
    cityListExpand = false;
    listFocus = false;
    getCityIdGoto();
}

function lostFocusCitySearch()
{
	document.getElementById('citySearchSearch').style.visibility = 'hidden';
	selectedCity = false;
	cityListExpand = false; 
	listFocus = false;
}

function searchCity()
{
    if(!noListAjax)
    {
        searchCitys();
        cityListExpand = true;
    }
    
    noListAjax = false;
}

function searchCityMenu()
{
    if(!noListAjax)
    {
        searchCitysMenu();
        cityListExpand = true;
    }
    
    noListAjax = false;
}

function searchCityGoto()
{
    if(!noListAjax)
    {
        searchCitysGoto();
        cityListExpand = true;
    }
    
    noListAjax = false;
}

function searchCitySearch()
{
	if(!noListAjax)
    {
        searchCitysSearch();
	    cityListExpand = true;
    }
    
    noListAjax = false;
}

function clickCityListArrow()
{
    if(cityListExpand)
    {
        lostFocusCity();
    }
    else
    {
        document.getElementById('cityName').focus();
        searchCitys();
        cityListExpand = true; 
    }
}

function clickCityListArrowMenu()
{
    if(cityListExpand)
    {
        lostFocusCityMenu();
    }
    else
    {
        document.getElementById('cityNameMenu').focus();
        searchCitysMenu();
        cityListExpand = true; 
    }
}

function clickCityListArrowGoto()
{
    if(cityListExpand)
    {
        lostFocusCityGoto();
    }
    else
    {
        document.getElementById('cityNameGoto').focus();
        searchCitysGoto();
        cityListExpand = true; 
    }
}

function clickCityListArrowSearch()
{
	if(cityListExpand)
	{
		lostFocusCitySearch();
	}
	else
	{
		document.getElementById('cityNameSearch').focus();
		searchCitysSearch();
		cityListExpand = true; 
	}
}

function unsetCity()
{
    document.getElementById('cityName').value = '';
    document.getElementById('city').value = 0;
}

function unsetCityMenu()
{
    document.getElementById('cityNameMenu').value = '';
    document.getElementById('cityMenu').value = 0;
}

function unsetCityGoto()
{
    document.getElementById('cityNameGoto').value = '';
    document.getElementById('cityGoto').value = 0;
}

function unsetCitySearch()
{
	document.getElementById('cityNameSearch').value = '';
	document.getElementById('citySearch').value = 0;
}

function blurCity()
{
    citySearchCount++;
    window.setTimeout('lostFocusCity()', 100);
}

function blurCityMenu()
{
    citySearchCount++;
    window.setTimeout('lostFocusCityMenu()', 100);
}

function blurCityGoto()
{
    citySearchCount++;
    window.setTimeout('lostFocusCityGoto()', 100);
}

function blurCitySearch()
{
	citySearchCount++;
	window.setTimeout('lostFocusCitySearch()', 100);
}

var selectedState = false;

function setState()
{
    if(selectedState)
    {
        document.getElementById('stateName').value = selectedState.innerHTML;
        document.getElementById('stateSearch').style.visibility = 'hidden';
        document.getElementById('state').value = selectedState.id.replace(/^.+?_/, '');
        
        selectedState = false;
    }
}

function setStateMenu()
{
    if(selectedState)
    {
        document.getElementById('stateNameMenu').value = selectedState.innerHTML;
        document.getElementById('stateSearchMenu').style.visibility = 'hidden';
        document.getElementById('stateMenu').value = selectedState.id.replace(/^.+?_/, '');
        
        selectedState = false;
    }
}

function setStateGoto()
{
	if(selectedState)
	{
		document.getElementById('stateNameGoto').value = selectedState.innerHTML;
		document.getElementById('stateSearchGoto').style.visibility = 'hidden';
		document.getElementById('stateGoto').value = selectedState.id.replace(/^.+?_/, '');
		
		selectedState = false;
	}
}

function setSelectedState(div)
{
	if(selectedState)
	{
		selectedState.style.background = '#FFF';
		selectedState.style.color = '#000';
	}
	
	selectedState = div;
	
	selectedState.style.background = '#00F';
	selectedState.style.color = '#FFF';
}

function unsetSelectedState()
{
	if(selectedState)
	{
		selectedState.style.background = '#FFF';
		selectedState.style.color = '#000';
		
		selectedState = false;
	}
}

var stateListExpand = false;

function lostFocusState()
{
    document.getElementById('stateSearch').style.visibility = 'hidden';
    selectedState = false;
    stateListExpand = false;
    listFocus = false; 
    getStateId();
}

function lostFocusStateMenu()
{
    document.getElementById('stateSearchMenu').style.visibility = 'hidden';
    selectedState = false;
    stateListExpand = false;
    listFocus = false; 
    getStateIdMenu();
}

function lostFocusStateGoto()
{
	document.getElementById('stateSearchGoto').style.visibility = 'hidden';
	selectedState = false;
	stateListExpand = false;
	listFocus = false; 
	getStateIdGoto();
}

function searchState()
{
    if(!noListAjax)
    {
        searchStates();
        stateListExpand = true;
    }
    
    noListAjax = false;
}

function searchStateMenu()
{
    if(!noListAjax)
    {
        searchStatesMenu();
        stateListExpand = true;
    }
    
    noListAjax = false;
}

function searchStateGoto()
{
    if(!noListAjax)
    {
	    searchStatesGoto();
	    stateListExpand = true;
    }
    
    noListAjax = false;
}

function clickStateListArrow()
{
    if(stateListExpand)
    {
        lostFocusState();
    }
    else
    {
        searchStates();
        document.getElementById('stateName').focus();
        stateListExpand = true; 
    }
}

function clickStateListArrowGoto()
{
	if(stateListExpand)
	{
		lostFocusStateGoto();
	}
	else
	{
		searchStatesGoto();
		document.getElementById('stateNameGoto').focus();
		stateListExpand = true;
	}
}

function unsetState()
{
    document.getElementById('stateName').value = '';
    document.getElementById('state').value = 0;
}

function unsetStateMenu()
{
    document.getElementById('stateNameMenu').value = '';
    document.getElementById('stateMenu').value = 0;
}

function unsetStateGoto()
{
	document.getElementById('stateNameGoto').value = '';
	document.getElementById('stateGoto').value = 0;
}

function blurState()
{
    stateSearchCount++;
    window.setTimeout('lostFocusState()', 100);
}

function blurStateMenu()
{
    stateSearchCount++;
    window.setTimeout('lostFocusStateMenu()', 100);
}

function blurStateGoto()
{
	stateSearchCount++;
	window.setTimeout('lostFocusStateGoto()', 100);
}

var selectedCountry = false;

function setCountry()
{
    if(selectedCountry)
    {
        document.getElementById('countryName').value = selectedCountry.innerHTML;
        document.getElementById('countrySearch').style.visibility = 'hidden';

        if(document.getElementById('country').value != selectedCountry.id.replace(/^.+?_/, ''))
        {
            document.getElementById('country').value = selectedCountry.id.replace(/^.+?_/, '')
            
            unsetState();
            unsetCity();
        }
        
        selectedCountry = false;
    }
}

function setCountryMenu()
{
    if(selectedCountry)
    {
        document.getElementById('countryNameMenu').value = selectedCountry.innerHTML;
        document.getElementById('countrySearchMenu').style.visibility = 'hidden';

        if(document.getElementById('countryMenu').value != selectedCountry.id.replace(/^.+?_/, ''))
        {
            document.getElementById('countryMenu').value = selectedCountry.id.replace(/^.+?_/, '')
            
            unsetStateMenu();
            unsetCityMenu();
        }
        
        selectedCountry = false;
    }
}

function setCountryGoto()
{
	if(selectedCountry)
	{
		document.getElementById('countryNameGoto').value = selectedCountry.innerHTML;
		document.getElementById('countrySearchGoto').style.visibility = 'hidden';

		if(document.getElementById('countryGoto').value != selectedCountry.id.replace(/^.+?_/, ''))
		{
			document.getElementById('countryGoto').value = selectedCountry.id.replace(/^.+?_/, '')
			
			unsetStateGoto();
			unsetCityGoto();
		}
		
		selectedCountry = false;
	}
}

function setSelectedCountry(div)
{
	if(selectedCountry)
	{
		selectedCountry.style.background = '#FFF';
		selectedCountry.style.color = '#000';
	}
	
	selectedCountry = div;
	
	selectedCountry.style.background = '#00F';
	selectedCountry.style.color = '#FFF';
}

function unsetSelectedCountry()
{
	if(selectedCountry)
	{
		selectedCountry.style.background = '#FFF';
		selectedCountry.style.color = '#000';
		
		selectedCountry = false;
	}
}

var countryListExpand = false;

function lostFocusCountry()
{
    document.getElementById('countrySearch').style.visibility = 'hidden';
    selectedCountry = false;
    countryListExpand = false;
    listFocus = false;
    getCountryCode(); 
}

function lostFocusCountryMenu()
{
    document.getElementById('countrySearchMenu').style.visibility = 'hidden';
    selectedCountry = false;
    countryListExpand = false;
    listFocus = false;
    getCountryCodeMenu(); 
}

function lostFocusCountryGoto()
{
	document.getElementById('countrySearchGoto').style.visibility = 'hidden';
	selectedCountry = false;
	countryListExpand = false;
	listFocus = false;
	getCountryCodeGoto(); 
}

function searchCountry()
{
    if(!noListAjax)
    {
        searchCountries();
        countryListExpand = true;
    }
    
    noListAjax = false;
}

function searchCountryMenu()
{
    if(!noListAjax)
    {
        searchCountriesMenu();
        countryListExpand = true;
    }
    
    noListAjax = false;
}

function searchCountryGoto()
{
    if(!noListAjax)
    {
	    searchCountriesGoto();
	    countryListExpand = true;
    }
    
    noListAjax = false;
}

function clickCountryListArrow()
{
    if(countryListExpand)
    {
        lostFocusCountry();
    }
    else
    {
        searchCountries();
        document.getElementById('countryName').focus();
        countryListExpand = true; 
    }
}

function clickCountryListArrowMenu()
{
    if(countryListExpand)
    {
        lostFocusCountryMenu();
    }
    else
    {
        searchCountries();
        document.getElementById('countryNameMenu').focus();
        countryListExpand = true; 
    }
}

function clickCountryListArrowGoto()
{
	if(countryListExpand)
	{
		lostFocusCountryGoto();
	}
	else
	{
		searchCountries();
		document.getElementById('countryNameGoto').focus();
		countryListExpand = true; 
	}
}

function blurCountry()
{
    countrySearchCount++;
    window.setTimeout('lostFocusCountry()', 100);
}

function blurCountryMenu()
{
    countrySearchCount++;
    window.setTimeout('lostFocusCountryMenu()', 100);
}

function blurCountryGoto()
{
	countrySearchCount++;
	window.setTimeout('lostFocusCountryGoto()', 100);
}

var noListAjax = false;

function moveListUp()
{
    var prevItem;
    noListAjax = true;
    
    switch(selectedList)
    {
        case 'user':
            if(selectedUser)
                prevItem = selectedUser.previousSibling;
            else
                prevItem = document.getElementById('userSearch').getElementsByTagName('div')[0];
                
            setSelectedUser(prevItem);
            break;
        case 'city':
            if(selectedCity)
                prevItem = selectedCity.previousSibling;
            else
                prevItem = document.getElementById('citySearch').getElementsByTagName('div')[0];
                
            setSelectedCity(prevItem);
            break;
        case 'cityMenu':
            if(selectedCity)
                prevItem = selectedCity.previousSibling;
            else
                prevItem = document.getElementById('citySearchMenu').getElementsByTagName('div')[0];
                
            setSelectedCity(prevItem);
            break;
        case 'cityGoto':
            if(selectedCity)
                prevItem = selectedCity.previousSibling;
            else
                prevItem = document.getElementById('citySearchGoto').getElementsByTagName('div')[0];
                
            setSelectedCity(prevItem);
            break;
        case 'state':
            if(selectedState)
                prevItem = selectedState.previousSibling;
            else
                prevItem = document.getElementById('stateSearch').getElementsByTagName('div')[0];
                
            setSelectedState(prevItem);
            break;
        case 'stateMenu':
            if(selectedState)
                prevItem = selectedState.previousSibling;
            else
                prevItem = document.getElementById('stateSearchMenu').getElementsByTagName('div')[0];
                
            setSelectedState(prevItem);
            break;
        case 'stateGoto':
            if(selectedState)
                prevItem = selectedState.previousSibling;
            else
                prevItem = document.getElementById('stateSearchGoto').getElementsByTagName('div')[0];
                
            setSelectedState(prevItem);
            break;
        case 'country':
            if(selectedCountry)
                prevItem = selectedCountry.previousSibling;
            else
                prevItem = document.getElementById('countrySearch').getElementsByTagName('div')[0];
        case 'countryMenu':
            if(selectedCountry)
                prevItem = selectedCountry.previousSibling;
            else
                prevItem = document.getElementById('countrySearchMenu').getElementsByTagName('div')[0];
                
            setSelectedCountry(prevItem);
            break;
        case 'countryGoto':
            if(selectedCountry)
                prevItem = selectedCountry.previousSibling;
            else
                prevItem = document.getElementById('countrySearchGoto').getElementsByTagName('div')[0];
                
            setSelectedCountry(prevItem);
            break;
    }
}

function moveListDown()
{
    var nextItem;
    noListAjax = true;
    
    switch(selectedList)
    {
        case 'user':
            if(selectedUser)
                nextItem = selectedUser.nextSibling;
            else
                nextItem = document.getElementById('userSearch').getElementsByTagName('div')[0];
                
            setSelectedUser(nextItem);
            break;
        case 'city':
            if(selectedCity)
                nextItem = selectedCity.nextSibling;
            else
                nextItem = document.getElementById('citySearch').getElementsByTagName('div')[0];
                
            setSelectedCity(nextItem);
            break;
        case 'cityMenu':
            if(selectedCity)
                nextItem = selectedCity.nextSibling;
            else
                nextItem = document.getElementById('citySearchMenu').getElementsByTagName('div')[0];
                
            setSelectedCity(nextItem);
            break;
        case 'cityGoto':
            if(selectedCity)
                nextItem = selectedCity.nextSibling;
            else
                nextItem = document.getElementById('citySearchGoto').getElementsByTagName('div')[0];
                
            setSelectedCity(nextItem);
            break;
        case 'state':
            if(selectedState)
                nextItem = selectedState.nextSibling;
            else
                nextItem = document.getElementById('stateSearch').getElementsByTagName('div')[0];
                
            setSelectedState(nextItem);
            break;
        case 'stateMenu':
            if(selectedState)
                nextItem = selectedState.nextSibling;
            else
                nextItem = document.getElementById('stateSearchMenu').getElementsByTagName('div')[0];
                
            setSelectedState(nextItem);
            break;
        case 'stateGoto':
            if(selectedState)
                nextItem = selectedState.nextSibling;
            else
                nextItem = document.getElementById('stateSearchGoto').getElementsByTagName('div')[0];
                
            setSelectedState(nextItem);
            break;
        case 'country':
            if(selectedCountry)
                nextItem = selectedCountry.nextSibling;
            else
                nextItem = document.getElementById('countrySearch').getElementsByTagName('div')[0];
                
            setSelectedCountry(nextItem);
            break;
        case 'countryMenu':
            if(selectedCountry)
                nextItem = selectedCountry.nextSibling;
            else
                nextItem = document.getElementById('countrySearchMenu').getElementsByTagName('div')[0];
                
            setSelectedCountry(nextItem);
            break;
        case 'countryGoto':
            if(selectedCountry)
                nextItem = selectedCountry.nextSibling;
            else
                nextItem = document.getElementById('countrySearchGoto').getElementsByTagName('div')[0];
                
            setSelectedCountry(nextItem);
            break;
    }
}

function setListItem()
{
    noListAjax = true;
    
    switch(selectedList)
    {
        case 'user': if(selectedUser) setUser(); break;
        case 'city': if(selectedCity) setCity(); break;
        case 'cityMenu': if(selectedCity) setCityMenu(); break;
        case 'citySearch': if(selectedCity) setCitySearch(); break;
        case 'state': if(selectedState) setState(); break;
        case 'stateMenu': if(selectedState) setStateMenu(); break;
        case 'country': if(selectedCountry) setCountry(); break;
        case 'countryMenu': if(selectedCountry) setCountryMenu(); break;
    }
}