/***********************************************************
 * AutoValidation15.js
 *   version 1.5Alpha
 *   Kim, Kang Seok (drkimks@tomatosystem.co.kr)
 *   yb2u (modify, yb2u@yb2u.com)
 *
 *   °³Á¤ÀÌ·Â
 *   2002.11.26 version 1.1
 *   2003.01.08 version 1.2
 *   2003.01.23 version 1.3
 *   2003.01.29 version 1.4
 *   2003.02.06 version 1.5
 *   2003.03.06 version 1.6
 *   Tomato System
 *
 ***********************************************************/

/***********************************************************
 * Usage
 *
 *   AutoValidate(FormObject)
 *
 *   <JavaScript>
 *   if (AutoValidate(FormObject) == false)
 *       return;
 *
 *   <Tags>
 *   title="ÀÌ¸§" kind="number" notnull="true" minlength="4" maxlength="10"
 *
 *   <kind>
 *      text (default)
 *      number
 *      alphanumeric
 *      korean
 *      ascii
 *      alphabet
 *      date : sep="([.]|[/]|[-]|[\s]|[\,])?"
 *      year month day : group="SameName"
 *      ssn : sep="([-]|[\s])?"
 *      ssn1 ssn2 : group="SameName"
 *      email
 *      nohanmail
 *
 *    <Àû¿ë°¡´ÉÇÑ Tags>
 *    input (text/password)
 *    textarea
 *    select
 *
 ***********************************************************/

/***********************************************************
 * Configuration
 ***********************************************************/

//var isDebug = true;
var isDebug = false;
var undefined = null;

/***********************************************************/

