/*
	validate_info.js
	ÀÛ¼ºÀÚ: ÀÌ´ë±Ô

	È¸¿ø¾ÆÀÌµð
	boolean isValidMemberId(string member_id);

	ºñ¹Ð¹øÈ£
	boolean isValidPassword(string password1, string password2);

	E-mail ÁÖ¼Ò
	boolean isValidEmail(string email);
	boolean isValidEmail2(string user, string host);

	ÁÖ¹Îµî·Ï ¹øÈ£
	boolean isValidRegno(string regno);
	boolean isValidRegno2(string bday, string idnum);

	ÀüÈ­¹øÈ£
	boolean isValidPhone(string phone);

	Á¶°Ç¿¡ ¸ÂÁö ¾Ê´Â °æ¿ì false ¸®ÅÏÇÏ°í
	VALIDATE_ERROR_MESSAGE º¯¼ö¿¡ ¿À·ù ¸Þ½ÃÁö ÀúÀå
*/

var member_id_re = /^[A-Za-z0-9][A-Za-z0-9._-]{3,15}$/;			// È¸¿ø ¾ÆÀÌµð °Ë»ç¿ë ÆÐÅÏ
var disabled_id_re = /^(admin|webmaster).*/i;					// È¸¿ø ¾ÆÀÌµð ±ÝÁö ´Ü¾î ÆÐÅÏ
var password_re = /^[A-Za-z0-9~!@#$%&*()_=+\\\|\/?,.<>;: ^-]{4,16}$/;	// ºñ¹Ð¹øÈ£ °Ë»ç¿ë ÆÐÅÏ

var email_re = /^([^@]+)@(.+)$/;								// E-mail °Ë»ç¿ë ÆÐÅÏ (±âº»)
var email_user_re = /^[A-Za-z0-9#._-]+$/;						// E-mail »ç¿ëÀÚ ¾ÆÀÌµð ºÎºÐ °Ë»ç¿ë ÆÐÅÏ
var email_host_re = /^([A-Za-z0-9._-]+\.)+([A-Za-z]+)\.?$/;		// E-mail È£½ºÆ® ÁÖ¼Ò ºÎºÐ °Ë»ç¿ë ÆÐÅÏ
var regno_re = /^([0-9]{6})-?([0-9]{7})$/;						// ÁÖ¹Î¹øÈ£ °Ë»ç¿ë ÆÐÅÏ (±âº»)
var regno_bday_re = /^[0-9]{2}[01][0-9][0-3][0-9]$/;			// ÁÖ¹Î¹øÈ£ »ý³â¿ùÀÏ ºÎºÐ ÆÐÅÏ
var regno_idnum_re = /^[1-4][0-9]{6}$/;							// ÁÖ¹Î¹øÈ£ µÞ7ÀÚ¸® ºÎºÐ ÆÐÅÏ
var phone_re = /^(0[0-9]{1,3})-([0-9]{2,4})-([0-9]{3,4})$/;		// ÀüÈ­¹øÈ£ ÆÐÅÏ

var VALIDATE_ERROR_MESSAGE = "";

// È¸¿ø ¾ÆÀÌµð À¯È¿¼º °Ë»ç
function isValidMemberId(member_id)
{
	VALIDATE_ERROR_MESSAGE = "";

	// È¸¿ø ¾ÆÀÌµð ±âº» Á¶°Ç
	// ¿µ¹®ÀÚ, ¼ýÀÚ, '.', '-', '_' ·Î¸¸ ±¸¼º, 4~10±ÛÀÚ
	// Ã¹ ±ÛÀÚ´Â ¹Ýµå½Ã ¿µ¹®ÀÚ ¶Ç´Â ¼ýÀÚ
	if (!member_id_re.test(member_id))
	{
		VALIDATE_ERROR_MESSAGE = 'È¸¿ø ¾ÆÀÌµð Çü½ÄÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.\n\n- ¿µ¹®ÀÚ, ¼ýÀÚ, \'.\', \'-\', \'_\' ·Î¸¸ ±¸¼ºµÇ¾î¾ß ÇÕ´Ï´Ù.\n\n- ÃÖ¼Ò 4±ÛÀÚ ÀÌ»ó, ÃÖ´ë 16±ÛÀÚ ÀÌ³»ÀÌ¾î¾ß ÇÕ´Ï´Ù.\n\n- Ã¹ ±ÛÀÚ´Â ¹Ýµå½Ã ¿µ¹®ÀÚ ¶Ç´Â ¼ýÀÚ·Î ÀÌ·ç¾îÁ®¾ß ÇÕ´Ï´Ù.';
		return false;
	}

	// »ç¿ë ºÒ°¡ ´Ü¾î
	// ¾ÆÀÌµð »ç¿ë ºÒ°¡ ´Ü¾î´Â »ç¿ëºÒ°¡ (Å¸ È¸¿øÀÇ È¥µ¿À» À¯¹ßÇÒ ¼ö ÀÖ´Â ¾ÆÀÌµð)
	//     adminÀ¸·Î ½ÃÀÛÇÏ´Â ¸ðµç ´Ü¾î(´ë¼Ò¹®ÀÚ ±¸ºÐ ¾ÈÇÔ)
	//     webmaster·Î ½ÃÀÛÇÏ´Â ¸ðµç ´Ü¾î(´ë¼Ò¹®ÀÚ ±¸ºÐ ¾ÈÇÔ)
	//     missdiet (´ë¼Ò¹®ÀÚ ±¸ºÐ ¾ÈÇÔ)
	if (disabled_id_re.test(member_id) || member_id.toLowerCase() == 'missdiet')
	{
		VALIDATE_ERROR_MESSAGE = 'È¸¿ø ¾ÆÀÌµð·Î »ç¿ëÇÒ ¼ö ¾ø´Â ´Ü¾îÀÔ´Ï´Ù.\nÅ¸ È¸¿ø¿¡°Ô È¥µ¿À» À¯¹ßÇÒ ¼ö ÀÖ´Â ´Ü¾î´Â ¾ÆÀÌµð·Î »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.\n\n- adminÀ¸·Î ½ÃÀÛÇÏ´Â ¸ðµç ´Ü¾î(´ë¼Ò¹®ÀÚ ±¸ºÐ ¾ÈÇÔ)\n\n- webmaster·Î ½ÃÀÛÇÏ´Â ¸ðµç ´Ü¾î(´ë¼Ò¹®ÀÚ ±¸ºÐ ¾ÈÇÔ)\n\n- missdiet (´ë¼Ò¹®ÀÚ ±¸ºÐ ¾ÈÇÔ)';
		return false;
	}

	return true;
}

// ºñ¹Ð¹øÈ£ À¯È¿¼º °Ë»ç
function isValidPassword(password1, password2)
{
	VALIDATE_ERROR_MESSAGE = "";

	// ºñ¹Ð¹øÈ£ ±âº» Á¶°Ç
	// ¿µ¹®ÀÚ, ¼ýÀÚ, ' ' (ÇÑ±Û, µû¿ÈÇ¥ Á¦¿ÜÇÑ Å°º¸µå¹®ÀÚ) ·Î¸¸ ±¸¼º, 4~16±ÛÀÚ
	if (!password_re.test(password1))
	{
		VALIDATE_ERROR_MESSAGE = 'ºñ¹Ð¹øÈ£ Çü½ÄÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.\n\n- ¿µ¹®ÀÚ, ¼ýÀÚ, °ø¹é°ú ´ÙÀ½ÀÇ ±âÈ£¹®ÀÚ·Î¸¸ ±¸¼ºµÇ¾î¾ß ÇÕ´Ï´Ù. ~!@#$%^&*()_-=+|/?,.<>;:\n\n- ÃÖ¼Ò 4±ÛÀÚ ÀÌ»ó, ÃÖ´ë 10±ÛÀÚ ÀÌ³»ÀÌ¾î¾ß ÇÕ´Ï´Ù.';
		return false;
	}

	if (password1 != password2)
	{
		VALIDATE_ERROR_MESSAGE = 'ºñ¹Ð¹øÈ£°¡ ¼­·Î ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù. ´Ù½ÃÇÑ¹ø È®ÀÎÇØ ÁÖ½Ê½Ã¿À.';
		return false;
	}

	return true;
}

// E-mail À¯È¿¼º °Ë»ç 1´Ü°è
function isValidEmail(email)
{
	VALIDATE_ERROR_MESSAGE = "";

	var part = email.match(email_re);

	// @ °¡ ¾ø´Â °æ¿ì
	if (part == null)
	{
		VALIDATE_ERROR_MESSAGE = 'E-mail ÁÖ¼Ò Çü½ÄÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.';
		return false;
	}

	var user = RegExp.$1;
	var host = RegExp.$2;

	return isValidEmail2(user, host);
}

// E-mail À¯È¿¼º °Ë»ç 2´Ü°è
function isValidEmail2(user, host)
{
	VALIDATE_ERROR_MESSAGE = "";

	if (!email_user_re.test(user))
	{
		VALIDATE_ERROR_MESSAGE = 'E-mail ÁÖ¼Ò Çü½ÄÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.';
		return false;
	}

	if (!email_host_re.test(host))
	{
		VALIDATE_ERROR_MESSAGE = 'E-mail ÁÖ¼Ò Çü½ÄÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.';
		return false;
	}

	return true;
}

// ÁÖ¹Î¹øÈ£ À¯È¿¼º °Ë»ç 1´Ü°è
function isValidRegno(regno)
{
	VALIDATE_ERROR_MESSAGE = "";

	var part = regno.match(regno_re);

	// @ °¡ ¾ø´Â °æ¿ì
	if (part == null)
	{
		VALIDATE_ERROR_MESSAGE = 'ÁÖ¹Îµî·Ï¹øÈ£ Çü½ÄÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.';
		return false;
	}

	var bday = RegExp.$1;
	var idnum = RegExp.$2;

	return isValidRegno2(bday, idnum);
}

// ÁÖ¹Î¹øÈ£ À¯È¿¼º °Ë»ç 2´Ü°è
function isValidRegno2(bday, idnum)
{
	VALIDATE_ERROR_MESSAGE = "";

	if (!regno_bday_re.test(bday))
	{
		VALIDATE_ERROR_MESSAGE = 'ÁÖ¹Îµî·Ï¹øÈ£ Çü½ÄÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.';
		return false;
	}

	if (!regno_idnum_re.test(idnum))
	{
		VALIDATE_ERROR_MESSAGE = 'ÁÖ¹Îµî·Ï¹øÈ£ Çü½ÄÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.';
		return false;
	}

	// ¼ºº°
	var sex_digit = Number(idnum.charAt(0));
	if (sex_digit < 1 || sex_digit > 4)
	{
		VALIDATE_ERROR_MESSAGE = 'ÁÖ¹Îµî·Ï¹øÈ£ Çü½ÄÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.';
		return false;
	}

	var i, sum = 0;
	var check_digit = Number(idnum.charAt(6));
	for (i = 0; i < 6; i++)
		sum += Number(bday.charAt(i)) * ((i % 8) + 2);
	for (i = 0; i < 6; i++)
		sum += Number(idnum.charAt(i)) * (((i + 6) % 8) + 2);

	var check = (11 - sum % 11) % 10;
	if (check_digit != check)
	{
		VALIDATE_ERROR_MESSAGE = 'ÁÖ¹Îµî·Ï¹øÈ£ Çü½ÄÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.';
		return false;
	}

	return true;
}

function isValidPhone(phone)
{
	VALIDATE_ERROR_MESSAGE = "";

	if (!phone_re.test(phone))
	{
		VALIDATE_ERROR_MESSAGE = 'ÀüÈ­¹øÈ£ Çü½ÄÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.\n\n- Áö¿ª¹øÈ£¸¦ Æ÷ÇÔÇÏ¿© 0000-0000-0000 Çü½ÄÀ¸·Î ÀÔ·ÂÇØ ÁÖ½Ê½Ã¿À.';
		return false;
	}

	return true;
}

