/////////////////////////////////////////////////////////////////////
// date.js                                                         //
//                                                                 //
//      isValid()                                                  //
//      isValidDateYYYYMMDD()       --> string.js  (ÇÊ¿ä)          //
//      isValidDateYYYYMM()         --> string.js  (ÇÊ¿ä)          //
//      isValidDateYYYY()           --> string.js  (ÇÊ¿ä)          //
//      js_next_date()                                             //
//      isValidDateFromTo()         --> string.js  (ÇÊ¿ä)          //
//      datecmp()                                                  //
//      datecmp_1()                                                //
/////////////////////////////////////////////////////////////////////

/********************************************************************
*  Function Name : isValid()                                        *
*  Description   : Input Data°¡ Á¤È®ÇÑ ³â¿ùÀÏ·Î ±¸¼ºµÇ¾ú´ÂÁö Check  *
*                  (À±³âcheckÆ÷ÇÔ)                                  *
*  Input Data    : theDate -> (yyyymmdd)                            *
*  Output Data   : true/false                                       *
*  »ç¿ëµÇ´Â Function : None                                         *
********************************************************************/
function isValid(theDate) {

    var src = new String(theDate.value);
    var date = new String();
    var i, len = src.length;

    for(i = 0;i < len;i++) {
        if(src.charAt(i) != '-') {
            date = date + src.charAt(i);
        }
    }

    yy = parseInt(date.substring(0,4),10); 
    mm = parseInt(date.substring(4,6),10); 
    dd = parseInt(date.substring(6,8),10); 

/*
    date = removeChar(theDate.value,'-')

    yy = parseInt(date.substring(0,4),10); 
    mm = parseInt(date.substring(4,6),10); 
    dd = parseInt(date.substring(6,8),10); 

    yy = parseInt(theDate.value.substring(0,4),10); 
    mm = parseInt(theDate.value.substring(4,6),10); 
    dd = parseInt(theDate.value.substring(6,8),10); 
*/

    if (mm == 1)        max_days = 31 ;
    else if (mm == 2) { 
        if ((( yy % 4 == 0) && (yy % 100 != 0)) || (yy % 400 == 0)) 
                        max_days = 29; 
        else 
                        max_days = 28; 
    } 
    else if (mm == 3)   max_days = 31;
    else if (mm == 4)   max_days = 30;
    else if (mm == 5)   max_days = 31;
    else if (mm == 6)   max_days = 30;
    else if (mm == 7)   max_days = 31;
    else if (mm == 8)   max_days = 31;
    else if (mm == 9)   max_days = 30;
    else if (mm == 10)  max_days = 31;
    else if (mm == 11)  max_days = 30;
    else if (mm == 12)  max_days = 31;
    else { 
        alert("Please input the date in appropriate form. The month should be between 1 and 12.");
        return false; 
    } 
    
    if (dd < 1 || dd > max_days || dd > 31 ) { 
        alert("Please input the date in appropriate form. The date you input is out of accord with the month.");
        return false; 
    } else 
        return true;
}

/********************************************************************
*  Function Name : isValid1()                                        *
*  Description   : Input Data°¡ Á¤È®ÇÑ ³â¿ùÀÏ·Î ±¸¼ºµÇ¾ú´ÂÁö Check  *
*                  (À±³âcheckÆ÷ÇÔ)                                  *
*  Input Data    : theDate -> (yyyy-mm-dd)                          *
*  Output Data   : true/false                                       *
*  »ç¿ëµÇ´Â Function : None                                         *
********************************************************************/
function isValid1(theDate) {
    yy = parseInt(theDate.value.substring(0,4),10); 
    mm = parseInt(theDate.value.substring(5,7),10); 
    dd = parseInt(theDate.value.substring(8,10),10); 
    chk1 = theDate.value.charAt(4);
    chk2 = theDate.value.charAt(7);
    
    if(chk1 != "-" || chk2 != "-") {
//    	alert("It Appears you did not enter proper form of date.\nPlease fill in teh number in hte form of YYYY-MM-DD. (e.g) 1999-12-31."); 
        alert("Please input the date in appropriate form, YYYY-MM-DD.");
        return false; 
    }	

    if (mm == 1)        max_days = 31 ;
    else if (mm == 2) { 
        if ((( yy % 4 == 0) && (yy % 100 != 0)) || (yy % 400 == 0)) 
                        max_days = 29; 
        else 
                        max_days = 28; 
    } 
    else if (mm == 3)   max_days = 31;
    else if (mm == 4)   max_days = 30;
    else if (mm == 5)   max_days = 31;
    else if (mm == 6)   max_days = 30;
    else if (mm == 7)   max_days = 31;
    else if (mm == 8)   max_days = 31;
    else if (mm == 9)   max_days = 30;
    else if (mm == 10)  max_days = 31;
    else if (mm == 11)  max_days = 30;
    else if (mm == 12)  max_days = 31;
    else { 
        alert("Please input the date in appropriate form. The month should be between 1 and 12.");
        return false; 
    } 
    if (dd < 1 || dd > max_days || dd > 31 ) { 
        alert("Please input the date in appropriate form. The date you input is out of accord with the month.");
        return false; 
    } else 
        return true;
}

