/*INISEAL:[k4uGsC1FznkRQMdKvMP28%2F3XRLk%3D%0A]*/
/*#############################################################
Name: Niceforms
Version: 1.0
Author: Lucian Slatineanu
URL: http://www.badboy.ro/

Feel free to use and modify but please provide credits.
#############################################################*/
/*****************************************************************************
 * ÆÄÀÏ¸í : JHanaNiceForm.js
 * ÀÛ¼ºÀÏ : 2008. 2. 12
 * ÀÛ¼ºÀÚ : ork
 * ¼³   ¸í : general HTML element ¸¦ ÆÄ½ÌÀ» ÅëÇØ¼­ element ¿¡ µ¿ÀûÀ¸·Î CSS¸¦ Àû¿ëÇÑ´Ù.
 *
 * Dependency  : prototype.js
 * ===========================================================================
 * º¯°æÀÌ·Â:
 * DATE             AUTHOR        DESCRIPTION
 * ---------------------------------------------------------------------------
 * 2007.1.        Lucian Slatineanu       1.0 release
 * 2008.2.12    Oh,Ryunkyong     Å¬·ÎÁ® °³³äÀ» µµÀÔÇÏ¿© public method initÀ» ÅëÇØ¼­¸¸ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¼öÁ¤.
 * 2008.2.26    Oh,Ryunkyong    replaceTexts() ½ºÅ¸ÀÏ¸¸ º¯°æÇÏµµ·Ï ¼öÁ¤
 * 2008.2.27    Oh,Ryunkyong    keyword - 2008.02.27 ork  : css °ü·Ã º¯°æ
 * 2008.5.06    Kim,Sangjun     text, password ÇÊµå¸¸À» À§ÇÑ js ·Î ¼öÁ¤
 * 2008.5.13    Oh,Ryunkyong    acctdollar, engnumext, bizno filter Ãß°¡ 
 * 2008.12.06   ¿À·û°æ           20081206-1 hanaSelect ½ºÅ¸ÀÏÀ» ÀçÁ¤ÀÇÇÑ´Ù. 
 * 2008.12.18   ¿À·û°æ           20081218-1 ÀÔ·Â°¡´ÉÇÑÁö ¿©ºÎ¸¦ ÆÄ½ÌÇÑ´Ù.
 * 2009.02.16   ¿À·û°æ           emailaddr filter Ãß°¡
 * 2009.02.18   ¿À·û°æ           20090218 hanaSelect ¸®½ºÆ®¹Ú½º ¿ÞÂÊ Á¤·Ä  
 * 2009.03.02   ¿À·û°æ           acctNm filter Ãß°¡
* 2009.03.03   Kim,Jun   acctLen,acctdollarLen filter Ãß°¡(acct maxlength Ã¼Å©½Ã ',' ÀÚ¸®¼ö Á¦¿ÜÇÑ ±æÀÌ Ã¼Å©) 
 * º¯°æ ÀÌ·ÂÀº ÀÌ°÷¿¡ Ãß°¡ ÇÕ´Ï´Ù.
 *****************************************************************************/

