﻿/******************************************************** 
   파일명 : lib.date.js
   설  명 : 날짜와 시간관련 공통 함수 모음
   작성자 : 김현배 
   작성일 : 2008.08.18 
   수정일 : 2008.08.18 
*********************************************************/ 

/**
	함수명 : getYear
	설  명 : 오늘날짜의 년도를 얻는다.
	인  자 : 
	리  턴 : 오늘날짜의 년도
	사용법 : 
		var year = getYear();
 */
function getYear() {
	var date = new Date();
	return date.getYear();
}

/**
	함수명 : getMonth
	설  명 : 오늘날짜의 월을 얻는다.
	인  자 : isFormater : true, false
	리  턴 : 오늘날짜의 월
	사용법 : 
		var month = getMonth(true);	//9이하는 앞에 0을 추가하여 "09"형태의 두자리로 리턴
		var month = getMonth(false);	//9이하는 한자리로 리턴
 */
function getMonth(isFormater) {
	var date = new Date();
	var month = date.getMonth()+1;
	//두자리 형태로 리턴
	if(isFormater){
		if(parseInt(month, 10) < 10){
			month = "0" + month;
		}
	}
	return month;
}

/**
	함수명 : getDate
	설  명 : 오늘날짜의 일을 얻는다.
	인  자 : isFormater : true, false
	리  턴 : 오늘날짜의 일
	사용법 : 
		var date = getDate(true);	//9이하는 앞에 0을 추가하여 "09"형태의 두자리로 리턴
		var date = getDate(false);	//9이하는 한자리로 리턴
 */
function getDate(isFormater) {
	var date = new Date();
	var nDate = date.getDate();
	//두자리 형태로 리턴
	if(isFormater){
		if(parseInt(nDate, 10) < 10){
			nDate = "0" + nDate;
		}
	}
	return nDate;
}

/**
	함수명 : getToday
	설  명 : 오늘날짜를 YYYYMMDD포멧으로 리턴한다.
	인  자 : 
	리  턴 : 오늘날짜
	사용법 : 
		var today = getToday();
 */
function getToday() {
	return getYear() + "" + getMonth(true) + "" + getDate(true);
}


/**
	함수명 : isValidDate
	설  명 : 날짜의 포멧이 올바른지 확인한다.
	인  자 : str1:year, str2:month, str3:day
	리  턴 : 날짜의 유효성 : true or false;
	사용법 : 
		if(isValidDate("2008", "02", "31")){
			alert("날짜가 올바르지 않습니다");
		}

		혹은

		if(isValidDate("20080231")){
			alert("날짜가 올바르지 않습니다");
		}

		혹은

		if(isValidDate("2008-02-31")){
			alert("날짜가 올바르지 않습니다");
		}
 */
function isValidDate(str1, str2, str3)
{
	if(str2 == null && str3 == null){
		str1 = replaceAll(str1, "-", "");
		str2 = str1.substring(4, 6);
		str3 = str1.substring(6, 8);
		str1 = str1.substring(0, 4);
	}
	var year = parseInt(alltrim(str1), 10);
	var month = parseInt(alltrim(str2), 10) - 1;
	var day = parseInt(alltrim(str3), 10);


	if(!ValidYear(str1))
	{
		return false;
	}

	if(!ValidMonth(str2))
	{
		return false;
	}
	
	var endDay = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
	{
		endDay[1] = 29;
	}

	if(!Number(str3) || !(day >= 1 && day <= endDay[month]))
	{
		return false;
	}

	return true;
}

/**
	함수명 : isMoreToday
	설  명 : 입력한 값이 오늘날짜 같거나  큰지 여부 판단.
	인  자 : 체크가 필요한 일자
	리  턴 : 오늘날짜와 같거나 다음날짜일경우 true
	사용법 : 
		isMoreToday("20080101");
 */
function isMoreToday(value){
	value = replaceAll(value, "-", "");
	value = replaceAll(value, ".", "");
	var date = new Date();

	var year = date.getFullYear(); 
	var month = date.getMonth() + 1;
	var day = date.getDate();
	if(parseInt(month, 10) < 10){
		month = "0" + month;
	}
	if(parseInt(day, 10) < 10){
		day = "0" + day;
	}
	if(parseInt(year + "" + month + "" + day, 10) <= parseInt(value, 10)){
		return true;
	}
	return false;
}

