/**
 * CafFormUtil  : validate ¿¡ °ü·ÃÇÑ ¸Þ¼Òµå·Î ±¸¼º.
 *		
 *		1. Áö¿ø±â´É 
 *			- form °ü·Ã tag attribute ±â´É È®Àå.
 *			- ajax °ü·Ã ±â´É Á¦°ø. 
 *			- validate¿¡ °ü·ÃÇÑ ÆíÀÇ±â´É Á¦°ø.
 *
 *		2. form °ü·ÃÅÂ±× ±â´É È®Àå. (Ãß°¡ attribute ±â´É È°¿ë).
 *
 *		3. select, radio, checkbox ÄÁÆ®·Ñ ¸Þ¼Òµå Á¦°ø.
 *
 *		ÀÛ¼ºÀÏ½Ã	: 2008-04-02
 *		ÀÛ¼ºÀÚ		: ÀÌÈ£¼º<java3391@gmail.com>
 *
 *		ÀÚ¼¼ÇÑ³»¿ëÀº txtÂüÁ¶.
 */
	var INPUT_NOTNULL_BG_COLOR = '#E8F2FD';
	var INPUT_READONLY_BG_COLOR = '#EFEFEF';
	function CafFormUtil() {
		this.form = null;									//»ç¿ëÁßÀÎ form.
		this.getForm = __Caf_getForm;						//»ç¿ëÁßÀÎ form.
		this.setForm = __Caf_setForm;
		this.init = __Caf_init;								//ÃÊ±âÈ­ onload ½Ã ¹Ýµå½Ã ½ÇÇà.
		this.firstFocus = __Caf_firstFocus;					//first focus ÀÌµ¿. textÀÎ °æ¿ì¸¸.
		this.debug = __Caf_debug;							//debug 
		this.setValue = __Caf_obj_setValue;					//obj ¿¡ ´ëÇÑ value ¼³Á¤.
		this.setFormValues = __Caf_setFormValues;			//ÀüÃ¼ form ¿¡ ´ëÇÑ obj value ¼³Á¤.
		this.setDefaultValue = __Caf_setDefaultValue;		//ÀüÃ¼ form ¿¡ ´ëÇÑ µðÆúÆ®°ª ¼³Á¤.
		this.setObjectDefaultValue = __Caf_obj_setDefaultValue;	//obj ¿¡ ´ëÇÑ µðÆúÆ®°ª ¼³Á¤.
		this.format = __Caf_format;							//ÀüÃ¼ format Àû¿ë.
		this.unformat = __Caf_unformat;						//ÀüÃ¼ unformat 
		this.reset = __Caf_formReset;						//reset - form.reset() °ú À¯»çÇÏÁö¸¸, µðÆúÆ®°ªÀû¿ëÀÌ ¼³Á¤µÊ.
		this.validate = __Caf_validate;						//validate 
		this.goNextPageForm = __Caf_goNextPageForm;			//list ÆäÀÌÁö ÀÌµ¿½Ã ÆÄ¶ó¹ÌÅÍ ÀÚµ¿Ã³¸®¸¦ À§ÇÑ ÆíÀÇ ¸Þ¼Òµå.
		this.request = __Caf_request;						//ajax ÇüÅÂÀÇ submit Ã³¸®½Ã »ç¿ë. 
		this.getAjaxData = __Caf_getAjaxData;				//ÇØ´ç url¿¡ ´ëÇÑ ajax È£ÃâÈÄ json µ¥ÀÌÅ¸ ¸®ÅÏ.
		this.setJsonListSelectObject = __Caf_setJsonListSelectObject;		//select combo ÀÚµ¿¸®½ºÆ®.
		this.submit = __Caf_submit;							//submit - submit Ã³¸®.
	}

	function __Caf_setJsonListSelectObject(options, jsonList, textColumn, valueColumn, defaultTextColumn, defaultValueColumn ) {
		if ( jsonList.rows == null ) 
		{
			alert('¸Þ¼Òµå getJsonDataList ·ÎºÎÅÍ °¡Á®¿Â µ¥ÀÌÅ¸°¡ ¾Æ´Õ´Ï´Ù.');
		}
		removeAllSelectOptions(options, defaultTextColumn, defaultValueColumn);
		for ( var i =0, n=jsonList.rows.length; i< n ; i++) {
			var row = jsonList.rows[i];
			addSelectOption(options, eval('row.'+textColumn), eval('row.'+valueColumn));
		}
	}


	function __Caf_getForm() {
		return this.form;
	}
	function __Caf_setForm(form) {
		this.form = form;
	}
	function __Caf_firstFocus(form) {
		if ( form == null )	form = this.form;
		if ( form ) {
			for ( var i=0, n=form.length; i<n ; i++)
			{
				var objType = form[i].type;
				if ( (objType == 'text' || objType == 'password') && ! form[i].getAttribute("readonly") ) {
					form[i].focus();
					break;
				}
			}
		}
	}
	function __Caf_setFormValues(jsonMap, form) {
		if ( form == null) form = this.form;
		for ( var i=0, n=form.length; i < n ; i++ ) {
			var obj = form[i];
			try {
				var value = eval('jsonMap.'+obj.name);
				if ( value == null) value = '';
				this.setValue(obj, value );
			}catch(e){ 
				continue;
				alert(obj.name);
			}
		}
	}
	function __Caf_goNextPageForm(form) {
		if ( form == null )	form = this.form;
		if (! form.next_page) {
			alert('µî·Ï/¼öÁ¤È­¸é¿¡¼­ ¸®½ºÆ®È­¸éÀ¸·Î ÀÌµ¿½Ã¸¸ »ç¿ëÇÕ´Ï´Ù.\n\nnext_page º¯¼ö°¡ ¾ø½À´Ï´Ù.');
			return;
		}
		if (! form.fwd_params) {
			alert('µî·Ï/¼öÁ¤È­¸é¿¡¼­ ¸®½ºÆ®È­¸éÀ¸·Î ÀÌµ¿½Ã¸¸ »ç¿ëÇÕ´Ï´Ù.\n\nfwd_params º¯¼ö°¡ ¾ø½À´Ï´Ù.');
			return;
		}
		var url = form.next_page.value;
		url += (url.include('?') ? '&' : '?');
		var fwdParams = form.fwd_params.value.split(",");
		var parameters = new Hash();
		$(fwdParams).each(
			function(value, index){ 
				try	{	value = value.trim();parameters.set(value, form[value].value ); 	}catch (e){}
			}
		);
		parameters.each(function(pair, index){	url += ((index==0)?'':'&')+pair.key+'='+pair.value;	});
		window.location.href = url;
	}
	function __Caf_getAjaxData(url, options) {
		var retJson = null;
		if ( options == null)	options = { };
		if ( options.asynchronous == null ) options.asynchronous = false;
		if ( options.method == null ) options.method = 'get';
		if ( options.onSuccess == null ) options.onSuccess = function(transport, json){	retJson = transport.responseJSON;};
		if ( options.onFailure == null ) options.onFailure = function(transport) { alert('\nÃ³¸®Áß ¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù.\t\t\n\n'+transport.responseText.trim()+'\t');};
		if ( options.onComplete == null ) options.onComplete = function() {CafFormUtil.format(form);};
		new Ajax.Request(url, options);
		return retJson;
	}

	function __Caf_request(form, options) {
		if ( form == null )	form = this.form;
		if ( options == null)	options = { };
		if ( options.asynchronous == null ) options.asynchronous = false;
		if ( options.method == null ) options.method = 'post';
		if ( options.onSuccess == null ) options.onSuccess = function(transport, json){/*alert('Ã³¸®µÇ¾ú½À´Ï´Ù.');*/};
		if ( options.onFailure == null ) options.onFailure = function(transport) { alert('\nÃ³¸®Áß ¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù.\t\t\n\n'+transport.responseText.trim()+'\t');};
		if ( options.onComplete == null ) options.onComplete = function() {CafFormUtil.format(form);};
		form = $(form), options = Object.clone(options || { });
		var params = options.parameters, action = form.readAttribute('action') || '';
		if (action.blank()) action = window.location.href;
		options.parameters = form.serialize(true);

		if (params) {
		  if (Object.isString(params)) params = params.toQueryParams();
		  Object.extend(options.parameters, params);
		}

		if (form.hasAttribute('method') && !options.method)
		  options.method = form.method;

		return new Ajax.Request(action, options);
	}

	function __Caf_submit(form) {
		if ( form == null) form = this.form;
		if ( CafFormUtil.validate(form) ) {
			return form.submit();
		}
	}

	function __Caf_unformat(form) {
		if ( form == null) form = this.form;
		for ( var i=0, n=form.length; i < n ; i++ ) {
			var obj = form[i];
			if ( obj.type == 'text' )
			{
				obj_removeformat(obj);
			}
		}
	}

	function __Caf_format(form) {
		if ( form == null) form = this.form;
		for ( var i=0, n=form.length; i < n ; i++ ) {
			var obj = form[i];
			if ( obj.type == 'text' )
			{
				obj_format(obj);
			}
		}
	}

	function __Caf_validate(form) {
		if ( form == null) form = this.form;
		var bResult = true;
		for ( var i=0, n=form.length; i < n ; i++ ) {
			var obj = form[i];
			if ( obj.type != 'file' && obj.type != 'hidden' && obj.type != 'button' && obj.type != 'reset' )
			{
				if( ! obj_validate( obj ) )
				{
					bResult = false; 	// µ¥ÀÌÅÍ À¯È¿¼º Àç°ËÁõ
					break;
				}
				if( ! obj_nullcheck( obj ) )
				{
					bResult = false; 	// ÇÊ¼ö Ç×¸ñ °ËÁõ
					break;
				}
				obj_removeformat(obj);
			}
		}
		if ( ! bResult )
		{
			this.format(form);
		}
		return bResult;
	}

	function __Caf_debug(form) {
		if ( form == null) form = this.form;
		var tempReturnStr = '';
		for ( var i=0, n=form.length; i < n ; i++ ) {
			var obj = form[i];
			try {
				if ( obj == null || ( typeof obj == "undefined" ) ) continue;
				if ( obj.type == null || obj.type == "undefined" ) continue;
				switch(obj.type) {
					case "text" :		//validate
						tempReturnStr = tempReturnStr + ( obj.type + '\t\t'+obj.name);
						tempReturnStr = tempReturnStr + ( '\t\t'+obj.getAttribute('colName')+'\t'+obj.getAttribute('datatype')+'\t'+obj.getAttribute('notnull')+'\t'+obj.getAttribute('minlength')+'\t'+obj.getAttribute('maxlength')+'\t'+obj.getAttribute('maxNumber')+'\t'+obj.getAttribute('minNumber')+'\t'+obj.getAttribute('predate')+'\n');
						break;
					case "password" :	//validate
						tempReturnStr = tempReturnStr + ( obj.type + '\t'+obj.name);
						tempReturnStr = tempReturnStr + ( '\t\t'+obj.getAttribute('colName')+'\t'+obj.getAttribute('datatype')+'\t'+obj.getAttribute('notnull')+'\t'+obj.getAttribute('minlength')+'\t'+obj.getAttribute('maxlength')+'\n');
						break;
					case "radio" :		
						tempReturnStr = tempReturnStr + ( obj.type + '\t\t'+obj.name);
						tempReturnStr = tempReturnStr + ( '\t\t'+obj.getAttribute('colName')+'\t'+obj.getAttribute('notnull')+'\t'+obj.getAttribute('checkedValue')+'\n');
						break;
					case "checkbox" :	
						tempReturnStr = tempReturnStr + ( obj.type + '\t'+obj.name);
						tempReturnStr = tempReturnStr + ( '\t\t'+obj.getAttribute('colName')+'\t'+obj.getAttribute('notnull')+'\t'+obj.getAttribute('checkedValue')+'\n');
						break;
					case "select-one" : 
						tempReturnStr = tempReturnStr + ( obj.type + '\t'+obj.name);
						tempReturnStr = tempReturnStr + ( '\t\t'+obj.getAttribute('colName')+'\t'+obj.getAttribute('notnull')+'\t'+obj.getAttribute('selectedValue')+'\n');
						break;
					default : 
						tempReturnStr = tempReturnStr + ( obj.type + '\t\t'+obj.name+'\n');
				}
			}catch(e){ 
				continue;
				alert(obj.name);
			}
		}
		alert(tempReturnStr);
	}

	function __Caf_obj_setDefaultValue(obj, form) {
		if ( form == null) form = this.form;
		if ( obj == null || ( typeof obj == "undefined" ) ) return;
		if ( obj.type == null || obj.type == "undefined" ) return;
		obj_format(obj);
		switch(obj.type) {
			case "text" :		
			case "hidden" :		
			case "password" :	
				if ( obj.getAttribute('default') != null && obj.value == '' ) {
					obj.value = obj.getAttribute('default');
				}
				break;
			case "radio" :
			case "checkbox" :	
				clearRadioObject(eval('form.'+obj.name));
				if( obj.getAttribute('checkedValue') != null ) 
				{
					setCheckbox(eval('form.'+obj.name) ,obj.getAttribute('checkedValue')) ;
				}
				break;
			case "select-one" : 
			case "select-multiple" : 
				if ( obj.getAttribute("selectedValue") )
				{
					setSelect(obj, obj.getAttribute("selectedValue"));
				}
				break;
		}
	}

	function __Caf_obj_setValue(obj, value, form) {
		if ( form == null) form = this.form;
		if ( obj == null || ( typeof obj == "undefined" ) ) return;
		if ( obj.type == null || obj.type == "undefined" ) return;
		switch(obj.type) {
			case "text" :		
			case "hidden" :		
			case "password" :	
				obj.value = value;
				break;
			case "textarea" : 
				$(obj).setValue(value);
			case "radio" :
			case "checkbox" :	
				setCheckbox( eval('form.'+obj.name) , value) ;
				break;
			case "select-one" : 
			case "select-multiple" : 
				setSelect(obj, value);
				break;
		}
		obj_format(obj);
	}


	function __Caf_setDefaultValue(form) {
		if ( form == null) form = this.form;
		for ( var i=0, n=form.length; i < n ; i++ ) {
			var obj = form[i];
			try {
				this.setObjectDefaultValue(obj, form);
			}catch(e){ 
				continue;
				alert(obj.name);
			}
		}
	}

	function __Caf_formReset(form) {
		if ( form == null) form = this.form;
		form.reset();
		this.setDefaultValue(form);
	}
	function __Caf_init(form) {
		var tempReturnStr = '';
		if ( ! form )
		{
			alert('form ÀÌ ¾ø½À´Ï´Ù. ');
			return;
		}
		this.form = form;
		for ( var i=0, n=form.length; i < n ; i++ ) {
			var obj = form[i];
			try {
				if ( obj == null || ( typeof obj == "undefined" ) ) continue;
				if ( obj.type == null || obj.type == "undefined" ) continue;
				tempReturnStr = tempReturnStr + ( obj.type + '\t\t'+obj.name+'\n');
				
    // Style sheet Àû¿ë

				switch(obj.type) {
					case "text" :		
					case "password" :	
						var datatype = toUpperCase( obj.getAttribute( "datatype" ) );
						var minNumber = obj.getAttribute( "minNumber" );
						if ( datatype == "CURRENCY" || datatype == "DOTCURRENCY" ) {
							obj.style.textAlign = "right";
							if ( datatype == "CURRENCY" && obj.getAttribute("minNumber") == null) obj.setAttribute( "minNumber", "0" );
						}
						if ( datatype == "TIME" ) {
							obj.setAttribute( "maxLength", "5" );
						}
						if ( datatype == "DATE" ) {
							obj.setAttribute( "maxLength", "10" );
						}
						// Style sheet Àû¿ë
						if( obj.getAttribute( "notnull" ) == 'true' ) 	obj.style.backgroundColor = INPUT_NOTNULL_BG_COLOR;
						if( obj.getAttribute( "readonly" ) ) 			obj.style.backgroundColor = INPUT_READONLY_BG_COLOR;
						if( obj.getAttribute( "right" ) != null ) 		obj.style.textAlign = "right";
						// event Àû¿ë
						if( obj.getAttribute( "onblur" ) == null ) 		$(obj).observe('blur', wfcb_onblur);
						if( obj.getAttribute( "onfocus" ) == null ) 	$(obj).observe('focus', wfcb_onfocus);
						if( obj.getAttribute( "onkeyup" ) == null ) 	$(obj).observe('keyup', wfcb_onkeyup);
						// if( obj.getAttribute( "onkeydown" ) == null ) 	obj.onkeydown = wfcb_onkeydown;
						if( obj.getAttribute( "onkeypress" ) == null ) 	$(obj).observe('keypress', wfcb_onkeypress);
	
						//default 
						if ( obj.getAttribute('default') != null && obj.value == '' ) {
							obj.value = obj.getAttribute('default');
						}
						// if( obj.getAttribute( "mask" ) == null || obj.getAttribute( "readonly" ) ) obj.setAttribute( "mask", "n" );
						setImeMode( obj );
						obj_format( obj );
						break;
					case "radio" :
					case "checkbox" :	
						//default 
						if( obj.getAttribute('checkedValue') != null ) setCheckbox( eval('form.'+obj.name) ,obj.getAttribute('checkedValue')) ;
						break;
					case "select-one" : 
					case "select-multiple" : 
						//default 
						if ( obj.getAttribute("selectedValue") ) setSelect(obj, obj.getAttribute("selectedValue"));
						break;
					case "textarea" :	
		                setImeMode( obj );
				}
			}catch(e){ 
				continue;
				alert(tempReturnStr);
			}
		}
	}