function AutoValidate(FormObject) {

//        if (isDebug) alert('step 1');

    var varLength = FormObject.elements.length;

    for (var i = 0; i < varLength; i++) {

        var obj			= FormObject.elements[i];
        var value		= obj.value;
        var kind		= obj.kind;
		var group		= obj.group;
        var notnull		= obj.notnull;
		var minlength	= obj.minlength;
        var maxlength	= obj.maxlength;
     
		/******************************************
         * Not Null Check
         ******************************************/
		// ¼Ó¼º¿¡ ´ëÇÑ Validation Ã¼Å© À¯¹«
		var blnCheckAttr = true;

		if (notnull == 'true') {
			blnCheckAttr = true;

			if (value == '') {
				return alertError(obj, 'notnull');
			}
		} else {
			if (value == '') {
				blnCheckAttr = false;
			} else {
				blnCheckAttr = true;
			}
		}

		if (blnCheckAttr) {
			/******************************************
			 * Min Length Check
			 ******************************************/
			if (minlength != '') {
				var length = getLength(value);
				if (length < minlength) {
					return alertError(obj, 'minlength');
				}
			}

			/******************************************
			 * Max Length Check
			 ******************************************/
			if (maxlength != '') {
				var length = getLength(value);
				if (length > maxlength) {
					return alertError(obj, 'maxlength');
				}
			}

			/******************************************
			 * Kind Check
			 *
			 * Kind Type
			 *   number
			 *   alphanumeric
			 *   alphabet
			 *   korean (2 bytes)
			 *   ascii
			 *   date
			 *   compareDate
			 *   year month day
			 *   email
			 *   nohanmail
			 *   ssn
			 *   ssn1 ssn2
			 *
			 ******************************************/
			if (kind == '')
				continue;

			// ¼ýÀÚ ÀÔ·ÂÅÂ±×ÀÎ °æ¿ì
			if (kind == 'number') {
				if (isNumber(value) == false) {
					return alertError(obj, 'number');
				}

			// ¿µ¹®ÀÚ+¼ýÀÚ ÀÔ·ÂÅÂ±×ÀÎ °æ¿ì
			} else if (kind == 'alphanumeric') {
				if (isAlphaNumeric(value) == false) {
					return alertError(obj, 'alphanumeric');
				}

			// ¿µ¹®ÀÚ ÀÔ·ÂÅÂ±×ÀÎ °æ¿ì
			} else if (kind == 'alphabet') {
				if (isAlphabet(value) == false) {
					return alertError(obj, 'alphabet');
				}

			// ÇÑ±Û(2 bytes) ÀÔ·ÂÅÂ±×ÀÎ °æ¿ì
			} else if (kind == 'korean') {
				if (isKorean(value) == false) {
					return alertError(obj, 'korean');
				}

			// ASCII ¹®ÀÚ¸¸ ÀÔ·Â¹Þ´Â °æ¿ì
			} else if (kind == 'ascii') {
				if (isASCII(value) == false) {
					return alertError(obj, 'ascii');
				}

			// Email ÀÔ·Â ÅÂ±×ÀÎ °æ¿ì
			} else if (kind == 'email') {
				if (isEmail(value) == false) {
					return alertError(obj, 'email');
				}

			// HanMail Ã¼Å©
			} else if (kind == 'nohanmail') {
				if (isEmail(value) == false) {
					return alertError(obj, 'email');
				} else if (isHanMail(value)) {
					return alertError(obj, 'hanmail');
				}

			// ÁÖ¹Îµî·Ï¹øÈ£ (6+7) ÀÔ·ÂÅÂ±×ÀÎ °æ¿ì
			} else if (kind == 'ssn') {
				if (isSsn(obj, value, 1) == false) {
					return alertError(obj, 'ssn');
				}

			/************************************
			 * ³¯Â¥ ÀÔ·Â ÅÂ±×
			 ************************************/

			// ³¯Â¥ ÀÔ·Â ÅÂ±×ÀÎ °æ¿ì (³â+¿ù+ÀÏ)
			} else if (kind == 'date') {
				if (isDate(obj, value, 1) == false) {
					return alertError(obj, 'date');
				}
				
			} else if (kind == 'date2') {
				if (isDate2(obj, value) == false)
				{
					return alertError(obj, 'date');
				}
				

			// ³âµµ ÇÏ³ª¸¸ ¹Þ´Â °æ¿ì
	//        } else if (kind == 'year') {
	//            if (checkYear(value) == false) {
	//                return alertError(obj, 'year');
	//            }

			/**
			 * ³¯Â¥ ÀÔ·Â Check
			 *
			 * ³âµµ, ¿ù, ÀÏÀÌ ¼­·Î´Ù¸¥ ÀÔ·ÂÅÂ±×·Î ÀÔ·ÂµÇ´Â °æ¿ì
			 * ³âµµ, ¿ù, ÀÏÀ» ¸ðµÎ ¹Þ¾Æ¼­ ³¯Â¥ °ËÁõ
			 * ÀÌ¸§¿¡ ´ÙÀ½°ú °°Àº ±ÔÄ¢ÀÌ ¹Ýµå½Ã ÀÖ¾î¾ß ÇÑ´Ù.
			 * 
			 * kind="year"  name="strSomeFieldNameYear"  title="µî·Ï³âµµ" notnull="true"
			 * kind="month" name="strSomeFieldNameMonth" title="µî·Ï¿ù"   notnull="true"
			 * kind="day"   name="strSomeFieldNameDay"   title="µî·ÏÀÏ"   notnull="true"
			 *
			 * ÃÑ 5°³ ³¯Â¥±îÁö Áö¿øÇÑ´Ù.
			 */
			} else if (kind == 'year') {
				var dateValue = getDate(FormObject, group);

				if (isDate(obj, dateValue, 3) == false) {
					return alertError(obj, 'date');
				}
	/*
			} else if (kind == 'month') {
				var dateValue = getDate(FormObject, group);

				if (isDate(dateValue) == false) {
					return alertError(obj, 'date');
				}
			} else if (kind == 'day') {
				var dateValue = getDate(FormObject, group);

				if (isDate(dateValue) == false) {
					return alertError(obj, 'date');
				}
	*/
			/**
			 * ÁÖ¹Îµî·Ï¹øÈ£ ÀÔ·Â Check
			 *
			 * ÁÖ¹Îµî·Ï¹øÈ£ ¾ÕµÚÀÚ¸®°¡ º°µµÀÇ ÅÂ±×·Î ÀÔ·ÂµÇ´Â °æ¿ì
			 * ¸í¸í±ÔÄ¢
			 * kind="ssn1" group="SameName" title="ÁÖ¹Îµî·Ï¹øÈ£", notnull="true"
			 * kind="ssn2" group="SameName" title="ÁÖ¹Îµî·Ï¹øÈ£", notnull="true"
			 */
			} else if (kind == 'ssn1') {
				var ssnValue = getSsn(FormObject, group);

				if (isSsn(obj, ssnValue, 2) == false) {
					return alertError(obj, 'ssn');
				}
	/*
			} else if (kind == 'ssn2') {
				var ssnValue = getSsn(FormObject, group);
				
				if (isSsn(ssnValue) == false) {
					return alertError(obj, 'ssn');
				}
	*/
			} else if (kind == 'phone') {
				if (isPhoneNumber(value) == false)
				{
					return alertError(obj, 'phone');
				}
			}

			
			/******************************************
			 * Compare
			 *
			 *   <Compare_Attribute>
			 *      eq : Equal
			 *      ne : Not Equal
			 *      gt : Great Then
			 *      ge : Great/Equal
			 *      lt : Less Then
			 *      le : Less/Equal
			 *
			 *   <Tags>
			 *   kind="number" (Compare_Attribute)="ºñ±³´ë»ó_name"
			 ******************************************/

			var eq = obj.eq;
			var ne = obj.ne;
			var gt = obj.gt;
			var ge = obj.ge;
			var lt = obj.lt;
			var le = obj.le;

			if (eq == undefined)  eq = '';
			if (ne == undefined)  ne = '';
			if (gt == undefined)  gt = '';
			if (ge == undefined)  ge = '';
			if (lt == undefined)  lt = '';
			if (le == undefined)  le = '';

			var comp2Name = '';

			if      (eq != '')  comp2Name = eq;
			else if (ne != '')  comp2Name = ne;
			else if (gt != '')  comp2Name = gt;
			else if (ge != '')  comp2Name = ge;
			else if (lt != '')  comp2Name = lt;
			else if (le != '')  comp2Name = le;

			var comp1Value;
			var comp2Value;
			var comp2Title;

			if (comp2Name != '') {
				comp2Title = FormObject[comp2Name].title;

				if (kind == "number") {
					comp1Value = parseInt(value);
					comp2Value = parseInt(FormObject[comp2Name].value);
				} else {
					comp1Value = value;
					comp2Value = FormObject[comp2Name].value;
				}
			}


			if (eq != '') {
				if (comp1Value != comp2Value) {
					return alertCompError(obj, comp2Title, 'eq');
				}
			} else if (ne != '') {
				if (comp1Value == comp2Value) {
					return alertCompError(obj, comp2Title, 'ne');
				}
			} else if (gt != '') {
				if (comp1Value <= comp2Value) {
					return alertCompError(obj, comp2Title, 'gt');
				}
			} else if (ge != '') {
				if (comp1Value < comp2Value) {
					return alertCompError(obj, comp2Title, 'ge');
				}
			} else if (lt != '') {
				if (comp1Value >= comp2Value) {
					return alertCompError(obj, comp2Title, 'lt');
				}
			} else if (le != '') {
				if (comp1Value > comp2Value) {
					return alertCompError(obj, comp2Title, 'le');
				}
			}
		}
    }
}