/********************************************************************
*  Function Name : isValidDateTime()                                *
*  Description   : Input Data°¡ Á¤È®ÇÑ ³â¿ùÀÏ ½ÃºÐÀ¸·Î·Î            *
                   ±¸¼ºµÇ¾ú´ÂÁö Check                               *
*  Input Data    : theYdti -> (hhddmmhhmi)                          *
*  Output Data   : true/false                                       *
*  »ç¿ëµÇ´Â Function : None                                         *
********************************************************************/
function isValidDateTime(theYdti) {
    yy = parseInt(theYdti.value.substring(0,4),10); 
    mm = parseInt(theYdti.value.substring(4,6),10); 
    dd = parseInt(theYdti.value.substring(6,8),10); 
    hh = parseInt(theYdti.value.substring(8,10),10); 
    mi = parseInt(theYdti.value.substring(10,12),10); 
    

    if (mm == 1)        max_days = 31 
    else if (mm == 2) { 
        if ((( yy % 4 == 0) && (yy % 100 != 0)) || (yy % 400 == 0)) 
                        max_days = 29; 
        else 
                        max_days = 28; 
    } 
    else if (mm == 3)   max_days = 31;
    else if (mm == 4)   max_days = 30;
    else if (mm == 5)   max_days = 31;
    else if (mm == 6)   max_days = 30;
    else if (mm == 7)   max_days = 31;
    else if (mm == 8)   max_days = 31;
    else if (mm == 9)   max_days = 30;
    else if (mm == 10)  max_days = 31;
    else if (mm == 11)  max_days = 30;
    else if (mm == 12)  max_days = 31;
    else { 
        alert("ÀÔ·ÂÇÑ ¿ùÀÌ Æ²¸³´Ï´Ù.."); 
        return false; 
    } 
    if (dd < 1 || dd > max_days) { 
        alert("ÀÔ·ÂÇÑ ÀÏÀÌ Æ²¸³´Ï´Ù.."); 
        return false; 
    } 

    if (hh > 23 || mi > 59) {
        alert("ÀÔ·ÂÇÑ ½Ã°£ÀÌ Æ²¸³´Ï´Ù.."); 
        return false; 
    }
    
    return true;
}

/********************************************************************
*  Function Name : isValidDateYYYYMMDDHHmm()                        *
*  Description   : Input Data°¡ Á¤È®ÇÑ ³â¿ùÀÏ½ÃºÐÀ¸·Î ±¸¼ºµÇ¾ú´ÂÁö  * 
                   Check                                            *
*  Input Data    : theYdti -> (yyyymmddhhmm)                        *
*  Output Data   : true/false                                       *
*  »ç¿ëµÇ´Â Function : isNumeric() --> string.js                    *
*                      isValid()                                    *
********************************************************************/
function isValidDateYYYYMMDDHHmm(theYdti) {
	if (theYdti.value.length != 12) {
		alert("12ÀÚ[YYYYMMDD][HHmm]·Î ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù."); 
        return false; 
    }

    if (!isNumeric(theYdti)){
        alert("¼ýÀÚ·Î ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.");
        return false;
    } 
    
    if (!isValidDateTime(theYdti)) {
        return false;
    }    

    return true;
}

