/* Javascript ³¯Â¥ Çü½ÄÀ¸·Î º¯È¯(¿ùÀÇ °æ¿ì ÇÑ´ÞÀ» »« »óÅÂ·Î ¸®ÅÏÇÑ´Ù.)
	Date_to_java(date,t_y,t_m,t_d)	*/
/* Javascript Çü½ÄÀÇ ³¯Â¥¸¦ ½ÇÁ¦ÀÇ ¼ýÀÚÇü ¹è¿­ÇüÅÂ·Î ¸®ÅÏÇÑ´Ù.
	99³â ÀÌÇÏ´Â ¹«Á¶°Ç 1900 À» ´õÇÑ´Ù. Áï 1800³â´ë´Â ¾øÀ½...
	Date_to_common(date)	*/
/* ³¯Â¥ÀÇ ¼À, ¹è¿­·Î ¸®ÅÏÇÑ´Ù.
	function DateAdd(yy,mm,dd, flag, num)	*/
/* ¼­±â 1³â 1¿ù 1ÀÏ ÀÌÈÄ Áö³­ ÃÑ ³¯Â¥¼ö¸¦ ¹ÝÈ¯
	TotalDays(yy,mm,dd)	*/
/* ÃÑ ³¯Â¥¼ö¸¦ ÀÔ·Â¹Þ¾Æ, ³â¿ùÀÏÀÇ ¹è¿­·Î ¹ÝÈ¯
	ConvertToDateFormat(tdays)	*/
/* ³¯Â¥ ºñ±³ : ³¯Â¥ÀÇ Â÷ÀÌ¸¦ ¸®ÅÏÇÔ : e - s
	DateDiff(s_y, s_m, s_d, e_y, e_m, e_d)	*/
/* Á¦´ë·Î ÀÔ·ÂµÈ ³¯Â¥ÀÎÁö °Ë»ç
	CheckDate(v_year,v_month,v_day)	*/

// Javascript ³¯Â¥ Çü½ÄÀ¸·Î º¯È¯(¿ùÀÇ °æ¿ì ÇÑ´ÞÀ» »« »óÅÂ·Î ¸®ÅÏÇÑ´Ù.)
function Date_to_java(date,t_y,t_m,t_d) {
	var date, t_y, t_m, t_d;
	date.year = date.setYear(t_y);
	date.month = date.setMonth(t_m-1);
	date.days = date.setDate(t_d);
	// date.hours = date.setHours(date.getHours()-13);	// ¹Ì±¹µ¿ºÎ½Ã°£À¸·Î ¼ÂÆÃ½Ã
	return date;
}
// Javascript Çü½ÄÀÇ ³¯Â¥¸¦ ½ÇÁ¦ÀÇ ¼ýÀÚÇü ¹è¿­ÇüÅÂ·Î ¸®ÅÏÇÑ´Ù.
	// 99³â ÀÌÇÏ´Â ¹«Á¶°Ç 1900 À» ´õÇÑ´Ù. Áï 1800³â´ë´Â ¾øÀ½...
