/* 
 * vim60: ts=4 syntax=javascript
 */ 

// ###########################################################################
// base.js ÆÄÀÏ°ú ÇÔ²² È£ÃâÇÏ¿©¾ß ÇÕ´Ï´Ù.
// ###########################################################################

var require_msg		= "ÇÊ¼öÇ×¸ñÀÔ´Ï´Ù.";
var dash_msg		= "´ë½Ã(-) ±âÈ£";
var only_allow_msg	= "·Î¸¸ ÀÔ·ÂÇØÁÖ½Ê½Ã¿À.";
var english_strings	= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var number_strings	= "0123456789";

function Number (form, require, min, max, str)
{
	// ID Ã¼Å©(TEXT)
	if (!LengthCheck(form, require, min, max, str)) return false;
	if (!PermitCharCheck(form.value, number_strings))
	{
		AlertWindow(form, str, "¼ýÀÚ" + only_allow_msg);
		return false;
	}
	return true;
}
function IdCheck (form, require, min, max, str)
{
	// ID Ã¼Å©(TEXT)
	if (!LengthCheck(form, require, min, max, str)) return false;
	if (!PermitCharCheck(form.value, number_strings + english_strings))
	{
		AlertWindow(form, str, "¿µ¹®ÀÚ¿Í ¼ýÀÚ" + only_allow_msg);
		return false;
	}
	if (!PermitCharCheck(form.value.charAt(0), english_strings))
	{
		AlertWindow(form, str, "¹Ýµå½Ã ¿µ¹®ÀÚ·Î ½ÃÀÛµÇ¾î¾ß ÇÕ´Ï´Ù.");
		return false;
	}
	return true;
}

function PasswdCheck (form, form2, require, min, str)
{
	// PASSWORD Ã¼Å©
	if (!LengthCheck(form, require, min, false, str)) return false;
	if (require && !RequireString(form2, str, "")) return false;
	if (form.value != "" && form.value != form2.value)
	{
		AlertWindow(form2, str, "ÀÔ·ÂÇÏ½Å µÎ " + str + "°¡ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù.");
		return false;
	}
	return true;
}

function NameCheck (form, require, min, str)
{
	// ¼º¸í Ã¼Å©
	if (!LengthCheck(form, require, min, false, str)) return false;
	if (!HangulCheck(form.value))
	{
		AlertWindow(form, str, "ÇÑ±Û" + only_allow_msg);
		return false;
	}
	return true;
}

function RegNumberCheck (form, require, str)
{
	// ÁÖ¹Îµî·Ï¹øÈ£ Ã¼Å©
	if (require && !RequireString(form, str, "")) return false;
	if (form.value.length && !RegNoCheck(form.value, ""))
	{
		AlertWindow(form, str, "Á¤È®ÇÏÁö ¾Ê½À´Ï´Ù.");
		return false;
	}
	return true;
}
function RegNumberCheck2 (form1, form2, require, str)
{
	// ÁÖ¹Îµî·Ï¹øÈ£ Ã¼Å©
	if (require && !RequireString(form1, str, "")) return false;
	if (require && !RequireString(form2, str, "")) return false;
	if (!RegNoCheck(form1.value + form2.value, ""))
	{
		AlertWindow(form1, str, "Á¤È®ÇÏÁö ¾Ê½À´Ï´Ù.");
		return false;
	}
	return true;
}

function EmailCheck (form, require, str)
{
	// TEXT ÀüÀÚ¿ìÆí ÁÖ¼Ò Ã¼Å©
	if (require && !RequireString(form, str, "")) return false;
	if (form.value.length && !EmailRuleCheck(form.value))
	{
		AlertWindow(form, str, "Á¤È®ÇÏÁö ¾Ê½À´Ï´Ù.");
		return false;
	}
	return true;
}

