	function countrySelected (obj) {
		$('#cRegion').css ('display', 'none');
		$('#cDistinct').css ('display', 'none');
		$('#cTerritory').css ('display', 'none');
		
		var cityField = document.getElementById ('city_id');
		document.getElementById ('iCityContainer').style.display = 'none';
		cityField.disabled = 'disabled';
		if (obj.value == 0) {
			cityField.value = 'Сначала выберите страну';
		}
		else {
			loadCCities (obj.value);
		}
	}
	
	function showHideCityInput (obj) {
		$('#cityContainer').css ('display', $(obj).attr ('value') !=0 ? '' : 'none');
	}
	
	function loadCCities (countryId) {
		req = new JsHttpRequest ();
		req.caching = true;
		req.loader = 'script';
		req.onreadystatechange = function () {
			if (req.readyState == 4 && req.responseJS.error == 0) {
				var cSelect = document.getElementById ('city_id');
				var cListItem;
				cSelect.innerHTML = '';
				cListItem = document.createElement ('option');
				cListItem.value = "0";
				cListItem.innerHTML = '- Выберите город -';
				cSelect.appendChild (cListItem);
				for (i = 0; i < req.responseJS.cities.length; i++) {
					current = req.responseJS.cities [i];
					cListItem = document.createElement ('option');
					cListItem.value = current.id;
					cListItem.innerHTML = current.title;
					cSelect.appendChild (cListItem); 
				}
				cListItem = document.createElement ('option');
				cListItem.value = "-1";
				$(cListItem).css ('font-weight', 'bold');
				$(cListItem).css ('color', 'green');
				cListItem.innerHTML = 'Другой';
				cSelect.appendChild (cListItem);
				cSelect.disabled = '';
			}
		}
		req.open ('GET', '/location_provider/', false);
		req.send ({'adm1_id': countryId});
	}
	
	function cityChanged (obj) {
		var iCityContainer = document.getElementById ('iCityContainer');
		var iCity = document.getElementById ('iCity');
		var iCityId = document.getElementById ('iCityId');
		if (obj.value == -1) {
			iCity.value = 'Введите название города...';
			iCityId.value = '';
			iCityState = 0;
			iCity.style.color = '#888888';
			iCityContainer.style.display = '';
		}
		else if (obj.value != 0) {
			iCityId.value = obj.value;
			iCityContainer.style.display = 'none';
		}
		else {
			iCityId.value = '';
			iCityContainer.style.display = 'none';
		}
	}
	
	var iCityState = 0;
	
	function clearICity (obj) {
		if (iCityState == 0) {
			obj.value = '';
			iCityState = 1;
		}
	}

	var citiesList = [];
	
	function changeICity (obj, e) {
		
		if (obj.value != '') {
			var keyCode = 0;
			if (e.which)
				keyCode = e.which;
			else
				keyCode = e.keyCode;
				
			obj.style.color = '#000000';
			req = new JsHttpRequest ();
			req.caching = true;
			req.loader = 'script';
			req.onreadystatechange = function () {
				if (req.readyState == 4 && req.responseJS.error == 0) {
					if (req.responseJS.cities.length == 0) {
						$('#cTerritory').css ('display',  '');
						$('#iCityId').attr ('value', '');
					}
					else {
						$('#cTerritory').css ('display',  'none');
						$('#cRegion').css ('display',  'none');
						$('#cDistinct').css ('display',  'none');
					}
					updateList (req.responseJS.cities);
					citiesList = req.responseJS.cities;
				}
			}
			var countryId = document.getElementById ('adm1_id').value;
			var searchStr = obj.value;
			req.open ('GET', '/location_provider/', false);
			req.send ({'adm1_id': countryId, 'startS': encodeURIComponent (searchStr)});
			e.cancelBubble = true;
		}
		else {
			document.getElementById ('cities_list').style.display = 'none';
		}
	}
	
	function changeTerritory () {
		var territory = $('#t_value').attr ('value');
		
		if (territory == 1) {
			$('#cRegion').css ('display', '');
			$('#cDistinct').css ('display', 'none');
			loadRegions ($('#adm1_id').attr ('value'));
		}
		else if (territory == 2) {
			$('#cRegion').css ('display', '');
			$('#cDistinct').css ('display', 'none');
			loadRegions ($('#adm1_id').attr ('value'));
		}
		else {
			$('#cDistinct').css ('display', 'none');
			$('#cRegion').css ('display', 'none');
		}
	}
	
	function loadRegions (adm1_id) {
		$('#region').html ('<option>Идет загрузка...</option>');
		$('#cRegionList').css ('display', '');
		$('#cRegionText').css ('display', 'none');
		
		$.get ('/location_provider/', {'region_list' : adm1_id}, function(data, status){
			if (status == 'success' && data.error == 0) {
				var list = '';
				var region = '';
				for (i = 0; i < data.regions.length; i++) {
					region = data.regions [i];
					list += '<option value="'+region.id+'">'+region.title+'</option>';
				}
				
				if (list == '') {
					
					$('#cRegionText').css ('display', '');
					$('#cRegionList').css ('display', 'none');
					
					if ($('#t_value').attr ('value') == 2) {
						$('#cDistinct').css ('display', '');
						$('#cDistinctList').css ('display', 'none');
						$('#cDistinctText').css ('display', '');
					}
				}
				else {
					list += '<option value="0" style="font-weight: bold; color: green;">другое</option>';
					$('#region').html (list);
				}
			}
		},
		"json"
		);
	}
	
	function changeRegion (obj) {
		
		var territory = $('#t_value').attr ('value');
		
		if ($(obj).attr ('value') == 0) {
			$('#cRegionText').css ('display', '');
			
			if (territory == 2) {
				$('#cDistinctText').css ('display', '');
				$('#cDistinctList').css ('display', 'none');
				$('#cDistinct').css ('display', '');
			}
			else {
				$('#cDistinct').css ('display', 'none');
			}
		}
		else {
			$('#cRegionText').css ('display', 'none');
			
			if (territory == 2) {
				$('#cDistinct').css ('display', '');
				loadDistincts ();
			}
			else {
				$('#cDistinct').css ('display', 'none');
			}
		}
	}
	
	function loadDistincts () {
		var region_id = $('#region').attr ('value');
		
		$('#distinct').html ('<option>Идет загрузка...</option>');
		$('#cDistinctList').css ('display', '');
		$('#cDistinctText').css ('display', 'none');
		
		$.get ('/location_provider/', {'distinct_list' : region_id}, function(data, status){
			if (status == 'success' && data.error == 0) {
				var list = '';
				var region = '';
				for (i = 0; i < data.distincts.length; i++) {
					distinct = data.distincts [i];
					list += '<option value="'+distinct.id+'">'+distinct.title+'</option>';
				}
				
				if (list == '') {
					
					$('#cDistinctText').css ('display', '');
					$('#cDistinctList').css ('display', 'none');
				}
				else {
					list += '<option value="0" style="font-weight: bold; color: green;">другое</option>';
					$('#distinct').html (list);
				}
			}
		},
		"json"
		);
	}
	
	function changeDistinct (obj) {
		
		if ($(obj).attr ('value') == 0) {
			$('#cDistinctText').css ('display', '');
		}
		else {
			$('#cDistinctText').css ('display', 'none');
		}
	}
	
	function deICity (obj) {
		if (obj.value == 'Введите название города...') {
			iCityState = 0;
			obj.style.color = '#888888';
		}
	}
	
	function chooseCity (id) {
		for (i = 0; i < citiesList.length; i++) {
			if (citiesList[i].id == id) {
				document.getElementById ('cities_list').style.display = 'none';
				document.getElementById ('iCity').value = citiesList[i].title;
				$('#city_additional').html (citiesList[i].addon);
				document.getElementById ('iCityId').value = id;
			}
		}
	}
	
	function updateList (cities) {
		var cList = document.getElementById ('cities_list');
		var res = '';
		var cCity;
		var additional = '';
		if (cities.length > 0) {
			for (i = 0; i < cities.length; i++) {
				cCity = cities[i];
				/*additional = '';
				if (cCity.o_data) {
						additional = cCity.o_data.title;
				}
				if (cCity.r_data) {
					if (additional == '')
						additional = cCity.r_data.title;
					else
						additional += ', '+cCity.r_data.title;
				}
				if (additional != '')
					additional = '<br />'+additional;*/
				res += '<div class="cList" onMouseOver="cHight (this, 1)" onMouseOut="cHight (this, 0)" onClick="chooseCity('+cCity.id+');">'+cCity.title+(cCity.addon == '' ? '' : '<br />'+cCity.addon)+'</div>';
			}
			cList.innerHTML = res;
			cList.style.display = '';
			var iCity = document.getElementById ('iCity')
			var inputPos = findPos (iCity);
			cList.style.position = 'absolute';
			if (document.all) {
				cList.style.left = (inputPos.left+1)+'px';
				cList.style.top = (inputPos.top+19)+'px';
			}
			else {
				cList.style.left = (inputPos.left)+'px';
				cList.style.top = (inputPos.top+18)+'px';
			}
		}
		else {
			cList.style.display = 'none';
		}
	}
	
	function cHight (obj, type) {
		if (type == 1) {
			obj.style.background = '#E0E0E0';
		}
		else {
			obj.style.background = '#FFFFFF';
		}
	}
	
	function captureOnClick (e) {
		var element;
		if (window.event)
			e = window.event;
		if (e.srcElement)
			element = e.srcElement;
		else
			element = e.target;
		if (element.className != 'cList' && element.id != 'cities_list') {
			if (citiesList.length >= 1 && citiesList[0].title == document.getElementById('iCity').value) {
				document.getElementById ('iCityId').value = citiesList[0].id;
			}
			document.getElementById ('cities_list').style.display = 'none';
		}
		return true;
	}
	
	document.onclick = captureOnClick;