﻿//날짜 형식을 검사한다.
function fn_DataVaildCheck(sDate)
{
	var bDateCheck = false;
	
	try
	{
		var arrDate = sDate.split("-");
		// "-"으로 분리된 년월일을 확인한다.
		if ( arrDate.length < 3 )
			return bDateCheck;

		if ( (fn_GetInt(arrDate[0]) < 0 || fn_GetInt(arrDate[0]) > 9999 ) || (isNaN(arrDate[0])) ){
			return bDateCheck;
			}
		
		if ( (fn_GetInt(arrDate[1]) < 1 || fn_GetInt(arrDate[1]) > 12 ) || (isNaN(arrDate[1])) ){
			return bDateCheck;
			}
		if ( (fn_GetInt(arrDate[2]) < 1 || fn_GetInt(arrDate[2]) > 31 ) || (isNaN(arrDate[2])) ){
			return bDateCheck;
			}
		
		bDateCheck = true;
		return bDateCheck;
	}
	catch (exception)
	{
		bDataCheck = false;
		return bDateCheck;
	}
}

//두 날짜 사이의 간격을 리턴한다.
function fn_CalculateDateDiff(sDate, eDate)
{
	var arrDate;
	var dtStart, dtEnd, dtDiff;
	var iDays;
	try
	{
		arrDate = sDate.split("-");
		dtStart = new Date( fn_GetInt(arrDate[0]), fn_GetInt(arrDate[1]) - 1, fn_GetInt(arrDate[2]) );
		arrDate = eDate.split("-");
		dtEnd = new Date( fn_GetInt(arrDate[0]), fn_GetInt(arrDate[1]) - 1, fn_GetInt(arrDate[2]) );
		dtDiff = dtEnd.getTime() - dtStart.getTime();
		iDays = Math.floor(dtDiff/1000/60/60/24);
		return iDays;
	}
	catch (exception)
	{
		return null;
	}	
}

//해당 날로부터 일수를 더한 일자를 반환한다.
function fn_AddDate(sDate, iDate)
{
	var strReturn;
	var arrDate;
	var dtOld;
	var iOld;
	var dtNew;
	try
	{
		arrDate = sDate.split("-");
		dtOld = new Date( fn_GetInt(arrDate[0]), fn_GetInt(arrDate[1]) - 1, fn_GetInt(arrDate[2]));
		iOld = dtOld.getTime();
		dtNew = new Date( iOld + ( iDate * 1000 * 60 * 60 * 24));
		strReturn = dtNew.getYear() + "-" + fn_LeadingZero(dtNew.getMonth() + 1) + "-" + fn_LeadingZero(dtNew.getDate());
	}
	catch ( exception ){}
	return strReturn;
}
    
//다국어지원용 날짜포맷 
var _strDTFormat;
function fn_DTFormat(dateTime,format)
{
	try
	{
		var oDate;
		var strTemp;
		var strImsi;
		
		//넘어온값 날짜변환
		if(typeof(dateTime) == "string")
		{
			dateTime = fn_ReplaceAll(dateTime,"-","/");
		}
		oCDate = new Date(dateTime);
		//현재 날짜포맷이 잡혀있지 않다면 새로 받아오도록 한다.
		if(format == null)
		{
			if(_strDTFormat == null)
			{
				var oXmlhttp;
				var oXmlDom;
				var oElemList;
				//현재 날짜포맷 가지고 오기
				oXmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
				strTemp = fn_GetWebRoot() + "Common/Authentication/ServerItems.aspx";
				oXmlDom = fn_GetXmlDomDocument(strTemp);
				oElemList = oXmlDom.getElementsByTagName("ROOT");
				_strDTFormat = oElemList.item(0).childNodes(1).text;
							
				if(oElemList != null) oElemList = null;
				if(oXmlDom != null) oXmlDom = null;
				if(oXmlhttp != null) oXmlhttp = null;
			}
			format = _strDTFormat.toUpperCase();
		}
		
		//해당날짜를 포맷을 변환
		strImsi = format.toUpperCase();
		strImsi = fn_ReplaceAll(strImsi,"YYYY",fn_LeadingZero(oCDate.getYear())); //YYYY변환
		strImsi = fn_ReplaceAll(strImsi,"MM",fn_LeadingZero(oCDate.getMonth() + 1)); //MM변환
		strImsi = fn_ReplaceAll(strImsi,"DD",fn_LeadingZero(oCDate.getDate())); //DD변환
		return strImsi;
	}
	catch(exception)
	{
		return dateTime;
	}
}	

