// ½¬¿î Æû °Ë»ç±â
// xjsv + °ÅÄ£¸¶·ç´ÔÀÇ ¼Ò½º¸¦ Á¦ ¼öÁØ¿¡¼­ ¼öÁ¤ÇÏ¿´½À´Ï´Ù.
// ÇãÁ¢ÇÑ ¼Ò½ºÀÔ´Ï´Ù.

// Àú³áº¯¼ö
var pattern = new Array();
pattern['number'] = /^[0-9]+$/;
pattern['phone'] = /^[0-9]{2,3}-[0-9]{3,4}-[0-9]{3,4}$/;
pattern['email'] = /^[_a-zA-Z0-9-\.]+@[\._a-zA-Z0-9-]+\.[a-zA-Z]+$/;
pattern['domain'] = /^ftp|http|https:\/\/[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/;
pattern['alpha'] = /^[a-zA-Z]+$/;
pattern['idpass'] = /^[a-zA-Z0-9]+$/;
pattern['hangul'] = /[°¡-ÆR]/;
pattern['hangulonly'] = /^[°¡-ÆR ]*$/;

var oldclassname = '';
var trespass = '';

// trim ÇÔ¼ö °ø¹éÁ¦°Å
String.prototype.trim = function() {
	return this.replace(/(^\s*)|(\s*$)/g, "");
}

// ÇÑ±Û Á¾¼º Á¸Àç ¿©ºÎ
String.prototype.finalconsonant = function(str) {
	str = this != window ? this : str; 
	var strTemp = str.substr(str.length-1);
	return ((strTemp.charCodeAt(0)-16)%28!=0);
}

// ¿¡·¯ ¸Þ¼¼Áö Ãâ·Â
function Error_msg(el, msg) {
	if(msg == '') msg = "Æû ÀÔ·Â ¿¡·¯ÀÔ´Ï´Ù.";
	if(el.getAttribute("myname")) {
		j = el.getAttribute('myname').finalconsonant() ? 'Àº' : '´Â';
		msg = "Ç×¸ñ[" + el.getAttribute('myname') + "]"+ j + " " + msg;
	} else {
		msg = "Ç×¸ñ[" + el.getAttribute('name') + "]Àº " + msg;
	}
	alert(msg);
	if(el.type != 'select-one') {
		oldclassname = el.getAttribute("className");
		trespass = el.name;
		el.setAttribute("className", "activeform");
	}
	el.focus();
	return false;
}

// ÁÖ¹Îµî·Ï¹øÈ£ Ã¼Å©
function isValidJumin(num) {
	var pattern = /^([0-9]{6})-?([0-9]{7})$/; 
	if(!pattern.test(num)) return false;
	num = RegExp.$1 + RegExp.$2;

	var sum = 0;
	var last = num.charCodeAt(12) - 0x30;
	var bases = "234567892345";
	for(i = 0;i < 12;i++) {
		if (isNaN(num.substring(i,i+1))) return false;
		sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
	}
	var mod = sum % 11;
	return ((11 - mod) % 10 == last) ? true : false;
}

// »ç¾÷ÀÚ¹øÈ£ Ã¼Å©
function isValidBizNo(num) { 
	var pattern = /([0-9]{3})-?([0-9]{2})-?([0-9]{5})/;
	if(!pattern.test(num)) return false;
	num = RegExp.$1 + RegExp.$2 + RegExp.$3;
	var cVal = 0;
	for(i = 0;i < 8;i++) {
		var cKeyNum = parseInt(((_tmp = i % 3) == 0) ? 1 : ( _tmp  == 1 ) ? 3 : 7);
		cVal += (parseFloat(num.substring(i,i+1)) * cKeyNum) % 10;
	}
	var li_temp = parseFloat(num.substring(i,i+1)) * 5 + '0';
	cVal += parseFloat(li_temp.substring(0,1)) + parseFloat(li_temp.substring(1,2));
	return (parseInt(num.substring(9,10)) == 10-(cVal % 10)%10) ? true : false;
}

// °¢ ¿¤·¯¸ÕÆ® ¿É¼Çµé °Ë»ç
function el_validate() {
	for(a = 0;a < this.elements.length;a++) {
		el = this.elements[a];
		if(trespass == el.name) el.setAttribute("className", oldclassname);
		
		if(el.getAttribute("required") != null && (el.value == "" || el.value.trim() == ""))		return Error_msg(el, 'ÇÊ¼öÇ×¸ñÀÔ´Ï´Ù.');
		if(el.value != '') {
			if(el.getAttribute("idpass") != null && !pattern["idpass"].test(el.value))				return Error_msg(el, '¾ËÆÄºª + ¼ýÀÚÀÇ Á¶ÇÕÀÌ¾î¾ß ÀÔ´Ï´Ù.');
			if(el.getAttribute("number") != null && !pattern["number"].test(el.value))				return Error_msg(el, '¼ýÀÚ¸¸ °¡´ÉÇÕ´Ï´Ù.');
			if(el.getAttribute("phone") != null && !pattern["phone"].test(el.value))				return Error_msg(el, 'ÀüÈ­¹øÈ£ Çü½ÄÀÌ ¸ÂÁö ¾Ê½À´Ï´Ù. 000-0000-0000');
			if(el.getAttribute("email") != null && !pattern["email"].test(el.value))				return Error_msg(el, 'ÀÌ¸ÞÀÏ Çü½ÄÀÌ ¸ÂÁö ¾Ê½À´Ï´Ù.');
			if(el.getAttribute("domain") != null && !pattern["domain"].test(el.value))				return Error_msg(el, 'URL Çü½ÄÀÌ ¸ÂÁö ¾Ê½À´Ï´Ù.');
			if(el.getAttribute("alpha") != null && !pattern["alpha"].test(el.value))				return Error_msg(el, '¾ËÆÄºª¸¸ °¡´ÉÇÕ´Ï´Ù.');
			if(el.getAttribute("hangul") != null && !pattern["hangul"].test(el.value))				return Error_msg(el, 'ÇÑ±ÛÀÌ Æ÷ÇÔµÇ¾î¾ß ÇÕ´Ï´Ù.');
			if(el.getAttribute("hangulonly") != null && !pattern["hangulonly"].test(el.value))		return Error_msg(el, 'ÇÑ±Û¸¸ °¡´ÉÇÕ´Ï´Ù.');
			if(el.getAttribute("maxlength") != null && el.value.length > el.maxlength)				return Error_msg(el, 'ÃÖ´ë ' + el.maxlength + 'ÀÚ ±îÁö °¡´ÉÇÕ´Ï´Ù.');
			if(el.getAttribute("minlength") != null && el.value.length < el.minlength)				return Error_msg(el, 'ÃÖ¼Ò ' + el.minlength + 'ÀÚ ÀÌ»óÀÌ¾î¾ß ÇÕ´Ï´Ù.');
			if(el.getAttribute("psn") != null && !isValidJumin(el.value))							return Error_msg(el, 'ÁÖ¹Îµî·Ï¹øÈ£°¡ ¿ÇÁö ¾Ê½À´Ï´Ù. ¼ýÀÚ¸¸ ÀÔ·ÂÇÏ¼¼¿ä.');
			if(el.getAttribute("csn") != null && !isValidBizNo(el.value))							return Error_msg(el, '»ç¾÷ÀÚµî·Ï¹øÈ£°¡ ¿ÇÁö ¾Ê½À´Ï´Ù. ¼ýÀÚ¸¸ ÀÔ·ÂÇÏ¼¼¿ä.');
		}
	}
}

// ¼­¹ÌÆ® ÇßÀ»¶§ ¿¤·¯¸ÕÆ® °Ë»ç ÇÔ¼ö È£Ãâ
function fn_onsubmit() {
	this.validate = el_validate;
	return this.validate();
}

// ÆûÀÇ ÃÊ±âÈ­
function fn_initialize() {
	this.onsubmit = fn_onsubmit;
	this.setMessage = Error_msg;
	for(var i = 0;i < this.elements.length;i++) {
		if(this.elements[i].type == "text" || this.elements[i].type == "password")
			this.elements[i].setAttribute("className", "form");
	}
}

// ÆäÀÌÁöÀÇ ¸ðµç Æû ºÒ·¯¼­ ÃÊ±âÈ­ È£Ãâ
function initial() {
	for(var i = 0;i < document.forms.length;i++) {
		document.forms[i].initialize = fn_initialize;
		document.forms[i].initialize();
	}
}
initial();

