var IE = document.all?true:false; 

var dateObjectName	= "";
var calSelectYear	= "";
var calSelectMonth	= "";
var calSelectDay	= "";
var calMoveYear		= "";
var calMoveMonth	= "";
var calMoveDay		= "";

function showCalendarRange(e, objID) {
	var obj1 = document.getElementById("calen0");
	var obj2 = document.getElementById("calen1");

	if (objID != null) {
		tempX = $jqCal("#"+objID).offset().left - 180;
		tempY = $jqCal("#"+objID).offset().top - 70;
	}
	else {
		if (navigator.appName == "Microsoft Internet Explorer") {
			tempX = event.clientX + document.body.scrollLeft;
			tempY = event.clientY + document.body.scrollTop;

			if ((document.body.clientWidth - 260) < tempX) tempX -= 260 - 50;
			if ((document.body.clientHeight - calen0.clientHeight) < tempY) tempY -= (calen0.clientHeight + 20);
		}
		else {
			tempX = e.pageX;
			tempY = e.pageY;

			//alert(document.body.scrollWidth);
			if ((document.body.scrollWidth - 260) < tempX) tempX -= 260 - 50;
			if ((document.body.scrollHeight - 200) < tempY) tempY -= (200 + 20);
		}   
	}

	if (tempX < 0){tempX = 0;}
	if (tempY < 0){tempY = 0;}

	//obj1.style.visibility = "visible";
	obj1.style.display= "";
	obj1.style.left = tempX + "px";
	obj1.style.top = tempY + "px";
	//obj2.style.visibility = "visible";
	obj2.style.display= "";
	obj2.style.left = tempX + "px";
	obj2.style.top = tempY + "px";

	try {
		setFrameSize();
	}
	catch(e) {}
}

function cal_show(tmpYear, tmpMon, tmpDay, name, e, objID) {
	dateObjectName = name;
	if (tmpYear < 1900) tmpYear += 1900;

	calMoveYear		= calSelectYear		= tmpYear;
	calMoveMonth	= calSelectMonth	= tmpMon;
	calMoveDay		= calSelectDay		= tmpDay;

	showCalendarRange(e, objID);
	showCalendar(tmpDay,tmpMon,tmpYear);

	return true; 
}

function  cal_close() {
	var obj1 = document.getElementById("calen0");
	var obj2 = document.getElementById("calen1");

	//obj1.style.visibility	= "hidden";
	obj1.style.display		= "none";
	//obj2.style.visibility	= "hidden";
	obj2.style.display		= "none";
}

function setDate(year,month,day) {
	var sYear	= ''+year;
	var sMonth	= parseInt(month)+1;
	sMonth		= ''+sMonth;
	var sDay	= ''+day;		

	var selectDate	= "";
	var curDate		= "";
	var result		= "";

	var tempDate=new Date;
	var tmpYear=tempDate.getYear();		//오늘 날짜 연도
	var tmpMonth=tempDate.getMonth()+1;		//오늘 날짜 월
	tmpMonth = tmpMonth + '';
	var tmpDay=tempDate.getDate()+'';		//오늘 날짜 일

	if (tmpYear < 1900) tmpYear += 1900;

	// 월이 한자리이면 앞에 0 추가 
	if (sMonth.length == 1) {
		sMonth = "0" + sMonth;
	} 

	// 일자가 한자리이면 앞에 0 추가 
	if (sDay.length == 1) {
		sDay = "0" + sDay;
	}

	selectDate = sYear + sMonth + sDay;
	
	// 월이 한자리이면 앞에 0 추가 
	if (tmpMonth.length == 1) {
		tmpMonth = "0" + tmpMonth;
	} 

	// 일자가 한자리이면 앞에 0 추가 
	if (tmpDay.length == 1) {
		tmpDay = "0" + tmpDay;
	}

	curDate = tmpYear + '' + tmpMonth + '' + tmpDay;
	if (calendarViewType != "9") {
		if (selectDate < curDate) {
			alert("오늘날짜 이전으로는 선택하실 수 없습니다.");

			return;
		} // end of if (현재 날짜보다 과거 선책)
	}

	result = sYear + sMonth + sDay;

	if (!setResultDate(dateObjectName, result)) return;

	cal_close();

	return result;
}