function wfcb_onblur (event){
	var obj = event.element();
		if ( obj.getAttribute( "uppercase" ) != null ) obj.value = obj.value.toUpperCase();
		if ( obj.getAttribute( "lowercase" ) != null ) obj.value = obj.value.toLowerCase();
		if ( ! obj_validate( obj ) ) return false; 	// µ¥ÀÌÅÍ À¯È¿¼º °ËÁõ
		__Caf_obj_setDefaultValue(obj);
		if ( ! obj.getAttribute( "readonly" ) ) obj_format( obj ); 						// Æ÷¸ËÀû¿ë
	return true;
}

function wfcb_onfocus (event){
	var obj = event.element();
    if ( ! obj.getAttribute("readonly") ) obj.select();
}

function wfcb_onkeyup (event, form){
	var obj = event.element();
	var _key = event.keyCode ? event.keyCode: event.which ;

	if ( _key==Event.KEY_BACKSPACE ||
		 _key==Event.KEY_TAB ||
		 _key==Event.KEY_RETURN ||
		 _key==Event.KEY_ESC ||
		 _key==Event.KEY_LEFT ||
		 _key==Event.KEY_UP ||
		 _key==Event.KEY_RIGHT ||
		 _key==Event.KEY_DOWN ||
		 _key==Event.KEY_HOME ||
		 _key==Event.KEY_END ||
		 _key==Event.KEY_PAGEUP ||
		 _key==Event.KEY_PAGEDOWN
	  )	return;
	
/*	if ( _key == 37 || _key == 39 || _key == 9 || _key == 16 ) {
		return;
	}*/
    var datatype = toUpperCase( obj.getAttribute( "datatype" ) );
    var format   = toUpperCase( obj.getAttribute( "format" ) );
    var mask     = toUpperCase( obj.getAttribute( "mask" ) );
    var str      = obj.value;
    if ( obj.getAttribute( "uppercase" ) != null ) obj.value = obj.value.toUpperCase();
    // Æ÷¸ËÀû¿ë
    switch( datatype )
    {
        case "CURRENCY" :
        // 999, 999, 999
        if( str == '0' )
        {
            break;
        }
        str = str.replace( /^0*/, '' ).replace( /,/g, '' );
        var strLen = str.length;
        var retStr = "";
        for( var i = 0; i < strLen; i ++ )
        {
            if ( ( i % 3 == strLen % 3 ) && ( i != 0 ) ) retStr += ",";
            retStr += str.charAt( i );
        }
        obj.value = retStr;
        break;
        case "DOTCURRENCY" :
		// 999, 999, 999
        var afterNo = "";
        var preNo = "";
		var negativeNumber = false;
		if (str.indexOf('-') > -1)
		{
			negativeNumber = true;
			str = str.substring(1, str.length);
		}
        if ( str.indexOf( '.' ) > - 1 )
        {
            afterNo = str.substring( str.indexOf( '.' ) + 1 );
            afterNo = "." + afterNo.replace( /\,/g, '' ).replace( /\./g, '' );
            preNo = str.substring( 0, str.indexOf( '.' ) );
        }
        else
        {
            afterNo = "";
            preNo = str;
        }
        preNo = preNo.replace( /^0*/, '' ).replace( /,/g, '' )
        //if ( preNo == "" ) preNo = "0";
        var preNoLen = preNo.length;
        var retStr = "";
        for( var i = 0; i < preNoLen; i ++ )
        {
            if ( ( i % 3 == preNoLen % 3 ) && ( i != 0 ) ) retStr += ",";
            retStr += preNo.charAt( i );
        }
        retStr = retStr + afterNo;
		if ( negativeNumber ) {
			obj.value = '-' + retStr;
		} else {
	        obj.value = retStr;
		}
        break;
        case "TIME" :
		if ( _key == 8) {
			if (str.length == 3) obj.value = str.substring(0,2);
			break;
		}
		str = str.replace( /:/g, '' );
		var strLen = str.length;
		var retStr = "";
        for( var i = 0; i < strLen; i ++ )
        {
            retStr += str.charAt( i );
            if ( i == 1 ) { 
				retStr += ":";
			}
        }
        obj.value = retStr;
        break;
        case "DATE" :
		if ( _key == 8) {
			if (str.length == 4) obj.value = str.substring(0,3);
			if (str.length == 7) obj.value = str.substring(0,6);
			break;
		}
		str = str.replace( /-/g, '' );
		var strLen = str.length;
		var retStr = "";
        for( var i = 0; i < strLen; i ++ )
        {
            retStr += str.charAt( i );
            if ( (i == 3 || i == 5) && _key != 8 ) { 
				retStr += "-";
			}
        }
        obj.value = retStr;
        break;
    }
}
function wfcb_onkeypress (event){
	var obj = event.element();
	var _key = event.keyCode ? event.keyCode: event.which;

	if ( _key == Event.KEY_RETURN ) 
	{
		if (obj.readAttribute("onEnterKey"))
		{
			if ( obj_validate(obj) && obj.readAttribute("onEnterKey") != '')
			{
				eval(obj.readAttribute("onEnterKey"));
			}
			return;
		} else {
			var form = CafFormUtil.getForm();
			if ( form ) {
				for ( var i=0, n=form.length; i<n ; i++)
				{
					if ( form[i] == obj && (i+1<n) ) {
						nextObj = form[i+1];
						if ( nextObj ) {
							switch(nextObj.type) {
								case "hidden" :		
								case "button" :		
								case "image" :		
									break;
								default : 
									nextObj.focus();
							}
							
						}
						break;
					}
				}
			}
		}
	}

	if ( _key==Event.KEY_BACKSPACE ||
		 _key==Event.KEY_TAB ||
		 _key==Event.KEY_RETURN ||
		 _key==Event.KEY_ESC ||
		 _key==Event.KEY_LEFT ||
		 _key==Event.KEY_UP ||
		 _key==Event.KEY_DOWN ||
		 _key==Event.KEY_HOME ||
		 _key==Event.KEY_END ||
		 _key==Event.KEY_PAGEUP 
	  )	return;

	if ( obj == null )	var obj = this;
    var datatype = toUpperCase( obj.getAttribute( "datatype" ) );
    var format   = toUpperCase( obj.getAttribute( "format" ) );
    var mask     = toUpperCase( obj.getAttribute( "mask" ) );
    var key      = String.fromCharCode ( _key );
    var str      = obj.value;
    if ( datatype == "USERID" || datatype == "PASSWORD" ) return;

    // µ¥ÀÌÅÍ Å¸ÀÔ °ËÁõ
    switch ( datatype )
    {
        case "CURRENCY" :
        if ( ! ( isValidMask( key, "N" ) && isValidType( key, "N" ) ) ) event.stop(); 
        break;
        case "DOTCURRENCY" :
		if ( key == '-' && str.length > 0 )	event.stop();
        if ( ! ( isValidMask( key, "-N." ) && isValidType( key, "N" ) ) ) event.stop();
        break;
        case "DATE" :
        if ( ! ( isValidMask( key, "-N" ) && isValidType( key, "N" ) ) ) event.stop();
        break;
        case "TIME" :
        if ( ! ( isValidMask( key, ":N" ) && isValidType( key, "N" ) ) ) event.stop();
        break;
        case "EMAIL" :
        //if ( ! ( isValidMask( key, "@." ) && isValidType( key, "AN" ) ) ) event.stop();
        break;
        case "REGNO" :
        if ( ! ( isValidMask( key, "N" ) && isValidType( key, "N" ) ) ) event.stop();
        break;
        case "CUSTNO" :
        if ( ! ( isValidMask( key, "N" ) && isValidType( key, "N" ) ) ) event.stop();
        break;
        case "DDDPHONENUM" :
        if ( ! ( isValidMask( key, "N" ) && isValidType( key, "N" ) ) ) event.stop();
        break;
        case "ACCTNO" :
        if ( ! ( isValidMask( key, "N" ) && isValidType( key, "N" ) ) ) event.stop();
        break;
        default :
        // if ( obj.getAttribute( "mask" ) == null || obj.getAttribute( "mask" ) == "" ) obj.setAttribute( "mask", "N" );
        if ( ! ( isValidMask( key, mask ) && isValidType( key, datatype ) ) ) event.stop();
    }
}
// ´ë¹®ÀÚº¯È¯
function toUpperCase( str )
{
    if( isEmpty( str ) ) return str;
    return str.toUpperCase();
}

