/**
 * ************************************************
 * ¾÷¹«±×·ì¸í : °øÅë ÀÚ¹Ù½ºÅ©¸³Æ®
 * ¼­ºê¾÷¹«¸í : °øÅëÇÔ¼ö Ã³¸®
 * ¼³¸í : 
 * ÀÛ¼ºÀÚ : ±è¼®Ã¶ (indark9@gmail.com)
 * ÀÛ¼ºÀÏ : 2007. 7. 31 ¿ÀÈÄ 5:25:55
 * *************************************************
 */
/**
 * ÀÔ·Â°ªÀÇ Å©±â¸¦ °Ë»çÇÑ´Ù.
 * 
 * @param str	¹®ÀÚ¿­
 * @param min	ÃÖ¼Ò ÀÚ¸®¼ö 
 * @param max	ÃÖ´ë ÀÚ¸®¼ö 
 * @return
 */
function ValidSize(str, min, max)
{
    return strlen(str) >= min && strlen(str) <= max;
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ¼ýÀÚÀÎÁö °Ë»çÇÑ´Ù.
 * 
 * @param str	¹®ÀÚ¿­
 * @return 
 */
function Number(str)
{
    for (var i = 0; i < str.length; i++)
    {
        var code = str.charCodeAt(i);

        if ((code < 48) || (code > 57))
        {
            return false;
        }
    }

    return true;
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ÇÑ±ÛÀÎÁö °Ë»çÇÑ´Ù.
 * 
 * @param str	¹®ÀÚ¿­
 * @return 
 */
function Korean(str)
{
    for (var i = 0; i < str.length; i++)
    {
        var code = str.charCodeAt(i);

        if (!(code > 255))
        {
            return false;
        }
    }

    return true;
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ¿µ¹®ÀÎÁö °Ë»çÇÑ´Ù.
 * 
 * @param str	¹®ÀÚ¿­
 * @return 
 */
function Alphabet(str)
{
    for (var i = 0; i < str.length; i++)
    {
        var code = str.charCodeAt(i);

        if (!(code >= 65 || code <= 122))
        {
            return false;
        }
    }

    return true;
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ¿µ¹® ¶Ç´Â ¼ýÀÚÀÎÁö °Ë»çÇÑ´Ù.
 * 
 * @param str	¹®ÀÚ¿­
 * @return 
 */
function AlphaNumeric(str)
{
    for (var i = 0; i < str.length; i++)
    {
        var code = str.charCodeAt(i);

        if (!((code >= 65) && (code <= 122)) && !((code >= 48) && (code <= 57)))
        {
            return false;
        }
    }

    return true;
}

/**
 * µÎ °´Ã¼ÀÇ °ªÀÌ µ¿ÀÏÇÑÁö °Ë»çÇÑ´Ù.
 * 
 * @param str1	¹®ÀÚ¿­1
 * @param str2	¹®ÀÚ¿­2
 * @return 
 */
function Same(str1, str2)
{
    return str1 == str2;
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ¾ÆÀÌµð¿¡ ÀûÇÕÇÑÁö °Ë»çÇÑ´Ù.
 * - ¾ÆÀÌµðÇü½Ä : ¿µ¹®, ¼ýÀÚ, _ ¸¦ »ç¿ëÇÏ¿© 5ÀÚÀÌ»ó 10ÀÚÀÌÇÏ
 * 
 * @param str	¹®ÀÚ¿­
 * @return 
 */
function Id(str)
{
    if (!ValidSize(str, 5, 10))
    {
        return false;
    }

    return AlphaNumeric(str);
}

/**
 * °´Ã¼ÀÇ °ªÀÌ E-Mail¿¡ ÀûÇÕÇÑÁö °Ë»çÇÑ´Ù.
 * 
 * @param str	¹®ÀÚ¿­
 * @return 
 */
function Mail(str)
{
    var i = str.indexOf("@");
    if (i < 0)
    {
        return false;
    }

    i = str.indexOf(".");

    return i >= 0;
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ÁÖ¹Î¹øÈ£¿¡ ÀûÇÕÇÑÁö °Ë»çÇÑ´Ù.
 * 
 * @param str1	¹®ÀÚ¿­1
 * @param str1	¹®ÀÚ¿­2
 * @return 
 */
function Resno(str1, str2)
{
    if (!(ValidSize(str1, 6, 6) && ValidSize(str2, 7, 7))) {
        return false;
    }

    var hap = 0;
    for (var i = 0; i < 6; i++)
    {
        hap = hap + (str1.charAt(i) * (i + 2));
    }

    var n1 = str2.charAt(0);
    var n2 = str2.charAt(1);
    var n3 = str2.charAt(2);
    var n4 = str2.charAt(3);
    var n5 = str2.charAt(4);
    var n6 = str2.charAt(5);
    var n7 = str2.charAt(6);

    hap += n1 * 8 + n2 * 9 + n3 * 2 + n4 * 3 + n5 * 4 + n6 * 5;
    hap %= 11;
    hap = 11 - hap;
    hap %= 10;

    return hap == n7;
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ÀüÈ­¹øÈ£¿¡ ÀûÇÕÇÑÁö °Ë»çÇÑ´Ù.
 * 
 * @param str1	¹®ÀÚ¿­1
 * @param str2	¹®ÀÚ¿­2
 * @param str3	¹®ÀÚ¿­3
 * @return 
 */
function Phone(str1, str2, str3)
{
    if (!Number(str1) || !ValidSize(str1, 2, 3))
    {
        return false;
    }

    var ddd = ["02", "051", "053", "032", "062", "042", "052", "031", "033", "041", "043", "054", "055", "061", "063", "064"];

    var flag = false;
    for (var i = 0; i < ddd.length; i++)
    {
        if (ddd[i] == str1)
        {
            flag = true;
        }
    }

    return flag && Number(str2) && ValidSize(str2, 3, 4) && Number(str3) && ValidSize(str3, 4, 4);
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ÀüÈ­¹øÈ£¿¡ ÀûÇÕÇÑÁö °Ë»çÇÑ´Ù.
 * 
 * @param str1	¹®ÀÚ¿­1
 * @param str2	¹®ÀÚ¿­2
 * @param str3	¹®ÀÚ¿­3
 * @return 
 */
function Cellular(str1, str2, str3)
{
    if (!(Number(str1) && ValidSize(str1, 3, 3)))
    {
        return false;
    }

    var ddd = ["010", "011","016","017","018","019"];

    var flag = false;
    for (var i = 0; i < ddd.length; i++) {
        if (ddd[i] == str1)
        {
            flag = true;
        }
    }

    return flag && Number(str2) && ValidSize(str2, 3, 4) && Number(str3) && ValidSize(str3, 4, 4);
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ¿¬µµ¿¡ ÀûÇÕÇÑÁö °Ë»çÇÑ´Ù.
 * 
 * @param str	¹®ÀÚ¿­
 * @return 
 */
function ValidYear(str)
{
    var year = parseInt(trim(str), 10);

    return year >= 0 && ValidSize(str, 4, 4) && Number(str);
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ¿ù¿¡ ÀûÇÕÇÑÁö °Ë»çÇÑ´Ù.
 * 
 * @param str	¹®ÀÚ¿­
 * @return 
 */
function ValidMonth(str)
{
    var month = parseInt(trim(str), 10);


    return parseInt(month) >= 1 && parseInt(month) <= 12 && Number(str);
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ÀÏ¿¡ ÀûÇÕÇÑÁö °Ë»çÇÑ´Ù. (»èÁ¦´ë»ó)
 * 
 * @param str1	¹®ÀÚ¿­1
 * @param str2	¹®ÀÚ¿­2
 * @param str3	¹®ÀÚ¿­3
 * @return 
 */
function ValidDay(str1, str2, str3)
{
    return ValidDate(str1, str2, str3);
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ½Ã¿¡ ÀûÇÕÇÑÁö °Ë»çÇÑ´Ù.
 * 
 * @param str	¹®ÀÚ¿­
 * @return 
 */
function ValidHour(str)
{
    var hour = parseInt(trim(str), 10);

    return Number(str) && parseInt(hour) <= 23 && parseInt(hour) >= 0;
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ºÐ¿¡ ÀûÇÕÇÑÁö °Ë»çÇÑ´Ù.
 * 
 * @param str	¹®ÀÚ¿­
 * @return 
 */
function ValidMinute(str)
{
    var minute = parseInt(trim(str), 10);

    return Number(str) && parseInt(minute) <= 59 && parseInt(minute) >= 0;
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ÃÊ¿¡ ÀûÇÕÇÑÁö °Ë»çÇÑ´Ù.
 * 
 * @param str	¹®ÀÚ¿­
 * @return 
 */
function ValidSecond(str)
{
    var second = parseInt(trim(str), 10);

    return Number(str) && parseInt(second) <= 59 && parseInt(second) >= 0;
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ÀÏ¿¡ ÀûÇÕÇÑÁö °Ë»çÇÑ´Ù.
 * 
 * @param str1	¹®ÀÚ¿­1
 * @param str2	¹®ÀÚ¿­2
 * @param str3	¹®ÀÚ¿­3
 * @return 
 */
function ValidDate(str1, str2, str3)
{

    var year = parseInt(trim(str1), 10);
    var month = parseInt(trim(str2), 10) - 1;
    var day = parseInt(trim(str3), 10);


    if (!(ValidYear(str1) && 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;
    }

    return Number(str3) && day >= 1 && day <= endDay[month];
}

/**
 * °´Ã¼ÀÇ °ªÀÌ ¿¬¿ù¿¡ ÀûÇÕÇÑÁö °Ë»çÇÑ´Ù.
 * 
 * @param str1	¹®ÀÚ¿­1
 * @param str2	¹®ÀÚ¿­2
 * @return 
 */
function ValidYearMonth(str1, str2)
{
    return ValidYear(str1) && ValidMonth(str2);
}