/**
	함수명 : isDirectTime
	설  명 : 다이렉트 웹사이트의 영업시간을 체크한다.
	인  자 : 
	리  턴 : 현재 시간이 다이렉트 웹사이트의 영업시간인지 여부
	사용법 : 
		if(isDirectTime()){
			//다이렉트 영업시간
		}
 */
function isDirectTime(){
	return true;
}

/**
	함수명 : yearSelect
	설  명 : 날짜 셀렉트 박스를 만듬(연도)
	인  자 : 셀렉트박스 이름 : yy
	리  턴 : 
	사용법 : 
		yearSelect("birth_yy"); //셀렉트 박스 이름을 인자로 주고 function선언

		<div id="birth_yy"></div> //인자값과 동일한 div나 span을 만들어야함
 */
function yearSelect(yy, value) {
	var now = new Date();
	var cur_year = now.getYear();
	var str = "<select name='"+yy+"'>";
    str += "<option value=''>선택</option>";
	for (var i=cur_year ; i > cur_year-90; i--) {
		var selectStr = "";
		if(i == value){
			str += "<option value="+i+" "+selectStr+" selected>"+i+"</option>";
		}else{
			str += "<option value="+i+" "+selectStr+">"+i+"</option>";
		}
	}
	str +="</select>";
	document.getElementById(yy).innerHTML = str;	//인자값과 같은 id이름의 div나 span에 
													//innerHTML으로 만들어진 selectbox를 그려줌
}
	
/**
	함수명 : monthSelect
	설  명 : 날짜 셀렉트 박스를 만듬(달)
	인  자 : 셀렉트박스 이름 : mm
	리  턴 : 
	사용법 : 
		yearSelect("birth_mm"); //셀렉트 박스 이름을 인자로 주고 function선언

		<div id="birth_mm"></div> //인자값과 동일한 div나 span을 만들어야함
 */
function monthSelect(mm , value) {
	var str = "<select name='"+mm+"'>";
	str += "<option value=''>선택</option>";
	for (var i = 1 ; i < 13 ; i++) {
		var selectStr = "";
		if(i == value){
			str += "<option value="+i+" "+selectStr+" selected>"+i+"</option>";
		}else{
			str += "<option value="+i+" "+selectStr+">"+i+"</option>";
		}
	}
	str +="</select>";
	document.getElementById(mm).innerHTML = str;	//인자값과 같은 id이름의 div나 span에 
													//innerHTML으로 만들어진 selectbox를 그려줌
}

/**
	함수명 : daySelect
	설  명 : 날짜 셀렉트 박스를 만듬(일)
	인  자 : 셀렉트박스 이름 : dd
	리  턴 : 
	사용법 : 
		yearSelect("birth_dd"); //셀렉트 박스 이름을 인자로 주고 function선언

		<div id="birth_dd"></div> //인자값과 동일한 div나 span을 만들어야함
 */
function daySelect(dd , value) {
	var str = "<select name='"+dd+"'>";
	str += "<option value=''>선택</option>";
	for (var i = 1 ; i < 32 ; i++) {
		var selectStr = "";
		if(i == value){
			str += "<option value="+i+" "+selectStr+" selected>"+i+"</option>";
		}else{
			str += "<option value="+i+" "+selectStr+">"+i+"</option>";
		}
	}
	str +="</select>";
	document.getElementById(dd).innerHTML = str;	//인자값과 같은 id이름의 div나 span에 
													//innerHTML으로 만들어진 selectbox를 그려줌
}

/**
	함수명 : endDays
	설  명 : 해당 년, 월, 일의 마지막 일자값 가져오기
	인  자 : 년,월,일
	리  턴 : 해당 년, 월, 일의 마지막 일자값
	사용법 : 
		endDays(y, m, d);
 */
function endDays(y, m, d) {
    var MonthTable = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); // 양력 각달의 일수를 저장한 배열
    var endday = "";
    
    if (((Number(y) % 4 == 0) && (Number(y) % 100 != 0)) || (Number(y) % 400 == 0)) MonthTable[1] = 29;
    else MonthTable[1] = 28;
    endday = endday + y ;
    if ( m.length == 1 ) endday = endday + "0" + parseInt(m) ;
    else endday = endday + "" + m ;
    endday = endday + "" + MonthTable[Number(m)-1] ;
    return endday ;
}