// ºó°ªÀÎÁö ¸®ÅÏÇÑ´Ù.
function isEmpty( pValue )
{

    if( ( pValue == "" ) || ( pValue == null ) )
    {
        return true;
    }
    return false;
}

// 1 byte °ª¿¡ ´ëÇÏ¿© ÇØ´çµÈ ¸¶½ºÅ©°¡ Á¸ÀçÇÏ´ÂÁö °ËÁõÇÑ´Ù.
function isValidMask( pValue, pMask )
{
    if( isEmpty( pValue ) )	return true;
    if( isEmpty( pMask ) )	return true;
    if( isAlpha( pValue ) || isNum( pValue ) || isHangul( pValue ) )	return true;
    if( pMask == "USE" ) return true;
    // Æ¯¼ö¹®ÀÚ¸¦ ÀüºÎ »ç¿ëÇÏÁö ¸øÇÔ
    if( pMask == "N" )
    {
        ERR_MSG = "ÀÌ Ç×¸ñ¿¡´Â °ø¹éÀÌ³ª Æ¯¼ö¹®ÀÚ¸¦ ÀÔ·ÂÇÒ ¼ö ¾ø½À´Ï´Ù.";
        return false;
    }
    if( pMask.indexOf( pValue ) >= 0 ) 	return true;
    var errmsg = "";
    for( var idx = 0; idx < pMask.length; idx ++ )
    {
        errmsg = errmsg + "'" + pMask.charAt(idx) + "', ";
    }
    errmsg = errmsg.substring( 0, errmsg.length - 2 );
    ERR_MSG = "ÀÌ Ç×¸ñ¿¡´Â '" + pValue + "' À»(¸¦) ÀÔ·ÂÇÒ ¼ö ¾ø½À´Ï´Ù.\nÀÔ·Â°¡´ÉÇÑ Æ¯¼ö¹®ÀÚ´Â " + errmsg + "¸¸ °¡´ÉÇÕ´Ï´Ù.";
    return false;
}
// ÀüÃ¼ °ª¿¡ ´ëÇÏ¿© ÇØ´çµÈ ¸¶½ºÅ©, Å¸ÀÔÀÌ ÀÏÄ¡ÇÏ´ÂÁö °ËÁõÇÑ´Ù.
function isAllValidTypeMask( str, datatype, mask )
{
    for( var i = 0; i < str.length; i ++ )
    {
        if ( ! ( isValidMask( str.charAt( i ), mask ) && isValidType( str.charAt( i ), datatype ) ) )
        {
            return false;
        }
    }
    // for end
    return true;
}
// 1 byte °ªÀÌ ÁÖ¾îÁø Å¸ÀÔÀÎÁö °ËÁõÇÑ´Ù.
function isValidType( pValue, pType )
{
    if( isEmpty( pValue ) )
    {
        return true;
    }
    if( isEmpty( pType ) )
    {
        return true;
    }
    if( ! isAlpha( pValue ) && ! isNum( pValue ) && ! isHangul( pValue ) )
    {
        return true;
    }
    // Å¸ÀÔ °ËÁõ
    var isCorrect = false;
    for( var idx_pType = 0; idx_pType < pType.length; idx_pType ++ )
    {
        switch( pType.charAt( idx_pType ) )
        {
            case 'A' :
            isCorrect = isAlpha( pValue );
            break;
            case 'N' :
            isCorrect = isNum( pValue );
            break;
            case 'H' :
            isCorrect = isHangul( pValue );
            break;
        }
        // Á¤±Ô Å° °ËÁõ
        if( isCorrect )
        {
            break;
        }
    }
    if( isCorrect == false )
    {
        var err_msg =  getDisplayType( pType );
        ERR_MSG = "ÀÌ Ç×¸ñ¿¡´Â " + err_msg + " ¸¸ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.";
        return false;
    }
    return true;
}
// Å¸ÀÔº° ¿¡·¯ ¸Þ¼¼Áö ¼³Á¤
function getDisplayType( type )
{
    var msg = "";
    for( var idx_type = 0; idx_type < type.length; idx_type ++ )
    {
        switch( type.charAt( idx_type ) )
        {
            case 'A' :
            msg = msg + ",¿µ¹®ÀÚ";
            break;
            case 'N' :
            msg = msg + ",¼ýÀÚ";
            break;
            case 'H' :
            msg = msg + ",ÇÑ±Û";
            break;
        }
    }
    return msg.substring( 1 );
}
// ÇÑ±Û ÀÔ·Â°¡´ÉÇÑ ÇÊµå¿¡´Â ÇÑ±Û ¿ì¼±, ¾øÀ¸¸é ¿µ¹®¿ì¼±
function setImeMode( obj )
{
    var datatype = toUpperCase( obj.getAttribute( "datatype" ) );
    // if ( datatype == null || datatype == "" ) return;
    // datatypeÀÌ ¾øÀ»°æ¿ì ÇÑ±Û·Î ¼ÂÆÃ
    if ( datatype == null )
    {
        obj.style.imeMode = "active";
        return;
    }
    if ( datatype.indexOf( "H" ) == - 1 )
    {
        obj.style.imeMode = "disabled";
    }
    else
    {
        obj.style.imeMode = "active";
    }
}


