/* ============================================================================
 * File Name	: em002.js
 * Description	: ³¯Â¥/½Ã°£ °ü·Ã ÇÔ¼ö
 * Author		: ±èÇö¼ö
 * Create Date	: 2004-03-03
 * History		:
 *	- 2004-03-03, ±èÇö¼ö	 : ÃÊ±âÀÛ¼º
 * Summary
	- isDateType	: ¹®ÀÚ¿­ÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀÌ µ¥ÀÌÅÍÇü½ÄÀÎÁö ¿©ºÎ
	- setYear		: ³âÇü½Ä Ã¼Å©
	- setMonth		: ¿ùÇü½Ä Ã¼Å©
	- setDay		: ÀÏÇü½Ä Ã¼Å©
 ============================================================================*/

// Week
var DAY_SUN    = 0;
var DAY_MON    = 1;
var DAY_TUE    = 2;
var DAY_WED    = 3;
var DAY_THU    = 4;
var DAY_FRI    = 5;
var DAY_SAT    = 6;

// Month
var MON_JAN    = 1;
var MON_FEB    = 2;
var MON_MAR    = 3;
var MON_APR    = 4;
var MON_MAY    = 5;
var MON_JUN    = 6;
var MON_JUL    = 7;
var MON_AUG    = 8;
var MON_SEP    = 9;
var MON_OCT    = 10;
var MON_NOV    = 11;
var MON_DEC    = 12;

/*	¿ùº° ÀÏ¼ö ¼³Á¤	 */
var iDaysInMonth = new Array(
	31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
);

/* ----------------------------------------------------------------------------
 * isDateType		: µ¥ÀÌÅÍÇü½ÄÀÇ ¹®ÀÚ¿­ÀÌ ¿Ã¹Ù¸¥Áö Ã¼Å©
 * Parameter
   - date			: [STRING] ³¯Â¥(³â-¿ù-ÀÏ)Çü½ÄÀÇ ¹®ÀÚ¿­
   - dtFlag			: [CHAR] ³â¿ùÀÏÀ» ±¸ºÐÁþ´Â ±¸ºÐÀÚ

 * return           : [BOOLEAN] ³Ñ¾î¿Â °ªÀÌ dateÇü½ÄÀÎÁöÀÇ ¿©ºÎ
 --------------------------------------------------------------------------- */
function isDateType(date, flag){
	var dateTemp = date.split(flag);

	if(dateTemp.length != 3){
		return false;
	} else {
		if(dateTemp[0] < 1900 || dateTemp[0] > 2100){
			return false;
		} else if(dateTemp[1] > 12){
			return false;
		} else if(dateTemp[2] > iGetDaysInMonth(dateTemp[0], dateTemp[1])){
			return false;
		}
	}
	return true;
}

/* ----------------------------------------------------------------------------
 * iGetDaysInMonth : Æ¯Á¤¿ùÀÇ ÀÏ¼ö¸¦ ±¸ÇÔ.
 * Parameter
   - year          : [NUMBER] ³â
   - month         : [NUMBER] ¿ù

 * return          : [NUMBER] ÀÏ¼ö
 --------------------------------------------------------------------------- */
function iGetDaysInMonth(year, month) {

	switch (month) {
		case MON_FEB:
			return iDaysInFebruary(year);
		case MON_JAN:
		case MON_MAR:
		case MON_APR:
		case MON_MAY:
		case MON_JUN:
		case MON_JUL:
		case MON_AUG:
		case MON_SEP:
		case MON_OCT:
		case MON_NOV:
		case MON_DEC:
			return iDaysInMonth[month - 1];
	}
	return 0;
}

/* ----------------------------------------------------------------------------
 * iDaysInFebruary : 2¿ù´Þ ÃÑ ÀÏ¼ö¸¦ ±¸ÇÔ
 * Parameter
   - year      : [NUMBER] °Ë»çÇÒ ³âµµ

 * return      : [NUMBER] ÇØ´ç³âµµÀÇ 2¿ù´Þ ÀÏ¼ö
 --------------------------------------------------------------------------- */
function iDaysInFebruary(year) {
	return (isLeapYear(year) ? 29 : 28);
}

/* ----------------------------------------------------------------------------
 * isLeapYear : Æ¯Á¤³âµµ°¡ À±³âÀÎÁö ¾Æ´ÑÁö °Ë»ç
 * Parameter
   - year      : [NUMBER]  °Ë»çÇÒ ³âµµ
 * return      : [BOOLEAN] À±³â ¿©ºÎ
 --------------------------------------------------------------------------- */
function isLeapYear(year) {
	return ((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0) ) );
}