/********************************************************************
*  Function Name : isValidDateYYYYMMDD()                            *
*  Description   : Input Data°¡ Á¤È®ÇÑ ³â¿ùÀÏ·Î ±¸¼ºµÇ¾ú´ÂÁö Check  *
*  Input Data    : theDate -> (yyyymmdd)                            *
*  Output Data   : true/false                                       *
*  »ç¿ëµÇ´Â Function : isNumeric() --> string.js                    *
*                      isValid()                                    *
********************************************************************/
function isValidDateYYYYMMDD(theDate) {
    var max_days; 
    var chkdate; 
    var day = new Date(); 

    if (!isNumeric(theDate)){
        alert("³¯Â¥´Â ¼ýÀÚ·Î ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.");
        return false;
    }
    
    if (theDate.value.length != 8) { 
        alert("8ÀÚ[YYYYMMDD]·Î ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù."); 
        return false; 
    }
    if (!isValid(theDate)) {
    	alert('theDate'+theDate.value);
        return false;
    }
    
    return true;
}

/********************************************************************
*  Function Name : isValidDateYYYYMM()                              *
*  Description   : Input Data°¡ Á¤È®ÇÑ ³â¿ù·Î ±¸¼ºµÇ¾ú´ÂÁö Check    *
*  Input Data    : theDate -> (yyyymm)                              *
*  Output Data   : true/false                                       *
*  »ç¿ëµÇ´Â Function : isNumeric() --> string.js                    *
********************************************************************/
function isValidDateYYYYMM(theDate) {
    var max_days;
    var chkdate;
    var day = new Date();
    var mm  = parseInt(theDate.value.substring(4, 6), 10);

    if(!isNumeric(theDate)) {
        alert("³¯Â¥´Â ¼ýÀÚ·Î ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.");
        return false;
    }
    
    if(theDate.value.length != 6) {
        alert("6ÀÚ[YYYYMM]·Î ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù."); 
        return false;
    }
    
    if(mm < 1 || mm > 12) {
        alert("ÀÔ·ÂÇÑ ¿ùÀÌ Æ²¸³´Ï´Ù.");
        return false;
    }

    return true;
}

/********************************************************************
*  Function Name : isValidDateYYYY()                                *
*  Description   : Input Data°¡ Á¤È®ÇÑ ³âÀ¸·Î ±¸¼ºµÇ¾ú´ÂÁö Check    *
*  Input Data    : theDate -> (yyyy)                                *
*  Output Data   : true/false                                       *
*  »ç¿ëµÇ´Â Function : isNumeric() --> string.js                    *
********************************************************************/
function isValidDateYYYY(theDate) {
    var max_days; 
    var chkdate; 
    var day = new Date(); 

    if (!isNumeric(theDate)){
        alert("³¯Â¥´Â ¼ýÀÚ·Î ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.");
        return false;
    }
    
    if (theDate.value.length != 4) { 
        alert("4ÀÚ[YYYY]·Î ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù."); 
        return false; 
    }
    
    return true;
}

/********************************************************************
*  Function Name : isValidDateTimeFromTo()                          *
*  Description   : Input Data°¡ Á¤È®ÇÑ ³â¿ùÀÏ½ÃºÐ·Î ±¸¼ºµÇ¾ú´ÂÁö    *
                   Check                                            *
*  Input Data    : fromYdti -> (yyyymmddhhmm),                      *
                   toYdti   -> (yyyymmddhhmm)                       *
*  Output Data   : true/false                                       *
*  »ç¿ëµÇ´Â Function : isNumeric() --> string.js                    *
*                      isValid()                                    *
*                      datecmp()                                    *
********************************************************************/
function isValidYdtiFromTo(fromYdti, toYdti) {
	if ( !isValidDateYYYYMMDDHHmm(fromYdti) || !isValidDateYYYYMMDDHHmm(toYdti)) {
        return false;
    }
    
    if (!datecmp(fromYdti, toYdti)) {
        alert("Á¾·á³â¿ùÀÏ½ÃºÐÀº ½ÃÀÛ³â¿ùÀÏ½ÃºÐº¸´Ù Ä¿¾ßÇÕ´Ï´Ù.");
        return false;
    }
    return true;
} 


