// 도시정보 형태
function cityData(city, cityName) {
	this.city		= city;
	this.cityName	= cityName;
}

// 도시제한정보 형태
function blockCityData(city, checkType, arrCity, targetArrCity) {
	this.city			= city;
	this.checkType		= checkType;
	this.arrCity		= arrCity;
	this.targetArrCity	= targetArrCity;
}

function setDomDepCity(depCityName, arrCityName, defaultDepCity, defaultArrCity) {
	var depCity	= document.getElementsByName(depCityName)[0];
	var arrCity	= document.getElementsByName(arrCityName)[0];
	var defaultCity = "";

	// 도시 정보 표기
	clearSelectItem(depCity);
	for (var i=0; i<domCity.length; i++) {
		var data = domCity[i];

		// Block 데이터가 존재하는 도시만 추가
		var bExistBlockCity = false;
		for (var j=0; j<domBlockCity.length; j++) {
			var blockData = domBlockCity[j];
			if (blockData.city != data.city) continue;
			bExistBlockCity = true;
		}

		if (!bExistBlockCity) continue;
		addSelectItem(depCity, data.city, data.cityName);
	}

	if (defaultCity != null) {
		depCity.value = defaultDepCity;
		if (depCity.selectedIndex < 0) depCity.selectedIndex = 0;
	}

	setDomArrCity(depCityName, arrCityName, defaultArrCity);
}

function setIntDepCity(depCityName, arrCityName, defaultDepCity, defaultArrCity) {
	var depCity	= document.getElementsByName(depCityName)[0];
	var arrCity	= document.getElementsByName(arrCityName)[0];
	var defaultCity = "";
 
	// 도시 정보 표기
	clearSelectItem(depCity);
	for (var i=0; i<intCity.length; i++) {
		var data = intCity[i];

		// Block 데이터가 존재하는 도시만 추가
		var bExistBlockCity = false;
		for (var j=0; j<intBlockCity.length; j++) {
			var blockData = intBlockCity[j];
			if (blockData.city != data.city) continue;
			bExistBlockCity = true;
		}

		if (!bExistBlockCity) continue;
		addSelectItem(depCity, data.city, data.cityName);
	}
 
	if (defaultCity != null) {
		depCity.value = defaultDepCity;
		if (depCity.selectedIndex < 0) depCity.selectedIndex = 0;
	}

	setIntArrCity(depCityName, arrCityName, defaultArrCity);
}

function setDomArrCity(depCityName, arrCityName, defaultArrCity) {
	var depCity	= document.getElementsByName(depCityName)[0];
	var arrCity	= document.getElementsByName(arrCityName)[0];
	var depCityValue	= depCity[depCity.selectedIndex].value;
	var arrCityValue	= arrCity.selectedIndex >= 0 ? arrCity[arrCity.selectedIndex].value : "";
	var blockCityData	= "";

	// 도시제한 정보 체크
	for (var i=0; i<domBlockCity.length; i++) {
		var data = domBlockCity[i];
		if (data.city == depCityValue) {
			blockCityData = data.arrCity;
			break;
		}
	}

	// 도착도시 표기
	clearSelectItem(arrCity);
	for (var i=0; i<domCity.length; i++) {
		var data = domCity[i];
		if (blockCityData.indexOf(data.city) < 0) continue;
		addSelectItem(arrCity, data.city, data.cityName);
	}

	// 기존 선택 도시가 있다면 재선택
	if (defaultArrCity != null && arrCityValue == "") arrCityValue = defaultArrCity;
	arrCity.value = arrCityValue;
	if (arrCity.selectedIndex < 0) arrCity.selectedIndex = 0;
}

function setIntArrCity(depCityName, arrCityName, defaultArrCity) {
	
	var depCity	= document.getElementsByName(depCityName)[0];
	var arrCity	= document.getElementsByName(arrCityName)[0];
	
  var tmp = 0;
  
  var depCityValue	= depCity[depCity.selectedIndex].value;

	var arrCityValue	= arrCity.selectedIndex >= 0 ? arrCity[arrCity.selectedIndex].value : "";
	var blockCityData	= "";

	// 도시제한 정보 체크
	for (var i=0; i<intBlockCity.length; i++) {
		var data = intBlockCity[i];
		if (data.city == depCityValue) {
			blockCityData = data.arrCity;
			break;
		}
	}

	// 도착도시 표기
	clearSelectItem(arrCity);
	for (var i=0; i<intCity.length; i++) {
		var data = intCity[i];
		if (blockCityData.indexOf(data.city) < 0) continue;

		addSelectItem(arrCity, data.city, data.cityName);
	}

	// 기존 선택 도시가 있다면 재선택
	if (defaultArrCity != null && arrCityValue == "") arrCityValue = defaultArrCity;
	arrCity.value = arrCityValue;
	if (arrCity.selectedIndex < 0) arrCity.selectedIndex = 0;
}

function addSelectItem(obj, value, text) {
	try {
		obj.add(new Option(text, value));
	}
	catch(e) {
		try {
			obj.options[obj.options.length] = new Option(text, value);
		}
		catch (e) {}
	}
}

function clearSelectItem(obj) {
	for (var i=obj.length-1; i>=0; i--) {
		obj.remove(i);
	}
}