/* ----------------------------------------------------------------------------
 * isDate		: ³¯Â¥Çü½Ä ¿©ºÎ
 * Parameter
   - date      : [DATE] Æ¯Á¤ÀÏ³¯Â¥
 * return      : [BOOLEAN] ³¯ÀÚÇü½Ä ¿©ºÎ
 --------------------------------------------------------------------------- */
function isDate(date){

	var len		= date.length;
	var year	= date.substring(0,		len-4);
	var month	= date.substring(len-4,	len-2);
	var day		= date.substring(len-2,	len);

	if(!isYear(year))
		return false;
	if(!isMonth(month))
		return false;
	if(!isDay(day))
		return false;

	if(iGetDaysInMonth(year, igetInt(month)) < day)
		return false;

	return true;
}

/* ----------------------------------------------------------------------------
 * isYear		: ³âÇü½Ä ¿©ºÎ
 * Parameter
   - year      : [DATE] Æ¯Á¤¿¬
 * return      : [BOOLEAN] ³âÇü½Ä ¿©ºÎ
 --------------------------------------------------------------------------- */
function isYear(year){
	var _year = igetInt(year);
		
	if(year.length == 4){
		// ¼öÁ¤¿ä¸Á : ÇöÁ¦ »ý³â¿ùÀÏ¿¡ ´ëÇÑ ºÎºÐ¸¸ Æ÷ÇÔ
		if(_year < 1900 || _year > new Date().getYear() + 1){
			return false;
		}
	} else if(year.length != 2){
		return false;
	}
	return true;
}

/* ----------------------------------------------------------------------------
 * isMonth		: ¿ùÇü½Ä ¿©ºÎ
 * Parameter
   - month      : [DATE] Æ¯Á¤¿ù
 * return      : [BOOLEAN] ¿ùÇü½Ä ¿©ºÎ
 --------------------------------------------------------------------------- */
function isMonth(month){
	var _month = igetInt(month);
		
	if(month.length != 2 && month.length != 1){
		return false;
	}
	if(_month < 1 || _month > 12){
		return false;
	}
	return true;
}

/* ----------------------------------------------------------------------------
 * isDay		: ÀÏÇü½Ä ¿©ºÎ
 * Parameter
   - Day      : [DATE] Æ¯Á¤ÀÏ
 * return      : [BOOLEAN] ÀÏÇü½Ä ¿©ºÎ
 --------------------------------------------------------------------------- */
function isDay(day){
	var _day = igetInt(day);
		
	if(day.length != 2 && day.length != 1){
		return false;
	}
	if(_day < 1 || _day > 31){
		return false;
	}
	return true;
}

/* ----------------------------------------------------------------------------
 * isHour		: ½Ã°£Çü½Ä ¿©ºÎ
 * Parameter
   - Hour      : [DATE] Æ¯Á¤½Ã°£
 * return      : [BOOLEAN] ½Ã°£Çü½Ä ¿©ºÎ
 --------------------------------------------------------------------------- */
function isHour(hour){
	var _hour = igetInt(hour);
		
	if(hour.length != 2 && hour.length != 1){
		return false;
	}
	if(_hour < 0 || _hour > 23){
		return false;
	}
	return true;
}

/* ----------------------------------------------------------------------------
 * isMinute		: ½Ã°£Çü½Ä ¿©ºÎ
 * Parameter
   - Hour      : [DATE] Æ¯Á¤½Ã°£
 * return      : [BOOLEAN] ½Ã°£Çü½Ä ¿©ºÎ
 --------------------------------------------------------------------------- */
function isMinute(minute){
	var _minute = igetInt(minute);
		
	if(minute.length != 2 && minute.length != 1){
		return false;
	}
	if(_minute < 0 || _minute > 59){
		return false;
	}
	return true;
}

/* ----------------------------------------------------------------------------
 * setYear		: ³âÇü½Ä Ã¼Å©
 * Parameter	: none
 * return       : [STRING] ³âÇü½ÄÀÇ ¹®ÀÚ¿­
 --------------------------------------------------------------------------- */
function setYear(){
	var year = event.srcElement.value;
	if(!year) return;
	if(!isYear(year)){
		alert("'" + year + "'³âÀº Ã³¸® ÇÒ¼ö ÀÖ´Â °ªÀÌ ¾Æ´Õ´Ï´Ù.");
		event.srcElement.focus();
		event.srcElement.select();
		return;
	}
	event.srcElement.value = year;
}

/* ----------------------------------------------------------------------------
 * setMonth		: ¿ùÇü½Ä Ã¼Å©
 * Parameter	: none
 * return       : [STRING] ¿ùÇü½ÄÀÇ ¹®ÀÚ¿­
 * notice
	- event»ý±ä ÇÊµåÀÇ °ªÀÌ ´ÞÀÇ Çü½ÄÀÌ ¾Æ´Ò°æ¿ì °æ°í¸¦, ÇÑÀÚ¸®ÀÏ°æ¿ì ¾Õ¿¡ "0"À» ºÙÀÓ
 --------------------------------------------------------------------------- */
