/* vim: set tabstop=4 shiftwidth=4 syntax=javascript: */

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

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

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;
	}
	/*
	if (form.value.length && !regNo1Check(form.value, ""))
	{
		
		alertWindow(form, str, "14¼¼ÀÔ´Ï´Ù.");
			
		return true;
		
	}
	*/
	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.split(" ").join("") == "")
	{
		alertWindow(form, str1, require_msg + str2);
		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 checkImages (Urls, Msg, Flag)
{
	var ext = Urls.slice(Urls.lastIndexOf(".")+1).toLowerCase();
	if (ext == "gif" || ext == "jpg" || ext == "png") return true;
	else
	{
		if (Flag && Msg) alertWindow('', '', Msg);
		return false;
	}
}
// ÀÌ¹ÌÁö ÀÌ¿Ü¿¡ ÆÄÀÏ È®ÀåÀÚ¸í Ã¼Å©
function checkFileExt (Urls, Msg, Flag, Exts)
{
	var ext = Urls.slice(Urls.lastIndexOf(".")+1).toLowerCase();
	if (ext == Exts) return true;
	else
	{
		if (Flag && Msg) alertWindow('', '', Msg);
		return false;
	}
}
// ¼ýÀÚ Ã¼Å©
function requireNumber (form, str1, str2)
{
	if (!requireString(form, str1, str2)) return false;
	if (isNaN(form.value))
	{
		alertWindow(form, str1, "¼ýÀÚ¸¸ °¡´É ÇÕ´Ï´Ù.")
		return false;
	}
	return true;
}
// ¼ýÀÚ¸¸ ÀÔ·Â Á¦ÇÑ
function getOnlyNumber ()
{
	if(( (event.keyCode > 47) && (event.keyCode < 58) ) || (event.keyCode == 45)) event.returnValue = true;
	else event.returnValue = false;
}
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;
}