function RequireString (form, str1, str2)
{
	// TEXT ÇÊ¼öÀÔ·Â Ã¼Å©
	if (form.value == "")
	{
		AlertWindow(form, str1, require_msg + str2);
		return false;
	}
	return true;
}
function SpaceString (form, str1, str2)
{
	var string	= form.value;
	var temp = "";
	string = '' + string;
	splitstring = string.split(" ");
	for(i = 0; i < splitstring.length; i++)
	temp += splitstring[i];
	// TEXT ÇÊ¼öÀÔ·Â Ã¼Å©
	if (temp == "")
	{
		AlertWindow(form, str1, require_msg + str2);
		return false;
	}
	return true;

}

function RequireKey(form, form1, str)
{
	if (form == form1)
	{
		alert(str + " : " + "»ç¿ëÇÒ¼ö¾ø½À´Ï´Ù");
		event.keyCode = "";
		return false;
	}
	return true;
}

function RequireSelect (form, notvalue, str)
{
	// SELECTE Ç×¸ñÀÇ ¼±ÅÃ ³»¿ëÀÌ ¿øÄ¡¾Ê´Â °ª(notvalue)ÀÎÁö Ã¼Å©
	if (form.options[form.selectedIndex].value == notvalue)
	{
		AlertWindow(form, str, "¼±ÅÃÇØÁÖ½Ê½Ã¿À.");
		return false;
	}
	return true;
}

function LengthCheck (form, require, min, max, str)
{
	// TEXT ±æÀÌ°¡ ÀûÇÕÇÑÁö Ã¼Å©
	var err = "";
	if (require && !RequireString(form, str, "")) return false;
	if (form.value.length)
	{
		if (min == max && !StringLength(form.value, min, max))
			err = min +"ÀÚ·Î ÀÔ·ÂÇØÁÖ½Ê½Ã¿À.";
		else if (min != false && max != false && min < max && !StringLength(form.value, min, max))
			err = min +"ÀÚ ÀÌ»ó " + max + "ÀÚ ÀÌ³»·Î ÀÔ·ÂÇØÁÖ½Ê½Ã¿À.";
		else if (min == false && max > 0 && !StringLength(form.value, 1, max))
			err = "ÃÖ´ë " + max + "ÀÚ ÀÌ³»·Î ÀÔ·ÂÇØÁÖ½Ê½Ã¿À.";
		else if (min > 0 && max == false && !StringLength(form.value, min, 100000000))
			err = "ÃÖ¼Ò " + min + "ÀÚ ÀÌ»ó ÀÔ·ÂÇØÁÖ½Ê½Ã¿À.";
	}
	if (err != "")
	{
		AlertWindow(form, str, err);
		return false;
	}
	return true;
}

/*****************************************************************************/

function EmailRuleCheck (String)
{
	// ÀüÀÚ¿ìÆí ÁÖ¼Ò Ã¼Å©
	var checkflag = true;
	var retvalue;
	if (window.RegExp)
	{
		var tempstring = "a";
		var exam = new RegExp(tempstring);
		if (tempstring.match(exam))
		{
			var ret1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
			var ret2 = new RegExp("^.+@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,}|[0-9]{1,3})(\\]?)$");
			retvalue = (!ret1.test(String) && ret2.test(String));
		}
		else checkflag = false;
	} else checkflag = false;
	if (!checkflag)
	{
		retvalue = ( (String != "") && (String.indexOf("@")) > 0 && (String.index.Of(".") > 0) ); 
	}
	return retvalue;
}

function StringLength (String, min, max)
{
	// ¹®ÀÚ¿­ ±æÀÌ Ã¼Å©
	if (String.length < min || String.length > max) return false;
	return true;
}

function PermitCharCheck (String, PermitChar)
{
	// ÁÖ¾îÁø ¹®ÀÚ¿­(String)¿¡¼­ Çã¿ëµÈ ¹®ÀÚµé(PermitChar)¸¸ Á¸ÀçÇÒ °æ¿ì Âü
	var RetValue = true;
	var count;
	for (var i = 0; i < String.length; i++)
	{
		count = 0;
		for (var j = 0; j < PermitChar.length; j++)
		{
			if (String.charAt(i) == PermitChar.charAt(j))
			{
				count++; break;
			}
		}
		if (count == 0)
		{
			RetValue = false; break;
		}
	}
	return RetValue;
}