function moveCalendar(value)
{
	var year, month, day;
	var chkDate;
	var tmp;

	year	= parseInt(calMoveYear	, 10);
	month	= parseInt(calMoveMonth	, 10);
	day		= parseInt(calMoveDay	, 10);

	tmp		= month + value;
	chkDate = new Date(year, month + value, day);

	// 10/31 -> 11월 이동이 11/31일이 없는 경우에 대한 처리 by 20081030 lhw
	if (tmp == 12) tmp = 0;
	if (tmp == -1) tmp = 11;
	while (tmp != chkDate.getMonth()) {
		year	= chkDate.getYear();
		if (year < 1900) year += 1900;
		chkDate = new Date(year, chkDate.getMonth(), chkDate.getDate() + (tmp > chkDate.getMonth() ? 1 : -1) * 1);
	}

	year	= chkDate.getYear();
	month	= chkDate.getMonth();
	day		= chkDate.getDate();

	if (year < 1900) year += 1900;

	calMoveYear		= year;
	calMoveMonth	= month;
	calMoveDay		= day;

	showCalendar(day,month,year);
}

/******************************************************************************
 *
 * 외부 호출 함수
 *
 ******************************************************************************/

///////////////////////////////////////
// 날자 명칭 표기
function getDateName(value) {
	var result = "";

	if (value.length == 6) {
		if (defineLang == "ko") {
			result = value.substring(0,4) + "년 " + value.substring(4,6) + "월";
		}
	}
	else if (value.length == 8) {
		if (defineLang == "ko") {
			result = value.substring(0,4) + "년 " + value.substring(4,6) + "월 " + value.substring(6,8) + "일";
		}
	}

	return result;
}

///////////////////////////////////////
// 해당월 마지막일 계산
function getMonthLastDay(date, flag) {
	var tmp	= new Date(parseInt(date.substring(0,4),10), parseInt(date.substring(4,6),10), 0);
	var result = tmp.getDate();

	if (flag != null) {
		result = "" + result;
		if (result.length == 1) result = "0" + result;
	}

	return result;
}

///////////////////////////////////////
// 선택박스형 년월 초기화
function setMonthList(name, depDate, viewType) {
	var f		= document.frm;
	var minDate	= defineBgnDate;
	var maxDate	= defineEndDate;
	var date1	= document.getElementsByName(name+"Date1")[0];
	var date2	= document.getElementsByName(name+"Date2")[0];

	var date	= new Date(parseInt(minDate.substring(0,4),10), parseInt(minDate.substring(4,6),10)-1, 1);
	var year	= date.getYear();
	var mon		= ""+(date.getMonth()+1);

	if (year < 1900) year += 1900;
	if (mon.length == 1) mon = "0" + mon;

	var tmpDate	= year+mon;
	clearCalendarSelectItem(date1);
	//date1.length = 0;
	while (parseInt(maxDate.substring(0,6)) >= parseInt(tmpDate)) {
		addCalendarSelectItem(date1, tmpDate, getDateName(tmpDate));
		//date1.length = date1.length+1;
		//date1[date1.length-1].value	= tmpDate;
		//date1[date1.length-1].text = getDateName(tmpDate);

		date = new Date(year, parseInt(mon,10), 1)
		year	= date.getYear();
		mon		= ""+(date.getMonth()+1);

		if (year < 1900) year += 1900;
		if (mon.length == 1) mon = "0" + mon;
		tmpDate	= year+mon;
	}

	if (depDate != null && depDate.length == 8) {
		date1.value = depDate.substring(0,6);
		if (date1.selectedIndex < 0) date1.selectedIndex = 0;
	}

	changeMonth(name, depDate, viewType);
}