// Ãâ·Â Æ÷¸Ë Àû¿ë
function obj_format( obj )
{
	if (bDEBUG)
	{
		alert('obj_format(obj)\t'+obj.name);
	}
    var datatype = toUpperCase( obj.getAttribute( "datatype" ) );
    var str = obj.value;
    if ( str == null || str == "" )
    {
        return;
    }
    if( datatype != null )
    {
        switch( datatype )
        {
            case "CURRENCY" :
            // ±Ý¾× Çü½Ä
            var retStr = "";
            if( str == '0' )
            {
                break;
            }
            str = str.replace( /^0*|\,/g, '' );
            var strLen = str.length;
            for( var i = 0; i < strLen; i ++ )
            {
                if ( ( i % 3 == strLen % 3 ) && ( i != 0 ) )
                {
                    retStr += ",";
                }
                retStr += str.charAt( i );
            }
            obj.value = retStr;
            break;
            case "DOTCURRENCY" :
            // '.' ÀÖ´Â ±Ý¾× Çü½Ä
            var retStr = "";
            var preNo = "";
            var afterNo = "";
		var negativeNumber = false;
		if (str.indexOf('-') > -1)
		{
			negativeNumber = true;
			str = str.substring(1, str.length);
		}
            if ( str.indexOf( '.' ) > - 1 )
            {
                preNo = str.substring( 0, str.indexOf( '.' ) );
                afterNo = str.substring( str.indexOf( '.' ) );
            }
            else
            {
                preNo = str;
                afterNo = ".";
            }
            preNo = preNo.replace( /^0*|\,/g, '' );
            if ( preNo == "" ) preNo = "0";
            var preNoLen = preNo.length;
				for( var i = 0; i < preNoLen; i ++ )
				{
					if ( ( i % 3 == preNoLen % 3 ) && ( i != 0 ) )
					{
						retStr += ",";
					}
					retStr += preNo.charAt( i );
				}
            if ( obj.getAttribute( "decimalplace" ) != null ) {
				retStr = retStr + rpad( afterNo, Number( obj.getAttribute( "decimalplace" ) ) + 1, '0' );
			}else{
				if (afterNo.length>1) retStr = retStr + afterNo;
			}
			if ( negativeNumber ) {
				obj.value = '-' + retStr;
			} else {
				obj.value = retStr;
			}
            break;
            case "DATE" :
            // ³¯Â¥ Çü½Ä
             var retStr = obj.value;
			 if ( obj.value.length == 8)
			 {
				 retStr = str.substring( 0, 4 ) + "-" + str.substring( 4, 6 ) + "-" + str.substring( 6, 8 );
				 obj.value = retStr;
			 }
            break;
            case "TIME" :
            break;
            case "REGNO" :
            // ÁÖ¹Îµî·Ï Çü½Ä
            var retStr = "";  
            retStr = str.substring( 0, 6 ) + "" + str.substring( 6, 13 );
            obj.value = retStr;
            break;
            case "CUSTNO" :
            // »ç¾÷ÀÚ¹øÈ£ Çü½Ä
            var retStr = "";
            retStr = str.substring( 0, 3 ) + "-" + str.substring( 3, 8 ) + "-" + str.substring( 8 );
            obj.value = retStr;
            break;
            case "ACCTNO" :
            // °èÁÂ¹øÈ£ Çü½Ä
            var retStr = "";
            retStr =  str.substring( 0, 3 ) + "-" + str.substring( 3, 8 ) + "-" + str.substring( 8 );
            obj.value = retStr;
            break;
            case "CARDNO" :
            // Ä«µå¹øÈ£ Çü½Ä
            var retStr = "";
            retStr =  str.substring( 0, 4 ) + "-" + str.substring( 4, 8 ) + "-" + str.substring( 8, 12 ) + "-" + str.substring( 12, 16 );
            obj.value = retStr;
            break;
        }
    }
}

String.prototype.strip = function() {
	var str = this;
	var p1 = str.indexOf('<');
	if (p1 == -1) return str;
	else {
		var p2 = str.indexOf('>', p1);
		if (p2 == -1) return str;
		return (str.substr(0, p1) + str.substr(p2+1)).strip();
	}
}

String.prototype.trim = function() {
	return this.replace(/(^\s*)|(\s*$)/gi, "");
}

// µ¥ÀÌÅÍ À¯È¿¼º°ËÁõ
function obj_validate( obj )
{
        var datatype		 = toUpperCase( obj.getAttribute( "datatype" ) );
        var mask 			 = toUpperCase( obj.getAttribute( "mask" ) );
        var format			 = toUpperCase( obj.getAttribute( "format" ) );
        var minLength 		 = toUpperCase( obj.getAttribute( "minLength" ) );
        var maxLength		= obj.maxLength;

		/* 2007-06-29 textarea ÄÚµåÃß°¡ : ÇÊ¼öÀÔ·ÂÇÏ°í, ±æÀÌ Ã¼Å©¸¸ ÇÑ´Ù. */
		if ( obj.type == 'textarea' )
		{
			maxLength = obj.getAttribute( "maxLength" );
			str = obj.value;
            if( maxLength && maxLength < getByteLength( str ) )
            {
                alert( "ÀÔ·Â°¡´ÉÇÑ ±ÛÀÚ¼ö´Â " + maxLength + "ÀÚ ±îÁö ÀÔ´Ï´Ù. ±ÛÀÚ¼ö¸¦ ÁÙ¿©ÁÖ½Ê½Ã¿À.\n(ÇÑ±ÛÀº 2±ÛÀÚ·Î ÀÎ½ÄÇÕ´Ï´Ù.)" );
                obj.focus();
                return false;
            }
			return true;
		} 

        var minNumber 		 = toUpperCase( obj.getAttribute( "minNumber" ) );
        var maxNumber 		 = toUpperCase( obj.getAttribute( "maxNumber" ) );
        var str = obj.value;
        if ( str != null )
        {
            var tStr = str.trim();
            if ( tStr.length == 0 ) return true;
        }
        if( ( ! isEmpty( datatype ) ) || ( ! isEmpty( mask ) ) )
        {
            ERR_MSG = "";
            switch ( datatype )
            {
                case "DOTCURRENCY" :
                // ±Ý¾× À¯È¿ °ËÁõ
                if ( obj.getAttribute( "decimalplace" ) != null )
                {
                    if ( obj.value.lastIndexOf( '.' ) > 0 )
                    {
                        if ( ( obj.value.length - obj.value.indexOf( '.' ) - 1 ) > ( Number( obj.getAttribute( "decimalplace" ) ) ) )
                        {
                            alert( "¼Ò¼ýÁ¡ ¾Æ·¡ " + obj.getAttribute( "decimalplace" ) + "ÀÚ¸®±îÁö ÀÔ·Â°¡´ÉÇÕ´Ï´Ù." );
                            obj.focus();
                            return false;
                        }
                    }
                }
                break;
                case "CURRENCY" :
                // ±Ý¾× À¯È¿ °ËÁõ
                break;
                case "DATE" :
                // ÀÏÀÚ À¯È¿ °ËÁõ
                if( isValidDate( str ) == false )
                {
                    alert( ERR_MSG );
                    obj.focus();
                    obj.value = "";
                    // obj.select();
                    return false;
                }
                // ½ÃÀÛÀÏÀÚ Á¾·áÀÏÀÚ °³³ä Àû¿ë.   by GPL 2006 - 05 - 26
                // predate°¡ Æ®·çÀÎ°æ¿ì..
                if ( obj.getAttribute( "predate" ) != null )
                {
                    if( isValidDatePeriod( eval(obj.getAttribute( "predate" )), obj ) == false )
                    {
                        alert( ERR_MSG );
                        obj.focus();
                        obj.value = "";
                        // obj.select();
                        return false;
                    }
                }

                break;
                case "TIME" :
                // ÀÏÀÚ À¯È¿ °ËÁõ
                if( isValidTime( str ) == false )
                {
                    alert( ERR_MSG );
                    obj.focus();
                    obj.value = "";
                    // obj.select();
                    return false;
                }
                break;
                case "EMAIL" :
                // EMAIL À¯È¿ °ËÁõ
                if( isValidEmail( str ) == false )
                {
                    alert( ERR_MSG );
                    obj.focus();
                    obj.value = "";
                    // obj.select();
                    return false;
                }
                break;
                case "REGNO" :
                // ÁÖ¹Î¹øÈ£ À¯È¿¼º °ËÁõ
                if( isValidRegNo( str ) == false )
                {
                    alert( ERR_MSG );
                    obj.focus();
                    obj.value = "";
                    // obj.select();
                    return false;
                }
                break;
                case "CUSTNO" :
                // »ç¾÷ÀÚ¹øÈ£ À¯È¿¼º °ËÁõ
                if( isValidCustNo( str ) == false )
                {
                    alert( ERR_MSG );
                    obj.focus();
                    obj.value = "";
                    // obj.select();
                    return false;
                }
                break;
                case "USERID" :
                // ¾ÆÀÌµð °ËÁõ
                if( isValidUserId( str ) == false )
                {
                    alert( ERR_MSG );
                    obj.focus();
                    obj.value = "";
                    // obj.select();
                    return false;
                }
                break;
                case "PASSWORD" :
                // ºñ¹Ð¹øÈ£ °ËÁõ
                if( isValidPassword( str ) == false )
                {
                    alert( ERR_MSG );
                    obj.focus();
                    obj.value = "";
                    // obj.select();
                    return false;
                }
                break;
                case "DDDPHONENUM" :
                // ÀüÈ­¹øÈ£ ±¹¹ø °ËÁõ
                if( isValidDDDPhoneNum( str ) == false )
                {
                    alert( ERR_MSG );
                    obj.focus();
                    obj.value = "";
                    // obj.select();
                    return false;
                }
                break;
                case "MBPHONENUM" :
                // ÀüÈ­¹øÈ£ ±¹¹ø °ËÁõ
                if( isValidMobilePhoneNum( str ) == false )
                {
                    alert( ERR_MSG );
                    obj.focus();
                    obj.value = "";
                    // obj.select();
                    return false;
                }
                break;
                case "ACCTNO" :
                // °èÁÂ¹øÈ£ °ËÁõ
                if( isValidAcctNo( str ) == false )
                {
                    alert( ERR_MSG );
                    obj.focus();
                    obj.value = "";
                    // obj.select();
                    return false;
                }
                break;
                default :
                // 'A', 'N', 'H' ¸¶½ºÅ© °ËÁõ
                for( var i = 0; i < str.length; i ++ )
                {
                    if ( ! ( isValidMask( str.charAt( i ), mask ) && isValidType( str.charAt( i ), datatype ) ) )
                    {
                        alert( ERR_MSG );
                        obj.focus();
                        obj.value = "";
                        // obj.select();
                        return false;
                    }
                }
                // for end
            }
            // switch end
        }
        // if end

		var strLength = getByteLength( str ) ;

        // ÃÖ´ë ±æÀÌ °ËÁõ
        if( ! isEmpty( maxLength ) )
        {
            if( maxLength != -1 && maxLength < strLength )
            {
                alert( "ÀÔ·Â°¡´ÉÇÑ ±ÛÀÚ¼ö´Â " + maxLength + "ÀÚ ±îÁö ÀÔ´Ï´Ù. ±ÛÀÚ¼ö¸¦ ÁÙ¿©ÁÖ½Ê½Ã¿À.\n(ÇÑ±ÛÀº 2±ÛÀÚ·Î ÀÎ½ÄÇÕ´Ï´Ù.)" );
                obj.focus();
                return false;
            }
        }
        // ÃÖ¼Ò ±æÀÌ °ËÁõ
        if( ! isEmpty( minLength ) )
        {
            if ( strLength == 0 ) return true;
            if( minLength > strLength )
            {
                alert( "ÀÔ·Â °¡´ÉÇÑ ÃÖ¼Ò±ÛÀÚ¼ö´Â " + minLength + "ÀÚ ±îÁö ÀÔ´Ï´Ù." );
                obj.focus();
                return false;
            }
        }

        // low À¯È¿°ª °ËÁõ
        if( ! isEmpty( minNumber ) )
        {
            if( eval( str.replace(/,/g,"") - minNumber ) < 0 )
            {
                alert( "" + putComma( minNumber ) + " ÀÌ»óÀ» ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù." );
                obj.focus();
                obj.select();
                return false;
            }
        }
        // high À¯È¿°ª °ËÁõ
        if( ! isEmpty( maxNumber ) )
        {
            if( eval( str.replace(/,/g,"") - maxNumber ) > 0 )
            {
                alert( "" + putComma( maxNumber ) + " ¹Ì¸¸À» ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù." );
                obj.focus();
                obj.select();
                return false;
            }
        }
        return true;
}
/* *
* À¯È¿ÇÏ´Â( Á¸ÀçÇÏ´Â ) Time ÀÎÁö Ã¼Å©
* ex ) var time = form.time.value; // '2310'
*     if ( ! isValidTime( time ) ) {
*         alert( ERR_MSG );
*     }
*/
function isValidTime( time )
{
    var hour  = time.substring( 0, 2 );
    var min   = time.substring( 3, 5 );
    if ( isValidHour( hour ) && isValidMin( min ) )
    {
        return true;
    } else {
		ERR_MSG = "À¯È¿ÇÏÁö ¾ÊÀº ½Ã°£ÀÔ´Ï´Ù.";
	    return false;
	}
}
/* *
* À¯È¿ÇÑ( Á¸ÀçÇÏ´Â ) ¿ù( êÅ )ÀÎÁö Ã¼Å©
*/
function isValidMonth( mm )
{
    var m = parseInt( mm, 10 );
    return ( m >= 1 && m <= 12 );
}