function PermitChars (String, PermitChar)
{
	// ÁÖ¾îÁø ¹®ÀÚ¿­(String)¿¡¼­ Çã¿ëµÈ ¹®ÀÚµé(PermitChar)¸¸À» ¾òÀ½
	var RetValue = "";
	for (var i = 0; i < String.length; i++)
	{
		for (var j = 0; j < PermitChar.length; j++)
		{
			if (String.charAt(i) == PermitChar.charAt(j))
			{
				RetValue += String.charAt(i);
			}
		}
	}
	return RetValue;
}

function IncludeCharCheck (String, IncludeChar)
{
	// ÁÖ¾îÁø ¹®ÀÚ¿­(String)¿¡¼­ ÁöÁ¤ÇÑ ¹®ÀÚ(IncludeChar)°¡ Á¸ÀçÇÏ¸é Âü
	for (var i = 0; i < String.length; i++)
	{
		for (var j = 0; j < IncludeChar.length; j++)
		{
			if (String.charAt(i) == IncludeChar.charAt(j)) return true;
		}
	}
	return false;
}

function RegNoCheck (regno1, regno2)
{
	// ÁÖ¹Îµî·Ï¹øÈ£ Ã¼Å© ÇÔ¼ö
	// ¼ýÀÚ ÀÌ¿ÜÀÇ ºÒ¼ø ¹®ÀÚ´Â ÀÚµ¿À¸·Î ¹èÁ¦µÇ¸ç,
	// ÀÔ·Â¾ç½Ä ÇüÅÂ¿¡ µû¶ó ÇÏ³ª(801231-1648122) ¶Ç´Â
	// µÎ°³(801231, 1648122)ÀÇ ÀÔ·Â°ªÀ» ÀÚµ¿À¸·Î ÀÎ½ÄÇÏ¿© Ã¼Å©
	var regno = PermitChars(regno1, number_strings) + PermitChars(regno2, number_strings);
	if (regno.length != 13) return false;
	regno1 = regno.substring(0,6);
	regno2 = regno.substring(6,13);
	var tmp = 0
	var yy = regno1.substring(0,2)
	var mm = regno1.substring(2,4)
	var dd = regno1.substring(4,6)
	var sex = regno2.substring(0,1)
	if ( mm < 1 || mm > 12 || dd < 1 ) return false;
	if ( sex < 1 && sex > 4 ) return false;
	for (var i = 0; i <=5 ; i++)
		tmp=tmp+((i%8+2)*parseInt(regno1.substring(i,i+1)))
	for (var i = 6; i <=11 ; i++)
		tmp=tmp+((i%8+2)*parseInt(regno2.substring(i-6,i-5)))
	tmp = 11 - (tmp %11);
	tmp = tmp % 10;
	if (tmp != regno2.substring(6,7)) return false;
	return true;
}

/*
function HangulCheck (str)
{
	var i, j, k;
	if (str.length % 2 != 0) return false;
	for (i=0; i<str.length; i++)
	{
		j = str.charCodeAt(i);
		k = str.charCodeAt(++i);
		if (j < 0x81 || j > 0xC8 || k > 0xFE ||
			(k >= 0x00 && k <= 0x40) ||
			(k >= 0x5B && k <= 0x60) ||
			(k >= 0x7B && k <= 0x80) ||
			(k >= 0x00 && k <= 0x40) ||
			((j >= 0xA1 && j <=0xAF) && (k >= 0xA1 && k <= 0xFE)) ||
			(j == 0xC6 && (k >= 0x53 && k <= 0xA0)) ||
			(j >= 0xC7 && (k >= 0x41 && k <= 0xA0))
		) continue;
		else return true;
	}
	return true;
}
*/
function HangulCheck (str)
{
	var i, j;
	for (i=0; i<str.length; i++)
	{
		j = str.charCodeAt(i);
		// alert(str.charAt(i) + " : " + j);
		// °¡~ÆR
		if (j >= 44032 && j <= 55203) continue;
		// ¤¡~¤¾, ¤¿~¤Ó
		// else if (j >= 12593 && j <= 12643) continue;
		else return false;
	}
	return true;
}