/******************************************************
 * ¸Þ½ÃÁö & Æ÷Ä¿½º ÇÔ¼ö
 ******************************************************/
function alertError(obj, error) {
    var title     = obj.title;
    var minlength = obj.minlength;
	var maxlength = obj.maxlength;

    if      (error == 'notnull'     ) alert(title + 'À»(¸¦) ÀÔ·ÂÇÏ½Ê½Ã¿À.');
    else if (error == 'minlength'   ) alert(title + 'À»(¸¦) ' + minlength + 'ÀÚ ÀÌ»ó Àû¾îÁÖ¼¼¿ä.');
    else if (error == 'maxlength'   ) alert(title + 'Àº(´Â) ' + maxlength + 'ÀÚ¸¦ ³ÑÀ» ¼ö ¾ø½À´Ï´Ù.');
    else if (error == 'number'      ) alert(title + 'Àº(´Â) ¼ýÀÚ¸¸ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.');
    else if (error == 'alphanumeric') alert(title + 'Àº(´Â) ¾ËÆÄºª°ú ¼ýÀÚ¸¸ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.');
    else if (error == 'alphabet'    ) alert(title + 'Àº(´Â) ¾ËÆÄºª¸¸ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.');
    else if (error == 'korean'      ) alert(title + 'Àº(´Â) ÇÑ±Û¸¸ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.');
    else if (error == 'ascii'       ) alert(title + 'Àº(´Â) ÇÑ±ÛÀ» ÀÔ·ÂÇÒ ¼ö ¾ø½À´Ï´Ù.');
    else if (error == 'date'        ) alert(title + 'Àº(´Â) Àß¸øµÈ ³¯Â¥ ÀÔ´Ï´Ù.');
    else if (error == 'email'       ) alert(title + 'Àº(´Â) Àß¸øµÈ ÀÌ¸ÞÀÏ ÁÖ¼Ò ÀÔ´Ï´Ù.');
    else if (error == 'hanmail'     ) alert(title + '¿¡ hanmail.netÀº »ç¿ëÇÏ½Ç ¼ö ¾ø½À´Ï´Ù.');
    else if (error == 'ssn'         ) alert('Àß¸øµÈ ÁÖ¹Îµî·Ï¹øÈ£ ÀÔ´Ï´Ù.');
    else if (error == 'phone'       ) alert(title + 'Àº(´Â) Àß¸øµÈ ÀüÈ­¹øÈ£ ÀÔ´Ï´Ù.');
    else                              alert('°³¹ßÀÚ´Ô ' + title + 'ÀÇ À¯È¿¼º °Ë»çÁß ¹®Á¦°¡ ¹ß»ýÇß½À´Ï´Ù.');

    obj.focus();

    return false;
}