/* *
* À¯È¿ÇÑ( Á¸ÀçÇÏ´Â ) ½Ã( ãÁ )ÀÎÁö Ã¼Å©
*/
function isValidHour( hh )
{
    var h = parseInt( hh, 10 );
    return ( h >= 1 && h <= 24 );
}

/* *
* À¯È¿ÇÑ( Á¸ÀçÇÏ´Â ) ºÐ( ÝÂ )ÀÎÁö Ã¼Å©
*/
function isValidMin( mi )
{
    var m = parseInt( mi, 10 );
    return ( m >= 1 && m <= 60 );
}

/* *
* Time Çü½ÄÀÎÁö Ã¼Å©( ´À½¼ÇÑ Ã¼Å© )
*/
function isValidTimeFormat( time )
{
    return ( ! isNaN( time ) && time.length == 12 );
}
/* *
* À¯È¿ÇÑ( Á¸ÀçÇÏ´Â ) ÀÏ( ìí )ÀÎÁö Ã¼Å©
*/
function isValidDay( yyyy, mm, dd )
{
    var m = parseInt( mm, 10 ) - 1;
    var d = parseInt( dd, 10 );

    var end = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
    if ( ( yyyy % 4 == 0 && yyyy % 100 != 0 ) || yyyy % 400 == 0 )
    {
        end[1] = 29;
    }

    return ( d >= 1 && d <= end[m] );
}


// ÀÏÀÚ À¯È¿ °ËÁõ
function isValidDate( datestr )
{
    // ³ÎÀÎÁö ?
    if( isEmpty( datestr ) )
    {
        return null;
    }
    // ¼ýÀÚÀÎÁö ?
    /* if( ! isNum( datestr ) ){		// modify by suineg
    ERR_MSG = "³¯Â¥Çü½ÄÀ¸·Î ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù.";
    return false;
    } */
    // ±æÀÌ°¡ 8ÀÚ¸® ?
	if ( datestr.length == 8 )
	{
		datestr = datestr.substring(0,4)+'-'+datestr.substring(4,6)+'-'+datestr.substring(6,8);
	}
    if( datestr.length != 10 )
    {
        ERR_MSG = "³â-¿ù-ÀÏ 10ÀÚ¸®¸¦ ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù.";
        return false;
    }
    var yy = Number( datestr.substring( 0, 4 ) );
    var mm = Number( datestr.substring( 5, 7 ) );
    var dd = Number( datestr.substring( 8, 10 ) );
    // ¿ù °ËÁõ
    if( ! ( mm > 0 && mm < 13 ) )
    {
        ERR_MSG = "¿ùÀº 1~12 ±îÁö¸¸ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.  ";
        return false;
    }
    // À±³â °ËÁõ
    var boundDay = "";
    if( mm != 2 )
    {
        var mon = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
        boundDay = mon[mm - 1];
    }
    else
    {
        if ( yy % 4 == 0 && yy % 100 != 0 || yy % 400 == 0 )
        {
            boundDay = 29;
        }
        else
        {
            boundDay = 28;
        }
    }
    // ÀÏ °ËÁõ
    if( ( dd <= 0 ) || ( dd > boundDay ) )
    {
        ERR_MSG = "À¯È¿ÇÏÁö ¾ÊÀº ÀÏÀÚÀÔ´Ï´Ù.\n(" + yy + "³â " + mm + "¿ùÀº " + boundDay + "ÀÏ ±îÁö ÀÖ½À´Ï´Ù.)";
        return false;
    }
    return true;
}



/* *
* 	ÄÞ¸¶¼³Á¤.
*/
function putComma( input )
{
    var num = input;

    if ( num < 0 )
    {
        num *= - 1;
        var minus = true;
    }
    else
    {
        var minus = false;
    }

    var dotPos = ( num + "" ).split( "." );
    var dotU = dotPos[0];
    var dotD = dotPos[1];
    var commaFlag = dotU.length % 3;

    if( commaFlag )
    {
        var out = dotU.substring( 0, commaFlag );
        if ( dotU.length > 3 ) out += ",";
    }
    else var out = "";

    for ( var i = commaFlag; i < dotU.length; i += 3 )
    {
        out += dotU.substring( i, i + 3 );
        if( i < dotU.length - 3 ) out += ",";
    }

    if( minus ) out = "-" + out;
    if( dotD ) return out + "." + dotD;
    else return out;
}


// ¿ùÀÇ ³¡ ÀÏÀÚ ¾ò±â
function getEndDate( datestr )
{

    // ³ÎÀÎÁö ?
    if( isEmpty( datestr ) )
    {
        return null;
    }

    // ¼ýÀÚÀÎÁö ?
    if( ! isNum( datestr ) )
    {
        return null;
    }

    // ±æÀÌ°¡ 8ÀÚ¸® ?
    if( datestr.length != 6 )
    {
        return null;
    }

    var yy = Number( datestr.substring( 0, 4 ) );
    var mm = Number( datestr.substring( 4, 6 ) );

    // À±³â °ËÁõ
    var boundDay = "";

    if( mm != 2 )
    {
        var mon = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
        boundDay = mon[mm - 1];
    }
    else
    {
        if ( yy % 4 == 0 && yy % 100 != 0 || yy % 400 == 0 )
        {
            boundDay = 29;
        }
        else
        {
            boundDay = 28;
        }
    }

    return boundDay;
}

// Left ºóÀÚ¸® ¸¸Å­ padStr À» ºÙÀÎ´Ù.
function lpad( src, len, padStr )
{
    var retStr = "";
    var padCnt = Number( len ) - String( src ).length;
    for( var i = 0; i < padCnt; i ++ ) retStr += String( padStr );
    return retStr + src;
}

// Right ºóÀÚ¸® ¸¸Å­ padStr À» ºÙÀÎ´Ù.
function rpad( src, len, padStr )
{
    var retStr = "";
    var padCnt = Number( len ) - String( src ).length;
    for( var i = 0; i < padCnt; i ++ ) retStr += String( padStr );
    return src + retStr;
}

// ÀüÈ­¹øÈ£ ±¹¹ø°ËÁõ
function isValidDDDPhoneNum( dddphonenum )
{

    // ³ÎÀÎ°¡ ?
    if ( isEmpty( dddphonenum ) )
    {
        return null;
    }


    if ( dddphonenum != "02" && dddphonenum != "031" && dddphonenum != "032" && dddphonenum != "033" && dddphonenum != "041" &&
    dddphonenum != "042" && dddphonenum != "043" && dddphonenum != "051" && dddphonenum != "052" && dddphonenum != "053" &&
    dddphonenum != "054" && dddphonenum != "055" && dddphonenum != "061" && dddphonenum != "062" && dddphonenum != "063" &&
    dddphonenum != "064" && dddphonenum != "011" && dddphonenum != "016" && dddphonenum != "017" && dddphonenum != "018" && dddphonenum != "019" )
    {

        ERR_MSG = "Àß¸øµÈ ÀüÈ­¹øÈ£ ±¹¹øÀÔ´Ï´Ù.";
        return false;
    }

    return true;

}