/********************************************************************
*  Function Name : isValidDateFromTo()                              *
*  Description   : Input Data°¡ Á¤È®ÇÑ ³â¿ùÀÏ·Î ±¸¼ºµÇ¾ú´ÂÁö Check  *
*  Input Data    : fromDate -> (yyyymmdd), toDate -> (yyyymmdd)     *
*  Output Data   : true/false                                       *
*  »ç¿ëµÇ´Â Function : isNumeric() --> string.js                    *
*                      isValid()                                    *
*                      datecmp()                                    *
********************************************************************/
function isValidDateFromTo(fromDate, toDate) {
    var max_days; 
    var chkdate; 
    var day = new Date(); 

    if ((!isNumeric(fromDate)) || (!isNumeric(toDate))) {
        alert("³¯Â¥´Â ¼ýÀÚ·Î ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù! [YYYYMMDD]");
        return false;
    }
    
    if ((fromDate.value.length != 8) || (toDate.value.length != 8)) { 
        alert("8ÀÚ·Î ÀÔ·ÂÇÏ½Ê½Ã¿ä! [YYYYMMDD]");         return false; 
    }
    
    if (!isValid(fromDate) || !isValid(toDate)) {
        return false;
    }
/*    
    if (!isValid(toDate)) {
        return false;
    }
*/    

    if (!datecmp(fromDate, toDate)) {
        alert(toDate.value+"´Â "+fromDate.value+"º¸´Ù ÀÛ½À´Ï´Ù!");
        return false;
    }
    
    return true;
} 

/********************************************************************
*  Function Name : datecmp()                                        *
*  Description   : date1°ú date2ÀÇ Å©±âºñ±³                         *
*  Input Data    : date1, date2                                     *
*  Output Data   : true -> (date1 < date2), false -> (date1 > date2)*
*  »ç¿ëµÇ´Â Function : None                                         *
********************************************************************/
function datecmp(date1, date2) { 
	str1 = date1.value;
	str2 = date2.value;
	return str1 > str2 ? false : true;
}

/********************************************************************
*  Function Name : datecmp_1()                                      *
*  Description   : date1°ú date2ÀÇ Å©±âºñ±³                         *
*  Input Data    : date1, date2                                     *
*  Output Data   : true -> (date1<date2), false -> (date1>=date2)   *
*  »ç¿ëµÇ´Â Function : None                                         *
********************************************************************/
function datecmp_1(date1, date2) { 
	str1 = date1.value;
	str2 = date2.value;
	return str1 >= str2 ? false : true;
}

/********************************************************************
*  Function Name : datecmp_2()                                      *
*  Description   : date1°ú date2ÀÇ Å©±âºñ±³                         *
*  Input Data    : date1, date2                                     *
*  Output Data   : true -> (date1<date2), false -> (date1>=date2)   *
*  »ç¿ëµÇ´Â Function : None                                         *
********************************************************************/
function datecmp_2(date1, date2) { 
	
	str1 = removeChar(date1.value, '-');
	str2 = removeChar(date2.value, '-');
	
	return str1 >= str2 ? false : true;
}

/********************************************************************
*  Function Name : checkDate()                                      *
*  Description   : ÀÔ·ÂµÈ ÇÊµåÀÇ Date°¡ ¿Ã¹Ù¸¥Áö °Ë»ç ÇÑ´Ù.         *
*  Input Data    : field                                            *
*  Output Data   : true/false                                       *
*  »ç¿ëµÇ´Â Function : None                                         *
********************************************************************/
function checkDate( field ) { 
	date = field.value;

	if( date.length == 10 ){
		field.value = date.substring(0,4)+date.substring(5,7)+date.substring(8,10);
	    if( isValidDateYYYYMMDD(field) ){
	    	field.value = date;
	    	return;
	    }
	}
	else if( date.length == 8 ){
		if( isValidDateYYYYMMDD(field) ){
			return;
		}
	}
	else{
		alert( "Please input the date in appropriate from, yyyy-mm-dd.");
	}
	field.focus();
}