function alertCompError(obj, comp2Title, error) {
    var comp1Title = obj.title;

    if      (error == 'eq') alert(comp1Title + '¿Í(°ú) ' + comp2Title + 'Àº(´Â) °°¾Æ¾ß ÇÕ´Ï´Ù.'      );
	else if (error == 'ne') alert(comp1Title + '¿Í(°ú) ' + comp2Title + 'Àº(´Â) °°À¸¸é ¾È µË´Ï´Ù.'   );
	else if (error == 'gt') alert(comp1Title + 'Àº(´Â) ' + comp2Title + ' º¸´Ù Ä¿¾ß ÇÕ´Ï´Ù.'         );
	else if (error == 'ge') alert(comp1Title + 'Àº(´Â) ' + comp2Title + ' º¸´Ù Å©°Å³ª °°¾Æ¾ß ÇÕ´Ï´Ù.');
	else if (error == 'lt') alert(comp1Title + 'Àº(´Â) ' + comp2Title + ' º¸´Ù ÀÛ¾Æ¾ß ÇÕ´Ï´Ù.'       );
	else if (error == 'le') alert(comp1Title + 'Àº(´Â) ' + comp2Title + ' º¸´Ù ÀÛ°Å³ª °°¾Æ¾ß ÇÕ´Ï´Ù.');
    else                    alert('°³¹ßÀÚ´Ô ' + comp1Title + '¿Í(°ú) ' + comp2Title + 'ÀÇ À¯È¿¼º °Ë»çÁß ¹®Á¦°¡ ¹ß»ýÇß½À´Ï´Ù.');

    obj.focus();

    return false;
}



/******************************************************
 * ÁÖ¹Îµî·Ï¹øÈ£ Ã¼Å© ÇÔ¼ö
 ******************************************************/
function isSsn(obj, value, fieldCount) {
	var sep = obj.sep;
	if (sep == undefined) {
		sep = "";
	}

    var pattern = /^([0-9][0-9][0-1][0-9][0-3][0-9])([-]|[\s])?([1-4][0-9][0-9][0-9][0-9][0-9][0-9])$/g;

	if(pattern.test(value)) {
		var ssn1 = RegExp.$1;
		var ssn2 = RegExp.$3;

		if (fieldCount == 1) {
			obj.value = ssn1 + sep + ssn2;
		}

		return checkSsn(ssn1, ssn2);
	} else {
		return false;
	}
}