// ÀüÈ­¹øÈ£ ±¹¹ø°ËÁõ
function isValidMobilePhoneNum( phonenum )
{

    // ³ÎÀÎ°¡ ?
    if ( isEmpty( phonenum ) )
    {
        return null;
    }


    if (  phonenum != "010" && phonenum != "011" && phonenum != "016" && phonenum != "017" && phonenum != "018" && phonenum != "019" )
    {

        ERR_MSG = "Àß¸øµÈ ÇÚµåÆù¹øÈ£ÀÔ´Ï´Ù.";
        return false;
    }

    return true;

}


// ¼ýÀÚ°ËÁõ
function isNum( str )
{

    if( isEmpty( str ) ) return false;

    for( var idx = 0; idx < str.length; idx ++ )
    {
        if( str.charAt( idx ) < '0' || str.charAt( idx ) > '9' )
        {
            return false;
        }
    }
    return true;
}


// ¿µ¹®ÀÚ°ËÁõ
function isAlpha( str )
{

    if( isEmpty( str ) ) return false;

    for( var idx = 0; idx < str.length; idx ++ )
    {
        if( ! ( ( str.charAt( idx ) >= 'a' && str <= 'z' ) || ( str.charAt( idx ) >= 'A' && str <= 'Z' ) ) )
        {
            return false;
        }
    }
    return true;
}


// ÇÑ±Û°ËÁõ
function isHangul( str )
{

    if( isEmpty( str ) ) return false;

    for( var idx = 0; idx < str.length; idx ++ )
    {
        var c = escape( str.charAt( idx ) );
        if ( c.indexOf( "%u" ) == - 1 )
        {
            return false;
        }
    }
    return true;
}

// °Ë»ö³¯Â¥ À¯È¿±â°£
function getBoundDate( yy, mm, dd, stdDate )
{
    var today = new Date();
    today.setYear( stdDate.substring( 0, 4 ) );
    today.setMonth( stdDate.substring( 4, 6 ) - 1 );
    today.setDate( stdDate.substring( 6, 8 ) );
    today.setHours( today.getHours() );
    today.setMinutes( today.getMinutes() );
    today.setSeconds( today.getSeconds() );

    yy = Number( yy );
    mm = Number( mm );
    dd = Number( dd );

    var date = new Date();

    var DAY = 24 * 60 * 60 * 1000;

    if ( yy != 0 )
    {
        date.setTime( today.getTime() + DAY * 365 * yy );
    }

    if ( mm != 0 )
    {
        date.setTime( today.getTime() + DAY * 30 * mm );
    }

    if ( dd != 0 )
    {
        date.setTime( today.getTime() + DAY * dd );
    }

    return lpad( new String( date.getYear() ), 4, '0' ) + lpad( new String( date.getMonth() + 1 ), 2, '0' ) + lpad( new String( date.getDate() ), 2, '0' );
}



function getBoundDate( yy, mm, dd )
{
    yy = Number( yy );
    mm = Number( mm );
    dd = Number( dd );

    var date = new Date();

    var DAY = 24 * 60 * 60 * 1000;


    if ( yy != 0 )
    {
        date.setTime( datToday.getTime() + DAY * 365 * yy );
    }

    if ( mm != 0 )
    {
        date.setTime( datToday.getTime() + DAY * 30 * mm );
    }

    if ( dd != 0 )
    {
        date.setTime( datToday.getTime() + DAY * dd );
    }

    return lpad( new String( date.getYear() ), 4, '0' ) + lpad( new String( date.getMonth() + 1 ), 2, '0' ) + lpad( new String( date.getDate() ), 2, '0' );
}

// ½ÇÁ¦±æÀÌ ¹ÝÈ¯( ÇÑ±Û 2byte °è»ê )
function getByteLength( s )
{

    var len = 0;
    if ( s == null ) return 0;
    for( var i = 0; i < s.length; i ++ )
    {
        var c = escape( s.charAt( i ) );
        if ( c.length == 1 ) len ++ ;
        else if ( c.indexOf( "%u" ) != - 1 ) len += 2;
        else if ( c.indexOf( "%" ) != - 1 ) len += c.length / 3;
    }
    return len;
}

// °Ë»ö³¯Â¥ Ã¼Å©
function isVaildTerm( obj, yy, mm, dd )
{
    var datestr = obj.value;


    // ³ÎÀÎÁö ?
    if( isEmpty( datestr ) )
    {
        return null;
    }

    // ³¯Â¥ Æ÷¸ËÁ¦°Å
    obj_removeformat( obj );

    // 8ÀÚ¸®ÀÎÁö ?
    if ( getByteLength( datestr ) != 8 )
    {
        alert( "³¯Â¥´Â '-'¸¦ Á¦¿ÜÇÑ 8ÀÚ¸® ¼ýÀÚ·Î ÀÔ·ÂÇÏ½Ê½Ã¿À." );
        return false;

    }



    // yy, mm, dd, fromto°¡ ¾øÀ» °æ¿ì
    if ( yy == null ) yy = 0;
    if ( mm == null ) mm = 0;
    if ( dd == null ) dd = 0;

    // °Ë»ö³¯Â¥ À¯È¿±â°£ °¡Á®¿À±â
    var boundDate = getBoundDate( yy, mm, dd );

    if ( yy < 0  || mm < 0  || dd < 0 )
    {
        if ( boundDate > datestr )
        {
            alert( "À¯È¿ÇÏÁö ¾ÊÀº °Ë»ö³¯Â¥ÀÔ´Ï´Ù.\nÀ¯È¿ÇÑ ³¯Â¥´Â" + boundDate.substring( 0, 4 ) + "³â " + boundDate.substring( 4, 6 ) + "¿ù " + boundDate.substring( 6 ) + "ÀÏºÎÅÍ ÀÔ´Ï´Ù." );
            obj.select();
            return false;
        }
    }
    else
    {
        if ( boundDate < datestr )
        {
            alert( "À¯È¿ÇÏÁö ¾ÊÀº °Ë»ö³¯Â¥ÀÔ´Ï´Ù.\nÀ¯È¿ÇÑ ³¯Â¥´Â" + boundDate.substring( 0, 4 ) + "³â " + boundDate.substring( 4, 6 ) + "¿ù " + boundDate.substring( 6 ) + "ÀÏ±îÁö ÀÔ´Ï´Ù." );
            obj.select();
            return false;
        }
    }


    return true;

}

// ¿À´Ã³¯Â¥
function getToDay()
{

    var date = new Date();

    var year  = date.getFullYear();
    var month = date.getMonth() + 1; // 1¿ù = 0, 12¿ù = 11ÀÌ¹Ç·Î 1 ´õÇÔ
    var day   = date.getDate();

    if ( ( "" + month ).length == 1 )
    {
        month = "0" + month;
    }
    if ( ( "" + day ).length   == 1 )
    {
        day   = "0" + day;
    }

    return ( "" + year + month + day )

}

// Ã¹¹øÂ° ´Þ ³¯Â¥
function getMonthFirstDay()
{
    var date = new Date();

    var year  = date.getFullYear();
    var month = date.getMonth() + 1; // 1¿ù = 0, 12¿ù = 11ÀÌ¹Ç·Î 1 ´õÇÔ
    var day   = 1;

    if ( ( "" + month ).length == 1 )
    {
        month = "0" + month;
    }
    if ( ( "" + day ).length   == 1 )
    {
        day   = "0" + day;
    }

    return ( "" + year + month + day ) 

}
	
// ¸Å³â 1¿ù 1ÀÏ
function getMonthFirstDayByDay()
{
    var date = new Date();

    var year  = date.getFullYear();
    var month = 1; // 1¿ù = 0, 12¿ù = 11ÀÌ¹Ç·Î 1 ´õÇÔ
    var day   = 1;

    if ( ( "" + month ).length == 1 )
    {
        month = "0" + month;
    }
    if ( ( "" + day ).length   == 1 )
    {
        day   = "0" + day;
    }

    return ( "" + year + month + day ) 

}

function getDateString( date )
{
    return ( date.getYear() < 10 ? '0' : '' ) + date.getYear() + "-" +
    ( date.getMonth() + 1 < 10 ? '0' : '' ) + ( date.getMonth() + 1 ) + "-" +
    ( date.getDate() < 10 ? '0' : '' ) + date.getDate();
}