function setMonth(){
	var mon = event.srcElement.value;
	if(!mon) return;
	if(mon.length == 1 && igetInt(mon) < 10){
		mon = "0" + mon;
	}
	if(!isMonth(mon)){
		alert("1¿ù¿¡¼­ 12¿ù »çÀÌ·Î ÀÔ·ÂÇØ ÁÖ¼¼¿ä.");
		event.srcElement.focus();
		event.srcElement.select();
		return;
	}
	event.srcElement.value = mon;
}

/* ----------------------------------------------------------------------------
 * setDay		: ÀÏÇü½Ä Ã¼Å©
 * Parameter	: none
 * return       : [STRING] ÀÏÇü½ÄÀÇ ¹®ÀÚ¿­
 * notice
	- event»ý±ä ÇÊµåÀÇ °ªÀÌ ÀÏÀÇ Çü½ÄÀÌ ¾Æ´Ò°æ¿ì °æ°í¸¦, ÇÑÀÚ¸®ÀÏ°æ¿ì ¾Õ¿¡ "0"À» ºÙÀÓ
 --------------------------------------------------------------------------- */
function setDay(){
	var day = event.srcElement.value;
	if(!day) return;
	if(day.length == 1 && igetInt(day) < 10){
		day = "0" + day;
	}
	if(!isDay(day)){
		alert("1ÀÏ¿¡¼­ 31ÀÏ »çÀÌ·Î ÀÔ·ÂÇØ ÁÖ¼¼¿ä.");
		event.srcElement.focus();
		event.srcElement.select();
		return;
	}
	event.srcElement.value = day;
	return;
}

/* ----------------------------------------------------------------------------
 * setHour		: ½Ã°£Çü½Ä Ã¼Å©
 * Parameter	: none
 * return       : [STRING] ½Ã°£Çü½ÄÀÇ ¹®ÀÚ¿­
 --------------------------------------------------------------------------- */
function setHour(){
	var hour = event.srcElement.value;
	if(!hour) return;
	if(hour.length == 1 && igetInt(hour) < 10){
		hour = "0" + hour;
	}
	if(!isHour(hour)){
		alert("0½Ã¿¡¼­ 23½Ã »çÀÌ·Î ÀÔ·ÂÇØ ÁÖ¼¼¿ä.");
		event.srcElement.focus();
		event.srcElement.select();
		return;
	}
	event.srcElement.value = hour;
	return;
}

/* ----------------------------------------------------------------------------
 * setMinute		: ºÐÇü½Ä Ã¼Å©
 * Parameter	: none
 * return       : [STRING] ºÐÇü½ÄÀÇ ¹®ÀÚ¿­
 --------------------------------------------------------------------------- */
function setMinute(){
	var minute = event.srcElement.value;
	if(!minute) return;
	if(minute.length == 1 && igetInt(minute) < 10){
		minute = "0" + minute;
	}
	if(!isMinute(minute)){
		alert("0ºÐ¿¡¼­ 59ºÐ »çÀÌ·Î ÀÔ·ÂÇØ ÁÖ¼¼¿ä.");
		event.srcElement.focus();
		event.srcElement.select();
		return;
	}
	event.srcElement.value = minute;
	return;
}

/* ----------------------------------------------------------------------------
 * getToday		: ÇØ´çÀÏ(Computer setting) °¡Á®¿À±â
 * Parameter	: none
 * return       : [ARRAY] ³â¿ùÀÏ ¹è¿­
 * notice
	- ³â 4ÀÚ¸®, ¿ù 2ÀÚ¸®, ÀÏ 2ÀÚ¸®
 --------------------------------------------------------------------------- */
function getToday(){
	
	var today = new Array(3);
	var toDate = new Date();
	today[0]	= toDate.getYear();
	today[1]	= toDate.getMonth() < 9 ? "0" + (toDate.getMonth()+1) : (toDate.getMonth()+1);
	today[2]	= toDate.getDate() < 10 ? "0" + toDate.getDate() : toDate.getDate();

	return today;
}

function getText2Date(text, type){
	switch(type){
	case 'ymdhn':
		if(text.length != 12) return null;

		var date = new Array(5);

		date[0]		= text.substring(0, 4);
		date[1]		= text.substring(4, 6);
		date[2]		= text.substring(6, 8);
		date[3]		= text.substring(8, 10);
		date[4]		= text.substring(10, 12);

		return date;
		break;
	}
}