/******************************************************
 * Email Ã¼Å© ÇÔ¼ö
 ******************************************************/
function isEmail(value) {
    //var pattern = /^(\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    //                 \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
	var pattern = /^[\w-]+([\\\.]+[\w-]*)?@([\w-]+\.)+[\w-]+$/i;
	return pattern.test(value);
	return true;
}


/******************************************************
 * Han Mail Ã¼Å© ÇÔ¼ö
 ******************************************************/
function isHanMail(value) {
    var varDomain = value.substring(value.indexOf("@")+1).toLowerCase();
    if (varDomain == "hanmail.net") return true;
    return false;
}

/******************************************************
 * ÀüÈ­¹øÈ£ Ã¼Å© ÇÔ¼ö
 ******************************************************/
function isPhoneNumber(value) {
    var varField = value.split("-");
    if (varField.length < 2 || varField.length > 3)
    {
        return false;
    }
    for (var i = 0; i < varField.length; i++)
    {
        if (isNumber(varField[i]) == false) {
            return false;
        }
    }
    return true;
}

/******************************************************
 * ³¯Â¥ Ã¼Å© ÇÔ¼ö
 ******************************************************/
function isDate(obj, value, fieldcount) {
	var sep = obj.sep;
	if (sep == undefined) {
		sep = "";
	}

    var pattern = /^([1-2][0-9][0-9][0-9])([.]|[/]|[-]|[\s]|[\,])?([0-1][0-9]|[1-9])([.]|[/]|[-]|[\s]|[\,])?([0-3][0-9]|[1-9])$/g;

	if(pattern.test(value)) {
		var year  = RegExp.$1;
		var month = RegExp.$3;
		var day   = RegExp.$5;

		if (fieldcount == 1) {
			var printMonth;
			var printDay;

			if (month.length == 1)  printMonth = "0" + month;
			else                    printMonth = month;

			if (day.length   == 1)  printDay   = "0" + day;
			else                    printDay   = day;

			obj.value = year + sep + printMonth + sep + printDay;
		}

		return checkDate(year, month, day);
	} else {
		return false;
	}
}

function isDate2(obj, value) {
	var sep = obj.sep;
	if (sep == undefined) {
		sep = "";
	}
	var year  = value.substring(0, 4);
	var month = value.substring(5, 7); 
    var printMonth;

	if (month.length == 1)  printMonth = "0" + month;
	else                    printMonth = month;

	obj.value = year + sep + printMonth;

	return checkDate2(year, month);
}


/******************************************************
 * ±æÀÌ Ã¼Å© ÇÔ¼ö
 ******************************************************/
function getLength(value) {
    var length = 0;
    var i = 0;
    while(true) {  
        var ch = escape(value.charAt(i++));
        if ( ch == "" || ch == null ) {
            break;
        }
        length  += strCharByte(ch);
    }
    return length;
}

/******************************************************
 * ÇÑ¹®ÀÚ°¡ 1 byteÀÎÁö 2 bytesÀÎÁö Ã¼Å©ÇÏ´Â ÇÔ¼ö
 ******************************************************/
function strCharByte(chStr) {
    if (chStr.substring(0, 2) == "%u") {
        if (chStr.substring(2,4) == "00") {
            return 1; 
        } else {
            return 2; //ÇÑ±Û 
        }
    } else if (chStr.substring(0,1) == "%") { 
        if (parseInt(chStr.substring(1,3), 16) > 127) {
            return 2; //ÇÑ±Û 
        } else {
            return 1; 
        }
    } else {
        return 1;
    }
}


/******************************************************
 * ¼ýÀÚ check ÇÔ¼ö
 ******************************************************/
function isNumber(value) {
    for (var i=0; i < value.length; i++) {
        if (!('0' <= value.charAt(i) && value.charAt(i) <= '9')) {
            return false;
        }
    }
    return true;
}

/******************************************************
 * ¾ËÆÄºª check ÇÔ¼ö
 ******************************************************/