// ¾ÆÀÌµð °ËÁõ
function isValidUserId( userid )
{
    // ³ÎÀÎÁö ?
    if( isEmpty( userid ) )
    {
        return null;
    }
    if( getByteLength( userid ) > 10 || getByteLength( userid ) < 6 )
    {
        ERR_MSG = "»ç¿ëÀÚ ¾ÆÀÌµð´Â ¿µ¼ýÀÚ È¥ÇÕÇÏ¿© 6ÀÚ ÀÌ»ó 10ÀÚÀÌ³»·Î ¹Ýµå½Ã ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù.";
        return false;
    }
    if( isNum( userid ) )
    {
        ERR_MSG = "¾ÆÀÌµð´Â ¼ýÀÚ·Î¸¸ ±¸¼ºÇÒ ¼ö ¾ø½À´Ï´Ù.";
        return false;
    }
    for( var i = 0; i < userid.length; i ++ )
    {
        if ( ! ( isValidMask( userid.charAt( i ), "N" ) && isValidType( userid.charAt( i ), "AN" ) ) )
        {
            return false;
        }
    }
    // for end
    return true;
}
// ºñ¹Ð¹øÈ£ °ËÁõ
function isValidPassword( pwd )
{
    var alpaBig = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var alpaSmall = "abcdefghijklmnopqrstuvwxyz";
    var num = "01234567890";
    // ³ÎÀÎÁö ?
    if( isEmpty( pwd ) )
    {
        return null;
    }
    // ºñ¹Ð¹øÈ£´Â 6ÀÚ¸®ÀÌ»ó 8ÀÚ¸® ÀÌÇÏ .. maxLength = 10·Î º¯°æ ÇÒ°Í
    if( getByteLength( pwd ) < 6 || getByteLength( pwd ) > 10 )
    {
        ERR_MSG = "ºñ¹Ð¹øÈ£´Â ¹Ýµå½Ã 6ÀÚ ÀÌ»ó 8ÀÚÀÌ³»·Î ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.";
        return false;
    }
    if( isNum( pwd ) )
    {
        ERR_MSG = "ºñ¹Ð¹øÈ£´Â ¹Ýµå½Ã ¾ËÆÄºªÀ» ÇÏ³ª ÀÌ»ó Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù.";
        return false;
    }
    for( var i = 0; i < alpaBig.length - pwd.length + 1; i ++ )
    {
        if( alpaBig.substring( i, i + pwd.length ) == pwd )
        {
            ERR_MSG = "ABCDEFÃ³·³ ¿¬¼ÓµÈ ¹®ÀÚ´Â »ç¿ëÇÒ ¼ö °¡ ¾ø½À´Ï´Ù.";
            return false;
        }
    }
    if ( pwd.indexOf( ' ' ) > - 1 )
    {
        ERR_MSG = "°ø¹éÀº ÀÔ·ÂÇÒ ¼ö ¾ø½À´Ï´Ù.";
        return false;
    }
    for( i = 0; i < alpaSmall.length - pwd.length + 1; i ++ )
    {
        if( alpaSmall.substring( i, i + pwd.length ) == pwd )
        {
            ERR_MSG = "abcdefÃ³·³ ¿¬¼ÓµÈ ¹®ÀÚ´Â »ç¿ëÇÒ ¼ö °¡ ¾ø½À´Ï´Ù.";
            return false;
        }
    }
    for( i = 1; i < pwd.length; i ++ )
    {
        if( pwd.substring( 0, 1 ) != pwd.substring( i, i + 1 ) )
        return true;
    }
    ERR_MSG = "ºñ¹Ð¹øÈ£´Â °°Àº ¹®ÀÚ¸¸ ¿¬¼ÓÇØ¼­ ÀÔ·ÂÇÒ ¼ö ¾ø½À´Ï´Ù";
    return false;
}

// ÁÖ¹Îµî·Ï¹øÈ£ À¯È¿¼º °ËÁõ
function isValidRegNo( regno )
{
    // ³ÎÀÎÁö ?
    if( isEmpty( regno ) )
    {
        return null;
    }
    // 13ÀÚ¸® ¼ýÀÚÀÎ°¡ ? -> ÁÖ¹Î¹øÈ£
    if( ( getByteLength( regno ) != 13 ) || ( ! isNum( regno ) ) )
    {
        ERR_MSG = "ÁÖ¹Îµî·Ï¹øÈ£´Â 13ÀÚ¸® ¼ýÀÚÀÔ´Ï´Ù.";
        return false;
    }
    // ¿Ã¹Ù¸¥ ÁÖ¹Îµî·Ï¹øÈ£ÀÎÁö °ËÁõ
    var ju = regno.substring( 0, 6 );
    var ju1 = regno.substring( 6 );
    juid = new Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
    for( var i = 0; i < 6; i ++ )
    juid[i] = ju.substring( i, i + 1 );
    for( i = 0; i < 7; i ++ )
    juid[i + 6] = ju1.substring( i, i + 1 );
    for( var sum = 0, i = 0; i < 12; i ++ )
    sum += juid[i] * ( ( i > 7 ) ? ( i - 6 ) : ( i + 2 ) );
    var mod = 11 - sum % 11;

    if(juid[6] == '5' || juid[6] == '6'){ // ¿Ü±¹ÀÎ ÁÖ¹Î¹øÈ£ Ã¼Å©
	      if(mod>=10){
		   mod-=10;
		  }
		  
		  mod += 2;
		
		  if(mod>=10){
		   mod-=10;
		  }

		  if( mod != juid[12]){
		   return false;
		  }else{
		   return true;
		  }
	} else {  // ³»±¹ÀÎ ÁÖ¹Î¹øÈ£ Ã¼Å©
		if( mod >= 10 )
	    	mod -= 10;
	    if( mod != juid[12] )
	    {
	        ERR_MSG = "¿Ã¹Ù¸£Áö ¾ÊÀº ÁÖ¹Îµî·Ï¹øÈ£ÀÔ´Ï´Ù.";
	        return false;
	    }
	    else
	    {
	        return true;
	    }
	}
}
// »ç¾÷ÀÚ¹øÈ£ À¯È¿¼º °ËÁõ
function isValidCustNo( strNumb )
{
    // ³ÎÀÎÁö ?
    if( isEmpty( strNumb ) )
    {
        return null;
    }
    // 10ÀÚ¸® ¼ýÀÚÀÎ°¡ ?
    if( ( getByteLength( strNumb ) != 10 ) || ( ! isNum( strNumb ) ) )
    {
        ERR_MSG = "»ç¾÷ÀÚµî·Ï¹øÈ£´Â 10ÀÚ¸® ¼ýÀÚÀÔ´Ï´Ù.";
        return false;
    }
    sumMod	 = 	0;
    sumMod	 += 	Number( strNumb.substring( 0, 1 ) );
    sumMod	 += 	Number( strNumb.substring( 1, 2 ) ) * 3 % 10;
    sumMod	 += 	Number( strNumb.substring( 2, 3 ) ) * 7 % 10;
    sumMod	 += 	Number( strNumb.substring( 3, 4 ) ) * 1 % 10;
    sumMod	 += 	Number( strNumb.substring( 4, 5 ) ) * 3 % 10;
    sumMod	 += 	Number( strNumb.substring( 5, 6 ) ) * 7 % 10;
    sumMod	 += 	Number( strNumb.substring( 6, 7 ) ) * 1 % 10;
    sumMod	 += 	Number( strNumb.substring( 7, 8 ) ) * 3 % 10;
    sumMod	 += 	Math.floor( Number( strNumb.substring( 8, 9 ) ) * 5 / 10 );
    sumMod	 += 	Number( strNumb.substring( 8, 9 ) ) * 5 % 10;
    sumMod	 += 	Number( strNumb.substring( 9, 10 ) );
    if	( sumMod % 10	 != 	0 )
    {
        ERR_MSG = "¿Ã¹Ù¸£Áö ¾ÊÀº »ç¾÷ÀÚµî·Ï¹øÈ£ÀÔ´Ï´Ù.";
        return false;
    }
    return	true;
}

// ¹ýÀÎ¹øÈ£¸¦  °Ë»ç
// Sect : ¹ýÀÎ¹øÈ£
function isValidCorpNo( Sect )
{
    var  szChkDgt = new Array( 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 );
    var  szCoNo = Sect;
    // ¹ýÀÎ¹øÈ£ ¿À·ù½Ã ºüÁ®³ª°¡´Â ¹æ¹ý
    // if ( szCoNo = "2150110001021" )
    //    return true;
    var  lV1 = 0,  nV2 = 0,  nV3 = 0;

    for( var i = 0 ; i < 12 ; i ++ )
    {
        lV1 = parseInt( szCoNo.substring( i, i + 1 ) ) * szChkDgt[i];
        if( lV1 >= 10 )
        {
            nV2 += lV1 % 10;
        }
        else
        {
            nV2 += lV1;
        }
    }
    nV3 = nV2 % 10;
    if( nV3 > 0 )
    {
        nV3 = 10 - nV3;
    }
    else
    {
        nV3 = 0;
    }
    if( szCoNo.substring( 12, 13 ) != nV3 )
    {
        return false;
    }
    return true;
}
// EMAIL À¯È¿¼º °ËÁõ
function isValidEmail( email )
{
    // ³ÎÀÎÁö ?
    if( isEmpty( email ) )
    {
        return null;
    }
    // ¿Ã¹Ù¸¥ EMAIL ÀÎÁö °ËÁõ
    var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
    if ( email.search( format ) == - 1 )
    {
        ERR_MSG = "À¯È¿ÇÏÁö ¾ÊÀº ÀÌ¸ÞÀÏ Çü½ÄÀÔ´Ï´Ù.";
        return false
    }
    return true;
}

// ÇÊ¼ö Ç×¸ñ °ËÁõ
function obj_nullcheck( obj )
{
    if ( obj.getAttribute( "notnull" ) == "true" )
    {
        if( isEmpty( obj.value ) )
        {
            // obj_allformat(); // ÀüÃ¼ Æ÷¸Ë Àû¿ë
			if (obj.tagName == 'INPUT')	obj.select();
            //
            var colName = "";
            if( obj.getAttribute( "colName" ) != null )
            {
                colName = "\n* ÇÊ¼öÀÔ·Â Ç×¸ñ : " + obj.getAttribute( "colName" ) ;
	            alert( "´ÙÀ½ Ç×¸ñÀº ÇÊ¼öÀÔ·Â Ç×¸ñÀÔ´Ï´Ù.\nµ¥ÀÌÅÍ ÀÔ·Â¸¦ È®ÀÎÇÏ¼¼¿ä.\n" + colName );
            } else {
	            alert( "´ÙÀ½ Ç×¸ñÀº ÇÊ¼öÀÔ·Â Ç×¸ñÀÔ´Ï´Ù.\nµ¥ÀÌÅÍ ÀÔ·Â¸¦ È®ÀÎÇÏ¼¼¿ä.\n\n" + obj.name );
			}
            obj.focus();
            return false;
        }
    }
    return true;
}


// ½ÃÀÛÀÏÀÚ, Á¾·áÀÏÀÚ ±¸ºÐ Ãß°¡. by GPL   2006 - 05 - 26
function isValidDatePeriod( obj1, obj2 )
{
    if ( isValidDate( obj1.value ) && isValidDate( obj2.value )  )
    {	
		var oDate1 = null;
		var oDate2 = null;
		if ( obj1.value.length == 8 )
		{
			oDate1 = obj1.value.toDate('YYYYMMDD');
		} else {
			oDate1 = obj1.value.toDate('YYYY-MM-DD');
		}
		if ( obj2.value.length == 8 )
		{
			oDate2 = obj2.value.toDate('YYYYMMDD');
		} else {
			oDate2 = obj2.value.toDate('YYYY-MM-DD');
		}
        if (  oDate1 <= oDate2 )
        {
            return true;
        }
        else
        {
            ERR_MSG = obj2.getAttribute( "colName" ) + "´Â " + obj1.getAttribute( "colName" ) + "º¸´Ù Å©°Å³ª °°¾Æ¾ß ÇÕ´Ï´Ù.";
            return false;
        }
    }
    return null;
}