hana.JHanaNiceForms = {

    /**
     * className Á¤ÀÇ Array
     * @param obj
     * @param length
     */
    classNameArr : [ "cal", "num", "nokor", "eng", "engnum", "acct","acctdollar","engnumext","bizno","onlykor","emailaddr","acctNm", "engkor", "engkornum",  "engkornumext"],

    /**
     * className °ª º°·Î Á¤ÀÇ µÈ control
     * Ãß°¡ ¼³Á¤ ¹× º¯°æÀº ¿©±â¼­ ÇÕ´Ï´Ù.
     */
    ControlMap : {
        //³¯Â¥
        "cal" : function(obj){
            hana.JHanaNiceForms.preventIME(obj);
            Event.observe(obj, "keydown", function(evt){ hana.JHanaNiceForms.numFilter(evt); hana.JHanaNiceForms.makeDateStr(obj); }, false);
            Event.observe(obj, "keyup", function(){ hana.JHanaNiceForms.makeDateStr(obj) }, false);
//            obj.maxLength = 10;
            hana.JHanaNiceForms.setMaxLength(obj, 10);
        },
        //¼ýÀÚ¸¸
        "num" : function(obj, length){
            hana.JHanaNiceForms.preventIME(obj);
            Event.observe(obj, "keydown", function(evt){ hana.JHanaNiceForms.numFilter(evt);}, false);
            hana.JHanaNiceForms.setMaxLength(obj, length);
        },
        //ÇÑ±Û¹æÁö
        "nokor" : function(obj, length){
            hana.JHanaNiceForms.preventIME(obj);
            hana.JHanaNiceForms.setMaxLength(obj, length);
        },
        //¿µ¾î¸¸
        "eng" : function(obj, length){
            hana.JHanaNiceForms.preventIME(obj);
            Event.observe(obj, "keydown", function(evt){ hana.JHanaNiceForms.engFilter(evt);}, false);
            hana.JHanaNiceForms.setMaxLength(obj, length);
        },
        //¿µ¾î¼ýÀÚ
        "engnum" : function(obj, length){
            hana.JHanaNiceForms.preventIME(obj);
			Event.observe(obj, "keydown", function(evt){ hana.JHanaNiceForms.engNumFilter(evt);}, false);
            hana.JHanaNiceForms.setMaxLength(obj, length);
        },
        //È­Æó
        "acct" : function(obj, length){
            hana.JHanaNiceForms.preventIME(obj);
			obj.setStyle(
				{"textAlign":"right"}
			);
            Event.observe(obj, "keydown", function(evt){ hana.JHanaNiceForms.numFilter(evt, obj);}, false);
            Event.observe(obj, "keyup", function(){  hana.JHanaUtils.input.toMoney(obj) }, false);
			
			// length ¿¡ ',' ÀÚ¸®¼ö ´õÇØÁØ´Ù.
            if(length && parseInt(length,10) > 3){
                length = parseInt(length,10);
                length = length + parseInt((length-1) / 3,10);
            }
			
            hana.JHanaNiceForms.setMaxLength(obj, length);
        },
		// È­Æó ´Þ·¯
		"acctdollar" : function(obj, length) {
            hana.JHanaNiceForms.preventIME(obj);
			obj.setStyle(
				{"textAlign":"right"}
			);
            Event.observe(obj, "keydown", function(evt){ hana.JHanaNiceForms.dollarFilter(evt, obj);}, false);
			Event.observe(obj, "keyup", function(){  hana.JHanaUtils.input.toMoney(obj) }, false);
            Event.observe(obj, "focusout", function(){  hana.JHanaUtils.input.toDollarMoney(obj); }, false);
            
            // length ¿¡ ',' ÀÚ¸®¼ö ´õÇØÁØ´Ù.
            if(length && parseInt(length,10) > 3){
                length = parseInt(length,10);
                length = length + parseInt((length-1) / 3,10);
            }
                        
            hana.JHanaNiceForms.setMaxLength(obj, length);
		},
		// ¿µ¾î+¼ýÀÚ+ -,.() ¸¸ ÀÔ·Â °¡´É
		"engnumext" : function(obj, length) {
            hana.JHanaNiceForms.preventIME(obj);
			Event.observe(obj, "keydown", function(evt){ hana.JHanaNiceForms.engNumExtFilter(evt);}, false);
            hana.JHanaNiceForms.setMaxLength(obj, length);
		},
		// »ç¾÷ÀÚ¹øÈ£ 000-00-00000
		"bizno" : function(obj) {
            hana.JHanaNiceForms.preventIME(obj);
			Event.observe(obj, "keydown", function(evt){ hana.JHanaNiceForms.numFilter(evt); hana.JHanaNiceForms.makeBizNoStr(obj); }, false);
            Event.observe(obj, "keyup", function(){  hana.JHanaNiceForms.makeBizNoStr(obj); }, false);
            hana.JHanaNiceForms.setMaxLength(obj, 12);
        },
		//ÇÑ±Û¸¸ ÀÔ·Â
		"onlykor" : function(obj, length) {
            hana.JHanaNiceForms.activeIME(obj);
			Event.observe(obj, "keydown", function(evt){ hana.JHanaNiceForms.onlykorFilter(evt);}, false);
			Event.observe(obj, "keyup", function(evt){ hana.JHanaNiceForms.onlykorFilter(evt);}, false);			
            hana.JHanaNiceForms.setMaxLength(obj, length);
		},
		// ¿µ¾î+¼ýÀÚ+ -,_,.,~ ¸¸ ÀÔ·Â °¡´É
		"emailaddr" : function(obj, length) {
            hana.JHanaNiceForms.preventIME(obj);
			Event.observe(obj, "keydown", function(evt){ hana.JHanaNiceForms.eMailAddrFilter(evt);}, false);
            hana.JHanaNiceForms.setMaxLength(obj, length);
		} ,
		// ¿µ¾î+ÇÑ±Û+¼ýÀÚ+ -,_,(,) ¸¸ ÀÔ·Â °¡´É
		"acctNm" : function(obj, length) {
			hana.JHanaNiceForms.activeIME(obj);
			Event.observe(obj, "keydown", function(evt){ hana.JHanaNiceForms.acctNmFilter(evt);}, false);
            hana.JHanaNiceForms.setMaxLength(obj, length);
		} ,
        // ¿µ¾î+ÇÑ±Û ~ ¸¸ ÀÔ·Â°¡´É
        "engkor" : function(obj, length) {
            hana.JHanaNiceForms.activeIME(obj);
            Event.observe(obj, "keydown", function(evt){ hana.JHanaNiceForms.engkorFilter(evt);}, false);
            hana.JHanaNiceForms.setMaxLength(obj, length);
        }  ,
        // ¿µ¾î+ÇÑ±Û ¼ýÀÚ ¸¸ ÀÔ·Â°¡´É
        "engkornum" : function(obj, length) {
            hana.JHanaNiceForms.activeIME(obj);
            Event.observe(obj, "keydown", function(evt){ hana.JHanaNiceForms.engkornumFilter(evt);}, false);
            hana.JHanaNiceForms.setMaxLength(obj, length);
        } ,
		// ¿µ¾î+ÇÑ±Û+¼ýÀÚ+ -,_,(,) ¸¸ ÀÔ·Â °¡´É
		"engkornumext" : function(obj, length) {
			hana.JHanaNiceForms.activeIME(obj);
			Event.observe(obj, "keydown", function(evt){ hana.JHanaNiceForms.acctNmFilter(evt);}, false);
            hana.JHanaNiceForms.setMaxLength(obj, length);
		},
        // ¿µ¾î+ -,_,(,) ¸¸ ÀÔ·Â °¡´É - Ãß°¡ À¯¹ÎÀç 2009.04.14
        "engext" : function(obj, length) {
            hana.JHanaNiceForms.preventIME(obj);
            Event.observe(obj, "keydown", function(evt){ hana.JHanaNiceForms.engExtFilter(evt);}, false);
            hana.JHanaNiceForms.setMaxLength(obj, length);
        }        

    },


    /**
     * maxlength ÁöÁ¤
     * focus ÀÌµ¿??
     * @param obj
     * @param length 
     */
    setMaxLength : function (obj, length){
        if( length ){
            obj.maxLength = length;
			Event.observe(obj, "keyup", function(evt){ hana.JHanaNiceForms.nextFocus(obj);}, false);
        }
    },

    /**
     * ¿ÀÁ÷ ¼ýÀÚ¸¸ ÀÔ·Â °¡´ÉÇÕ´Ï´Ù................
     * @param e
     */
    numFilter : function(e, obj){
        var evt = e || window.event;
        var kCode = evt.which || evt.keyCode;

        /* backspace ,tab(9),enter(13),shift(16),end(35),home(36),¹æÇâÅ°(ÁÂ(37),»ó(38),¿ì(49),ÇÏ(40)),delete(46) µîµî..*/
        var controlKeys = new Array(Event.KEY_BACKSPACE,Event.KEY_TAB,Event.KEY_RETURN,Event.KEY_ESC,Event.KEY_ESC,
                Event.KEY_LEFT,Event.KEY_UP,Event.KEY_RIGHT,Event.KEY_DOWN,Event.KEY_DELETE,Event.KEY_HOME,
                Event.KEY_END,Event.KEY_PAGEUP,Event.KEY_PAGEDOWN);

        /* Á¶ÀÛÅ°ÀÌ¸é Á¾·á */
        if( controlKeys.include(kCode) ){
            return;
        }

		var keyCode = parseInt(kCode);
		// SHIFT ÀÌ¸é ¸®ÅÏ
		if (evt.shiftKey) {
			Event.stop(evt);
			return;
		}

        /*  48 ~ 57 (»ó´Ü ¼ýÀÚ Å°ÄÚµå), 96 ~ 105 (¿ìÃø ¼ýÀÚ Å°ÄÚµå) ¹üÀ§°¡ ¾Æ´Ï¸é event false  */
        if ( !( keyCode >= 48 && keyCode <= 57 ) && !(keyCode >= 96 && keyCode <= 105)) {
            Event.stop(evt);
        }
        
        // Å°º¸µå¸¦ °è¼Ó ´©¸£°íÀÖÀ»¶§ ',' ÀÚ¸´¼ö Ã¼Å© ¸øÇÏ´Â ¹®Á¦ º¸Á¤. 20090302jk 
        if(obj)
            hana.JHanaUtils.input.toMoney(obj)         
    },
	/**
	 * ¿µ¾î¿Í ¼ýÀÚ¸¸ ÀÔ·Â°¡´ÉÇÔ.
	 * @param {Object} e
	 */
	engNumFilter : function(e){
       var evt = e || window.event;
        var kCode = evt.which || evt.keyCode;

        /* backspace ,tab(9),enter(13),shift(16),end(35),home(36),¹æÇâÅ°(ÁÂ(37),»ó(38),¿ì(49),ÇÏ(40)),delete(46) µîµî..*/
        var controlKeys = new Array(Event.KEY_BACKSPACE,Event.KEY_TAB,Event.KEY_RETURN,Event.KEY_ESC,
                Event.KEY_LEFT,Event.KEY_UP,Event.KEY_RIGHT,Event.KEY_DOWN,Event.KEY_DELETE,Event.KEY_HOME,
                Event.KEY_END,Event.KEY_PAGEUP,Event.KEY_PAGEDOWN);

        /* Á¶ÀÛÅ°ÀÌ¸é Á¾·á */
        if( controlKeys.include(kCode) ){
            return;
        }
		var keyCode = parseInt(kCode);
		// SHIFT ÀÌ¸é ¸®ÅÏ
		//if (evt.shiftKey) {
		//	Event.stop(evt);
		//	return;
		//}
		// CTRL ÀÌ¸é ¸®ÅÏ 
		if (evt.ctrlKey){
			Event.stop(evt);
			return;
		}
 		var sKey = String.fromCharCode(kCode);
		
		var reTemp1 = new RegExp('[A-Z]');
		// ½¬ÇÁÆ® + ¿µ¹®ÀÌ ¾Æ´Ï¸é ¸®ÅÏ 
		if (evt.shiftKey && !reTemp1.test(sKey)) {
			Event.stop(evt);
			return;
		}
		
		//¿ìÃø ¼ýÀÚÆÇÀÇ '0' ÀÇ Å°°ª Ãß°¡ÇÔ. 2009.02.11 ±è»óÁØ
		var filter = '[`0-9a-zA-Z¨ú]';
        var re = new RegExp(filter);
        if (!re.test(sKey)) {
            Event.stop(evt);
        }
	},
	/**
	 * #.## ¸¸ ÀÔ·Â°¡´ÉÇÕ´Ï´Ù.
	 * @param {Object} e
	 */
	dollarFilter : function(e, obj) {
        var evt = e || window.event;
        var kCode = evt.which || evt.keyCode;

        /* backspace ,tab(9),enter(13),shift(16),end(35),home(36),¹æÇâÅ°(ÁÂ(37),»ó(38),¿ì(49),ÇÏ(40)),delete(46) µîµî..*/
        var controlKeys = new Array(Event.KEY_BACKSPACE,Event.KEY_TAB,Event.KEY_RETURN,Event.KEY_ESC,Event.KEY_ESC,
                Event.KEY_LEFT,Event.KEY_UP,Event.KEY_RIGHT,Event.KEY_DOWN,Event.KEY_DELETE,Event.KEY_HOME,
                Event.KEY_END,Event.KEY_PAGEUP,Event.KEY_PAGEDOWN);

        /* Á¶ÀÛÅ°ÀÌ¸é Á¾·á */
        if( controlKeys.include(kCode) ){
            return;
        }

        var keyCode = parseInt(kCode);
		// SHIFT ÀÌ¸é ¸®ÅÏ
		if (evt.shiftKey) {
			Event.stop(evt);
			return;
		}
		//var sKey = String.fromCharCode(kCode);

		// [$]1[##][,###]+[.##]
		// [$]1###+[.##]
		// [$]0.##
		// [$].##
		//var filter = /^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/;
		//var re = new RegExp(filter);
		//
		//if (!re.test(sKey)) {
        //	Event.stop(evt);
        //}
		/*  48 ~ 57 (»ó´Ü ¼ýÀÚ Å°ÄÚµå), 96 ~ 105 (¿ìÃø ¼ýÀÚ Å°ÄÚµå) ¹üÀ§°¡ ¾Æ´Ï¸é event false  ¼Ò¼ýÁ¡ 190 == .*/
        if ( !( keyCode >= 48 && keyCode <= 57 ) && !(keyCode >= 96 && keyCode <= 105 ) && keyCode !=190 ) {
            Event.stop(evt);
        }
        // Å°º¸µå¸¦ °è¼Ó ´©¸£°íÀÖÀ»¶§ ',' ÀÚ¸´¼ö Ã¼Å© ¸øÇÏ´Â ¹®Á¦ º¸Á¤. 20090302jk 
        if(obj)
            hana.JHanaUtils.input.toMoney(obj)            
	},
	/**
	 * ¿µ¹®/¼ýÀÚ ( , . ) - ¸¸ ÀÔ·Â°¡´ÉÇÕ´Ï´Ù.
	 * @param {Object} e
	 */
	engNumExtFilter : function(e){
       var evt = e || window.event;
        var kCode = evt.which || evt.keyCode;

        /* backspace ,tab(9),enter(13),shift(16),end(35),home(36),¹æÇâÅ°(ÁÂ(37),»ó(38),¿ì(49),ÇÏ(40)),delete(46) µîµî..*/
        var controlKeys = new Array(Event.KEY_BACKSPACE,Event.KEY_TAB,Event.KEY_RETURN,Event.KEY_ESC,Event.KEY_ESC,
                Event.KEY_LEFT,Event.KEY_UP,Event.KEY_RIGHT,Event.KEY_DOWN,Event.KEY_DELETE,Event.KEY_HOME,
                Event.KEY_END,Event.KEY_PAGEUP,Event.KEY_PAGEDOWN);

        /* Á¶ÀÛÅ°ÀÌ¸é Á¾·á */
        if( controlKeys.include(kCode) ){
            return;
        }

        var keyCode = parseInt(kCode);


 		var sKey = String.fromCharCode(kCode);
		// SHIFT ÀÌ¸é¼­ ( ) °¡ ¾Æ´Ï°Å³ª SHIFTÀÌ¸é¼­ ¿µ¹®ÀÌ ¾Æ´Ï¸é return
		var reTemp = new RegExp('[`0-9a-zA-Z]');
		var reTemp1 = new RegExp('[A-Z]');
		if ((evt.shiftKey && (('' + keyCode == '57') || ('' + keyCode == '48')))) {
			// ignored...
		} else if (evt.shiftKey && !reTemp1.test(sKey)) {
			Event.stop(evt);
			return;
		} else {
			// ¨ú(.) ¨ù(,) ¨ö(-)
			var filter = '[`0-9a-zA-Z¨ú¨ù¨ö]';
	        var re = new RegExp(filter);
			if (('' + keyCode != '32')) { // ½ºÆäÀÌ½º(°ø¹é)Àº Çã¿ë
				if (!re.test(sKey)) {
					Event.stop(evt);
				}
			}
		}



	},
    /**
     * ¿µ¾î, °ø¹é¸¸ ÀÔ·Â°¡´ÉÇÕ´Ï´Ù.
     * @param {Object} e
     */
    engExtFilter : function(e){
       var evt = e || window.event;
        var kCode = evt.which || evt.keyCode;

        /* backspace ,tab(9),enter(13),shift(16),end(35),home(36),¹æÇâÅ°(ÁÂ(37),»ó(38),¿ì(49),ÇÏ(40)),delete(46) µîµî..*/
        var controlKeys = new Array(Event.KEY_BACKSPACE,Event.KEY_TAB,Event.KEY_RETURN,Event.KEY_ESC,Event.KEY_ESC,
                Event.KEY_LEFT,Event.KEY_UP,Event.KEY_RIGHT,Event.KEY_DOWN,Event.KEY_DELETE,Event.KEY_HOME,
                Event.KEY_END,Event.KEY_PAGEUP,Event.KEY_PAGEDOWN);

        /* Á¶ÀÛÅ°ÀÌ¸é Á¾·á */
        if( controlKeys.include(kCode) ){
            return;
        }

        var keyCode = parseInt(kCode);

        var sKey = String.fromCharCode(kCode);
        // SHIFT ÀÌ¸é¼­ ( ) °¡ ¾Æ´Ï°Å³ª SHIFTÀÌ¸é¼­ ¿µ¹®ÀÌ ¾Æ´Ï¸é return
        var reTemp = new RegExp('[`a-zA-Z]');
        var reTemp1 = new RegExp('[A-Z]');
        if ((evt.shiftKey && (('' + keyCode == '57') || ('' + keyCode == '48')))) {
            // ignored...
        } else if (evt.shiftKey && !reTemp1.test(sKey)) {
            Event.stop(evt);
            return;
        } else {
            var filter = '[`a-zA-Z]';
            var re = new RegExp(filter);
            if (('' + keyCode != '32')) { // ½ºÆäÀÌ½º(°ø¹é)Àº Çã¿ë
                if (!re.test(sKey)) {
                    Event.stop(evt);
                }
            }
        }
    },    
	/**
	 * ¼ýÀÚ ¸¸ ÀÔ·Â°¡´ÉÇÏ´Ù.
	 * @param {Object} e
	 */
	bizNoFilter : function (e) {
        var evt = e || window.event;
        var kCode = evt.which || evt.keyCode;

        /* backspace ,tab(9),enter(13),shift(16),end(35),home(36),¹æÇâÅ°(ÁÂ(37),»ó(38),¿ì(49),ÇÏ(40)),delete(46) µîµî..*/
        var controlKeys = new Array(Event.KEY_BACKSPACE,Event.KEY_TAB,Event.KEY_RETURN,Event.KEY_ESC,Event.KEY_ESC,
                Event.KEY_LEFT,Event.KEY_UP,Event.KEY_RIGHT,Event.KEY_DOWN,Event.KEY_DELETE,Event.KEY_HOME,
                Event.KEY_END,Event.KEY_PAGEUP,Event.KEY_PAGEDOWN);

        /* Á¶ÀÛÅ°ÀÌ¸é Á¾·á */
        if( controlKeys.include(kCode) ){
            return;
        }

      	var sKey = String.fromCharCode(kCode);
		// SHIFT ÀÌ¸é ¸®ÅÏ
		if (evt.shiftKey) {
			Event.stop(evt);
			return;
		}

		// ¨ö(-)
		var filter = '[`0-9¨ö]';
        var re = new RegExp(filter);
        if (!re.test(sKey)) {
            Event.stop(evt);
        }
	},
    /**
     * ¿ÀÁ÷ ¿µ¾î¸¸ ÀÔ·Â °¡´ÉÇÕ´Ï´Ù................
     * @param e
     */
    engFilter : function(e){
        var evt = e || window.event;
        var kCode = evt.which || evt.keyCode;

        /* backspace ,tab(9),enter(13),shift(16),end(35),home(36),¹æÇâÅ°(ÁÂ(37),»ó(38),¿ì(49),ÇÏ(40)),delete(46) µîµî..*/
        var controlKeys = new Array(Event.KEY_BACKSPACE,Event.KEY_TAB,Event.KEY_RETURN,Event.KEY_ESC,Event.KEY_ESC,
                Event.KEY_LEFT,Event.KEY_UP,Event.KEY_RIGHT,Event.KEY_DOWN,Event.KEY_DELETE,Event.KEY_HOME,
                Event.KEY_END,Event.KEY_PAGEUP,Event.KEY_PAGEDOWN);

        /* Á¶ÀÛÅ°ÀÌ¸é Á¾·á */
        if( controlKeys.include(kCode) ){
            return;
        }

        var keyCode = parseInt(kCode);
		var sKey = String.fromCharCode(kCode);

		// SHIFT ÀÌ¸é¼­ ¿µ¹®ÀÌ ¾Æ´Ï¸é return
		var reTemp = new RegExp('[a-zA-Z]');
		if ((evt.shiftKey && !(reTemp.test(sKey))) ) {
			Event.stop(evt);
			return;
		}
        if (!reTemp.test(sKey)) {
            Event.stop(evt);
        }
//        /*  48 ~ 57 (»ó´Ü ¼ýÀÚ Å°ÄÚµå), 96 ~ 105 (¿ìÃø ¼ýÀÚ Å°ÄÚµå) ¹üÀ§°¡ ¾Æ´Ï¸é event false  */
//        if ( ( keyCode >= 48 && keyCode <= 57 ) || (keyCode >= 96 && keyCode <= 105) ) {
//            Event.stop(evt);
//        }
    },
	
	/**
     * ¿ÀÁ÷ ÇÑ±Û¸¸ ÀÔ·Â °¡´ÉÇÕ´Ï´Ù................
     * @param e
     */
    onlykorFilter : function(e){
    
        var evt = e || window.event;
        var kCode = evt.which || evt.keyCode;

        /* backspace ,tab(9),enter(13),shift(16),end(35),home(36),¹æÇâÅ°(ÁÂ(37),»ó(38),¿ì(49),ÇÏ(40)),delete(46) µîµî..*/
        var controlKeys = new Array(Event.KEY_BACKSPACE,Event.KEY_TAB,Event.KEY_RETURN,Event.KEY_ESC,Event.KEY_ESC,
                Event.KEY_LEFT,Event.KEY_UP,Event.KEY_RIGHT,Event.KEY_DOWN,Event.KEY_DELETE,Event.KEY_HOME,
                Event.KEY_END,Event.KEY_PAGEUP,Event.KEY_PAGEDOWN);

        /* Á¶ÀÛÅ°ÀÌ¸é Á¾·á */
        if( controlKeys.include(kCode) ){
            return;
        }
	    var isTarget = false;
		var target = (typeof evt.target != 'undefined') ? evt.target : evt.srcElement;
		
		if (typeof evt.target != 'undefined'){
			isTarget = true;
		} else {
			isTarget = false;
		}
        
        var strValue = (isTarget)? evt.target.value : evt.srcElement.value;

        for(i=0; i<strValue.length; i++){
			// 0x3130-0x318E (ÇÑ±ÛÈ£È¯ ÀÚ¸ð ¿µ¿ª, 0xAC00-0xD7A3 ÇÑ±Û¿µ¿ª
			/* ÇÑ±Û ¿µ¿ªÀÌ ¾Æ´Ï¸é ¸¶Áö¸· ÀÚ¸® ÀÚ¸§ */
            if(!((strValue.charCodeAt(i) > 0x3130 && strValue.charCodeAt(i) < 0x318F) || (strValue.charCodeAt(i) >= 0xAC00 && strValue.charCodeAt(i) <= 0xD7A3)))
            {
			  if (isTarget){
			      evt.target.value  = evt.target.value.substring(0, strValue.length-1);
			  } else {
			      evt.srcElement.value = evt.srcElement.value.substring(0, strValue.length-1);
			  }
			  return ;
            }
        }
		
    },
    
    /**
     * ¿ÀÁ÷ ÇÑ±Û °ú ¿µ¹®¸¸ ÀÔ·Â °¡´ÉÇÕ´Ï´Ù.
     * @param e
     */
    engkorFilter : function(e){
        var evt = e || window.event;
        var kCode = evt.which || evt.keyCode;

        /* backspace ,tab(9),enter(13),shift(16),end(35),home(36),¹æÇâÅ°(ÁÂ(37),»ó(38),¿ì(49),ÇÏ(40)),delete(46) µîµî..*/
        var controlKeys = new Array(Event.KEY_BACKSPACE,Event.KEY_TAB,Event.KEY_RETURN,Event.KEY_ESC,Event.KEY_ESC,
                Event.KEY_LEFT,Event.KEY_UP,Event.KEY_RIGHT,Event.KEY_DOWN,Event.KEY_DELETE,Event.KEY_HOME,
                Event.KEY_END,Event.KEY_PAGEUP,Event.KEY_PAGEDOWN);

        /* Á¶ÀÛÅ°ÀÌ¸é Á¾·á */
        if( controlKeys.include(kCode) ){
            return;
        }

        var keyCode = parseInt(kCode);
		var sKey = String.fromCharCode(kCode);

		// SHIFT ÀÌ¸é¼­ ÇÑ±ÛÀÌ ¾Æ´Ï¸é return
		var reTemp = new RegExp('[¤¡-Èþa-zA-Z]');
		if ((evt.shiftKey && !(reTemp.test(sKey))) ) {
			Event.stop(evt);
			return;
		}
        if (!reTemp.test(sKey)) {
            Event.stop(evt);
        }
    },

/**
	 * ¿µ¹®/¼ýÀÚ .  - _ ~ ¸¸ ÀÔ·Â°¡´ÉÇÕ´Ï´Ù.
	 * @param {Object} e
	 */
	eMailAddrFilter : function(e){
       var evt = e || window.event;
        var kCode = evt.which || evt.keyCode;

        /* backspace ,tab(9),enter(13),shift(16),end(35),home(36),¹æÇâÅ°(ÁÂ(37),»ó(38),¿ì(49),ÇÏ(40)),delete(46) µîµî..*/
        var controlKeys = new Array(Event.KEY_BACKSPACE,Event.KEY_TAB,Event.KEY_RETURN,Event.KEY_ESC,Event.KEY_ESC,
                Event.KEY_LEFT,Event.KEY_UP,Event.KEY_RIGHT,Event.KEY_DOWN,Event.KEY_DELETE,Event.KEY_HOME,
                Event.KEY_END,Event.KEY_PAGEUP,Event.KEY_PAGEDOWN);

        /* Á¶ÀÛÅ°ÀÌ¸é Á¾·á */
        if( controlKeys.include(kCode) ){
            return;
        }

        var keyCode = parseInt(kCode);


 		var sKey = String.fromCharCode(kCode);
		// SHIFT ÀÌ¸é¼­ ( ) °¡ ¾Æ´Ï°Å³ª SHIFTÀÌ¸é¼­ ¿µ¹®ÀÌ ¾Æ´Ï¸é return
		var reTemp = new RegExp('[`0-9a-zA-Z]');
		var reTemp1 = new RegExp('[A-Z]');
		if ((evt.shiftKey && (('' + keyCode == '192') || ('' + keyCode == '189')))) {
			// ignored...
		} else if (evt.shiftKey && !reTemp1.test(sKey)) {
			Event.stop(evt);
			return;
		} else {
			// ¨ú(.) ¨ö(-)
			var filter = '[`0-9a-zA-Z¨ú¨ö]';
	        var re = new RegExp(filter);
			if (!re.test(sKey)) {
				Event.stop(evt);
			}
		}

	},
	
	/**
	 * ¿µ¾î+ÇÑ±Û+¼ýÀÚ+ -,_,(,) ¸¸ ÀÔ·Â °¡´É
	 * @param {Object} e
	 */
	acctNmFilter : function(e){
       var evt = e || window.event;
        var kCode = evt.which || evt.keyCode;

        /* backspace ,tab(9),enter(13),shift(16),end(35),home(36),¹æÇâÅ°(ÁÂ(37),»ó(38),¿ì(49),ÇÏ(40)),delete(46) µîµî..*/
        var controlKeys = new Array(Event.KEY_BACKSPACE,Event.KEY_TAB,Event.KEY_RETURN,Event.KEY_ESC,Event.KEY_ESC,
                Event.KEY_LEFT,Event.KEY_UP,Event.KEY_RIGHT,Event.KEY_DOWN,Event.KEY_DELETE,Event.KEY_HOME,
                Event.KEY_END,Event.KEY_PAGEUP,Event.KEY_PAGEDOWN);

        /* Á¶ÀÛÅ°ÀÌ¸é Á¾·á */
        if( controlKeys.include(kCode) ){
            return;
        }

        var keyCode = parseInt(kCode);
 		var sKey = String.fromCharCode(kCode);
		
		//alert(sKey);
		var reTemp = new RegExp('[`0-9a-zA-Z¤¡-Èþ]');
		var reTemp1 = new RegExp('[`09a-zA-Z¤¡-Èþ]');
		
		if ((evt.shiftKey && ('' + keyCode == '189'))) {
			// ignored...
		}else if(evt.shiftKey && !reTemp1.test(sKey)){
			Event.stop(evt);
			return;
		}else{
			var filter = '[`0-9a-zA-Z¤¡-Èþ¨ö]';
		    var re = new RegExp(filter);
			if (!re.test(sKey)) {
				Event.stop(evt);
			}
			
		}

	},
    
    /**
     * ¿ÀÁ÷ ÇÑ±Û °ú ¿µ¹® ¼ýÀÚ¸¸ ÀÔ·Â °¡´ÉÇÕ´Ï´Ù.
     * @param e
     */
    engkornumFilter : function(e){
        var evt = e || window.event;
        var kCode = evt.which || evt.keyCode;

        /* backspace ,tab(9),enter(13),shift(16),end(35),home(36),¹æÇâÅ°(ÁÂ(37),»ó(38),¿ì(49),ÇÏ(40)),delete(46) µîµî..*/
        var controlKeys = new Array(Event.KEY_BACKSPACE,Event.KEY_TAB,Event.KEY_RETURN,Event.KEY_ESC,Event.KEY_ESC,
                Event.KEY_LEFT,Event.KEY_UP,Event.KEY_RIGHT,Event.KEY_DOWN,Event.KEY_DELETE,Event.KEY_HOME,
                Event.KEY_END,Event.KEY_PAGEUP,Event.KEY_PAGEDOWN);

        /* Á¶ÀÛÅ°ÀÌ¸é Á¾·á */
        if( controlKeys.include(kCode) ){
            return;
        }

        var keyCode = parseInt(kCode);
		var sKey = String.fromCharCode(kCode);

		// SHIFT ÀÌ¸é¼­ ÇÑ±ÛÀÌ ¾Æ´Ï¸é return
		var reTemp = new RegExp('[¤¡-Èþa-zA-Z]');
		//±âº»
		var reTemp1 = new RegExp('[`0-9¤¡-Èþa-zA-Z]');
		if ((evt.shiftKey && !(reTemp.test(sKey))) ) {
			Event.stop(evt);
			return;
		}
        if (!reTemp1.test(sKey)) {
            Event.stop(evt);
        }
    },		

    /**
     * ³¯Â¥ ÀÔ·Â°ªÀ» ¸¸µì´Ï´Ù.
     * @param obj
     */
    makeDateStr : function(obj){
        var str = obj.value;

        var re = /([0-9]{4})([0-9]{1})/;
        if (re.test(str)) {
            str = str.replace(re, "$1-$2");
        }

        var re = /([0-9]{4})-([0-9]{2})([0-9]{1})/;
        if (re.test(str)) {
            str = str.replace(re, "$1-$2-$3");
        }
        obj.value = str;
    },

    /**
     * »ç¾÷ÀÚ¹øÈ£ ÀÔ·Â°ªÀ» ¸¸µì´Ï´Ù.
     * @param obj
     */
    makeBizNoStr : function(obj){
        var str = obj.value;

        var re = /([0-9]{3})([0-9]{1})/;
        
        if (str.length == 4 && re.test(str)) {
            str = str.replace(re, "$1-$2");
        }

        var re = /([0-9]{3})-([0-9]{2})([0-9]{1})/;
        if (str.length > 6 && re.test(str)) {
            str = str.replace(re, "$1-$2-$3");
        }

        obj.value = str;
    },

    //input type="text" ÇÊµåµéÀÇ array
    texts : new Array(),
    //input type="password" ÇÊµåµéÀÇ array
    passwds : new Array(),
    //select ÇÊµåµéÀÇ array
    selects : new Array(),
    //º¯È¯ µÈ select ÇÊµåµéÀÇ Objects todo ÃÊ±âÈ­ ½ÃÁ¡ È®ÀÎ ÇÊ¿ä
    transformSelects : {},

    /**
     * ÃÊ±âÈ­.
     */
    init : function() {
        if(!document.getElementById) {return false;}

        //forms ¿¡¼­ text ÇÊµå¿Í passwordÇÊµå¸¦ ÃßÃâÇÕ´Ï´Ù.
        try{
            hana.JHanaNiceForms.getElements();
        }catch(e){
            alert(e.message);
        }
        //onbeforeunload ½Ã ·Îµù¹Ù ¼³Á¤
//        hana.JHanaNiceForms.initAnchorTag();
    },


    /**
     * anchor tag ¿¡ click ½Ã onbeforeunload ÀÌº¥Æ®½Ã loading ¹Ù¸¦ ¶ç¿ìÁö ¾Ê±â À§ÇØ onclick ÀÌº¥Æ®¸¦ observe ½ÃÅ´.
     */
    initAnchorTag : function (){
        var aTag = document.getElementsByTagName("A");

        for(var i = 0, len = aTag.length; i< len; i++){
            var anchor = aTag[i];
            if (!anchor.getAttribute("isInit")) {
                Event.observe(anchor, "click",
                    function(){
                        removeBeforeunloadEvent();
                        //click ÈÄ ÀÏÁ¤ ½Ã°£ ÈÄ ´Ù½Ã beforeunload ÀÌº¥Æ® ¼³Á¤..
                        setTimeout(function(){setBeforeunloadEvent()}, 1000);
                    }
                );
            }

            anchor.setAttribute("isInit", true);
        }
    },


    /**
     * forms ¿¡¼­ text ÇÊµå¿Í passwordÇÊµå¸¦ ÃßÃâÇÕ´Ï´Ù.
     */
    getElements : function () {
        Ext.each(document.forms, function(formObj){
            hana.JHanaNiceForms.texts = Form.getInputs(formObj, "text");
            hana.JHanaNiceForms.passwds = Form.getInputs(formObj, "password");

            hana.JHanaNiceForms.controlTexts();
            hana.JHanaNiceForms.controlPasswords();
        });

        hana.JHanaNiceForms.selects = hana.JHanaNiceForms.getTransformSelects();
        hana.JHanaNiceForms.controlSelectBoxs();
    },


    /**
     * º¯È¯ µÉ select elements ¸¦ return ÇÕ´Ï´Ù.
     * @return Array º¯È¯ µÉ select elements
     */
    getTransformSelects : function(){
        return Ext.query("select[hanaSelect=true]");
    },


    /**
     * text field ÄÜÆ®·Ñ
     */
    controlTexts : function () {
        Ext.each(hana.JHanaNiceForms.texts, function(textObj){
            if (!textObj.getAttribute("isInit")) {

                //className ¿¡ µû¸¥ ÀÔ·Â °ªÁ¦ÇÑÀ» ¼³Á¤ ÇÕ´Ï´Ù.
                hana.JHanaNiceForms.setInputControl(textObj);

                // È¿°ú¸¦ ÁÝ´Ï´Ù.
                hana.JHanaNiceForms.giveEffect(textObj);

                // keydown ÀÌº¥Æ®·Î ¿£ÅÍÅ° °¡ ´­·ÈÀ» °æ¿ì submitÀ» ¸·½À´Ï´Ù.
                hana.JHanaNiceForms.preventEnter(textObj);

            }

            textObj.setAttribute("isInit", true);
        });
    },


    /**
     * password field ÄÜÆ®·Ñ
     */
    controlPasswords : function () {
        Ext.each(hana.JHanaNiceForms.passwds, function(passwdObj){
            if (!passwdObj.getAttribute("isInit")) {

                //className ¿¡ µû¸¥ ÀÔ·Â °ªÁ¦ÇÑÀ» ¼³Á¤ ÇÕ´Ï´Ù.
                hana.JHanaNiceForms.setInputControl(passwdObj);

                // È¿°ú¸¦ ÁÝ´Ï´Ù.
                hana.JHanaNiceForms.giveEffect(passwdObj);

                // keydown ÀÌº¥Æ®·Î ¿£ÅÍÅ° °¡ ´­·ÈÀ» °æ¿ì submitÀ» ¸·½À´Ï´Ù.
                hana.JHanaNiceForms.preventEnter(passwdObj);

            }

            passwdObj.setAttribute("isInit", true);
        });
    },

    /**
	 * selectBox field ÄÜÆ®·Ñ
	 * @author ¿À·û°æ
	 * @since 2008.07.22
	 */
	controlSelectBoxs : function () {

        Ext.each(hana.JHanaNiceForms.selects, function(selectObj){
            if (!selectObj.getAttribute("isInit")) {
				
                var selectId = selectObj.id;
                if (!selectId) {
                    selectId = selectObj.name;
                    selectObj.id = selectObj.name;
                }

                var divEle = document.createElement('DIV');
				var selEle = $(selectId);
				selEle.parentNode.insertBefore(divEle,selEle);

				divEle.appendChild(selEle);
				divEle.id = selectId+'_auto_generated';
				var convertId = selectId+'_converted';
				var convertComponentId = selectId+'_component';
				var cssWidth= "";
				var pxString = "";
				// 20081206-1
				try {
					if ($(divEle.id).getAttribute('style')) {
						$(divEle.id).setStyle({
									marginRight: '3px',
									cssFloat: 'left'
						});
					} else {
						$(divEle.id).setAttribute('style', 'margin-right: 3px; float: left;');
					}															
					// ÄÞÆ÷¹Ú½º ¾Õ¿¡ ´Ù¸¥ ¿ä¼Ò°¡ ÀÖÀ» °æ¿ì ºÙÀÎ´Ù.(float:left)
					if ($(divEle.id).previous(0)) {
						if ($(divEle.id).previous(0).getAttribute('style')) {
							$(divEle.id).previous(0).setStyle({
								marginRight: '3px',
								cssFloat: 'left'
							});
						}
						else {
							$(divEle.id).previous(0).setAttribute('style', 'margin-right: 3px; float: left;');
						}
					}
				} catch(e){					
					alert(e);
				}
				
				var styleString = "";
				if (null!=selectObj.getAttribute('style') && selectObj.getAttribute('style')) {
					styleString = selectObj.getAttribute('style');
				}
				var classString = "";
				if (null!=selectObj.getAttribute('class') && selectObj.getAttribute('class')) {
					classString = selectObj.getAttribute('class');	
					if (Ext.isIE)
						classString = hana.JHanaUtils.json.jsonToString(classString);								
				}		
				var selectObjWidthOrig = $(selectId).getWidth(); // em	
				
				var selectObjWidth = selectObjWidthOrig;
				if (selectObjWidth) {
					if (Ext.isIE) {						
						selectObjWidth = selectObjWidth + 22;
					}
					else {
						selectObjWidth = selectObjWidth + 6;
					}
				}
				if (Ext.isIE) {
					if ("" == styleString.width || styleString.width == undefined) {
						styleString = "";
					} else {
						cssWidth = 	styleString.width;
						
						if (cssWidth.indexOf("px") !=-1){
							pxString = cssWidth.substring(0,cssWidth.indexOf("px"));
						}
						
						pxString =	parseInt(pxString)+22;
						
					}
				} else {
					if ("" == styleString.width || styleString.width == undefined) {
						styleString = "";
					} else {
						cssWidth = 	styleString.width;
						
						if (cssWidth.indexOf("px") !=-1){
							pxString = cssWidth.substring(0,cssWidth.indexOf("px"));
						}
						pxString =	parseInt(pxString)+6;
					}
				}
				// 20081206-1 --->
				
				// 20081218-1
				var isForceSelection = true;
				if ('Y' == selectObj.getAttribute("possibleInputYn")) {
					isForceSelection =false;
				} else {
					isForceSelection =true;
				}				
				// 20081218-1 --->
				var converted = new Object();
				if (""!=styleString) {
					try {
						converted = new Ext.form.ComboBox({
							typeAhead: true,
							triggerAction: 'all',
							transform: selectId, /* º¯È¯ÇÒ selectboxÀÇ id*/
							forceSelection: isForceSelection, /* °­Á¦ ¼±ÅÃ */
							lazyInit: false,
							resizable: true,
							listAlign: 'tl-bl',
							listWidth : pxString+30,
							selectOnFocus : true,
							id : convertComponentId,
							autoCreate : {tag: "input", type: "text", id: convertId, name : convertId, size: "24", autocomplete: "on"}
						});
					} catch(e) {
						alert(e);
					}				
				} else {
					try {
						converted = new Ext.form.ComboBox({
							typeAhead: true,
							triggerAction: 'all',
							transform: selectId, /* º¯È¯ÇÒ selectboxÀÇ id*/
							forceSelection: isForceSelection, /* °­Á¦ ¼±ÅÃ */
							lazyInit: false,
							resizable: true,
							listAlign: 'tl-bl',
							selectOnFocus : true,
							id : convertComponentId,
							autoCreate : {tag: "input", type: "text", id: convertId, name : convertId, size: "24", autocomplete: "on"}
						});
					} catch(e){
						alert(e);
						alert('aaaaa');						
					}				
				}
				
				
				var convElId = converted.getEl().id;

                selectObj.combo = converted;

                //»õ·Î ¸¸µé¾îÁø selectObj ´Â key °ªÀ¸·Î¸¸ ÂüÁ¶ ÇÕ´Ï´Ù.
                hana.JHanaNiceForms.setCreateNewSelectObj(selectId, selectObj);

                // onchange ÀÌº¥Æ® Á¤ÀÇ
                if(selectObj.onchange){

                    converted.on('select', function(combo){
                        var transformSelectObj = hana.JHanaNiceForms.getTransformSelectBoxById(combo.transform);

                        transformSelectObj.value = combo.value;
                        transformSelectObj.onchange.call(transformSelectObj);

                        hana.JHanaNiceForms.comboRefreshByTransformSelect(combo, transformSelectObj);
                    }, this);
                }
				
				// 20081206-1  ÀÔ·Â°¡´ÉÇÑ ¿É¼ÇÀ¸·Î º¯È¯µÇ¾ú´Ù¸é.
				if ('Y' == selectObj.getAttribute("possibleInputYn")) {
					// 20081206-1 ÀÌº¥Æ® ÀçÁ¤ÀÇ 
					converted.on('blur', function(combo){
						// textÀÇ ¹Ú½ºÀÇ °ªÀÌ combo¹Ú½ºÀÇ text °ª°ú °°´Ù¸é
						var originCombo = hana.JHanaNiceForms.transformSelects[selectId];
						var includeFlag = false;
						for (var j=0;j < originCombo.options.length ; j++) {
							 if ($(convertId).value == originCombo.options[j].text) {
							 	$(selectId).value =  originCombo.options[j].value;
								includeFlag = true;
								break;
							 }
						}
						if (!includeFlag) {
							$(selectId).value = $(convertId).value;
						} 					
						
					}, this);
				}
				
				// TODO ¾÷¹«°¡ ÀÖ´Ù¸é Ã³¸®ÇÑ´Ù. 
				
				// -->	
				if ("" != classString) {					
					$(convElId).setAttribute('class', classString);					
				}
				

				// DIV ¼Ó¼º  ÀçÁ¶Á¤.. 
				if (""==styleString || !styleString) {
					converted.setWidth(selectObjWidth);
					//alert("objWidth :"+selectObjWidth);
				} /*else {
					if (Ext.isIE) {
						converted.setWidth(parseInt(pxString)+22);
					} else {
						converted.setWidth(parseInt(pxString)+6);
					}
					
				} */				

            }

			/* 20090218 ¸®½ºÆ®¹Ú½º ¿ÞÂÊ Á¤·Ä */
			var xComboInners = Ext.query("div[class=x-combo-list-inner]");
			Ext.each(xComboInners, function(el){
					el.style.textAlign = "left";
					el.style.paddingLeft = "1px";	
				}
			);
			
            selectObj.setAttribute("isInit", true);
        });
	},


    /**
     * combo ·Î transform µÇ¸é¼­ »èÁ¦ µÈ selectObj ¸¦ »õ·Î »ý¼ºÇØ ÁÖµµ·Ï ÇÕ´Ï´Ù.
     * @param id
     */
    createNewSelectObj : function(selectObj){
        var newSelectObj = document.createElement("select");
        newSelectObj.combo = selectObj.combo;
        //»õ·Î ¸¸µé¾îÁø selectObj ´Â scan ´ë»ó¿¡¼­ Á¦¿Ü ÇÕ´Ï´Ù.
        newSelectObj.isInit = true;

        newSelectObj.onchange = selectObj.onchange;
        newSelectObj = newSelectObj.combo.hiddenField.parentNode.appendChild(newSelectObj);
        newSelectObj.style.display = "none";

        //option ¼³Á¤
        var items = newSelectObj.combo.store.data.items;
        Ext.each(items, function(el){
            var optionElement = document.createElement("option");
            optionElement.text = el.data.text;
            optionElement.value = el.data.value;
            newSelectObj.options.add(optionElement);
        });
		newSelectObj.id = selectObj.id +'_originalData';
        return newSelectObj;
    },


    /**
     * »õ·Î ¸¸µé¾îÁø selectObj ¸¦ id key °ªÀ¸·Î transformSelects ¿¡ set ÇÕ´Ï´Ù.
     * @param selectObj º¯È¯ µÉ selectObj
     */
    setCreateNewSelectObj : function(key, selectObj){
        hana.JHanaNiceForms.transformSelects[key] = hana.JHanaNiceForms.createNewSelectObj(selectObj);
    },


    /**
     * selects ¿¡¼­ id ¿¡ ÇØ´çÇÏ´Â selectObj ¸¦ return ÇÕ´Ï´Ù.
     * @param id
     */
    getTransformSelectBoxById : function(id){
        return hana.JHanaNiceForms.transformSelects[id];
    },


    /**
     * combo ¸¦ ±âÁ¸ selectObj option À¸·Î »õ·Î refresh ÇÕ´Ï´Ù.
     * @param combo
     * @param transformSelectObj
     */
    comboRefreshByTransformSelect : function(combo, transformSelectObj){
        if( combo ){			
            combo.mode = 'local';
            var d = [], opts = transformSelectObj.options;
            for(var i = 0, len = opts.length;i < len; i++){
                var o = opts[i];
                var value = (Ext.isIE ? o.getAttributeNode('value').specified : o.hasAttribute('value')) ? o.value : o.text;
                if(o.selected) {
                    combo.value = value;
                }
                d.push([value, o.text]);
            }
            combo.store = new Ext.data.SimpleStore({
                'id': 0,
                fields: ['value', 'text'],
                data : d
            });
            combo.valueField = 'value';
            combo.displayField = 'text';

            combo.bindStore(combo.store, true);
        }
    },


    /**
     * text ÇÊµå¿¡ È¿°ú¸¦ ÁÝ´Ï´Ù. È¿°ú¸¦ º¯°æÇÏ°í ½ÍÀº °æ¿ì ÀÌ ÇÔ¼ö¸¦ ¼öÁ¤ÇÕ´Ï´Ù.
     * @param obj
     */
    giveEffect : function(obj){
        Event.observe(obj, "blur", function(){ hana.JHanaNiceForms.textBlurFunc(obj) }, false);
        Event.observe(obj, "focus", function(){ hana.JHanaNiceForms.textFocusFunc(obj) }, false);
    },


    /**
     * className ¿¡ µû¸¥ ÀÔ·Â °ªÁ¦ÇÑÀ» ¼³Á¤ ÇÕ´Ï´Ù.
     * @param obj
     */
    setInputControl : function(obj){

        var classNm = obj.niceClass || obj.className;

        if( classNm ){
            var length = classNm.replace(/[a-z]/ig,"");
            classNm = classNm.replace(/[0-9]/g,"");
            if( hana.JHanaNiceForms.classNameArr.include(classNm) ){
                hana.JHanaNiceForms.ControlMap[classNm](obj, length);
            }
        }
    },


    /**
     * keydown ÀÌº¥Æ®·Î ¿£ÅÍÅ° °¡ ´­·ÈÀ» °æ¿ì submitÀ» ¸·½À´Ï´Ù.
     * ±âÁ¸ obj¿¡ keydown ÀÌº¥Æ®°¡ °É·ÁÀÖ´Â°æ¿ì ±âÁ¸ ÀÌº¥Æ® ¼öÇà ÈÄ ¼øÂ÷ÀûÀ¸·Î BlockEnterFuncÀ» ¼öÇàÇÕ´Ï´Ù.
     * @param obj
     */
    preventEnter : function(obj){
        Event.observe(obj, "keydown", function(event){ hana.JHanaNiceForms.textBlockEnterFunc(event) }, false);
    },


    /**
     * IME(Input Method Editor) »óÅÂ¸¦ disabled ½ÃÅµ´Ï´Ù.
     * IE ¿¡¼­¸¸ »ç¿ë °¡´ÉÇÕ´Ï´Ù. ¾ðÁ¨°¡´Â firefoxµµ..
     * @param obj
     */
    preventIME : function(obj){
        if( Prototype.Browser.IE ){
            obj.style.imeMode = "disabled";
        }
    },

    /**
     * IME(Input Method Editor) »óÅÂ¸¦ disabled ½ÃÅµ´Ï´Ù.
     * IE ¿¡¼­¸¸ »ç¿ë °¡´ÉÇÕ´Ï´Ù. ¾ðÁ¨°¡´Â firefoxµµ..
     * @param obj
     */
    activeIME : function(obj){
        if( Prototype.Browser.IE ){
            obj.style.imeMode = "active";
        }
    },


    /**
     * ¿£ÅÍÅ°°¡ ÀÔ·Â µÇ¾úÀ» °æ¿ì ÀÌº¥Æ®¸¦ stop ½ÃÅµ´Ï´Ù.
     * @param event
     */
    textBlockEnterFunc : function(event){
        var keyCode;
        var evt;
        if (document.all) {
            evt = window.event;
            keyCode = window.event.keyCode;
        } else {
            evt =  event;
            keyCode = event.which ? event.which : event.charCode;
        }
        if (keyCode == Event.KEY_RETURN) {
            Event.stop(evt);
        }
    },


    /**
     * ¿ø·¡ ÇÊµå¿¡ class °¡ ÀÖ´Â °æ¿ì ±âÁ¸ class + " focus" ¸¦ ºÙÀÓ.
     * @param q
     */
    textFocusFunc : function(obj) {
        if( obj.className ){
            // Á¶°Ç Ãß°¡ °è¼Ó classNameÀÌ Ãß°¡µÇ´Â°ÍÀ» ¸·±â À§ÇØ (2008.02.27 ork)
            if (obj.className.lastIndexOf(" focus") == -1) {
                obj.className = obj.className + " focus";
            }
        }else{
            obj.className = "focus";
        }
    },


    /**
     * ³¡ºÎºÐ¿¡ " focus" °¡ Á¸Àç ÇÏ¸é »èÁ¦ÇÔ.
     * @param q
     */
    textBlurFunc : function(obj) {
		if(new RegExp("[\s]*focus$").test(obj.className)){
            obj.className = obj.className.replace(/[\s]*focus$/,"");
        }
		// 20081208-1 ¿À·û°æ class¸¦ ¾ø¾ÖÁö ¾Ê´Â´Ù. 
		/*else{
            obj.className = "";
        }*/
    },


    /**
	 * ´ÙÀ½ input tag°¡ ÀÖ´Â °÷À¸·Î focus¸¦ ÀÌµ¿½ÃÅ²´Ù.
	 * @param {Object} obj
	 */
	nextFocus : function (obj) {
		if (obj && obj.value != undefined && obj.value != ''){
			if (obj.maxLength == obj.value.length) {

				var frm = obj.form;

				if (frm) {
					var matchIdx = 0;
                    for (var i=0 ; i < frm.elements.length ; i++) {
						var el = frm.elements[i];
                        if( obj == el ){
                            matchIdx = i;
                            break;
                        }
					}

                    var nextEl = frm.elements[matchIdx+1];
                    //ÇöÀç obj ´ÙÀ½¿¡ ÀÖ´Â input text,password¸¦ Ã£¾Æ¾ß ÇÔ
                    if (nextEl!=undefined && nextEl.tagName == 'INPUT' && (nextEl.type == 'text' || nextEl.type =='password')) {
                        if (!nextEl.disabled) {
                        
                            try
                            {
                                nextEl.focus();
                                //el.select();
                            }catch(ex){
                                // control ¿¡ focus¸¦ °¡Á®°¡Áö ¸øÇÏ´Â °æ¿ì ¾Æ¹«Ã³¸®µµ ÇÏÁö ¾Ê´Â´Ù. (20090302 ±â¾÷ °ø°ú±Ý ½Åµ¿Çö ¼öÁ¤)
                            }
                        }
                    }
                }
				/** 06/05 ¿À·û°æ ÁÖ¼® Ã³¸®
				var el = obj.nextSibling;
				while (el) {
					el = el.nextSibling;
					if (el!=undefined && el.tagName == 'INPUT' && (el.type == 'text' || el.type =='password')) {
						if (!el.disabled) {
							el.focus();
							el.select();
							break;
						}
					}
				}**/


			}
		}
	}
}

//Ã¹ÆäÀÌÁö ÀÎ °æ¿ì windowÀÇ load ÀÌº¥Æ® ½Ã init ½ÃÅµ´Ï´Ù.
Event.observe(window, "load", hana.JHanaNiceForms.init,false);