///////////////////////////////////////
// 선택박스형 년월 변경시 일 표기
function changeMonth(name, depDate, viewType) {
	var f		= document.frm;
	var minDate	= defineBgnDate;
	var maxDate	= defineEndDate;
	var date1	= document.getElementsByName(name+"Date1")[0];
	var date2	= document.getElementsByName(name+"Date2")[0];
	var bgnDay	= null;
	var endDay	= getMonthLastDay(date1[date1.selectedIndex].value);
	var selDay	= date2.length == 0 ? minDate.substring(6,8) : (date2.selectedIndex < 0 ? date2[0].value : date2[date2.selectedIndex].value);

	if (minDate.substring(0,6) == date1[date1.selectedIndex].value) {
		bgnDay	= parseInt(minDate.substring(6,8), 10);
	}
	else if (maxDate.substring(0,6) == date1[date1.selectedIndex].value) {
		bgnDay	= 1;
		endDay	= parseInt(maxDate.substring(6,8), 10);
	}
	else {
		bgnDay	= 1;
	}

	// 일반적인 경우
	if (viewType == null) {
		clearCalendarSelectItem(date2);
		//date2.length = 0;
		//date2.length = 0;
		for (var i=parseInt(bgnDay); i<=parseInt(endDay); i++) {
			var tmp = i;
			if (tmp<10) tmp = "0" + i;

			addCalendarSelectItem(date2, tmp, tmp+"일");
			//date2.length = date2.length+1;
			//date2[date2.length-1].value	= tmp;
			//date2[date2.length-1].text	= tmp + "일";
		}

		if (depDate != null && depDate.length == 8) {
			selDay = depDate.substring(6,8);
		}

		date2.value = selDay;
		if (date2.selectedIndex < 0) date2.selectedIndex = 0;
		setWeekName(name, date1[date1.selectedIndex].value + date2[date2.selectedIndex].value);
	}
	// 상반기/하반기 구분시
	else {
		clearCalendarSelectItem(date2);
		//date2.length = 0;
		//date2.length = 0;

		// 상반기 체크
		if (bgnDay <= 15) {
			addCalendarSelectItem(date2, "01", (defineLang == "ko" ? "상반기" : ""));
			//date2.length = date2.length+1;
			//date2[date2.length-1].value	= "01";
			//date2[date2.length-1].text	= defineLang == "ko" ? "상반기" : "";
		}

		// 하반기 체크
		if (endDay > 15) {
			addCalendarSelectItem(date2, "16", (defineLang == "ko" ? "하반기" : ""));
			//date2.length = date2.length+1;
			//date2[date2.length-1].value	= "16";
			//date2[date2.length-1].text	= defineLang == "ko" ? "하반기" : "";
		}
	}
}

///////////////////////////////////////
// 요일 지정
function setWeekName(name, value) {
	var weekName	= new Array("일", "월", "화", "수", "목", "금", "토");
	var week	= document.getElementById(name+"Week");
	var selDate	= "";

	if (week == null) return;

	if (value == null || value == "undefined") {
		var date1	= document.getElementsByName(name+"Date1")[0];
		var date2	= document.getElementsByName(name+"Date2")[0];
		value = date1[date1.selectedIndex].value + date2[date2.selectedIndex].value;
	}

	if (value.length == 10) {
		value = value.substring(0,4) + value.substring(5,7) + value.substring(8,10);
	}

	if (value.length != 8) return;

	selDate = new Date(parseInt(value.substring(0,4), 10), parseInt(value.substring(4,6), 10)-1, parseInt(value.substring(6,8),10));
	week.innerHTML = weekName[selDate.getDay()];
}

///////////////////////////////////////
// 년월, 일 선택박스형 날짜입력
function showFlightDate(name, event) {
	var date1	= document.getElementsByName(name+"Date1")[0];
	var date2	= document.getElementsByName(name+"Date2")[0];
	var year	= parseInt(date1[date1.selectedIndex].value.substring(0,4), 10);
	var month	= parseInt(date1[date1.selectedIndex].value.substring(4,6), 10) -1;
	var day		= parseInt(date2[date2.selectedIndex].value, 10);
	cal_show(year, month, day, name, event);
}

///////////////////////////////////////
// INPUTBOX형 날짜입력
function showInputDate(name, event, objID) {
	var date	= document.getElementsByName(name+"Date")[0];
	var value	= date.value;

	if (value.length == 10) {
		value = value.substring(0,4) + value.substring(5,7) + value.substring(8,10);
	}

	if (value == "") value = defineToday;

	var year	= parseInt(value.substring(0,4), 10);
	var month	= parseInt(value.substring(4,6), 10) -1;
	var day		= parseInt(value.substring(6,8), 10);
	cal_show(year, month, day, name, event, objID);
}