// Æ÷¸Ë »èÁ¦
function obj_removeformat( obj )
{
    var datatype = toUpperCase( obj.getAttribute( "datatype" ) );
    var str = obj.value;
    if( datatype != null )
    {
        switch( datatype )
        {
            case "TIME" :
            case "ACCTNO" :
            case "CARDNO" :
            case "CUSTNO" :
            break;
            case "REGNO" :
            case "DATE" :
            // ³¯Â¥ Çü½Ä
            obj.value = str.replace( /-/g, "" );
            break;
            case "CURRENCY" :
            // ±Ý¾×
            obj.value = str.replace( /\,/g, "" );
            break;
            case "DOTCURRENCY" :
            // ±Ý¾×
            obj.value = str.replace( /\,/g, "" );
            break;
        }
    }
	return obj;
}

// ===================================================================
// Author: Matt Kruse <matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
//
// NOTICE: You may use this code for any purpose, commercial or
// private, without any further permission from the author. You may
// remove this notice from your final code if you wish, however it is
// appreciated by the author if at least my web site address is kept.
//
// You may *NOT* re-distribute this code in any way except through its
// use. That means, you can include it in your product, or your web
// site, or any other form where the code is actually being used. You
// may not put the plain javascript up on your site for download or
// include it in your javascript libraries for download. 
// If you wish to share this code with others, please just point them
// to the URL instead.
// Please DO NOT link directly to my .js files from your site. Copy
// the files to your server and use them there. Thank you.
// ===================================================================

function selectUnselectMatchingOptions(obj,regex,which,only){if(window.RegExp){if(which == "select"){var selected1=true;var selected2=false;}else if(which == "unselect"){var selected1=false;var selected2=true;}else{return;}var re = new RegExp(regex);for(var i=0;i<obj.options.length;i++){if(re.test(obj.options[i].text)){obj.options[i].selected = selected1;}else{if(only == true){obj.options[i].selected = selected2;}}}}}
function selectMatchingOptions(obj,regex){selectUnselectMatchingOptions(obj,regex,"select",false);}
function selectOnlyMatchingOptions(obj,regex){selectUnselectMatchingOptions(obj,regex,"select",true);}
function unSelectMatchingOptions(obj,regex){selectUnselectMatchingOptions(obj,regex,"unselect",false);}
function sortSelect(obj){var o = new Array();if(obj.options==null){return;}for(var i=0;i<obj.options.length;i++){o[o.length] = new Option( obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected) ;}if(o.length==0){return;}o = o.sort(
function(a,b){if((a.text+"") <(b.text+"")){return -1;}if((a.text+"") >(b.text+"")){return 1;}return 0;});for(var i=0;i<o.length;i++){obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);}}
function selectAllOptions(obj){for(var i=0;i<obj.options.length;i++){obj.options[i].selected = true;}}
function moveSelectedOptions(from,to){if(arguments.length>3){var regex = arguments[3];if(regex != ""){unSelectMatchingOptions(from,regex);}}for(var i=0;i<from.options.length;i++){var o = from.options[i];if(o.selected){to.options[to.options.length] = new Option( o.text, o.value, false, false);}}for(var i=(from.options.length-1);i>=0;i--){var o = from.options[i];if(o.selected){from.options[i] = null;}}if((arguments.length<3) ||(arguments[2]==true)){sortSelect(from);sortSelect(to);}from.selectedIndex = -1;to.selectedIndex = -1;}
function copySelectedOptions(from,to){var options = new Object();for(var i=0;i<to.options.length;i++){options[to.options[i].text] = true;}for(var i=0;i<from.options.length;i++){var o = from.options[i];if(o.selected){if(options[o.text] == null || options[o.text] == "undefined"){to.options[to.options.length] = new Option( o.text, o.value, false, false);}}}if((arguments.length<3) ||(arguments[2]==true)){sortSelect(to);}from.selectedIndex = -1;to.selectedIndex = -1;}
function moveAllOptions(from,to){selectAllOptions(from);if(arguments.length==2){moveSelectedOptions(from,to);}else if(arguments.length==3){moveSelectedOptions(from,to,arguments[2]);}else if(arguments.length==4){moveSelectedOptions(from,to,arguments[2],arguments[3]);}}
function copyAllOptions(from,to){selectAllOptions(from);if(arguments.length==2){copySelectedOptions(from,to);}else if(arguments.length==3){copySelectedOptions(from,to,arguments[2]);}}
function swapOptions(obj,i,j){var o = obj.options;var i_selected = o[i].selected;var j_selected = o[j].selected;var temp = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);var temp2= new Option(o[j].text, o[j].value, o[j].defaultSelected, o[j].selected);o[i] = temp2;o[j] = temp;o[i].selected = j_selected;o[j].selected = i_selected;}
function moveOptionUp(obj){var selectedCount=0;for(i=0;i<obj.options.length;i++){if(obj.options[i].selected){selectedCount++;}}if(selectedCount!=1){return;}var i = obj.selectedIndex;if(i == 0){return;}swapOptions(obj,i,i-1);obj.options[i-1].selected = true;}
function moveOptionDown(obj){var selectedCount=0;for(i=0;i<obj.options.length;i++){if(obj.options[i].selected){selectedCount++;}}if(selectedCount != 1){return;}var i = obj.selectedIndex;if(i ==(obj.options.length-1)){return;}swapOptions(obj,i,i+1);obj.options[i+1].selected = true;}
function removeSelectedOptions(from){for(var i=(from.options.length-1);i>=0;i--){var o=from.options[i];if(o.selected){from.options[i] = null;}}from.selectedIndex = -1;}


function setSelect( oSelect, value, text ) {	
    for( var i = 0; i < oSelect.options.length; i ++ )
    {
		if( oSelect.options[i].innerText == text ) oSelect.options[i].selected = true;
    }
    for( var i = 0; i < oSelect.options.length; i ++ )
    {
        if( oSelect.options[i].value == value )	oSelect.options[i].selected = true;
    }
}

function getSelectValue( oSelect ){
    var retValue = '';
    for( var j = 0; j < oSelect.options.length; j ++ )
    {
        if ( oSelect.options[j].selected ) {
            if ( retValue != '' ) retValue += ', ';
            retValue += oSelect.options[j].value;
        }
    }
    return retValue;
}
function getSelectText( oSelect ){
    var retValue = '';
    for( var j = 0; j < oSelect.options.length; j ++ )
    {
        if ( oSelect.options[j].selected && oSelect.options[j].value != '' )
        {
            if ( retValue != '' ) retValue += ', ';
            retValue += oSelect.options[j].innerText;
        }
    }
    return retValue;
}


function onsubmitCheckbox(oCheckbox) {
	if ( oCheckbox == null ) return;
    if ( oCheckbox.length > 1 ){
		for ( var inx = 0; inx < oCheckbox.length; inx ++ ) {
			if ( oCheckbox[inx].checked ) { 
				oCheckbox[inx].value='Y';
			} else {
				oCheckbox[inx].value='N';
				oCheckbox[inx].checked = true;
			}
		}
    }else{
		if ( oCheckbox.checked ) { 
			oCheckbox.value='Y';
		} else {
			oCheckbox.value='N';
			oCheckbox.checked = true;
		}
    }
}

function setCheckbox( oCheckbox, value, title) {
	if ( oCheckbox.length > 1 ){
		var arrayValue = value.split(",");
		for ( var i=0; i<arrayValue.length; i++)
		{
			for ( var inx = 0; inx < oCheckbox.length; inx ++ ) {
				if ( oCheckbox[inx].value == arrayValue[i] ) oCheckbox[inx].checked = true;
				if ( oCheckbox[inx].title == title ) oCheckbox[inx].checked = true;
			}
		}
    }else{
        if ( oCheckbox.value == value ) oCheckbox.checked = true;
        if ( oCheckbox.title == title ) oCheckbox.checked = true;
    }
}
function getCheckboxTitle( oCheckbox, delimeter ){
    if( delimeter == null ) delimeter = ', ';
    var retValue = '';
    if ( escape( oCheckbox.length ) == 'undefined' ){
        if ( oCheckbox.checked ) retValue = oCheckbox.value;
    }else{
        var retValue = '';
        for( var j = 0; j < oCheckbox.length; j ++ ){
            if ( oCheckbox[j].checked ){
                if ( retValue != '' ) retValue += delimeter;
                retValue += oCheckbox[j].title;
            }
        }
    }
    return retValue;
}
function getCheckboxValue( oCheckbox, nullValue ) {
    if( nullValue == null ) nullValue = '';
    var retValue = '';
	if ( oCheckbox )
	{
		if ( escape( oCheckbox.length ) == 'undefined' ){
			if ( oCheckbox.checked ) retValue = oCheckbox.value;
		}else{
			var retValue = '';
			for( var j = 0; j < oCheckbox.length; j ++ ){
				if ( oCheckbox[j].checked ) {
					if ( retValue == '')
					{
						retValue += oCheckbox[j].value;
					} else {
						retValue = retValue+ nullValue + oCheckbox[j].value;
					}
				}
			}
		}
	}
    return retValue;
}

function getRadioValue( oRadio ){
	return getCheckboxValue( oRadio, '' );
}

function addSelectOption (options, text, value, defaultSelected, selected) {
	if ( selected == null ) selected = false;
	if ( defaultSelected == null ) defaultSelected = false;
	var i = options.length;
	options[i] = new Option(text, value, defaultSelected, selected);
}

/**
 *	select Object ÃÊ±âÈ­.. by GPL 
 *	ÀÛ¼ºÀÏ : 2006-08-14
 */
function removeAllSelectOptions(options, text, value) {
	for ( var i = options.length-1 ; i >= 0 ; i--) options[i] = null;
	if ( text != null)
	{
		if ( value == null ) value = '';
		options[0] = new Option(text, value, false, false);//text, value, defaultSelected, selected
	}
}


/**
 *	radio, checkbox ÃÊ±âÈ­..
 */
function clearRadioObject(obj) {
	if ( obj ) 
	{
		if ( obj[0] ) {	
			for ( var i=0, n=obj.length; i<n; i++) {	obj[i].checked = false;		}
		} else {
			obj.checked = false;
		}
	}
}


var bDEBUG = false;
var ERR_MSG = "";
var CafFormUtil = new CafFormUtil();