function Date_to_common(date) {
	var date, tmp, timeall;
	var date_arr = new Array(0,0,0);
	tmp = "" + date.getYear();
	if (tmp.length == 2) tmp = parseInt("19" + tmp);
	date_arr[0] = parseInt(tmp);
	date_arr[1] = date.getMonth() +1;
	date_arr[2] = date.getDate();
	return date_arr;
}
// ³¯Â¥ÀÇ ¼À, ¹è¿­·Î ¸®ÅÏÇÑ´Ù.
function DateAdd(yy,mm,dd, flag, num) {
	var yy,mm,dd, flag, num, i;
	var M_Table = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	var date_arr = new Array(yy,mm,dd);
	
	yy = parseInt(yy);
	mm = parseInt(mm);
	dd = parseInt(dd);
	num = parseInt(num);
	if (num == 0) return date_arr;
	
	if (flag == "yy") {
		yy += num;
		date_arr[0] = yy;
		if (dd == 29) {
			if (((yy % 4 == 0) && (yy % 100 != 0)) || (yy % 400 == 0)) {}
			else date_arr[2] = 28;
		}
		//date.setYear(date.getYear()+num)
	} else if (flag == "mm") {
		if (num > 0) {
			for (i=0;i<num;i++) {
				if (mm == 11) {
					yy += 1;
					mm = 0;
				} else mm += 1;
			}
			date_arr[0] = yy;
			date_arr[1] = mm;
		} else {
			for (i=0;i>num;i--) {
				if (mm == 0) {
					yy -= 1;
					mm = 11;
				} else mm -= 1;
			}
			date_arr[0] = yy;
			date_arr[1] = mm;
		}
		if (mm == 1) 
			if (((yy % 4 == 0) && (yy % 100 != 0)) || (yy % 400 == 0)) M_Table[1] = 29;
		if (dd > M_Table[mm]) date_arr[2] = M_Table[mm];
		//date.setMonth(date.getMonth()+num);
	} else if (flag == "dd") {
		var tdays = TotalDays(yy,mm,dd) + num;
		date_arr = ConvertToDateFormat(tdays);
	}
	return date_arr;
}
// ¼­±â 1³â 1¿ù 1ÀÏ ÀÌÈÄ Áö³­ ÃÑ ³¯Â¥¼ö¸¦ ¹ÝÈ¯
function TotalDays(yy,mm,dd) {
	var i, sum, month_num, tdays, nYears366;
	// ¾ç·Â °¢´ÞÀÇ ÀÏ¼ö¸¦ ÀúÀåÇÑ ¹è¿­
	var MonthTable = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	
	yy = parseInt(yy);
	mm = parseInt(mm);
	dd = parseInt(dd);
	if (((yy % 4 == 0) && (yy % 100 != 0)) || (yy % 400 == 0)) MonthTable[1] = 29;
	else MonthTable[1] = 28;
	
	sum = 0;
	month_num = mm;
	if (month_num > 11) month_num = 11;
	for (i=0;i<month_num;i++) {
		sum = sum + MonthTable[i];
	}
	// ÀÛ³â±îÁöÀÇ À±´ÞÀÇ °¹¼ö
	nYears366 = parseInt((yy - 1) / 4) - parseInt((yy - 1) / 100) + parseInt((yy - 1) / 400);

	tdays = (yy - 1) * 365 + sum + nYears366 + dd;

	return tdays;
}
// ÃÑ ³¯Â¥¼ö¸¦ ÀÔ·Â¹Þ¾Æ, ³â¿ùÀÏÀÇ ¹è¿­·Î ¹ÝÈ¯
function ConvertToDateFormat(tdays) {
	var tdays, sumdays, i, j;
	var M_Table = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	var Rtn_arr = new Array(0,0,0);
	yy=1;
	j=0;
	sumdays=0;
	sumdays_to_last_year=0;
	while(j==0) {
		sumdays_to_last_year = sumdays;
		if (((yy % 4 == 0) && (yy % 100 != 0)) || (yy % 400 == 0)) sumdays += 366;
		else sumdays += 365;
		if (sumdays >= tdays) {
			j=1;
			break;
		}
		yy++;
	}
	if (sumdays == tdays) {
		Rtn_arr[0] = yy;
		Rtn_arr[1] = 11;	// 12¿ù 31À» ÀÇ¹ÌÇÔ
		Rtn_arr[2] = 31;
		return Rtn_arr;
	}
	tdays = tdays - sumdays_to_last_year;		// ¹ÞÀº ³¯Â¥¿¡¼­ ÀÛ³â±îÁöÀÇ ÃÑ ³¯Â¥¼ö¸¦ »«´Ù.
	mm=0;
	j=0;
	tdays_to_last_month=0;
	while(j==0) {
		tdays_to_last_month = tdays;
		if (mm==1) {
			if (((yy % 4 == 0) && (yy % 100 != 0)) || (yy % 400 == 0)) M_Table[1] = 29;
			else M_Table[1] = 28;
		}
		tdays = tdays - M_Table[mm];
		if (tdays <= 0) {
			j=1;
			break;
		}
		mm++;
	}
	Rtn_arr[0] = yy;
	Rtn_arr[1] = mm;
	Rtn_arr[2] = tdays_to_last_month;
	return Rtn_arr;
}
// ³¯Â¥ ºñ±³ : ³¯Â¥ÀÇ Â÷ÀÌ¸¦ ¸®ÅÏÇÔ
function DateDiff(s_y, s_m, s_d, e_y, e_m, e_d) {
	var s_y, s_m, s_d, e_y, e_m, e_d, tmp;
	tmp = TotalDays(e_y, e_m-1, e_d) - TotalDays(s_y, s_m-1, s_d);	//¿ùÀº 0~11 ±îÁöÀÓ
	return tmp;
}
// Á¦´ë·Î ÀÔ·ÂµÈ ³¯Â¥ÀÎÁö °Ë»ç
function CheckDate(v_year,v_month,v_day) {
	// input º¯¼ö¸¦ int ·Î º¯È¯ÇØ¼­ ³Ñ±â¸é Á¦´ë·Î ¼öÇàÀÌ ¾ÈµÊ ¹Ýµå½Ã char ·Î ³Ñ°Ü¶ó...
	v_year	= "" + v_year;
	v_month	= "" + v_month;
	v_day	= "" + v_day;
	var err=0;
	if (isNaN(v_year)) return false;
	if (isNaN(v_month)) return false;
	if (isNaN(v_day)) return false;
	if ( v_year.length != 4) err=1;
	if ( v_month.length != 1 &&  v_month.length !=  2 ) err=1;
	if ( v_day.length != 1  &&  v_day.length !=  2) err=1;

	r_year = eval(v_year);
	r_month = eval(v_month);
	r_day = eval(v_day);

	if (r_month<1 || r_month>12) err = 1;
	if (r_day<1 || r_day>31) err = 1;
	if (r_year<0 ) err = 1;

	if (r_month==4 || r_month==6 || r_month==9 || r_month==11) {
		if (r_day==31) err=1;
	}

	// 2,À±³âÃ¼Å©
	if (r_month==2){
		var g=parseInt(r_year/4);

		if (isNaN(g)) err=1;	// À±³âÀº ¹Ýµå½Ã 4·Î ³ª´­¶§ ¸òÀÌ ¾ø¾î¾ß ÇÏ¹Ç·Î...
		if (r_day>29) err=1;
		if (r_day==29 && ((r_year/4)!=parseInt(r_year/4))) err=1;
		if (((r_year % 4 == 0) && (r_year % 100 != 0)) || (r_year % 400 == 0)) { }
		else
			if (r_day == 29) err=1;
	
	}

	if (err==1) return false;
	else return true;
}