function isAlphabet(value) {
    for (var i = 0; i < value.length; i++) {
        temp = value.substring(i, i+1);
        if (value.indexOf(temp) == -1) { 
            return false; 
        } else if (!(('a' <= temp && temp < 'z') ||
                     ('A' <= temp && temp < 'Z') ||
                     (' ' == temp))) {
            return false;
        }
    }
    return true;
}

/******************************************************
 * ¾ËÆÄºª + ¼ýÀÚ + È®Àå¹®ÀÚ(-, _) check ÇÔ¼ö
 ******************************************************/
/*
function isExtChar(value) {
	var extchar = '-_';
	extchar.charAt(i)

    for (var i = 0; i < value.length; i++) {
        temp = value.substring(i, i+1);
        if (value.indexOf(temp) == -1) { 
            return false; 
        } else if (!(('a' <= temp && temp < 'z') ||
                     ('A' <= temp && temp < 'Z') ||
                     (' ' == temp))) {
            return false;
        }
    }
    return true;
}	
*/


/******************************************************
 * ¾Æ½ºÅ°¹®ÀÚ·Î¸¸ ±¸¼ºµÇ¾î ÀÖ´ÂÁö Check
 ******************************************************/
function isASCII(value) {
    if (value.length == 0) {
        return false;
    }

    for (var i = 0; i < value.length; i++ ) {
        // blank : 32
        // ~ : 126
        if (' ' > value.charAt(i) || value.charAt(i) > '~') {
            return false;
        }
    }
    return true;
}

/******************************************************
 * ¾ËÆÄºª°ú ¼ýÀÚ·Î ±¸¼ºµÇ¾î ÀÖ´ÂÁö Check
 ******************************************************/
function isAlphaNumeric(value) {
    if (value.length == 0) {
        return false;
    }

    for (var i = 0; i < value.length; i++ ) {
        if (!(('a' <= value.charAt(i) && value.charAt(i) <= 'z') ||
              ('A' <= value.charAt(i) && value.charAt(i) <= 'Z') ||
              ('0' <= value.charAt(i) && value.charAt(i) <= '9') ||
              (' ' == value.charAt(i)) )) {
            return false;
        }
    }
    return true;
}

/******************************************************
 * ÇÑ±Û(2byte)ÀÎÁö Check
 ******************************************************/
function isKorean(value) {
    var i = 0;
    while (true) {
        var varCh = value.charAt(i++);
        if ( varCh == "" || varCh == null ) {
            break;
        } else if (varCh == ' ') {
            continue;
        } else {
            var ch = escape(varCh);
            if (ch.substring(0, 2) == "%u") {
                if (ch.substring(2, 4) == "00") {
                    return false;
                }
            } else if (ch.substring(0, 1) == "%") {
                if (parseInt(ch.substring(1, 3), 16) <= 127) {
                    return false;
                }
            } else {
                return false;
            }
        }
    }
    return true;
}

/******************************************************
 * ÁÖ¹Îµî·Ï¹øÈ£ Check ÇÔ¼ö
 ******************************************************/
function checkSsn(first, last) {

    var a1 = first.substring(0, 1);
    var a2 = first.substring(1, 2);
    var a3 = first.substring(2, 3);
    var a4 = first.substring(3, 4);
    var a5 = first.substring(4, 5);
    var a6 = first.substring(5, 6);
    var check_digit = a1 * 2 + a2 * 3 + a3 * 4 + a4 * 5 + a5 * 6 + a6 * 7;
    var b1 = last.substring(0, 1);
    var b2 = last.substring(1, 2);
    var b3 = last.substring(2, 3);
    var b4 = last.substring(3, 4);
    var b5 = last.substring(4, 5);
    var b6 = last.substring(5, 6);
    var b7 = last.substring(6, 7);
    check_digit = check_digit + b1 * 8 + b2 * 9 + b3 * 2 + b4 * 3 + b5 * 4 + b6 * 5;

    check_digit = check_digit % 11;
    check_digit = 11 - check_digit;
    check_digit = check_digit % 10;

    if (check_digit != b7) {
        return false;
    }
    return true;
}

/******************************************************
 * ³¯Â¥ Check ÇÔ¼ö
 ******************************************************/