///////////////////////////////////////
// 날짜선택 결과 지정
function setResultDate(name, value) {
	var date	= document.getElementsByName(name+"Date");
	var date1	= document.getElementsByName(name+"Date1");
	var date2	= document.getElementsByName(name+"Date2");

	// INPUT 박스 형태
	if (date != null && date.length > 0 && date[0].type.toUpperCase() == "TEXT") {
		if (parseInt(value) < parseInt(defineBgnDate) || parseInt(value) > parseInt(defineEndDate)) {
			alert("검색일자를 다시 선택하여 주십시오.\n\n가능일 : "+defineBgnDate.substring(0,4)+"-"+defineBgnDate.substring(4,6)+"-"+defineBgnDate.substring(6,8)+" ~ "+defineEndDate.substring(0,4)+"-"+defineEndDate.substring(4,6)+"-"+defineEndDate.substring(6,8));
			return false;
		}

		date[0].value = value;
		try {
			changeInputBox(name); // 빈함수를 만들어줘야한다. 20080617 by mhs
		}
		catch(e) {}
	}
	// 선택 박스 형태
	else if (date1 != null && date2 != null && date1.length > 0 && date2.length > 0) {
		date1 = date1[0];
		date2 = date2[0];
		var value1	= date1[date1.selectedIndex].value;
		var value2	= date2[date2.selectedIndex].value;

		date1.value = value.substring(0,6);
		if (date1.selectedIndex < 0 || date1[date1.selectedIndex].value != value.substring(0,6)) {
			date1.value = value1;
			date2.value = value2;
			alert("여행일자를 다시 선택하여 주십시오.\n\n가능일 : "+defineBgnDate.substring(0,4)+"-"+defineBgnDate.substring(4,6)+"-"+defineBgnDate.substring(6,8)+" ~ "+defineEndDate.substring(0,4)+"-"+defineEndDate.substring(4,6)+"-"+defineEndDate.substring(6,8));
			return false;
		}
		changeMonth(name);
		date2.value = value.substring(6,8);

		if (date2.selectedIndex < 0 || date2[date2.selectedIndex].value != value.substring(6,8)) {
			date1.value = value1;
			changeMonth(name);
			date2.value = value2;
			alert("여행일자를 다시 선택하여 주십시오.\n\n가능일 : "+defineBgnDate.substring(0,4)+"-"+defineBgnDate.substring(4,6)+"-"+defineBgnDate.substring(6,8)+" ~ "+defineEndDate.substring(0,4)+"-"+defineEndDate.substring(4,6)+"-"+defineEndDate.substring(6,8));
			return false;
		}
	}

	setWeekName(name, value);
	return true;
}

///////////////////////////////////////
// 월시즌 이동
function getMoveMonthSeason(date, move) {
	var result	= "";
	var tmpDate	= null;
	
	// 하반기 -> 상반기
	if (date.substring(6,8) != "01") {
		if (move == -1) {
			tmpDate	= new Date(parseInt(date.substring(0,4), 10), parseInt(date.substring(4,6), 10)-1, 1);
		}
		else if (move == 1) {
			tmpDate	= new Date(parseInt(date.substring(0,4), 10), parseInt(date.substring(4,6), 10), 1);
		}
	}
	// 상반기 -> 하반기
	else {
		if (move == -1) {
			tmpDate	= new Date(parseInt(date.substring(0,4), 10), parseInt(date.substring(4,6), 10)-2, 16);
		}
		else if (move == 1) {
			tmpDate	= new Date(parseInt(date.substring(0,4), 10), parseInt(date.substring(4,6), 10)-1, 16);
		}
	}

	// 날짜생성
	var year	= tmpDate.getYear();
	var month	= tmpDate.getMonth()+1;
	var day		= tmpDate.getDate();

	if (year < 1900) year += 1900;
	year	= "" + year;
	month	= "" + month;
	day		= "" + day;

	if (month.length == 1)	month = "0" + month;
	if (day.length == 1)	day = "0" + day;

	result = year + month + day;

	return result;
}

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

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