<!-- //

/*************************************************
¾ð¾î : JavaScript
¿ëµµ : Æû ÃÊ±âÈ­¹× ÀÔ·Â Çü½Ä °ËÁõ,°Ë»ç °ü·Ã ÇÔ¼ö
ÀÛ¼ºÀÚ : ÃÖÁø¿ì (HappyContents)
ÀÛ¼ºÀÏ : 2004-12-06
ºñ°í : 
*************************************************/

var validator_version = "0.0.01";

/* ÆäÀÌÁö ·ÎµåÀÌº¥Æ®¿¡ ÆûÀÌº¥Æ® Ãß°¡ */
window.attachEvent("onload", function() {
	var _frms = document.getElementsByTagName("FORM");

	for(var i=0; i<_frms.length; i++) {
		_frms[i].xsubmit=false;
		_frms[i].attachEvent("onsubmit", _Form_OnSubmit);
	}
});

/* ÆûÃ¼Å© ÇÔ¼ö */
function _Form_OnSubmit() {
	var _frm = (is_ie)?event.srcElement:event.target;
	if(!_frm.id) _frm.id = _frm.name;

	if(_frm.xsubmit) return false;

	/* Validation */
	for(var i=0; i<_frm.elements.length; i++) {
		var _e = _frm.elements[i];
		var _xtype = _e.getAttribute("xtype");
		var _control = _e.getAttribute("control");
		var _ccontrol = _e.getAttribute("ccontrol");
		var _vcontrol = _e.getAttribute("vcontrol");

//		event.cancelBubble = true;
//		if(event.cancelable) event.preventDefault();

		if(/HIDDEN/i.test(_e.type) && _xtype!=null) {
			var _v = _e;

			if(/RequiredField/i.test(_xtype)) if(!_RequiredValidator(_frm.elements[_control], _v)) return false;
			if(/RegularExpression/i.test(_xtype)) if(!_RegularExpressionValidator(_frm.elements[_control], _v)) return false;
			if(/Compare/i.test(_xtype)) if(!_CompareValidator(_frm.elements[_ccontrol], _frm.elements[_vcontrol], _v)) return false;
			if(/Range/i.test(_xtype)) if(!_RangeValidator(_frm.elements[_control], _v)) return false;
		}
	}

	/* User Function */
	_frm.userFunction = new Function(_frm.getAttribute("ufunc"));
	if(_frm.userFunction()==false) return false;

	/* Submit.. */
	_frm.xsubmit = true;
	return true;
}

/* ºóÀÔ·Â °Ë»ç ÇÔ¼ö */
function _RequiredValidator(_c, _v) {
	var _msg = _v.getAttribute("msg");
	if(_c.value==""||_c.value==undefined) {
		alert(_msg); _c.value=""; _c.focus(); return false;
	} else return true;
}

/* Á¤±Ô½Ä ÆÐÅÏ °Ë»ç ÇÔ¼ö */
function _RegularExpressionValidator(_c, _v) {
	var _re = new RegExp(_v.rexp, "i");
	var _msg = _v.getAttribute("msg");

	if(!_re.test(_c.value)&&_c.value!="") {
		alert(_msg); _c.value=""; _c.focus(); return false;
	} else return true;
}
// Email : (\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)

/* °ªºñ±³ ÇÔ¼ö */
function _CompareValidator(_cc, _vc, _v) {
	var _msg = _v.getAttribute("msg");
	if(_cc.value!=_vc.value) {
		alert(_msg); _cc.value=""; _vc.value=""; _cc.focus(); return false;
	} else return true;
}

/* ¹üÀ§ °Ë»ç ÇÔ¼ö */
function _RangeValidator(_c, _v) {
	var _msg = _v.getAttribute("msg");
	var _minimum = _v.getAttribute("minimum");
	var _maximum = _v.getAttribute("maximum");
	if(_c.value<_minimum||_c.value>_maximum) {
		alert(_msg); _c.value=""; _c.focus(); return false;
	} else return true;
}

/*///////////////////////////////////////////////////////////////////////
// »ç¿ë¹ý
<form name="frm" [ufunc="function()"] [onsubmit="return function()"]>
	[<input type="hidden" xtype="RequiredField" control="element" msg="error message">] // ºó°ª
	[<input type="hidden" xtype="RegularExpression" control="element" rexp="pattern" msg="error message">] // Á¤±Ô½Ä
	[<input type="hidden" xtype="Compare" ccontrol="compare element" vcontrol="validation element" msg="error message">] // µÎ°ªºñ±³
	[<input type="hidden" xtype="Range" control="element" minimum="[0-9]+" maximum="[0-9]+" msg="error message">] // ¹üÀ§
	<input type="text" name="element1" id="element1">
</form>
///////////////////////////////////////////////////////////////////////*/

// -->