function checkDate(year, month, day) {

    if (checkYear(year) == false) {
        return false;
    }

    if (checkMonth(month) == false) {
        return false;
    }

    if (checkDay(day) == false) {
        return false;
    }

    var varYear  = Number(year);
    var varMonth = Number(month);
    var varDay   = Number(day);

    if (varDay > daysInMonth[varMonth]) {
        return false;
    }

    if (varMonth == 2 && varDay > daysInFebrary(varYear)) {
        return false;
    }

    return true;
}

function checkDate2(year, month) {

    if (checkYear(year) == false) {
        return false;
    }

    if (checkMonth(month) == false) {
        return false;
    }

    var varYear  = Number(year);
    var varMonth = Number(month);

    return true;
}

function checkYear(year) {
    if (year == '') {
        return false;
    }
    if (isNumber(year) == false) {
        return false;
    }
    var varYear = Number(year);
    if (varYear < 1889 || varYear > 2100) {
        return false;
    }
    return true;
}

function checkMonth(month) {
    if (month == '') {
        return false;
    }
    if (isNumber(month) == false) {
        return false;
    }
    var varMonth = Number(month);
    if (varMonth < 1 || varMonth > 12) {
        return false;
    }
    return true;
}

function checkDay(day) {
    if (day == '') {
        return false;
    }
    if (isNumber(day) == false) {
        return false;
    }
    var varDay = Number(day);
    if (varDay < 1 || varDay > 31) {
        return false;
    }
    return true;
}

var daysInMonth = new Array(13);
daysInMonth[1]  = 31;
daysInMonth[2]  = 29;
daysInMonth[3]  = 31;
daysInMonth[4]  = 30;
daysInMonth[5]  = 31;
daysInMonth[6]  = 30;
daysInMonth[7]  = 31;
daysInMonth[8]  = 31;
daysInMonth[9]  = 30;
daysInMonth[10] = 31;
daysInMonth[11] = 30;
daysInMonth[12] = 31;

function daysInFebrary(year) { 
    return (year % 4 == 0 && (!(year % 100 == 0) || (year % 400 == 0)) ? 29 : 28); 
}


/******************************************************
 * ÁÖ¹Îµî·Ï¹øÈ£ÀÇ ¾Õ6ÀÚ¸®¿Í µÚ7ÀÚ¸®°¡ ´Ù¸¥ ÇÊµåÀÏ¶§, ÇÏ³ª·Î ÇÕÄ£ ssn ÇÊµå »ý¼º
 ******************************************************/
function getSsn(FormObject, groupValue) {
	var varLength = FormObject.elements.length;
	var ssn1Value = "";
	var ssn2Value = "";

    for (var i = 0; i < varLength; i++) {
        var obj   = FormObject.elements[i];
        var value = obj.value;
        var kind  = obj.kind;
        var group = obj.group;
        
        if (group == groupValue) {
			if      (kind == "ssn1")  ssn1Value = value;
			else if (kind == "ssn2")  ssn2Value = value;

			if (!(ssn1Value == "" || ssn2Value == "")) {
				return ssn1Value + ssn2Value;
			}
        }
	}

	return "";
}


/******************************************************
 * ³¯Â¥ÀÇ ¿¬, ¿ù, ÀÏÀÌ °¢°¢ ´Ù¸¥ ÇÊµåÀÏ¶§, ÇÏ³ª·Î ÇÕÄ£ date ÇÊµå »ý¼º
 ******************************************************/
function getDate(FormObject, groupValue) {
	var varLength = FormObject.elements.length;
	var yearValue  = "";
	var monthValue = "";
	var dayValue   = "";

    for (var i = 0; i < varLength; i++) {
        var obj   = FormObject.elements[i];
        var value = obj.value;
        var kind  = obj.kind;
        var group = obj.group;
        
        if (group == groupValue) {
			if      (kind == "year" )  yearValue  = value;
			else if (kind == "month")  monthValue = value;
			else if (kind == "day"  )  dayValue   = value;

			if (!(yearValue == "" || monthValue == "" || dayValue == "")) {
				return yearValue + monthValue + dayValue;
			}
		}
	}

	return "";
}
