PageSourceSearch

https://sbisb.co.kr/sw/raon/nxKey/js/TouchEnNxKey.js

js sbisb.co.kr collected 2026-09-24 09:30:09 UTC 120,353 bytes, 3,709 lines download raw bytes

1/**
2****************************************************
3TouchEnNxKey.js
4****************************************************
5| Version     ÀÛ¼ºÀÚ        ¼öÁ¤ÀÏ        º¯°æ»çÇ× 
6 ---------  -------  -----------  ---------- 
7| v1.0.0.10   °­³²ÁØ    2021.08.26
8| v1.0.0.9    °­³²ÁØ    2021.08.14
9| v1.0.0.8    °­³²ÁØ    2020.02.17
10| v1.0.0.7    °­³²ÁØ    2019.07.05
11| v1.0.0.6    °­³²ÁØ    2018.12.14
12| v1.0.0.5    ¹é¼­¸°    2018.11.12
13| v1.0.0.4    ÇãÇý¸²    2017.12.26      
14| v1.0.0.3    ÇãÇý¸²    2017.01.23      
15| v1.0.0.2    ¹é¼­¸°    2017.01.20      
16| v1.0.0.1    ¹é¼­¸°    2017.01.20      
17
18****************************************************
19 Copyright ©Ï RaonSecure Co., Ltd. 
20  * º» Äڵ忡 ´ëÇÑ ¸ðµç ±ÇÇÑÀº (ÁÖ)¶ó¿Â½ÃÅ¥¾î ÀÖÀ¸¸ç µ¿ÀǾøÀÌ »ç¿ë/¹èÆ÷/°¡°øÇÒ ¼ö ¾ø½À´Ï´Ù.
21****************************************************
22**/
23
24/*
25¾Æ·¡ ÁÖ¼®µÈ ÄÚµå´Â ÇÔ¼ö üũ 
26»çÀÌÆ® Àû¿ë½Ã È®ÀÎ ÈÄ ÄÚµå »èÁ¦=
27*/
28
29
30var TK_funArrary =["getInternetExplorerVersion","IsGetAttributeNull","isDefaultSecurityOn","isEnc","isSecurity",
31	"TK_Loading","TK_Load","TK_LoadingCallback","TK_installPage","TK_notInstall",
32	"TK_isInstallcheck","TK_installCheck","TK_installCheckCallback","TouchEnKey_download","TouchEnKey_extensiondownload",
33	"TK_DoSubmitByGetEnc","TK_makeEncData","TK_ApplySecurity","TK_Init_callback","TK_SetCallBack",
34	"focusDataClear","TK_Start","TK_Start_callback","TK_Stop","TK_Stop_callback",
35	"TK_Keyup","TK_Keypress","TK_KeyDown","TK_InputCancle","TK_Change",
36	"TK_Input","TK_KeyDown_callback","TK_Select","TK_SetScroll","TK_click",
37	"TK_IsSecurityType","TK_AddEventListner","TK_AddEventListner2","DrawHiddenElements","DrawHiddenElements",
38	"DrawHiddenElementsId","GetEncDataFun","makeKeyData","makeEncDataEx","makeEncDataId",
39	"GetEncData","TouchEnKey_UIEevents","onBlur","onFocus","TK_RealStopProcess",
40	"update_callback","GetHiddenEncFieldName","GetHiddenKeyFieldName","GetEncDataCallback","GetEncDataCallback2",
41	"TouchEnNXE_createHexString","findElementByName","findElmentByNames","findElmentByNamesId","GetCaretPosition",
42	"TK_Request","TK_Request2","TK_RequestEx","TK_Request_Callback","IsDenyPaste",
43	"TK_OnContextMenu","TK_OnPaste","TK_Clear","TK_Rescan","TK_EnqueueList_frm",
44	"TK_EnqueueList","EncOnFieldDisableEvent","TK_GetEncXW","TK_GetEncYT","TK_GetEncGN",
45	"TK_GetEncUN","TK_GetEncHN","TK_OnContextMenu","TK_OnPaste","TK_InvalidateSession",
46	"TK_EncModify","TK_FaqMove","TK_CommonError","GetAttributeFormName","TK_postInit",
47	"TK_postFinish","Tk_InputErase","TK_HiddenElementErase","TK_NomalElementErase","IsAllowIdOverlap",
48	"IsFormTrans","IsSpecialTkMask","TK_KeyInputToInputObj","TK_IsNal","TK_InputEncWithPlain",
49	"TK_SeedKey_Request","TK_AddChar_Request","TK_EncData_Request","TK_InterClear_Request", "TK_Rescan_Id", "TK_Rescan_Form", "TK_EnqueueList_Form", 
50	"TK_EnqueueList_Id", "Create_E2E_element", "Create_E2E_element_Form", "Create_E2E_element_Id"];
51
52
53function TK_funCheck(k)
54{
55	var i = 0;
56    try {
57	    	for (i=k; i <TK_funArrary.length; i++)
58			{
59	    		var tk_func = eval(TK_funArrary[i]);
60	    		
61				if (typeof(tk_func) != "function")
62					alert(TK_funArrary[i] + " Function is not function");
63			}   
64        }
65    catch (e) {
66    	
67    	alert(TK_funArrary[i] + " Function is not exist");
68    	TK_funCheck(i+1);
69    	
70    }
71}
72
73
74
75if (!window.console)
76    console = {
77        log: function (msg) {}
78    };
79
80
81/** Áö¿ø ºê¶ó¿ìÀú üũ */	
82var useTouchEnnxKey = false;
83try{
84    if(TOUCHENEX_UTIL.isWin() || TOUCHENEX_UTIL.isMac()){
85        if(TOUCHENEX_UTIL.isIE() && parseInt(TOUCHENEX_UTIL.getBrowserVer()) >= parseInt(TouchEnNxConfig.moduleMinVer.MSIE)) useTouchEnnxKey = true;
86        else if(TOUCHENEX_UTIL.isChrome() && parseInt(TOUCHENEX_UTIL.getBrowserVer()) >= parseInt(TouchEnNxConfig.moduleMinVer.chromeMinVer)) useTouchEnnxKey = true;
87        else if(TOUCHENEX_UTIL.isFirefox() && parseInt(TOUCHENEX_UTIL.getBrowserVer()) >= parseInt(TouchEnNxConfig.moduleMinVer.FireFoxMinVer)) useTouchEnnxKey = true;
88        else if(TOUCHENEX_UTIL.isOpera() && parseInt(TOUCHENEX_UTIL.getBrowserVer()) >= parseInt(TouchEnNxConfig.moduleMinVer.OperaMinVer)) useTouchEnnxKey = true;
89        else if(TOUCHENEX_UTIL.isSafari() && parseInt(TOUCHENEX_UTIL.getBrowserVer()) >= parseInt(TouchEnNxConfig.moduleMinVer.SafariMinVer)) useTouchEnnxKey = true;
90        else if(TOUCHENEX_UTIL.isEdge())	useTouchEnnxKey = true;
91        else useTouchEnnxKey = false;
92    } else{
93        useTouchEnnxKey = false;
94    }
95}catch(e){
96    useTouchEnnxKey = false;
97}
98
99/** ºê¶ó¿ìÀú ¹× OS Á¤º¸ */
100var TouchEn_BaseBRW = {
101    ua: navigator.userAgent.toLowerCase(),
102    ie: navigator.appName == 'Microsoft Internet Explorer',
103    ie_: navigator.userAgent.match('MSIE') == 'MSIE',
104    ns: navigator.appName == 'Netscape',
105    ff: navigator.userAgent.match('Firefox') == 'Firefox',
106    sf: navigator.userAgent.match('Safari') == 'Safari',
107    op: navigator.userAgent.match('Opera') == 'Opera',
108    cr: navigator.userAgent.match('Chrome') == 'Chrome',
109    win: navigator.platform.match('Win') == 'Win',
110    mac: navigator.userAgent.match('Mac') == 'Mac',
111    linux: navigator.userAgent.match('Linux') == 'Linux',
112    ie11: navigator.userAgent.match('Trident/7.0') == 'Trident/7.0'
113};
114
115var getTouchEnNXEType = {
116    MSIEBrowser: (TouchEn_BaseBRW.win && (TouchEn_BaseBRW.ie || TouchEn_BaseBRW.ie11 || TouchEn_BaseBRW.ie_)),
117    WebKitBrowser: (TouchEn_BaseBRW.mac || TouchEn_BaseBRW.ff || TouchEn_BaseBRW.sf || TouchEn_BaseBRW.cr || TouchEn_BaseBRW.op),
118    OtherOS: (TouchEn_BaseBRW.mac || TouchEn_BaseBRW.linux)
119};
120
121function getInternetExplorerVersion() {
122    var rv = -1; // Return value assumes failure.
123    if (navigator.appName == 'Microsoft Internet Explorer') {
124        var ua = navigator.userAgent;
125        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
126        if (re.exec(ua) != null)
127            rv = parseFloat(RegExp.$1);
128    }
129    return rv;
130}
131
132
133var tk_Special_Mask_StartPos = "data-tk_hkStart_pos";
134var tk_Special_Mask_EndPos =  "data-tk_hkEnd_pos";
135var tk_Special_Mask = "data-tk_hk_mask";
136
137var bDaemonType = false;
138var TouchEnNx_preKeyCode=0;
139var TK_bInit = 0;
140var bAddListner = 0;
141var TouchEnNXE_E2EDATA = "";
142var TouchEnNXE_SeedKey = "";
143var cipherEncText = "";
144var bAutoFocus = false;
145//var TNK_SR = "";
146
147var BSKeyBeingActive = false;
148
149var DomID;
150var TouchEnKeyNXE_CurObj;
151var loadflag = false;
152var fnGetEncXWCallback;
153var fnGetEncYTCallback;
154var fnGetEncGNCallback;
155var fnGetEncUNCallback;
156var fnGetEncHNCallback;
157var bEnc2 = false;
158var bTobe = false;
159
160
161var tekOption = TouchEnNxConfig.solution.nxkey.tekOption;
162
163if(TouchEnNxConfig.warningMacSierra == true && TOUCHENEX_UTIL.getOSInfo().name == "Sierra")
164{
165    alert("MAC OS X 10.12 Sierra ¹öÀüÀº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.");
166}
167
168function IsGetAttributeNull(obj, attValue)
169{
170    if(obj == undefined) return true;
171    if (attValue == undefined) return true;
172	
173    if (obj.getAttribute(attValue) == null)
174        return true;
175	
176    return false;
177}
178
179function isDefaultSecurityOn(inputObj)
180{
181    if (tekOption.idbase == "true") {
182        if (tekOption.defaultsecurityid == "false")
183            return false;
184    }
185    else {
186        if (inputObj.form && (inputObj.form.getAttribute("DefaultSecurity") == "off" || inputObj.form.getAttribute("data-DefaultSecurity") == "off"))
187            return false;
188    }
189    return true;
190}
191
192//ÇØ´ç ÀÔ·Â Çʵ尡 e2e ÀÎÁö ¿©ºÎ¸¦ ÆÇ´Ü
193function isEnc(inputObj)
194{
195    if (TK_IsNal(inputObj)) return false;
196    if (inputObj.tagName == "INPUT") {
197
198        if (inputObj.getAttribute("enc") == "on"
199            || inputObj.getAttribute("enc") == "true"
200            || inputObj.getAttribute("enc") == "yes"
201            || inputObj.getAttribute("data-enc") == "on"
202            || inputObj.getAttribute("data-enc") == "true"
203            || inputObj.getAttribute("data-enc") == "yes"
204        )
205            return true;
206
207        if (TK_IsAvailble(tekOption.defaultenc)) {
208            if (inputObj.getAttribute("type") == "password" && (tekOption.defaultenc == "on" || tekOption.defaultenc == "yes" || tekOption.defaultenc == "true"))
209                return true;
210        }
211    }
212    return false;
213}
214
215function isSecurity(inputObj) {
216	
217	isSecurityCheck(inputObj);
218		
219	if (isDefaultSecurityOn(inputObj))
220		return true;
221
222	return false;
223}
224
225// 20230224
226// º¸¾ÈÇʵ忩ºÎüũ
227// isDefaultSecurityOn true/false ¿©ºÎ »ó°ü¾øÀÌ ºñº¸¾ÈÇʵ忡¼­ µ¿ÀÛÇÏ¿© ºÐ±â
228function isSecurityCheck(inputObj) {
229	if (isEnc(inputObj))
230		return true;
231
232	if (inputObj.getAttribute("security") == "on" || inputObj.getAttribute("security") == "true" || inputObj.getAttribute("security") == "yes" ||
233		inputObj.getAttribute("data-security") == "on" || inputObj.getAttribute("data-security") == "true" || inputObj.getAttribute("data-security") == "yes")
234		return true;
235
236	if (IsGetAttributeNull(inputObj, "security") == true && IsGetAttributeNull(inputObj, "data-security") == true) {
237		
238		// 20230302
239		// IE Àϰæ¿ì inputObj.getAttribute("tk_security") == null
240		if( getTouchEnNXEType.WebKitBrowser){
241			if (inputObj.getAttribute("tk_security") == "true" )
242			return true;
243		}
244		else{
245			if (inputObj.getAttribute("tk_security") == "true" || inputObj.getAttribute("tk_security") == "" || inputObj.getAttribute("tk_security") == null)
246				return true;
247			}
248	}
249
250	if (inputObj.getAttribute("type") == "password")
251		return true;
252
253	return false;
254}
255
256
257/**
258 * ¸ðµâ ·Îµù
259 *
260 * status °¡ trueÀ̸é üũ¸¦ ¿äûÇÑ ¸ðµç ¸ðµâÀÌ Á¤»ó ¼³Ä¡µÇ¾úÀ½À» ÀǹÌÇÕ´Ï´Ù. °¢°¢ÀÇ ¸ðµâÀº info ¹è¿­ ³» °ªÀ» ÅëÇÏ¿©
261 * È®ÀÎÇÕ´Ï´Ù. ÆäÀÌÁö ÃÖÃÊ Á¢¼Ó½Ã¿¡´Â üũÈÄ¿¡ ¹Ýµå½Ã LOADINGÀ» ¼öÇàÇÏ¿© ¸ðµâº° EX½ÇÇà °´Ã¼°¡ Á¤»óÀûÀ¸·Î »ý¼ºµÇµµ·Ï ÇÕ´Ï´Ù.
262 * LOADINGÀº status °ªÀÌ trueÀÎ °æ¿ì¿¡¸¸ µ¿ÀÛÇÕ´Ï´Ù.
263 */
264function TK_Loading() {
265    try {
266        if (!loadflag) {
267            //TouchEnNx.processingbar(true);
268            if (window.onbeforeunload == null)
269                window.onbeforeunload = function(){}; // cache »èÁ¦
270
271            TOUCHENEX_CHECK.check([touchenexInfo], "TK_Load");
272            loadflag = true;
273        }
274    } catch (e) {
275        TouchEnNx.processingbar(false);
276    }
277}
278
279
280function TK_Load(check) {
281    try {
282        exlog("TK_LoadingCallback", check);
283        currStatus = check;
284        if (currStatus.status) {
285            touchenexInfo.tkInstalled = currStatus.status;
286            TOUCHENEX_LOADING("TK_LoadingCallback");
287        } else {
288            TK_notInstall(currStatus);
289        }
290    } catch (e) {
291        TouchEnNx.processingbar(false);
292    }
293}
294
295/**
296 * Űº¸µåº¸¾È Á¤»ó ·Îµù½Ã ¸ðµâ ½ÇÇà
297 */
298function TK_LoadingCallback(installed) {
299    try {
300        if (installed) {
301			if(TK_MSIEBrowserDaemonCheck() || getTouchEnNXEType.WebKitBrowser ){
302				if (bAddListner == 0) {
303					TK_AddEventListner();
304				}
305			}
306            if (TK_bInit == 0) {
307                TK_ApplySecurity();
308            }
309        }
310    } catch (e) {
311        TouchEnNx.processingbar(false);
312    }
313}
314
315/**
316 * ¼³Ä¡ ÆäÀÌÁö À̵¿ ÇÔ¼ö ¼³¸í : ¼³Ä¡ ¿Ï·á½Ã ¸ÞÀÎÆäÀÌÁö À̵¿ ÇÔ¼ö È£Ãâ TouchEnNxKey_Interface.js ¿¡ ÆäÀÌÁö ¼³Ä¡¸¦
317 * À§ÇØ À̵¿ ÇÒ ÆäÀÌÁö °æ·Î¸¦ ¼³Á¤ÇÕ´Ï´Ù.
318 */
319
320
321function TK_installPage() {
322    TouchEnNx.processingbar(false);
323    alert("°í°´´ÔÀÇ ¾ÈÀüÇÑ °áÁ¦ À§ÇÏ¿© \nº¸¾ÈÇÁ·Î±×·¥ ¼³Ä¡°¡ ÇÊ¿äÇÕ´Ï´Ù.\n[È®ÀÎ]À» ¼±ÅÃÇÏ½Ã¸é ¼³Ä¡ÆäÀÌÁö·Î ¿¬°áµË´Ï´Ù.\n");
324    if (typeof TouchEnKey_installpage == "undefined") {
325        location.href = touchenexInfo.tkInstallpage;
326    }
327}
328
329/**
330 * ¹Ì ¼³Ä¡ ÀÏ ? µ¿ÀÛ ÇÔ¼ö.
331 */
332/**
333 * ¹Ì ¼³Ä¡ ÀÏ ? µ¿ÀÛ ÇÔ¼ö.
334 */
335function TK_notInstall(currStatus) {
336    try {
337        if (!currStatus.status) { // ¹Ì ¼³Ä¡ À϶§
338            touchenexInfo.tkInstalled = currStatus.status;
339            if (typeof TouchEnKey_installpage == "undefined") {
340                TK_installPage();
341            } else {
342                if (!currStatus.info[0].isInstalled) {
343                    if (!currStatus.info[0].extension) {
344                        // EX ¹Ì¼³Ä¡ chrome , firefox, opera extension ÀÚµ¿ À̵¿
345                        if (TOUCHENEX_UTIL.isChrome() || TOUCHENEX_UTIL.isFirefox() || (TOUCHENEX_UTIL.isOpera())) {
346                            // TouchEnKey_extensiondownload();
347                            touchenexInfo.exInstalled = false;
348                        }
349                    } else {
350                        touchenexInfo.exInstalled = true;
351                    }
352
353                    if (!currStatus.info[0].client || !currStatus.info[0].EX) {
354                        // client ÆÄÀÏÀÌ ¹Ì¼³Ä¡ µÇ ¾úÀ» °æ¿ì
355                        touchenexInfo.clInstalled = false;
356                    } else {
357                        touchenexInfo.clInstalled = true;
358                    }
359                } else {
360                    // ¼³Ä¡¿Ï·á
361                    if (typeof TouchEnKey_installpage != "undefined") {
362                        // ¼³Ä¡ÆäÀÌÁöÀÌ¸é ¸ÞÀÎÆäÀÌÁö À̵¿ ·ÎÁ÷ Ãß°¡ ¶Ç´Â¸ÞÀÎÆäÀÌÁö À̵¿ ÇÔ¼ö È£Ãâ
363                    }
364                }
365            }
366        } else { // ¼³Ä¡¿Ï·á
367            touchenexInfo.tkInstalled = currStatus.status;
368            if (typeof TouchEnKey_installpage != "undefined") {
369                // ¼³Ä¡ÆäÀÌÁö ÀÌ¸é ¸ÞÀÎ ÆäÀÌÁö À̵¿ ·ÎÁ÷ Ãß°¡ ¶Ç´Â ¸ÞÀÎ ÆäÀÌÁö À̵¿ ÇÔ¼ö È£Ãâ
370            }
371        }
372    } catch (e) {
373        exlog("_TOUCHENNX", "TK_notInstall() exception");
374    }
375}
376/**
377 * Á¤»ó ¼³Ä¡¿©ºÎ È®ÀÎÀ» À§ÇÑ »ùÇà callback À¸·Î ¿À´Â ÀÎÀÚ°ªÀº {"status":"false",
378 * "info":[{"name":exPluginName, "isInstalled":true, "extension":true,
379 * "EX":true, "client":true}}]}
380 *
381 * status °¡ trueÀ̸é üũ¸¦ ¿äûÇÑ ¸ðµç ¸ðµâÀÌ Á¤»ó ¼³Ä¡µÇ¾úÀ½À» ÀǹÌÇÕ´Ï´Ù. °¢°¢ÀÇ ¸ðµâÀº info ¹è¿­ ³» °ªÀ» ÅëÇÏ¿©
382 * È®ÀÎÇÕ´Ï´Ù. üũÈÄ¿¡ ¹Ýµå½Ã LOADINGÀ» ¼öÇàÇÏ¿© ¸ðµâº° EX½ÇÇà °´Ã¼°¡ Á¤»óÀûÀ¸·Î »ý¼ºµÇµµ·Ï ÇÕ´Ï´Ù. LOADINGÀº status
383 * °ªÀÌ trueÀÎ °æ¿ì¿¡¸¸ µ¿ÀÛÇÕ´Ï´Ù.
384 */
385
386function TK_isInstallcheck() {
387    try {
388        TOUCHENEX_CHECK.check([touchenexInfo], 'TK_installCheckCallback');
389    } catch (e) {
390        exlog("_TOUCHENNX", "TK_isInstallcheck() exception");
391    }
392}
393
394function TK_installCheck(callback) {
395    try {
396        TOUCHENEX_CHECK.check([touchenexInfo], callback);
397    } catch (e) {
398        exlog("_TOUCHENNX", "TK_installCheck() exception");
399    }
400}
401
402function TK_installCheckCallback(check) {
403    try {
404        currStatus = check;
405        if (currStatus.status) {
406            touchenexInfo.tkInstalled = currStatus.status;
407            if (typeof TouchEnKey_installpage != "undefined") {
408                // ¼³Ä¡ÆäÀÌÁö ÀÌ¸é ¸ÞÀÎÆäÀÌÁö À̵¿ ·ÎÁ÷ Ãß°¡ ¶Ç´Â ¸ÞÀÎÆäÀÌÁö À̵¿ ÇÔ¼ö È£Ãâ
409            }
410        } else {
411            TK_notInstall(currStatus); // ¹Ì¼³Ä¡ ÀÏ °æ¿ì ÇÔ¼ö È£Ãâ
412        }
413    } catch (e) {
414        exlog("_TOUCHENNX", "TK_installCheckCallback() exception");
415    }
416}
417
418function TouchEnKey_download() {
419    
420    if( (TOUCHENEX_UTIL.isWin() || TOUCHENEX_UTIL.isMac()) && (tekOption.runtype == "onlydaemon" || tekOption.runtype == "mainextension"))
421    {
422        TOUCHENEX_INSTALL.download('nxkey', 'daemon');
423    }
424    else
425    {
426        TOUCHENEX_INSTALL.download('nxkey', 'client');
427    }
428}
429
430function TouchEnKey_extensiondownload() {
431    TOUCHENEX_INSTALL.download('nxkey', 'extension');
432}
433
434function TK_DoSubmitByGetEnc() {
435    if (tekOption.usegetenc != "true") {
436        alert("Option usegetenc is not true");
437    }
438    frm = document.forms[0];
439    if (getTouchEnNXEType.MSIEBrowser) {
440        makeKeyData(frm);
441    } else {
442        GetEncData();
443    }
444}
445
446function TK_makeEncData(frmObj) {
447    try {
448        var cipherEncText = "";
449        if (tekOption.usegetenc == "true") {
450            alert("Option usegetenc is not false");
451        }
452        if (tekOption.usegetenc == "true") {
453            GetEncData();
454        } else {
455            if (TK_Isidbase())
456                cipherEncText = GetCipherDataId();
457            else {
458                cipherEncText = GetCipherDataForm(frmObj);
459            }
460
461            if (IsAllowIdOverlap() == true) {
462                if (tekOption.idbase == "true") {
463                    document.getElementById("hid_enc_data").value = cipherEncText;
464                } else {
465                    frmObj.hid_enc_data.value = cipherEncText;
466                }
467            } else {
468                var encField = "";
469                if (tekOption.idbase == "true") {
470                    encField = GetHiddenEncFieldName();
471                    var hid_enc_filed = document.getElementById(encField);
472
473                    if (typeof hid_enc_filed != "undefined")
474                        hid_enc_filed.value = cipherEncText;
475
476                } else {
477                    encField = GetHiddenEncFieldName(frmObj);
478                    frmObj[encField].value = cipherEncText;
479                }
480            }
481            return true;
482        }
483    } catch (e) {
484        return false;
485    }
486}
487
488function TK_ApplySecurity() {
489    if (typeof TouchEnKey_installpage != "undefined")
490        return false;
491    if (getTouchEnNXEType.WebKitBrowser) {
492        var array = new Uint8Array(16);
493        window.crypto.getRandomValues(array);
494        DomID = TouchEnNXE_createHexString(array, 16);
495        DomID = DomID.substring(0, 32);
496    } else {
497        DomID = "iecb" + TOUCHENEX_UTIL.createId();
498    }
499	
500    if(TOUCHENEX_UTIL.isMac() && TOUCHENEX_UTIL.isSafari() && parseInt(TOUCHENEX_UTIL.getBrowserVer()) >= 12) {
501        window.addEventListener("beforeunload", function (event) {
502            try {
503                touchenexInterface.TK_RealStop([false, DomID], "TK_Stop_callback");
504                tekOption.bstart = 0;
505            } catch (e) {
506                exlog("_TOUCHENNX", "TK_ApplySecurity() beforeunload");
507            }
508			
509            event.returnValue = "";
510        });
511    }
512
513    TK_SetCallBack();
514    try {
515		// 20230224 IE Form, input name ¾øÀ» ½Ã º¸¾È¾ÈµÉ ¶§ name Ãß°¡ ·ÎÁ÷
516		for (var i = 0; i < document.forms.length; i++) {
517			/*
518			20230303 form¿¡ name ¾ø¾î º¸¾È¾ÈµÉ °æ¿ì ÁÖ¼®ÇØÁ¦ 
519			if(TK_IsNal(document.forms[i].name)){
520				 document.forms[i].name = document.forms[i].id;			
521			}
522			*/
523                for (var j = 0; j < document.forms[i].elements.length; j++) {
524				if(TK_IsNal(document.forms[i].elements[j].name)){
525					
526					// 20230224 º¸¾ÈÇʵ忩ºÎ Çѹø ´õ üũ
527					if(isSecurityCheck(document.forms[i].elements[j])){
528						 document.forms[i].elements[j].name = document.forms[i].elements[j].id;
529					}
530					
531				}
532			}
533   		}
534   		
535   		// ---
536	
537        if (window.frameElement)
538            tekOption.iframename = window.frameElement.getAttribute("name");
539        else
540            tekOption.iframename = "";
541    } catch (e) {
542        tekOption.iframename = "_unknown_";
543    }
544    tekOption.exformname = touchenexInfo.exFormName;
545    
546    if (tekOption.iframename != "") {
547        for (var i = 0; i < document.forms.length; i++) {
548            var frmName = GetAttributeFormName(document.forms[i]);
549            if (frmName != null && frmName != "" && frmName != touchenexInfo.exFormName) {
550                tekOption.searchformname = frmName;
551                break;
552            }
553        }
554    }
555    
556    if (document.createEvent)
557        tekOption.firetype = "dispatch";
558    
559    if (typeof TNK_SR == "string") 
560    {
561        tekOption.srdk = TNK_SR;
562    }
563    tekOption.browserinfo = TOUCHENEX_UTIL.getBrowserInfo().browser;
564	
565    for(var i=0; i<TOUCHENEX_CHECK.chkInfoStatus.info.length; i++) {
566        if (TOUCHENEX_CHECK.chkInfoStatus.info[i].licExpire != undefined && TOUCHENEX_CHECK.chkInfoStatus.info[i].licExpire != "")
567            tekOption.licexpiredate = TOUCHENEX_CHECK.chkInfoStatus.info[i].licExpire;
568    }
569	
570    var strOption = JSON.stringify(tekOption);
571    touchenexInterface.TK_Init([false, DomID, strOption, ""],
572        "TK_Init_callback");
573
574    var k=0;
575    try {
576        if (tekOption.idbase == "true") {
577            var htmlAllColl = document.all;
578
579            for (var j = 0; j < htmlAllColl.length; j++) {
580                if (htmlAllColl[j].tagName == "INPUT" &&
581                    (htmlAllColl[j].type == "text" || htmlAllColl[j].type == "password") && isEnc(htmlAllColl[j])) {
582                    Tk_InputErase(htmlAllColl[j]);
583                }
584            }
585        } else {
586            for (var i = 0; i < document.forms.length; i++) {
587                for (var j = 0; j < document.forms[i].elements.length; j++) {
588	
589                    var bFound = false;
590
591                    if (document.forms[i].elements[j].tagName == "INPUT" && (document.forms[i].elements[j].type == "text" || document.forms[i].elements[j].type == "password") && isEnc(document.forms[i].elements[j])) 
592                        bFound = true;
593                    if (bFound) {
594                        Tk_InputErase(document.forms[i].elements[j]);
595                        if (k == 0)
596                            TouchEnKeyNXE_CurObj = document.forms[i].elements[j];     
597                        k++;
598                        
599                    }
600                }
601            }
602        }
603    } catch (e) {
604        TouchEnNx.processingbar(false);
605    }
606
607}
608
609function TK_Init_callback(result) {
610    if(result.isvm == "true"){
611        TouchEnNx.processingbar(false);
612        if(typeof TouchEnNx.success == "function")	TouchEnNx.success(result);
613    }
614    if (result.result == "true") {
615
616        TK_bInit = 1;
617        try {
618            if (TK_Isidbase()) {
619                makeEncDataId();
620                //document.forms[0].id1.focus();
621            } else {
622                for (var i = 0; i < document.forms.length; i++) {
623                    var frm = document.forms[i];
624                    if (GetAttributeFormName(frm) != undefined && GetAttributeFormName(frm) != touchenexInfo.exFormName)
625                        makeEncDataEx(frm);
626                }
627
628            }
629			
630            if(TOUCHENEX_UTIL.isEdge())
631            {
632                var htmlAllColl = document.all;
633                for (var j = 0; j < htmlAllColl.length; j++) 
634                {
635                    if (htmlAllColl[j].tagName == "INPUT" && (htmlAllColl[j].type == "text" || htmlAllColl[j].type == "password")) 
636                    {	
637                        htmlAllColl[j].focus();
638                        htmlAllColl[j].blur();
639                        break;
640                    }
641                }
642            }
643            
644            if(result.enc2 == "true") {
645                bEnc2 = true;
646            }
647
648        } catch (e) {if(typeof TouchEnNx.success == "function") TouchEnNx.success(result);}
649        if(typeof TouchEnNx.success == "function")	TouchEnNx.success(result);
650    }
651    
652}
653
654function TK_SetCallBack() {
655    var topURL;
656    try {
657        topURL = window.top.location.protocol + "//" + window.top.location.host + window.top.location.pathname;
658    } catch (e) {
659        topURL = document.referrer;
660    }
661
662    var cbdata = [];
663    cbdata.push({
664        "callbackid": DomID,
665        "callback": TOUCHENEX_CONST.frameName + "update_callback",
666        "orgurl": location.protocol + "//" + location.host + location.pathname,
667        "topurl": topURL
668    });
669    touchenexInterface.TestEXPush(cbdata);
670    tekOption.setcallback ="true";
671}
672
673function focusDataClear(inputObj){
674    try{
675		if(TK_MSIEBrowserDaemonCheck() || getTouchEnNXEType.WebKitBrowser ){
676           if(tekOption.idbase == "true"){
677                TK_Clear("", inputObj.id);
678            }else{
679            	
680                TK_Clear(GetAttributeFormName(inputObj.form), inputObj.name);
681            }
682            inputObj.selectionStart = 0;
683            inputObj.selectionEnd = 0;
684			
685            inputObj.focus();
686			
687            var range = inputObj.createTextRange();
688            range.collapse(false);
689            range.select();	 
690		}
691	}catch(e){
692        exlog("_TOUCHENNX", "focusDataClear() exception");
693    }
694}
695
696/** 20150904 ¼öÁ¤ */
697function TK_Start(nsEvent) {
698    if (tekOption.SetCallback == "false") {
699        TK_SetCallBack();
700        tekOption.SetCallback = "true";
701    }
702    
703    if (!getTouchEnNXEType.WebKitBrowser && !TK_IEDaemonCheck())
704        return;
705    
706    var theEvent;
707    var inputObj;
708    var comm=0;
709    if (nsEvent.type == "text" || nsEvent.type == "password") {
710        inputObj = nsEvent;
711    } else {
712        theEvent = nsEvent ? nsEvent : window.event;
713        inputObj = theEvent.target ? theEvent.target : theEvent.
713srcElement;
714    }
715    if (TK_bInit == 0) {
716        inputObj.blur();
717        return;
718    }
719    try {
720        if(inputObj.value.length == 0 && TK_bInit==1){
721            focusDataClear(inputObj);
722        }
723        var varEnableDummy = "off";
724		
725        if(inputObj.type=="text" && inputObj.getAttribute("data-dataType")=="n" && isEnc(inputObj) && inputObj.value.indexOf(",") > -1){
726            varEnableDummy = "on"; 
727            comm = inputObj.value.split(",").length;
728            if(comm > 1) comm--;
729            else comm = 0;
730        }
731        TouchEnKeyNXE_CurObj = inputObj;
732        var bReadOnly = "false";
733        if (inputObj.readOnly == true)
734            bReadOnly = "true";
735        //ID ±â¹Ý, FormName ÀÌ ¾øÀ¸¸é ID ±â¹Ý ¹æ½ÄÀ¸·Î µ¿ÀÛÇÑ´Ù. 
736        var formName = "";
737        if (tekOption.idbase != "true") // ID±â¹ÝÀÌ ¾Æ´Ï¸é ForeNameÀ» set ÇÑ´Ù.
738            formName = GetAttributeFormName(inputObj.form);
739		
740		
741        // µðÆúÆ® ½ÃÅ¥¸®Æ¼ ¿©ºÎ¸¦ È®ÀÎÇÑ´Ù. 
742        // Ç¥ÁØ, ÇÏÀ§ ȣȯ¼º Áö¿ø 
743        var defaultSecurity = 1;
744        if (!isDefaultSecurityOn(inputObj))
745            defaultSecurity = 0x0;
746		
747        var useWebSquarePast = 0;
748        if (tekOption.useWebSquarePast=="true" && parseFloat(TOUCHENEX_UTIL.getOSInfo().version, 10) > 8)
749        {
750            useWebSquarePast = 1;
751        }
752		
753        var tekInput = {
754            "formName": formName,
755            "name": inputObj.name,
756            "id": inputObj.id,
757            "type": inputObj.type,
758            "enc": inputObj.getAttribute("enc"),
759            "data-enc": inputObj.getAttribute("data-enc"),
760            "maxlength": inputObj.getAttribute("maxlength"),
761            "datatype": inputObj.getAttribute("datatype"),
762            "data-datatype": inputObj.getAttribute("data-datatype"),
763            "mask": inputObj.getAttribute("mask"),
764            "data-mask": inputObj.getAttribute("data-mask"),
765            "security": inputObj.getAttribute("security"),
766            "data-security": inputObj.getAttribute("data-security"),
767            "inputlength": inputObj.value.length,
768            "inputdom": inputObj.value,
769            "readonly": bReadOnly,
770            "comm" : comm,
771            "enabledummy" : varEnableDummy,
772            "jsversion" : 1,
773            "defaultsecurity" : defaultSecurity,
774            "useWebSquarePast" : useWebSquarePast
775        };
776		
777		
778        if (inputObj.id.toString().length > 0 && tekOption.idbase == "true") {
779
780            tekInput.formName = "";
781            touchenexInterface.TK_Start(
782                          [false, inputObj.id, DomID, tekInput], "TK_Start_callback");
783        } else {
784            touchenexInterface.TK_Start(
785                          [false, inputObj.name, DomID, tekInput], "TK_Start_callback");
786        }
787    } catch (e) {
788        exlog("_TOUCHENNX", "TK_Start() exception");
789    }
790}
791
792function TK_Start_callback(result) {
793
794    if (isEnc(TouchEnKeyNXE_CurObj)) {
795        if (TouchEnKeyNXE_CurObj.value.length != 0 && TouchEn_BaseBRW.ff == false) {
796            if (TouchEnKeyNXE_CurObj.selectionStart < TouchEnKeyNXE_CurObj.value.length) {
797                TouchEnKeyNXE_CurObj.selectionStart = TouchEnKeyNXE_CurObj.value.length;
798                TouchEnKeyNXE_CurObj.selectionEnd = TouchEnKeyNXE_CurObj.value.length;
799            }
800
801        }
802    }
803
804    if (result.StartReadyComplete != undefined)
805    {
806        if(result.StartReadyComplete=="success")
807        {	
808            //E2ESize °¡ undefined E2E Çʵ尡 ¾Æ´Ï´Ù 
809            if(result.E2ESize != undefined && result.InputName == TouchEnKeyNXE_CurObj.name)
810            {
811				
812                var comm = TouchEnKeyNXE_CurObj.value.split(",").length;
813                if(comm > 1) comm--;
814                else comm = 0;
815
816                var E2EInputSize = parseInt(result.E2ESize, 10) + comm;
817                var curInfiedlSize = TouchEnKeyNXE_CurObj.value.length;
818				
819                if (E2EInputSize != curInfiedlSize)
820                {
821                    Tk_InputErase(TouchEnKeyNXE_CurObj);
822                    if(tekOption.idbase=="true")
823                        TK_Request2("ClearDB", "", TouchEnKeyNXE_CurObj.id, "");
824                    else
825                        TK_Request2("ClearDB", GetAttributeFormName(TouchEnKeyNXE_CurObj.form), TouchEnKeyNXE_CurObj.name, "");
826                }
827            }
828            tekOption.bstart=1;
829			
830            return;
831        }
832    }
833	
834    if (result == "StartReadyComplete") {
835        tekOption.bstart = 1;
836        return;
837    }
838
839    if (result == "Start_Failed") {
840        tekOption.bstart = 0;
841        TK_Clear(TouchEnKeyNXE_CurObj.formName, TouchEnKeyNXE_CurObj.name);
842
843        var HiddenEnc = "";
844
845        if (tekOption.idbase == "true") {
846            TK_Clear("", TouchEnKeyNXE_CurObj.id);
847            HiddenEnc = "E2E_" + TouchEnKeyNXE_CurObj.id;
848
849            if (isEnc(TouchEnKeyNXE_CurObj)) {
850                Tk_InputErase(document.getElementById(HiddenEnc)[0]);
851                Tk_InputErase(TouchEnKeyNXE_CurObj);
852            }
853
854        } else {
855            TK_Clear(TouchEnKeyNXE_CurObj.formName, TouchEnKeyNXE_CurObj.name);
856            HiddenEnc = "E2E_" + TouchEnKeyNXE_CurObj.name;
857
858            if (isEnc(TouchEnKeyNXE_CurObj)) {
859                Tk_InputErase(document.getElementsByName(HiddenEnc)[0]);
860                Tk_InputErase(TouchEnKeyNXE_CurObj);
861            }
862        }
863        TouchEnKeyNXE_CurObj.blur();
864    }
865}
866
867function TK_Stop(nsEvent) {
868
869	
870	if (!getTouchEnNXEType.WebKitBrowser &&  !TK_IEDaemonCheck())
871        return;
872	
873    var theEvent;
874    var inputObj;
875
876    if (nsEvent.type == "text" || nsEvent.type == "password") {
877        inputObj = nsEvent;
878    } else {
879        theEvent = nsEvent ? nsEvent : window.event;
880        inputObj = theEvent.target ? theEvent.target : theEvent.srcElement;
881    }
882    try {
883        if (inputObj.id.toString().length > 0 && tekOption.idbase == "true") {
884            touchenexInterface.TK_Stop([false, DomID, inputObj.id], "TK_Stop_callback");
885        } else {
886            touchenexInterface.TK_Stop([false, DomID, inputObj.name], "TK_Stop_callback");
887        }
888    } catch (e) {
889        exlog("_TOUCHENNX", "TK_Stop() exception");
890    }
891}
892
893function TK_Stop_callback(result) {}
894
895function TK_Keyup(nsEvent) {
896    var theEvent;
897    var inputObj;
898
899    
900    if (!getTouchEnNXEType.WebKitBrowser && !TK_IEDaemonCheck())
901        return;
902    
903    if (nsEvent.type == "text" || nsEvent.type == "password") {
904        inputObj = nsEvent;
905    } else {
906        theEvent = nsEvent ? nsEvent : window.event;
907        inputObj = theEvent.target ? theEvent.target : theEvent.srcElement;
908    }
909    var keycode = typeof nsEvent.which == "number" ? nsEvent.which : nsEvent.keyCode;
910    if(keycode == undefined){
911        exlog("_TOUCHENNX", "KeyCode undefined");
912    }else{	
913        var chCode = keycode.toString();
914
915        if (tekOption.usebspress == undefined || tekOption.usebspress != "true") {
916            if (keycode == 8) {
917                BSKeyBeingActive = false;
918            }
919        }
920    }
921}
922
923function TK_Keypress(nsEvent) {
924    var theEvent;
925    var inputObj;
926    
927    if (!getTouchEnNXEType.WebKitBrowser  &&  !TK_IEDaemonCheck())
928        return;
929
930    if (nsEvent.type == "text" || nsEvent.type == "password") {
931        inputObj = nsEvent;
932    } else {
933        theEvent = nsEvent ? nsEvent : window.event;
934        inputObj = theEvent.target ? theEvent.target : theEvent.srcElement;
935    }
936    var keycode = typeof nsEvent.which == "number" ? nsEvent.which : nsEvent.keyCode;
937    var chCode = keycode.toString();
938}
939
940function TK_KeyDown(nsEvent) {
941    var theEvent;
942    var inputObj;
943    
944
945    if (!getTouchEnNXEType.WebKitBrowser &&  !TK_IEDaemonCheck())
946        return;
947
948    if (nsEvent.type == "text" || nsEvent.type == "password") {
949        inputObj = nsEvent;
950    } else {
951        theEvent = nsEvent ? nsEvent : window.event;
952        inputObj = theEvent.target ? theEvent.target : theEvent.srcElement;
953    }
954
955    try {
956        // Call win32 export functionSS
957        var keycode = typeof nsEvent.which == "number" ? nsEvent.which : nsEvent.keyCode;
958        var chCode = keycode.toString();
959        TouchEnNx_preKeyCode = keycode;
960		
961        var TK_isSecurity = false;
962        var TK_isEnc = false;
963        TK_isSecurity = isSecurity(TouchEnKeyNXE_CurObj);
964        TK_isEnc = isEnc(TouchEnKeyNXE_CurObj);
965		
966        if(TK_isEnc == true) TK_isSecurity = true;
967
968
969        if (tekOption.bstart != 1 && TK_isSecurity == true) {
970            return TK_InputCancle();
971        }
972		
973        if(TOUCHENEX_UTIL.isMac())
974        {
975            if (keycode == 50 && TK_isSecurity == true && nsEvent.shiftKey==true)
976            {	
977                if (tekOption.tk_isRunningSecurity == "true")
978                {
979                    return TK_InputCancle(nsEvent);
980                }
981            }
982        }
983        
984        // 20230224 senseReader
985       if(tekOption.senseReader == "true"){
986		if ((keycode == 0x6A || keycode == 106) && isSecurityCheck(inputObj) == true) {
987			return TK_InputCancle(nsEvent);
988		}
989		}
990        			
991					
992        if (keycode == 32)
993        {
994            if (inputObj.getAttribute("data-datatype") == "h" || inputObj.getAttribute("datatype") == "h"
995				|| inputObj.getAttribute("data-datatype") == "hn"   || inputObj.getAttribute("datatype") == "hn" 
996				|| inputObj.getAttribute("data-datatype") == "ahn"  || inputObj.getAttribute("datatype") == "ahn"
997				|| inputObj.getAttribute("data-datatype") == "ha"	|| inputObj.getAttribute("datatype") == "ha"
998				)
999            {
1000                return TK_InputCancle(nsEvent);
1001            }
1002        }
1003		
1004        if (keycode == 0xff)
1005        {
1006            return TK_InputCancle(nsEvent);
1007        }
1008		
1009        TouchEnKeyNXE_CurObj.scrollLeft = TouchEnKeyNXE_CurObj.scrollWidth;
1010        
1011
1012		
1013        if (TouchEnKeyNXE_CurObj.getAttribute("security") == "off" || TouchEnKeyNXE_CurObj.getAttribute("data-security") == "off") {
1014            if(keycode != 8 && keycode != 46)
1015                return;
1016        }
1017
1018        // ºÙ¿©³Ö±â Ű Á¶ÇÕ °¨Áö
1019        var isPaste = false;
1020        var key = nsEvent.key;
1021        var cmd_held = nsEvent.metaKey | nsEvent.ctrlKey;
1022        if(cmd_held && key.toLowerCase() == "v") {
1023            isPaste = true; // ºÙ¿©³Ö±â Ű Á¶ÇÕÀ̶ó¸é
1024        } else {
1025            isPaste = false;
1026        }
1027		
1028        // e2e ¿µ¿ª¿¡ ´ëÇØ¼­ ¾ÕµÚÀ§¾Æ·¡ Ä¿¼­ À̵¿ ±ÝÁö, delete Ű ±ÝÁö
1029        if (isEnc(TouchEnKeyNXE_CurObj)) 
1030        { 
1031            //defaultEnc °¡ Çã¿ëÀ϶§ paswword Çʵ忡 ´ëÇØ¼­´Â e2e°¡ ±âº»¼³Á¤À̹ǷΠÇã¿ëÀ» ¸·¾Æ¾ß ÇÑ´Ù.
1032            if (keycode == 0x25 || keycode == 0x26 || keycode == 0x27 || keycode == 0x28 ||
1033                keycode == 0x21 || keycode == 0x22 || keycode == 0x24 || keycode == 46 || isPaste == true) 
1034            {
1035                return TK_InputCancle(nsEvent);
1036            }
1037        }
1038
1039        if (isPaste == true) {
1040            if ((tekOption.defaultpaste == "false") || (tekOption.defaultpaste == "off") || (tekOption.defaultpaste == "no")) {
1041                //defaultpaste false ¶óµµ ºñº¸¾È ¿µ¿ªÀº ºÙ¿© ³Ö±â¸¦ Çã¿ë 
1042                if (TouchEnKeyNXE_CurObj.getAttribute("data-security") != "off" && TouchEnKeyNXE_CurObj.getAttribute("security") != "off") 
1043                {
1044                    return TK_InputCancle(nsEvent);
1045                }
1046            } else {
1047                // ÀÏ¹Ý º¸¾È ¿µ¿ª (E2E ¾Æ´Ô)
1048                // ºÙ¿© ³Ö±â Çã¿ë À϶§, Datytype ÀÌ µé¾î °¡ ÀÖÀ¸¸é Çã¿ë ÇÏÁö ¾Ê´Â´Ù. 
1049                // datatype ÀÌ Á¸Àç ÇÏ¸é ºÙ¿© ³Ö±â ±ÝÁö. 
1050                if (TouchEnKeyNXE_CurObj.getAttribute("datatype") != null || TouchEnKeyNXE_CurObj.getAttribute("data-datatype") != null) 
1051                {
1052                    return TK_InputCancle(nsEvent);
1053                }
1054            }
1055        }
1056
1057        if (keycode == 8 || keycode == 46) {
1058            if (isEnc(TouchEnKeyNXE_CurObj)) {
1059
1060                if (keycode == 8 && (tekOption.usebspress == undefined || tekOption.usebspress != "true")) {
1061                    if (BSKeyBeingActive == true) 
1062                    {
1063                        return TK_InputCancle(nsEvent);
1064                    }
1065                    BSKeyBeingActive = true;
1066                }
1067
1068                // DOM Comma °¡ ¾²¿©Áú °æ¿ì, º¸¾È ¸ðµâÀº ÀÌ Comma ÀÇ Á¸À縦 ¾ËÁö ¸øÇÑ´Ù. 				
1069                // DOM °ú º¸¾È ¸ðµâ°£ÀÇ µ¥ÀÌÅͱæÀÌ µ¿±âÈ­¸¦ À§ÇØ ¸ðµâ¿¡ comma ÀÇ ¾²¿©Á³´Ù´Â°É ¾Ë¸°´Ù.					
1070                if (TouchEnKeyNXE_CurObj.value[TouchEnKeyNXE_CurObj.value.length - 1] == ",") {
1071                    TK_Request("comma", "--");
1072                }
1073                
1074                var kLen = 32;    
1075                if (bEnc2 == true) 
1076                    kLen = 64;
1077
1078                touchenexInterface.TK_KeyDown([false, chCode],
1079                    "TK_KeyDown_callback");
1080
1081                if (tekOption.idbase == "true") {
1082                    var e2eEle = document.getElementById("E2E_" + inputObj.id);
1083                    if (inputObj && inputObj.id) {
1084                        if (e2eEle.value.length > 0) {
1085                            var value = e2eEle.value.substring(0, e2eEle.value.length - kLen);
1086                            Tk_InputErase(document.getElementById("E2E_" + inputObj.id));
1087                            document.getElementById("E2E_" + inputObj.id).value = value;
1088                        }
1089                    }
1090                } else {
1091                    var e2eEle = null;
1092                    var frmTmp = null;
1093                    if (IsAllowIdOverlap() == true)
1094                    {
1095                        e2eEle = document.getElementsByName("E2E_" + inputObj.name);
1096                        frmTmp = findElmentByNames(document.getElementsByName(inputObj.name)[0]);
1097                    }
1098                    else
1099                    {
1100                        frmTmp = document.activeElement.form;
1101                        if (typeof frmTmp == "undefined") frmTmp = document.forms[0];
1102						
1103                        e2eEle = frmTmp["E2E_" + inputObj.name];
1104                    }
1105
1106                    if (inputObj && inputObj.name) {
1107                        if (e2eEle[0].value.length > 0) {
1108                            var value = e2eEle[0].value.substring(0, e2eEle[0].value.length - kLen);
1109                            Tk_InputErase(frmTmp["E2E_" + inputObj.name]);
1110                            frmTmp["E2E_" + inputObj.name].value = value;
1111                        }
1112                    }
1113                }
1114                TouchEnKeyNXE_CurObj.value = TouchEnKeyNXE_CurObj.value.toString().substring(0, TouchEnKeyNXE_CurObj.value.toString().length);
1115
1116            } else { //E2E °¡ ¾Æ´Ò¶§
1117
1118                var len = TouchEnKeyNXE_CurObj.selectionEnd - TouchEnKeyNXE_CurObj.selectionStart;
1119                var CaretPos = GetCaretPosition(TouchEnKeyNXE_CurObj);
1120                var MaxLength = TouchEnKeyNXE_CurObj.getAttribute("maxlength");
1121                if ((keycode == 8 && len == 0 && CaretPos == 0) || (keycode == 46 && CaretPos == MaxLength)) 
1122                {
1123                    return TK_InputCancle(nsEvent);
1124                }
1125                if (len > 0) {
1126                    touchenexInterface.TK_KeyDown([false, chCode, len],
1127                        "TK_KeyDown_callback");
1128                } else {
1129                    touchenexInterface.TK_KeyDown([false, chCode],
1130                        "TK_KeyDown_callback");
1131                }
1132            }
1133        } else {
1134            if (tekOption.bstart == 0) 
1135            {
1136                return TK_InputCancle(nsEvent);
1137            }
1138
1139            if (keycode == 120)
1140            {
1141                var len = TouchEnKeyNXE_CurObj.value.length;
1142                touchenexInterface.TK_KeyDown([false, "255", len],
1143                "TK_KeyDown_callback");
1144            }
1145
1146        }
1147    } catch (e) {
1148        exlog("_TOUCHENNX", "TK_KeyDown() exception");
1149    }
1150}
1151
1152function TK_InputCancle(nsEvent)
1153{
1154    if (typeof nsEvent != undefined)
1155    {
1156        if (TouchEn_BaseBRW.ff)
1157            nsEvent.preventDefault();
1158        else
1159            nsEvent.returnValue = false;
1160    }
1161    return false;
1162}
1163
1164function TK_Change(nsEvent) {
1165}
1166
1167function TK_Input(nsEvent) {
1168    if (TouchEnKeyNXE_CurObj == undefined) return;
1169	
1170    if (nsEvent.type == "text" || nsEvent.type == "password") {
1171        inputObj = nsEvent;
1172    } else {
1173        theEvent = nsEvent ? nsEvent : window.event;
1174        inputObj = theEvent.target ? theEvent.target : theEvent.srcElement;
1175    }
1176		
1177	
1178    /*
1179		³Ø»çÅ©·Î ¿¬µ¿ ½Ã 'A', '0', '_' ´õ¹Ì ¹®ÀÚ Event Ãæµ¹ ¹æÁö 
1180	*/
1181    if (TK_IsNal(theEvent.eventOwner) == false)
1182    {
1183        if (theEvent.eventOwner == "NXKEY")
1184            return;
1185    }	
1186
1187
1188    var bSecurity = true;
1189    if (isSecurity(inputObj) == false)
1190        bSecurity = false;
1191
1192       
1193    if (tekOption.keyboardonly == "true" && bSecurity==true)
1194    {
1195        if (TouchEnNx_preKeyCode == 8 || TouchEnNx_preKeyCode == 46) return;
1196        if (TouchEnNx_preKeyCode > 128 || TouchEnNx_preKeyCode == 0) return;
1197        if (TouchEnKeyNXE_CurObj.value.length >1)
1198            TouchEnKeyNXE_CurObj.value = TouchEnKeyNXE_CurObj.value.substring(0,TouchEnKeyNXE_CurObj.value.length-1);
1199        else
1200            Tk_InputErase(TouchEnKeyNXE_CurObj);
1201			
1202        TouchEnNx_preKeyCode=0;	
1203        return;
1204    }
1205		
1206
1207    if(tekOption.bstart != 1 && TouchEnKeyNXE_CurObj!=undefined && bSecurity==true)
1208    {
1209        if(TouchEnNx_preKeyCode != 0) {
1210            Tk_InputErase(TouchEnKeyNXE_CurObj);			
1211        }
1212    }
1213	
1214    if (TouchEnKeyNXE_CurObj.value.length == 0 && TouchEnKeyNXE_CurObj!=undefined)
1215        if(tekOption.idbase == "true"){
1216            TK_Clear("", TouchEnKeyNXE_CurObj.id);
1217        }else{
1218            TK_Clear(GetAttributeFormName(TouchEnKeyNXE_CurObj.form), TouchEnKeyNXE_CurObj.name);
1219        }
1220	
1221    // Űº¸µå º¸¾ÈÀº ½ÃÀÛ Çߴµ¥, º¸¾È ¾ÈµÈ µ¥ÀÌÅͰ¡ µé¾î¿À¸é ¾Ïȣȭ ÇÑ´Ù. 
1222    var bE2E = isEnc(inputObj);
1223    if(tekOption.bstart == 1 && bE2E == true)
1224    {
1225		
1226        if (TouchEnNx_preKeyCode == 8 || TouchEnNx_preKeyCode == 46) return;
1227		
1228        var code;
1229        if (inputObj.value.length > 0)
1230        {
1231            code = inputObj.value[inputObj.value.length-1];
1232            if(tekOption.idbase == "true"){
1233                TK_Request2("ReqCryptData", "", inputObj.id, code);
1234            } else {
1235                TK_Request2("ReqCryptData", GetAttributeFormName(inputObj.form), inputObj.name, code);
1236            }			
1237        }			
1238        //console.log("20160405 inputValue : " + inputObj.value + " code : " + code );
1239		
1240    }
1241    TouchEnNx_preKeyCode=0;  
1242}
1243
1244function TK_KeyDown_callback(result) {}
1245
1246function TK_Select(nsEvent) {
1247    var theEvent;
1248    var inputObj;
1249
1250    if (nsEvent.type == "text" || nsEvent.type == "password") {
1251        inputObj = nsEvent;
1252    } else {
1253        theEvent = nsEvent ? nsEvent : window.event;
1254        inputObj = theEvent.target ? theEvent.target : theEvent.srcElement;
1255    }
1256
1257    if ((inputObj.selectionStart > 0 && inputObj.selectionEnd > 0) || (inputObj.selectionEnd - inputObj.selectionStart > 0)) {
1258        if (isEnc(inputObj)) {
1259            if (TouchEn_BaseBRW.ff)
1260            {
1261                nsEvent.preventDefault();
1262            }
1263            else
1264            {
1265                
1266                if (inputObj.selectionStart < inputObj.value.length) {
1267                    inputObj.selectionStart = inputObj.value.length;
1268                    inputObj.selectionEnd = inputObj.value.length;
1269                }
1270            }
1271        }
1272    }
1273
1274    return true;
1275}
1276
1277
1278function TK_SetScroll(start, end) {
1279
1280    try {
1281
1282        if (isEnc(TouchEnKeyNXE_CurObj)) 
1283        {
1284            TouchEnKeyNXE_CurObj.selectionStart = start;
1285            TouchEnKeyNXE_CurObj.selectionEnd = end;
1286        }
1287    } catch (e) {
1288        exlog("_TOUCHENNX", "TK_SetScroll() exception");
1289    }
1290}
1291
1292
1293
1294function TK_click(nsEvent) {
1295	
1296	var inputObj; 
1297
1298    if (nsEvent.type == "text" || nsEvent.type == "password") {
1299        inputObj = nsEvent;
1300    } else {
1301        theEvent = nsEvent ? nsEvent : window.event;
1302        inputObj = theEvent.target ? theEvent.target : theEvent.srcElement;
1303    }
1304
1305	if (TK_IsNal(inputObj)) return;
1306
1307    try {
1308        // Call win32 export functionSS		
1309        EncOnFieldDisableEvent(inputObj);
1310
1311        if (isEnc(inputObj)) //defaultEnc °¡ Çã¿ëÀ϶§ paswword Çʵ忡 ´ëÇØ¼­´Â e2e°¡ ±âº»¼³Á¤À̹ǷΠÇã¿ëÀ» ¸·¾Æ¾ß ÇÑ´Ù.
1312        {
1313            if (inputObj.selectionStart < inputObj.value.length) {
1314                inputObj.selectionStart = inputObj.value.length;
1315                inputObj.selectionEnd = inputObj.value.length;
1316            }
1317        }
1318
1319
1320    } catch (e) {
1321        exlog("_TOUCHENNX", "TK_click() exception");
1322    }
1323}
1324
1325//º¸¾È´ë»óÀÎÁö ¿©ºÎ È®ÀÎ (¸®½º³Ê °ÉÁö ¿©ºÎ)
1326function TK_IsSecurityType(obj)
1327{
1328	
1329    if (obj.tagName == "INPUT" && (obj.type == "text" || obj.type == "password" || obj.type == "tel" || obj.type == "number" || obj.type == "email"))
1330        return true;
1331	
1332    return false;
1333}
1334
1335function TK_AddEventListner() {
1336    try {
1337        if (tekOption.idbase == "true") {
1338            var htmlAllColl = document.all;
1339            for (var j = 0; j < htmlAllColl.length; j++) {
1340                if (TK_IsSecurityType(htmlAllColl[j]) == true) 
1341                {
1342                    TK_AddEventListner2(htmlAllColl[j]);
1343                }
1344            }
1345        } else {
1346            for (var i = 0; i < document.forms.length; i++) {
1347                for (var j = 0; j < document.forms[i].elements.length; j++) 
1348                {
1349                    if (TK_IsSecurityType(document.forms[i].elements[j]) == true) 
1350                    {
1351                        var eleObj = document.forms[i].elements[j];
1352                        TK_AddEventListner2(eleObj);
1353                        //eleObj.setAttribute("tk_security", "true");
1354                    }
1355                }
1356            }
1357        }
1358        bAddListner = true;
1359    } catch (e) {
1360        exlog("_TOUCHENNX", "TK_AddEventListner() exception");
1361    }
1362}
1363
1364function TK_AddEventListner2(eobj) {
1365	 if (!getTouchEnNXEType.WebKitBrowser && !TK_IEDaemonCheck()) return false;
1366     try {
1367        if (eobj.addEventListener) {
1368            eobj.addEventListener("focus", TK_Start, false);
1369            eobj.addEventListener("blur", TK_Stop, false);
1370            eobj.addEventListener("keydown", TK_KeyDown, false);
1371            eobj.addEventListener("keypress", TK_Keypress, false);
1372            eobj.addEventListener("keyup", TK_Keyup, false);
1373            eobj.addEventListener("select", TK_Select);
1374            eobj.addEventListener("click", TK_click);
1375            eobj.addEventListener("contextmenu", TK_OnContextMenu);
1376            eobj.addEventListener("paste", TK_OnPaste);
1377            eobj.addEventListener("change", TK_Change);
1378            eobj.addEventListener("input", TK_Input);
1379        } else if (eobj.attachEvent) {
1380            eobj.attachEvent("onfocus", TK_Start);
1381            eobj.attachEvent("onblur", TK_Stop);
1382            eobj.attachEvent("onkeydown", TK_KeyDown);
1383            eobj.attachEvent("onkeypress", TK_Keypress);
1384            eobj.attachEvent("onkeyup", TK_Keyup);
1385            eobj.attachEvent("onselect", TK_Select);
1386            eobj.attachEvent("onclick", TK_click);
1387            eobj.attachEvent("oncontextmenu", TK_OnContextMenu);
1388            eobj.attachEvent("onpaste", TK_OnPaste);
1389            eobj.attachEvent("onchange", TK_Change);
1390            eobj.attachEvent("oninput", TK_Input);
1391        }
1392        if ((TK_bInit != undefined && TK_bInit != 0) && eobj.value.length==0) {
1393            if(tekOption.idbase == "true"){
1394                TK_Clear("", eobj.id);
1395            }else{
1396                TK_Clear(GetAttributeFormName(eobj.form), eobj.name);
1397            }
1398        }
1399		
1400        if (eobj.getAttribute("security") == "off" ||  eobj.getAttribute("security") == "false" || eobj.getAttribute("security") == "no" ||
1401		eobj.getAttribute("data-security") == "off" || eobj.getAttribute("data-security")=="false" || eobj.getAttribute("data-security") == "no")
1402        {
1403            eobj.setAttribute("tk_security", "false");
1404        }
1405        else if (eobj.getAttribute("security") == "on" ||  eobj.getAttribute("security") == "true" || eobj.getAttribute("security") == "yes" ||
1406		eobj.getAttribute("data-security") == "on" || eobj.getAttribute("data-security")=="true" || eobj.getAttribute("data-security") == "yes")
1407        {
1408            eobj.setAttribute("tk_security", "true");
1409        }
1410        else
1411        {
1412            eobj.setAttribute("tk_security", "true");
1413        }	
1414    } catch (e) {
1415        exlog("_TOUCHENNX", "TK_AddEventListner2() exception");
1416    }
1417}
1418
1419function DrawHiddenElements() {
1420    try {
1421
1422        var hidKeyData = "hid_key_data";
1423        var hidEncData = "hid_enc_data";
1424        var hidkeyDataId = "hid_key_data";
1425        var hidEncDataId ="hid_enc_data";
1426	
1427        var form = null;
1428        var e2eEle = null;
1429	
1430        if (IsAllowIdOverlap() == false)
1431        {
1432            form = document.activeElement.form;
1433            if (typeof form == "undefined") form = document.forms[0];
1434		
1435            if (typeof form.name != "undefined" &&  form.name.length > 0 ) 
1436            {
1437                hidKeyData = "hid_key_data_" + form.name;
1438                hidEncData = "hid_enc_data_" + form.name;
1439            }
1440            if (typeof form.id != "undefined" &&  form.id.length > 0 ) 
1441            {
1442                hidkeyDataId = "hid_key_data_" + form.id;
1443                hidEncDataId = "hid_enc_data_" + form.id;
1444            }
1445        }
1446	
1447        e2eEle = findElementByName(form,hidKeyData);
1448	
1449        if (e2eEle == null) {
1450            var newEle = document.createElement("input");
1451            newEle.type = "hidden";
1452            newEle.name = hidKeyData;
1453            newEle.id = hidkeyDataId;
1454            Tk_InputErase(newEle);
1455            form.appendChild(newEle);
1456        } else {
1457            if (e2eEle.name != undefined)
1458            {
1459                e2eEle.name = hidKeyData;
1460                e2eEle.id   = hidkeyDataId;
1461            }
1462        }
1463		
1464        e2eEle = null; 
1465        e2eEle = findElementByName(form, hidEncData);
1466        if (e2eEle == null) {
1467
1468            var newEle = document.createElement("input");
1469            newEle.type = "hidden";
1470            newEle.name = hidEncData;
1471            newEle.id = hidEncDataId;
1472            Tk_InputErase(newEle);         
1473            form.appendChild(newEle);
1474        } else {
1475            e2eEle.name = hidEncData;
1476            e2eEle.id = hidEncDataId;
1477        }
1478    } catch (e) {
1479        exlog("_TOUCHENNX", "DrawHiddenElements() exception");
1480    }
1481}
1482
1483function DrawHiddenKeyElementForm(form) {
1484    try {
1485		
1486        var hidkeyDataName = "hid_key_data";
1487        var hidEncDataName ="hid_enc_data";
1488        var e2eEle = null;
1489		
1490        if (IsAllowIdOverlap() == false)
1491        {
1492            if (typeof form.id != "undefined" &&  form.id.length > 0 ) 
1493            {
1494                hidkeyDataName = "hid_key_data_" + form.id;
1495                hidEncDataName = "hid_enc_data_" + form.id;
1496            }
1497        }
1498
1499        e2eEle = findElementByName(form, hidkeyDataName);
1500        if (e2eEle == null) {
1501            var newEle = document.createElement("input");
1502            newEle.type = "hidden";
1503            newEle.name = hidkeyDataName;
1504            //newEle.id = hidkeyDataId;
1505            Tk_InputErase(newEle);            
1506            form.appendChild(newEle);
1507        }
1508
1509        e2eEle = null;
1510        e2eEle = findElementByName(form, hidEncDataName);
1511        if (e2eEle == null) {
1512
1513            var newEle = document.createElement("input");
1514            newEle.type = "hidden";
1515            newEle.name = hidEncDataName;
1516            //newEle.id = hidEncDataId;
1517            Tk_InputErase(newEle);
1518            form.appendChild(newEle);
1519        }
1520    } catch (e) {
1521        exlog("_TOUCHENNX", "DrawHiddenElements(form) exception");
1522    }
1523}
1524
1525
1526function DrawHiddenKeyElementId() {
1527    try {
1528        var hidkeyDataId = "hid_key_data";
1529        var hidEncDataId ="hid_enc_data";
1530        var e2eEle = null;
1531		
1532        if (IsAllowIdOverlap() == false)
1533        {
1534            if (typeof form.id != "undefined" &&  form.id.length > 0 )
1535            {
1536                hidkeyDataId = hidkeyDataId +"_" + form.id;
1537                hidEncDataId = hidEncDataId +"_ " +  form.id;
1538            }
1539        }
1540		
1541		
1542        e2eEle = findElmentByNamesId(hidkeyDataId);
1543        if (e2eEle == null) {
1544            var newEle = document.createElement("input");
1545            newEle.type = "hidden";
1546            newEle.id = "hid_key_data";
1547
1548            Tk_InputErase(newEle);
1549            document.body.appendChild(newEle);
1550        }
1551        
1552        e2eEle = null;
1553
1554        e2eEle = findElmentByNamesId(hidEncDataId);
1555        if (e2eEle == null) {
1556            var newEle = document.createElement("input");
1557            newEle.type = "hidden";
1558            newEle.id = "hid_enc_data";
1559
1560            Tk_InputErase(newEle);
1561            document.body.appendChild(newEle);
1562
1563        }
1564    } catch (e) {
1565        exlog("_TOUCHENNX", "DrawHiddenElementsId() exception");
1566    }
1567}
1568
1569function GetEncDataFun(keyData, frm, eleName) {
1570    touchenexInterface.GetEncData([keyData, frm, eleName],
1571        "GetEncDataCallback2");
1572}
1573
1574function makeKeyData(formObj) {
1575    var len = formObj.elements.length;
1576
1577    for (var j = 0; j < len; j++) {
1578        if (formObj.elements[j].tagName == "INPUT" && isEnc(formObj.elements[j])) {
1579            GetEncDataFun("", GetAttributeFormName(formObj), formObj.elements[j].name);
1580        }
1581    }
1582    GetEncDataFun(tekOption.cert, "", "");
1583}
1584
1585
1586function makeEncDataEx(formObj) {
1587    if (TK_IsNal(formObj)) return;
1588    if (typeof formObj === "object")
1589    {
1590        DrawHiddenKeyElementForm(formObj);
1591        DrawHiddenDataElementsForm(formObj);
1592    }
1593}
1594
1595function makeEncDataId() {
1596    DrawHiddenKeyElementId();
1597    DrawHiddenDataElementsId();
1598}
1599
1600
1601
1602
1603function GetEncData() {
1604
1605    if (tekOption.idbase == "true") {
1606        var nodeLen = document.all.length;
1607        var htmlColl = document.all;
1608
1609        for (var k = 0; k < nodeLen; k++) {
1610            var ele = htmlColl[k];
1611            if (ele.type == "hidden" && (ele.id.indexOf("E2E_") != -1)) {
1612                if (tekOption.UseGetEnc == "true" && tekOption.clearbufferonempty == "true") {
1613                    var eleRaw = ele.name.substring(ele.id.indexOf("_") + 1);
1614                    if (document.getElementById(eleRaw).value.length == 0) {
1615                        continue;
1616                    }
1617                }
1618                touchenexInterface.GetEncData([false, "",
1619     ele.id.substring(4, ele.id.length), DomID],
1620                    "GetEncDataCallback");
1621            }
1622        }
1623    } else {
1624        for (var k = 0; k < frm.length; k++) {
1625            var ele = frm.elements[k];
1626            if (ele.type == "hidden" && (ele.name.indexOf("E2E_") != -1)) {
1627                if (tekOption.usegetenc == "true" && tekOption.clearbufferonempty == "true") {
1628                    var eleRaw = ele.name.substring(ele.name.indexOf("_") + 1);
1629                    if (document.getElementsByName(eleRaw)[0].value.length == 0) {
1630                        continue;
1631                    }
1632                }
1633                touchenexInterface.GetEncData([false, GetAttributeFormName(frm),
1634     ele.name.substring(4, ele.name.length), DomID],
1635                    "GetEncDataCallback");
1636            }
1637        }
1638
1639        var end = "GetEncEnd";
1640        touchenexInterface.GetEncData([false, null, end, DomID],
1641            "GetEncDataCallback");
1642    }
1643}
1644
1645function TouchEnKey_UIEevents(frm, ele, event, keycode) {
1646    var obj;
1647    var e;
1648
1649    obj = document.activeElement;
1650    eventName = event.replace("on", "");
1651    //triggerEvent(obj, e, keycode);
1652
1653    var htmlEvents = {
1654        onkeydown: 1,
1655        onkeypress: 1,
1656        onkeyup: 1
1657    };
1658    var eventOjb;
1659    if (document.createEvent) {
1660        eventOjb = document.createEvent('HTMLEvents');
1661        eventOjb.initEvent(eventName, true, true);
1662    }else if (document.createEventObject) {
1663        eventOjb = document.createEventObject();
1664        eventOjb.eventType = eventName;
1665    }
1666	
1667    /*
1668		³Ø»çÅ©·Î ¿¬µ¿ ½Ã Űº¸µå º¸¾È¿¡¼­ ¹ß»ýÇÑ Event ÀÓÀ» ¸í½Ã 
1669	*/
1670    if(keycode == '0' || keycode == 'A' || keycode == '_')
1671    {
1672        eventOjb.eventOwner = 'NXKEY';
1673    } 
1674
1675
1676    eventOjb.eventName = eventName;
1677    eventOjb.keyCode = keycode;
1678    eventOjb.which = keycode;
1679
1680    if (obj.dispatchEvent) {
1681        obj.dispatchEvent(eventOjb);
1682    } else if (obj.fireEvent && htmlEvents['on' + eventName]) {
1683        obj.fireEvent('on' + eventOjb.eventType, eventOjb);
1684    } else if (obj[eventName]) {
1685        obj[eventName]();
1686    } else if (obj['on' + eventName]) {
1687        obj['on' + eventName]();
1688    }
1689}
1690
1691var ishasfocus = true;
1692function onBlur() {
1693    ishasfocus = false;
1694};
1695function onFocus(){
1696    ishasfocus = true;
1697};
1698
1699function TK_RealStopProcess(activeObj)
1700{
1701	
1702    var isRealStopProcess = true;
1703	
1704	
1705    if (TK_IsNal(tekOption.useAddElementType) == true && tekOption.useAddElementType == "true")
1706    {
1707        if ((activeObj.type == "text" || activeObj.type == "password" || activeObj.type == "email" 
1708			|| activeObj.type == "tel") && TK_isSecurity == true)
1709        {
1710            isRealStopProcess = false;
1711        }
1712    }
1713    else
1714    {
1715        if ((activeObj.type == "text" || activeObj.type == "password") && TK_isSecurity == true) {
1716            isRealStopProcess = false;
1717        }
1718    }
1719	
1720    if (tekOption.idbase == "true") {
1721        if (isRealStopProcess == false) {
1722            return false;;
1723        } else {
1724            try {
1725                touchenexInterface.TK_RealStop([false, DomID], "TK_Stop_callback");
1726                if (tekOption.bstart == 0) {
1727                    if (isSecurity() == false)
1728                        tekOption.bstart = 1;
1729                }
1730            } catch (e) {
1731                exlog("_TOUCHENNX", "id base isSecurity set exception");
1732            }
1733        }
1734    } else {
1735        if (isRealStopProcess == false) {
1736            return false;
1737        } else {
1738            try {
1739                touchenexInterface.TK_RealStop([false, DomID], "TK_Stop_callback");
1740                if (tekOption.bstart == 0) {
1741                    if (isSecurity() == false)
1742                        tekOption.bstart = 1;
1743                }
1744            } catch (e) {
1745                exlog("_TOUCHENNX", "form base isSecurity set exception");
1746            }
1747        }
1748    }
1749	
1750    return true;
1751}
1752
1753
1754function update_callback(result) {
1755    if (result.length != undefined) {
1756        result = JSON.parse(result);
1757    }
1758
1759    if (result.ClearCallBack != undefined) {
1760        tekOption.setcallback = "false";
1761    }
1762
1763    if (result.FaqMove != undefined) {
1764        this.top.location.href = result.FaqMove;
1765        return;
1766    }
1767
1768    if (result.Refresh != undefined) {
1769        window.location.reload(true);
1770        return;
1771    }
1772	
1773    if (document.hasFocus() == false) {
1774        touchenexInterface.TK_RealStop([false, DomID], "TK_Stop_callback");
1775        tekOption.bstart = 0;
1776        return;
1777    }
1778
1779    if (result.GetActiveElement != undefined) {
1780
1781        var bsecurityOff = false;
1782
1783        var activeObj = document.activeElement;
1784        if (activeObj != undefined) {
1785            if(TOUCHENEX_UTIL.isSafari()) {
1786                var name = "";
1787                window.onblur = onBlur;
1788                window.onfocus = onFocus;
1789				
1790                if (tekOption.idbase == "true")
1791                    tek_name = activeObj.id;
1792                else
1793                    tek_name = activeObj.name;
1794				
1795                if (tek_name == result.GetActiveElement) 
1796                {
1797                    touchenexInterface.TK_RealStop([false, DomID], "TK_Stop_callback");
1798                    tekOption.bstart = 0;
1799                    return;
1800                }
1801				
1802                if( ishasfocus == false) {
1803                    try {
1804                        touchenexInterface.TK_RealStop([false, DomID], "TK_Stop_callback");
1805                        tekOption.bstart = 0;
1806                    } catch (e) {
1807                        exlog("_TOUCHENNX", "update_callback() ishasfocus");
1808                    }
1809                }
1810            }
1811			
1812            // blur °¡ ¹ß»ýÇÑ input °´Ã¼¿Í, Áö±Ý Ȱ¼ºÇÑµÈ ÀÔ·ÂÇʵ尡 °°ÀºÁö¸¦ ºñ±³ÇÏ¿©, Ʋ¸®¸é stop ½ÃŰÁö ¾Ê´Â´Ù.
1813            // activeObj °¡ "" À̸é stop ½ÃŲ´Ù. (alert âÀÌ µé¶§, INPUT À̸鼭 activeObj °¡ "" ·Î µé¾î¿Â´Ù//)
1814
1815            var TK_isSecurity = false;
1816            var TK_isEnc = false;
1817            TK_isSecurity = isSecurity(activeObj);
1818            TK_isEnc = isEnc(activeObj);
1819		
1820            if (TK_isEnc == true)
1821                TK_isSecurity = true;
1822			
1823		
1824				
1825            if (TK_isSecurity == true && (activeObj.type == "text"  || activeObj.type == "password"))
1826            {
1827                return;
1828            }
1829			
1830            if (TK_RealStopProcess(activeObj) == false) return;
1831        }
1832    }
1833
1834    if (result.inputClear != undefined) {
1835        if (tekOption.idbase == "true") {
1836            var HiddenEnc = "E2E_" + result.inputClear;
1837            var TK_tmp = document.getElementById(result.inputClear);
1838            if (isEnc(TK_tmp)) {
1839                Tk_InputErase(document.getElementById(HiddenEnc));
1840                Tk_InputErase(document.getElementById(result.inputClear));
1841                return;
1842            }
1843            else{
1844                if ( document.getElementById(HiddenEnc) != undefined)
1845                {
1846                    Tk_InputErase(document.getElementById(HiddenEnc));
1847                    Tk_InputErase(document.getElementById(result.inputClear));
1848                }
1849                return;
1850            }
1851        } else {
1852            var HiddenEnc = "E2E_" + result.inputClear;
1853            var TK_tmp = document.getElementsByName(result.inputClear)[0];
1854            if (isEnc(TK_tmp)) {
1855                Tk_InputErase(document.getElementsByName(HiddenEnc)[0]);
1856                Tk_InputErase(document.getElementsByName(result.inputClear)[0]);
1857                return;
1858            }
1859            else
1860            {
1861                if ( document.getElementsByName(HiddenEnc)[0] != undefined)
1862                {
1863                    Tk_InputErase(document.getElementsByName(HiddenEnc)[0]);
1864                    Tk_InputErase(document.getElementsByName(result.inputClear)[0]);
1865                }
1866                return;
1867            }
1868        }
1869    }
1870
1871    if (result.EncData != undefined) 
1872    {
1873        var TK_isEncAppend = true;
1874        if (TK_IsNal(result.value) == true)
1875            return;
1876        var TK_RecvDataLength = result.value.split("_#_").length;	
1877
1878        if (TK_RecvDataLength == 4) {
1879            TK_isEncAppend = TK_AddChar_Request(result);
1880        }
1881		
1882        if (TK_isEncAppend == true)
1883            TK_EncData_Request(result);					 
1884        return;
1885    }
1886	
1887	
1888	
1889    if (TouchEn_BaseBRW.mac && result.KeySecurity != undefined)
1890    {
1891        if(tekOption.tk_isRunningSecurity == "false")
1892        { 
1893            tekOption.tk_isRunningSecurity = "true";
1894            TK_Request2("jsDummyGenStart", "", "", "");
1895        }
1896    }
1897
1898
1899    if (result.addChar != undefined) 
1900    {
1901        return TK_AddChar_Request(result);
1902    }
1903		
1904    if (result.E2E_END != undefined) {
1905        if (tekOption.idbase == "true") {
1906            document.body.hid_key_data.value = TouchEnNXE_SeedKey;
1907        } else {
1908            frm.hid_key_data.value = TouchEnNXE_SeedKey;
1909        }
1910        return;
1911    }
1912
1913
1914    if (result.SeedKey != undefined) {
1915        cipherEncText = "";
1916        TouchEnNXE_SeedKey = result.value;
1917        var hidKeyData = null;
1918
1919        if (tekOption.idbase == "true") {
1920            DrawHiddenKeyElementId();
1921            if (TK_IsAvailble(document.getElementById("hid_key_data")))
1922            {
1923                if (document.getElementById("hid_key_data").value < 512)
1924                    document.getElementById("hid_key_data").value = TouchEnNXE_SeedKey;
1925            }
1926        } else {
1927            for (var i = 0; i < document.forms.length; i++) {
1928                var frm = document.forms[i];
1929                DrawHiddenKeyElementForm(frm);
1930                if (IsAllowIdOverlap() == false)
1931                {
1932                    hidKeyData = GetHiddenKeyFieldName(frm);
1933                    if (frm[hidKeyData].value.length < 512)
1934                        frm[hidKeyData].value =TouchEnNXE_SeedKey;
1935                }
1936                else
1937                {
1938                    if (TK_IsAvailble(frm.hid_key_data))
1939                    {
1940                        if (frm.hid_key_data.value.length < 512)
1941                            frm.hid_key_data.value =TouchEnNXE_SeedKey;
1942                    }
1943                }
1944            }
1945        }
1946    }
1947}
1948
1949function GetHiddenEncFieldName(form)
1950{
1951	
1952    var hidEncDataField ="hid_enc_data";
1953	
1954    if (typeof form != "undefined" ) 
1955    {
1956        if (typeof form.name != "undefined" &&  form.name.length > 0 )
1957        {
1958            hidEncDataField= "hid_enc_data_" + form.name;
1959        }
1960        if (typeof form.id != "undefined" &&  form.id.length > 0 )
1961        {
1962            hidEncDataField = "hid_enc_data_" +  form.id;
1963        }
1964    }
1965	
1966    return hidEncDataField;
1967}
1968
1969function GetHiddenKeyFieldName(form)
1970{
1971    var hidkeyDataField ="hid_key_data";
1972	
1973    if (typeof form != "undefined" ) 
1974    {
1975        if (typeof form.name != "undefined" &&  form.name.length > 0 )
1976        {
1977            hidkeyDataField= "hid_key_data_" + form.name;
1978        }
1979        if (typeof form.id != "undefined" &&  form.id.length > 0 )
1980        {
1981            hidkeyDataField = "hid_key_data_" +  form.id;
1982        }
1983    }
1984	
1985    return hidkeyDataField;
1986}
1987
1988function GetEncDataCallback(Result) {
1989
1990}
1991
1992function GetEncDataCallback2(result) {
1993    formObj = document.forms[0];
1994    var name, value;
1995    var result = result.reply;
1996    if (result.keydata == undefined) {
1997        name = "E2E_" + result.name;
1998        id = "E2E_" + result.name;
1999        value = result.value;
2000
2001        cipherEncText += name;
2002        cipherEncText += "=";
2003        cipherEncText += value;
2004        cipherEncText += "%TK%";
2005        e2eEle = findElementByName(formObj, name);
2006        if (e2eEle == null) {
2007            var newEle = document.createElement("input");
2008            newEle.type = "hidden";
2009            newEle.name = name;
2010            newEle.id = name;
2011            newEle.value = value;
2012            formObj.appendChild(newEle);
2013        } else {
2014            e2eEle.value = value;
2015        }
2016    } else {
2017        DrawHiddenKeyElement(formObj);
2018
2019        formObj.hid_key_data.value = result.keydata;
2020        formObj.hid_enc_data.value = cipherEncText;
2021        cipherEncText = "";
2022
2023
2024        document.forms[0].method = "post";
2025        document.forms[0].action = "./jsp/result.jsp";
2026        document.forms[0].submit();
2027    }
2028}
2029
2030function TouchEnNXE_createHexString(arr, size) {
2031    var result = "";
2032    for (var i = 0; i < size; i++) {
2033        var str = arr[i].toString(16);
2034
2035        if (str.length == 1) {
2036            str = '0' + str;
2037        }
2038        result += str;
2039    }
2040    return result;
2041}
2042
2043function findElementByName(formObj, eleName) {
2044    try {
2045        if (eleName == null) {
2046            return null;
2047        }
2048        var findEle = null;
2049        var len = formObj.elements.length;
2050        for (var k = 0; k < len; k++) {
2051            if (eleName == formObj.elements[k].name) {
2052                findEle = formObj.elements[k];
2053                return findEle;
2054            }
2055        }
2056
2057    } catch (e) {
2058        exlog("_TOUCHENNX", "findElementByName() exception");
2059
2060    }
2061    return null;
2062}
2063
2064function findElmentByNames(Element) {
2065    try {
2066        if (Element == null)
2067            return null;
2068        while (Element) {
2069            Element = Element.parentNode;
2070            if (Element.tagName == "FORM" || Element.tagName == "form") {
2071                return Element;
2072            }
2073        }
2074    } catch (e) {
2075        exlog("_TOUCHENNX", "findElmentByNames() exception");
2076
2077    }
2078    return null;
2079}
2080
2081
2082function findElmentByNamesId(id) {
2083    try {
2084        if (id == null) {
2085            return null;
2086        }
2087        var findEle = null;
2088
2089        var htmlAllColl = document.all;
2090        for (var j = 0; j < htmlAllColl.length; j++) {
2091            if (htmlAllColl[j].tagName == "INPUT" && htmlAllColl[j].type == "hidden") {
2092                if (htmlAllColl[j].id == id) {
2093                    findEle = htmlAllColl[j];
2094                    return findEle;
2095                }
2096            }
2097        }
2098    } catch (e) {
2099        exlog("_TOUCHENNX", "findElmentByNamesId() exception");
2100
2101    }
2102    return null;
2103}
2104
2105function GetCaretPosition(oField) {
2106    var iCaretPos = 0;
2107    if (document.selection) {
2108        oField.focus();
2109        var oSel = document.selection.createRange();
2110        oSel.moveStart('character', -oField.value.length);
2111        iCaretPos = oSel.text.length;
2112    } else if (oField.selectionStart || oField.selectionStart == '0') {
2113        iCaretPos = oField.selectionStart;
2114    }
2115    return (iCaretPos);
2116}
2117
2118function TK_Request(key, value) {
2119
2120    var strReq;
2121
2122
2123    if (key != null) {
2124        var req = {
2125            "key": key,
2126            "value": value
2127        };
2128        strReq = JSON.stringify(req);
2129    } else {
2130        strReq = JSON.stringify(value);
2131
2132    }
2133
2134    touchenexInterface.TK_Request([strReq], "TK_Request_Callback");
2135}
2136
2137
2138function TK_Request2(key, frmname, elename, value) {
2139
2140    if (TK_IsNal(tekOption.idbase) || tekOption.idbase === "true")
2141        frmname="";
2142
2143    var req = {
2144        "key": key,
2145        "frmname": frmname,
2146        "elename": elename,
2147        "DomID": DomID,
2148        "value": value
2149    };
2150    TK_Request(null, req);
2151}
2152
2153function TK_RequestEx(key, req) {
2154    TK_Request(null, req);
2155}
2156
2157function TK_Request_Callback(result) {
2158    if (result.key == undefined)
2159        return;
2160    if (result.key == "isVM"){
2161    }
2162    else if (result.key == "XW_Crypt") {
2163        fnGetEncXWCallback(result.value);
2164    }
2165    else if (result.key == "YT_Crypt") {
2166        fnGetEncYTCallback(result.value);
2167    }
2168    else if (result.key == "GN_Crypt") {
2169        fnGetEncGNCallback(result.value);
2170    }
2171    else if (result.key == "UN_Crypt") {
2172        fnGetEncUNCallback(result.value);
2173    }
2174    else if (result.key == "HN_Crypt") {
2175        fnGetEncHNCallback(result.value);
2176    }
2177}
2178
2179function IsDenyPaste(nsEvent) {
2180
2181    if (nsEvent.type == "text" || nsEvent.type == "password") {
2182        inputObj = nsEvent;
2183    } else {
2184        theEvent = nsEvent ? nsEvent : window.event;
2185        inputObj = theEvent.target ? theEvent.target : theEvent.srcElement;
2186    }
2187
2188    try {
2189        if (isEnc(inputObj)) {
2190            return true;
2191        }
2192
2193        // ÀÏ¹Ý º¸¾È ¿µ¿ª (E2E ¾Æ´Ô)
2194        // ºÙ¿© ³Ö±â Çã¿ë À϶§, Datytype ÀÌ µé¾î °¡ ÀÖÀ¸¸é Çã¿ë ÇÏÁö ¾Ê´Â´Ù.
2195        // datatype ÀÌ Á¸Àç ÇÏ¸é ºÙ¿© ³Ö±â ±ÝÁö.
2196
2197
2198        if ((tekOption.defaultpaste == "false") || (tekOption.defaultpaste == "off") || (tekOption.defaultpaste == "no")) {
2199            //defaultpaste false ¶óµµ ºñº¸¾È ¿µ¿ªÀº ºÙ¿© ³Ö±â¸¦ Çã¿ë
2200            if (TouchEnKeyNXE_CurObj.getAttribute("data-security") != "off" && TouchEnKeyNXE_CurObj.getAttribute("security") != "off") {
2201                return true;
2202            }
2203
2204        } else {
2205            if (TouchEnKeyNXE_CurObj.getAttribute("datatype") != null || TouchEnKeyNXE_CurObj.getAttribute("data-datatype") != null) {
2206                return true;
2207            }
2208
2209        }
2210
2211    } catch (e) {
2212        exlog("_TOUCHENNX", "IsDenyPaste() exception");
2213    }
2214
2215    return false;
2216}
2217
2218function TK_OnContextMenu(nsEvent) {
2219    if (IsDenyPaste(nsEvent) == true) {
2220        nsEvent.preventDefault();
2221    }
2222    return;
2223}
2224
2225function TK_OnPaste(nsEvent) {
2226    if (IsDenyPaste(nsEvent) == true) {
2227        nsEvent.preventDefault();
2228    }
2229    return;
2230}
2231
2232/**
2233 * TKClear ÇÔ¼ö
2234 * »ç¿ë¹æ¹ý 
2235 * Fome ±â¹Ý : TK_Clear(frmname, elename)
2236 * Id ±â¹Ý : TK_Clear("", idname)
2237 */
2238function TK_Clear(frmname, elename) {
2239    try {
2240		
2241        var inputObj = "";
2242        var inputObj_E2E = "";
2243		
2244        /*
2245			id ±â¹ÝÀÎÁö ¿©ºÎ ÆÇ´Ü
2246			true  : id ±â¹Ý 
2247			false : form, name ±â¹Ý 
2248		*/
2249        if (TK_IsNal(frmname) == true)
2250        {
2251            inputObj = document.getElementById(elename);
2252            if (isEnc(inputObj))
2253            {
2254                inputObj_E2E = document.getElementById("E2E_"+elename);
2255            }
2256        }
2257        else
2258        {
2259            inputObj = document.getElementsByName(elename)[0];
2260            if (isEnc(inputObj))
2261            {
2262                inputObj_E2E = document.getElementsByName("E2E_" + elename)[0];
2263            }
2264        }
2265		
2266		
2267        if (TK_bInit != undefined && TK_bInit != 0) {
2268            if(getTouchEnNXEType.MSIEBrowser){
2269                TK_Request2("Clear", frmname, elename, "");
2270            }else{
2271                TK_Request2("ClearDB", frmname, elename, "");
2272            }
2273        }
2274        var inputObj = document.getElementsByName(elename)[0];
2275        
2276        if (isEnc(inputObj)) 
2277        {
2278            if (TK_IsNal(inputObj_E2E) == false)
2279            {
2280                Tk_InputErase(inputObj);
2281                Tk_InputErase(inputObj_E2E);
2282            }
2283        }
2284		
2285    } catch (e) {
2286        exlog("_TOUCHENNX", "TK_Clear() exception");
2287    }
2288}
2289
2290/**
2291 * À¥ ºê¶ó¿ìÀúÀÇ DOMÀ» ´Ù½Ã ºÐ¼®ÇÏ´Â ±â´ÉÀ¸·Î, À¥ÆäÀÌÁö ·Îµù ÈÄ
2292 * µ¿ÀûÇÊµå »ý¼º½Ã TouchEnKey_ReScan()ÇÔ¼ö¸¦ »ç¿ëÇØ¾ß º¸¾ÈÀÌ µ¿ÀÛÇÕ´Ï´Ù.
2293 * ReScanÇÔ¼ö È£Ãâ ÈÄ¿¡´Â ±âÁ¸ ÀÔ·ÂµÈ °ªÀÌ »èÁ¦µË´Ï´Ù.
2294 *
2295 * »ç¿ë¹æ¹ý TK_Rescan() : Dom Àüü scan
2296 */
2297function TK_Rescan() {
2298
2299    var isIdbase = false;
2300
2301    if (TK_IsAvailble(tekOption.idbase) && tekOption.idbase == "true")
2302        isIdbase = true;
2303
2304    if (isIdbase == true)
2305    {
2306        TK_Rescan_Id()
2307    }
2308    else
2309    {
2310        TK_Rescan_Form()
2311    }
2312}
2313
2314function TK_IsAvailble(obj) {
2315    if (typeof obj == "undefined" || obj == null || obj == "")
2316        return false;
2317
2318    return true;
2319}
2320
2321
2322/**
2323 * TouchEn nxKey µ¿Àû ÇÊµå »ý¼º½Ã Űº¸µåº¸¾È Àû¿ëÀ» À§ÇØ Form ´ÜÀ§·Î scanning ÇÏ´Â ÇÔ¼ö
2324 *
2325 * »ç¿ë¹æ¹ý TK_EnqueueList_frm(frmName) : Form ´ÜÀ§ scan
2326 *
2327 * Parameter - frmName : form ÀÇ name
2328 */
2329function TK_EnqueueList_frm(frmname) {
2330    if (TK_IsNal(TK_bInit) || TK_bInit == 0) return false;
2331    if(!useTouchEnnxKey) return false;
2332
2333    var ret = true;
2334    try {
2335        var frm = document.getElementsByName(frmname)[0];
2336        var elelength = frm.elements.length;
2337        for (var j = 0; j < elelength; j++) {
2338            if (frm.elements[j].tagName == "INPUT" && (frm.elements[j].type == "text" || frm.elements[j].type == "password")) {
2339            	 if (getTouchEnNXEType.MSIEBrowser &&  !TK_IEDaemonCheck()) {
2340                     TK_Request2("EnqueueList", frmname, frm.elements[j].name, "");
2341                 } else  {
2342                    if (GetAttributeFormName(frm) != undefined && GetAttributeFormName(frm) != touchenexInfo.exFormName)
2343                        makeEncDataEx(frm);
2344                    TK_AddEventListner2(frm.elements[j]);
2345                 }
2346                if (isEnc(frm.elements[j])) {
2347                    //frm.elements[j].value = ""; 2015.09.04 ÁÖ¼®
2348                    if (document.getElementsByName("E2E_" + frm.elements[j].name)[0] != undefined) {
2349                        Tk_InputErase(document.getElementsByName("E2E_" + frm.elements[j].name)[0]);
2350                    }
2351                }
2352            }
2353        }
2354    } catch (e) {
2355        ret = false;
2356        exlog("_TOUCHENNX", "TK_EnqueueList_frm() exception");
2357    }
2358    return ret;
2359}
2360
2361/**
2362 * TouchEn nxKey µ¿Àû ÇÊµå »ý¼º½Ã Űº¸µåº¸¾È Àû¿ëÀ» À§ÇØ Form,element ´ÜÀ§·Î scanning ÇÏ´Â ÇÔ¼ö
2363 *
2364 * »ç¿ë¹æ¹ý
2365 * Form ±â¹Ý : TK_EnqueueList(frmName ,eleName) Element ´ÜÀ§ scan
2366 * id ±â¹Ý : TK_EnqueueList("", idName) id ´ÜÀ§ scan
2367 *
2368 * Parameter - frmName : form ÀÇ name - eleName : input elementÀÇ name
2369 */
2370function TK_EnqueueList(frmname, elename) {
2371    var ret = false;
2372    var isIdbase = false;
2373    if (TK_IsNal(TK_bInit) || TK_bInit == 0)
2374        return ret;
2375    if (!useTouchEnnxKey)
2376        return ret;
2377    var inputObj = null;
2378
2379    if (tekOption.idbase == "true" || TK_IsNal(frmname))
2380        isIdbase = true;
2381
2382    if (isIdbase)
2383    {
2384        inputObj = document.getElementById(elename);
2385        if (!TK_IsNal(inputObj)) {
2386            ret = TK_EnqueueList_Id(inputObj);
2387        }
2388    }
2389    else
2390    {
2391        inputObj = document.forms[frmname][elename];
2392        if (!TK_IsNal(inputObj)) {
2393            ret = TK_EnqueueList_Form(inputObj);
2394        }
2395    }
2396    return ret;
2397}
2398
2399function EncOnFieldDisableEvent(nsEvent) {
2400    if (nsEvent.type == "text" || nsEvent.type == "password") {
2401        inputObj = nsEvent;
2402    } else {
2403        theEvent = nsEvent ? nsEvent : window.event;
2404        inputObj = theEvent.target ? theEvent.target : theEvent.
2404srcElement;
2405    }
2406
2407    if (isEnc(inputObj)) {
2408
2409        inputObj.onselectstart = function () {
2410            return false;
2411        };
2412        inputObj.unselectable = "on";
2413        inputObj.style.MozUserSelect = "none";
2414
2415        return;
2416    }
2417}
2418
2419function TK_GetEncXW(frmName, eleName, sKey, callback) {
2420    fnGetEncXWCallback = callback;
2421    var req = {
2422        "key": "GetEncData",
2423        "securekey": sKey,
2424        "id": eleName,
2425        "formName": frmName
2426    };
2427    TK_RequestEx(null, req);
2428}
2429
2430function TK_GetEncYT(frmName, eleName, pubKey, callback)
2431{
2432    fnGetEncYTCallback = callback;
2433    var req = {
2434        "key": "GetEncDataYT",
2435        "pubkey": pubKey,
2436        "id": eleName,
2437        "formName": frmName
2438    };
2439    TK_RequestEx(null, req);
2440}
2441
2442function TK_GetEncGN(frmName, eleName, sid, pubKey, callback)
2443{
2444    fnGetEncGNCallback = callback;
2445    var req = {
2446        "key": "GetEncDataGN",
2447        "pubkey": pubKey,
2448        "id": eleName,
2449        "formName": frmName,
2450        "sid":sid
2451    }
2452    TK_RequestEx(null, req);
2453}
2454
2455function TK_GetEncUN(frmName, eleName, pubKey, callback)
2456{
2457    fnGetEncUNCallback = callback;
2458    var req = {
2459        "key": "GetEncDataUN",
2460        "pubkey": pubKey,
2461        "id": eleName,
2462        "formName": frmName
2463    };
2464    TK_RequestEx(null, req);
2465}
2466
2467function TK_GetEncHN(frmName, eleName, op1, op2, op3, op4, callback)
2468{
2469    fnGetEncHNCallback = callback;
2470    var req = {
2471        "key": "GetEncDataHN",
2472        "op1": op1,
2473        "op2": op2,
2474        "op3": op3,
2475        "op4": op4,
2476        "id": eleName,
2477        "formName": frmName
2478    };
2479    TK_RequestEx(null, req);
2480}
2481
2482function TK_OnContextMenu(nsEvent) {
2483    var inputObj;
2484    if (nsEvent.type == "text" || nsEvent.type == "password") {
2485        inputObj = nsEvent;
2486    } else {
2487        theEvent = nsEvent ? nsEvent : window.event;
2488        inputObj = theEvent.target ? theEvent.target : theEvent.srcElement;
2489    }
2490
2491    try {
2492        if (isEnc(inputObj)) {
2493            nsEvent.preventDefault();
2494            TK_click(nsEvent);
2495        }
2496    } catch (e) {
2497        exlog("_TOUCHENNX", "TK_OnContextMenu() exception");
2498    }
2499
2500    return;
2501}
2502
2503function TK_OnPaste(nsEvent) {
2504    if (nsEvent.type == "text" || nsEvent.type == "password") {
2505        inputObj = nsEvent;
2506    } else {
2507        theEvent = nsEvent ? nsEvent : window.event;
2508        inputObj = theEvent.target ? theEvent.target : theEvent.srcElement;
2509    }
2510
2511    try {
2512        if (isEnc(inputObj)) {
2513            nsEvent.preventDefault();
2514            return;
2515        }
2516
2517        // ÀÏ¹Ý º¸¾È ¿µ¿ª (E2E ¾Æ´Ô)
2518        // ºÙ¿© ³Ö±â Çã¿ë À϶§, Datytype ÀÌ µé¾î °¡ ÀÖÀ¸¸é Çã¿ë ÇÏÁö ¾Ê´Â´Ù.
2519        // datatype ÀÌ Á¸Àç ÇÏ¸é ºÙ¿© ³Ö±â ±ÝÁö.
2520
2521        if ((tekOption.defaultpaste == "false") || (tekOption.defaultpaste == "off") || (tekOption.defaultpaste == "no")) {
2522            //defaultpaste false ¶óµµ ºñº¸¾È ¿µ¿ªÀº ºÙ¿© ³Ö±â¸¦ Çã¿ë
2523            if (TouchEnKeyNXE_CurObj.getAttribute("security") == "off" || TouchEnKeyNXE_CurObj.getAttribute("data-security") == "off") {
2524                return;
2525            } else {
2526                nsEvent.preventDefault();
2527            }
2528        } else {
2529            if (TouchEnKeyNXE_CurObj.getAttribute("datatype") != null || TouchEnKeyNXE_CurObj.getAttribute("data-datatype") != null) {
2530                nsEvent.preventDefault();
2531            }
2532        }
2533
2534    } catch (e) {
2535        exlog("_TOUCHENNX", "TK_OnPaste() exception");
2536    }
2537
2538    return;
2539}
2540
2541function TK_InvalidateSession(srdk) {
2542    var req = {
2543        "key": "InvalidateSession",
2544        "srdk": srdk
2545    };
2546    TK_RequestEx(null, req);
2547}
2548
2549/** 20150904 º¯°æ */
2550function TK_EncModify(value,formname, elename) {
2551
2552    var req = {
2553        "formname" : formname,
2554        "name" : elename,
2555        "key": "EncModify",
2556        "value": value
2557    };
2558    if (TK_bInit != undefined && TK_bInit != 0) {
2559        TK_RequestEx(null, req);
2560    }
2561    if (getTouchEnNXEType.MSIEBrowser) 
2562        return;	
2563			
2564    var e2e_ele = "E2E_" + TouchEnKeyNXE_CurObj.name;
2565    var frm = TouchEnKeyNXE_CurObj.form;
2566	
2567    if (value == "on" || value == "yes" || value == "true")
2568    {
2569        if (document.getElementsByName(e2e_ele)[0] == undefined && frm != undefined)
2570        {
2571            var newEle = document.createElement("input");
2572            newEle.type = "hidden";
2573            newEle.name = e2e_ele;
2574            Tk_InputErase(newEle);
2575            frm.appendChild(newEle);
2576        }
2577    }
2578    else
2579    {
2580        if (document.getElementsByName(e2e_ele)[0] != undefined)
2581        {
2582            Tk_InputErase(document.getElementsByName(e2e_ele)[0]);
2583        }
2584		
2585    }
2586}
2587
2588//. ÇÑ ¿¡·¯´ç ¿¡·¯Äڵ尡 ¿©·¯¹ø µé¾î¿Í¼­ TK_CommonError°¡ ¿©·¯¹ø ¼öÇàµÈ´Ù.
2589//. ¶§¹®¿¡ alert°¡ ¿©·¯¹ø ¶ß´Â À̽´°¡ ¹ß»ýÇØ¼­ alert´Â Çѹø¸¸ ¶ßµµ·Ï ´ÙÀ½°ú °°ÀÌ Àü¿ªº¯¼ö¸¦ Ãß°¡Çß´Ù.
2590var alertEnd = false; 
2591
2592function TK_FaqMove(faq) { 
2593
2594    if (faq =="1") //°­Á¦ ÁßÁö ½Ã
2595    { 
2596        this.top.location.href = "http://faq.touchen.co.kr/nxKey/page/damage.htm"; 
2597    } 
2598    else if (faq == "2") //º¯Á¶ ½Ã
2599    { 
2600        this.top.location.href = "http://faq.touchen.co.kr/nxKey/page/damage.htm"; 
2601    }
2602    else if (faq == "3") //¶óÀ̼¾½º ¿¡·¯ ½Ã
2603    {
2604        this.top.location.href = "http://faq.touchen.co.kr/nxKey/page/lic_check_fail.html";
2605    }
2606			
2607    return; 
2608} 
2609
2610function TK_CommonError( response ){ 
2611    if(response.ERR == "BLOCK"){ 
2612        if(TK_bInit==0) //init Àü¿¡ block¿¡·¯°¡ ¿À¸é ¶óÀ̼¾½º ¿¡·¯·Î ÆÇ´ÜÇÑ´Ù.
2613        { 	/* ¶óÀ̼¾½º ¿¡·¯ ½Ã */
2614            if(alertEnd==false)
2615            {
2616                alert(response.NAME + " ¶óÀ̼¾½º¸¦ È®ÀÎÇϼ¼¿ä."); 
2617                alertEnd = true;
2618            }
2619            TK_FaqMove(3);
2620        } 
2621        else //init ÀÌÈÄ¿¡ block¿¡·¯°¡ ¿À¸é °­Á¦ ÁßÁö·Î ÆÇ´ÜÇÑ´Ù.
2622        { 	/* °­Á¦ÁßÁö ¿¡·¯ ½Ã */
2623            if(alertEnd == false)
2624            {
2625                alert(response.NAME + " ÇÁ·Î±×·¥¿¡ ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù.(daemon)\nÆäÀÌÁö¸¦ »õ·Î°íħ Çϼ¼¿ä."); 
2626                alertEnd = true;
2627            }
2628            //alert(response.NAME + " ÇÁ·Î±×·¥¿¡ ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù.(daemon)\nÆäÀÌÁö¸¦ »õ·Î°íħ Çϼ¼¿ä."); 
2629            TK_FaqMove(1);
2630        } 
2631    }
2632    else if(response.ERR == "BLOCK:EX"){ 
2633	
2634        if(alertEnd == false)
2635        {	/* crossex ¸ðµâ º¯Á¶ ½Ã */
2636            alert(response.NAME + " ÇÁ·Î±×·¥ÀÌ º¯Á¶µÇ¾ú½À´Ï´Ù.(EX)\nÀ缳ġ°¡ ÇÊ¿äÇÕ´Ï´Ù.");
2637            alertEnd = true;
2638        }
2639        TK_FaqMove(2); 
2640    }
2641    else if(response.ERR == "BLOCK:CLIENT"){ 
2642        if(alertEnd == false)
2643        {	/* Űº¸µåº¸¾È ¸ðµâ º¯Á¶ ½Ã */
2644            alert(response.NAME + " ÇÁ·Î±×·¥ÀÌ º¯Á¶µÇ¾ú½À´Ï´Ù.(client)\nÀ缳ġ°¡ ÇÊ¿äÇÕ´Ï´Ù.");
2645            alertEnd = true;
2646        }
2647        TK_FaqMove(2); 
2648    }
2649    else if(response.ERR == "BLOCK:DISCONNECTED"){
2650        //. ¶óÀ̼¾½º ¿¡·¯ÀÏ ¶§ block¿¡·¯¿Í ÇÔ²² ÀÌ ¿¡·¯°¡ µé¾î¿Â´Ù. 
2651        //. block ¿¡·¯¿Í Áߺ¹µÇ±â ¶§¹®¿¡ ÀÏ´Ü ÀÌ ¿¡·¯¿¡ µû¸¥ 󸮴 ÇÏÁö ¾Ê´Â´Ù.
2652        /*
2653		if(alertEnd == false)
2654		{	
2655			alert(response.NAME + " ÇÁ·Î±×·¥ÀÌ ÁߴܵǾú½À´Ï´Ù.(client)\nÆäÀÌÁö¸¦ »õ·Î°íħÇϼ¼¿ä.");
2656			alertEnd = true;
2657		}
2658		TK_FaqMove(2);
2659		*/
2660    }
2661    else if(response.ERR == "BLOCK:INTERNAL"){ 
2662        //. µ¥¸ó¿¡¼­´Â »óÀ§ ÇÁ·Î¼¼½º¸¦ ÁßÁöÇßÀ» ¶§ INTERNAL ¿¡·¯°¡ ¿À°í
2663        //. ÇÏÀ§ ÇÁ·Î¼¼½º¸¦ ÁßÁöÇßÀ» ¶§´Â BLOCK ¿¡·¯°¡ ¿Ô¾ú´Ù.
2664        //. extension¹æ½Ä¿¡¼­ÀÇ internal ¿¡·¯´Â ¾î¶² ¿¡·¯ÀÎÁö È®½ÇÇÏÁö ¾Ê´Ù.
2665		
2666        if(alertEnd == false)
2667        {	
2668            alert(response.NAME + " ÇÁ·Î±×·¥ÀÌ ÁߴܵǾú½À´Ï´Ù.(client)\nÆäÀÌÁö¸¦ »õ·Î°íħÇϼ¼¿ä.");
2669            alertEnd = true;
2670        }
2671		
2672        TK_FaqMove(1); 
2673		
2674    }
2675    return;
2676}
2677
2678function GetAttributeFormName(form) {
2679	var frmName = form.getAttribute("name");
2680	// 20230224 ¸ÖƼ form name ¾øÀ» °æ¿ì	
2681	if(TK_IsNal(frmName)){
2682		frmName = form.getAttribute("id");		
2683	}
2684	if (typeof frmName != "string" && form.attributes["name"] != undefined) {
2685		frmName = form.attributes["name"].value;
2686	}
2687
2688	return frmName;
2689}
2690
2691
2692function TK_postInit(argFrm)
2693{
2694    var keyFieldName = "";
2695    var encFieldName = "";
2696    var frm="";
2697	
2698    frm = argFrm;
2699
2700	
2701    if (tekOption.idbase == "true")
2702        TK_makeEncData();
2703    else TK_makeEncData(frm);
2704	
2705	
2706    var encFieldName =  GetHiddenEncFieldName(frm);	
2707    var keyFieldName = GetHiddenKeyFieldName(frm);
2708	
2709    if (TOUCHENEX_UTIL.isIE()!=true && tekOption.idbase != "true")
2710    {
2711        if (frm[encFieldName] != undefined)
2712        {
2713            frm[encFieldName].name = "hid_enc_data";
2714            frm[encFieldName].id = "hid_enc_data";
2715		
2716        }
2717		
2718        if (frm[keyFieldName] != undefined && tekOption.idbase != "true")
2719        {
2720            frm[keyFieldName].name =  "hid_key_data";
2721            frm[keyFieldName].id = "hid_key_data";
2722	
2723        }
2724    }
2725		
2726    return frm;
2727}
2728
2729
2730function TK_postFinish(frm)
2731{
2732    var keyFieldName = "";
2733    var encFieldName ="";
2734 
2735 
2736    if (TOUCHENEX_UTIL.isIE()!=true)
2737    {
2738  
2739        var encFieldName =  GetHiddenEncFieldName(frm); 
2740        var keyFieldName = GetHiddenKeyFieldName(frm);
2741
2742  
2743  
2744        if (frm["hid_key_data"] != undefined && tekOption.idbase != "true")
2745        { 
2746            frm["hid_key_data"].name  = keyFieldName;
2747            frm["hid_key_data"].id  = keyFieldName;
2748        }
2749  
2750        if (frm["hid_enc_data"] != undefined && tekOption.idbase != "true")
2751        {
2752            frm["hid_enc_data"].name  = encFieldName;
2753            frm["hid_enc_data"].id  = encFieldName;
2754        }
2755    
2756    }
2757 
2758}
2759
2760function Tk_InputErase(element)
2761{
2762	
2763    if (typeof element != "undefined")
2764    {
2765        if (element.getAttribute("type") == "hidden")
2766            TK_HiddenElementErase(element);
2767        else
2768            TK_NomalElementErase(element);
2769    }
2770	
2771}
2772
2773function TK_HiddenElementErase(element) {
2774    if (TK_IsNal(element) == false)
2775        element.value = "";
2776}
2777
2778function TK_NomalElementErase(element) {
2779    if (TK_IsNal(element) == false)
2780        element.value = "";
2781}
2782
2783function IsAllowIdOverlap()
2784{
2785    var nRet = false;
2786    if (typeof tekOption.isAllowIdOverlap == "undefined" || tekOption.isAllowIdOverlap == "true" || TOUCHENEX_UTIL.isIE() == true )
2787    {
2788        nRet = true;
2789    }
2790	
2791    return nRet;
2792}
2793
2794
2795function IsFormTrans()
2796{
2797    var nRet = false;
2798	
2799    if (typeof tekOption.isFormTrans == "undefined" || tekOption.isFormTrans == "true"  )
2800    {
2801        nRet = true;
2802    }
2803	
2804    return nRet;
2805}
2806
2807function IsSpecialTkMask(eobj)
2808{
2809    if (eobj != null && eobj.getAttribute("data-tk-usemask") != null && typeof eobj.getAttribute("data-tk-usemask") == "string" && eobj.getAttribute("data-tk-usemask") == "true")
2810    {
2811        return true;
2812    }
2813    return false;
2814}
2815
2816function TK_KeyInputToInputObj(inputObj, value)
2817{	
2818    if (typeof inputObj == "object")
2819    {
2820        if (IsSpecialTkMask(inputObj) == true)
2821        {
2822            var startPos = 0; 
2823            var endPos   = 1024; 
2824            var mask = '*';
2825			
2826            if (inputObj.getAttribute(tk_Special_Mask_StartPos) != null)
2827                startPos = parseInt(inputObj.getAttribute(tk_Special_Mask_StartPos));
2828            if (inputObj.getAttribute(tk_Special_Mask_EndPos) != null)
2829                endPos = parseInt(inputObj.getAttribute(tk_Special_Mask_EndPos));
2830            if (inputObj.getAttribute(tk_Special_Mask) != null)
2831                mask = inputObj.getAttribute(tk_Special_Mask);
2832					
2833		
2834			
2835            if (inputObj.value.length+1 >= startPos && inputObj.value.length < endPos)
2836                value = inputObj.value+mask;
2837	 
2838        }
2839        inputObj.value = value;
2840    }
2841}
2842
2843/*
2844	Object Null And  Empty Check 
2845*/
2846
2847function TK_IsNal(obj) {
2848    if (typeof obj == "undefined" || obj == null || obj == "")
2849        return true;
2850
2851    return false;
2852
2853}
2854
2855function TK_IsAvailble(obj) {
2856    if (typeof obj == "undefined" || obj == null || obj == "")
2857        return false;
2858
2859    return true;
2860}
2861
2862function TK_InputEncWithPlain(result) {
2863    //console.log("20190806 - 4-1, tekOption.bstart : " + tekOption.bstart);
2864    if (tekOption.bstart == false)
2865        return;
2866
2867    var TK_frm = "";
2868    var TK_cur_Field = "";
2869    var TK_cur_E2E_Field = "";
2870    var TK_szCh = "";
2871    var TK_e2eValue = "";
2872
2873    TK_e2eValue = result.value.split('_#_')[0];
2874    TK_szCh = result.value.split('_#_')[1];
2875
2876    if (tekOption.idbase == "true") {
2877        TK_cur_Field = document.getElementById(result.EncData.split("_")[1]);
2878
2879        if (tekOption.usegetenc == "false") {
2880            var crypt = document.getElementById(result.EncData).value;
2881            Tk_InputErase(document.getElementById(result.EncData));
2882            document.getElementById(result.EncData).value = crypt + TK_e2eValue;
2883
2884        } else {
2885            //console.log("20190806 - 4-3");
2886            var e2eEle = findElmentByNamesId(result.name);
2887            var nodeLen = document.all.length;
2888            var htmlColl = document.all;
2889
2890            for (var k = 0; k < nodeLen; k++) {
2891                if (result.EncData == htmlColl[k].id) {
2892                    htmlColl[k].value = result.value.split('_')[0];
2893                    cipherEncText += htmlColl[k].id;
2894                    cipherEncText += "=";
2895                    cipherEncText += result.value.split('_')[0];
2896                    cipherEncText += "%TK%";
2897                }
2898
2899            }
2900            //console.log("20190806 - 4-4");
2901        }
2902    } else {
2903        //console.log("20190806 - 4-5");
2904        TK_cur_Field = document.getElementsByName(result.EncData.split("_")[1])[0];
2905
2906        //if (result.EncData.split('E2E_')[1] != TouchEnKeyNXE_CurObj.name) return;
2907        if (TK_IsNal(TK_frm) == true) {
2908            //console.log("20190806 - 4-6");
2909            if (document.getElementsByName(result.EncData)[0] != undefined)
2910                TK_frm = document.getElementsByName(result.EncData)[0].form;
2911            //console.log("20190806 - 4-7");
2912        }
2913
2914        if (tekOption.usegetenc == "false") {
2915            if (TK_IsNal(TK_frm) == false) {
2916                //console.log("20190806 - 4-8");
2917                var crypt = TK_frm[result.EncData].value;
2918                Tk_InputErase(TK_frm[result.EncData]);
2919                TK_frm[result.EncData].value = crypt + TK_e2eValue;
2920            }
2921        } else {
2922            for (var k = 0; k < TK_frm.length; k++) {
2923                if (result.EncData == TK_frm.elements[k].name) {
2924                    TK_frm.elements[k].value = result.value.split('_')[0];
2925                    cipherEncText += TK_frm.elements[k].name;
2926                    cipherEncText += "=";
2927                    cipherEncText += result.value.split('_')[0];
2928                    cipherEncText += "%TK%";
2929                }
2930            }
2931        }
2932    }
2933
2934    if (bTobe == true) {
2935        var dummykey = TK_szCh;
2936
2937        if (TK_szCh >= '0' && TK_szCh <= '9')
2938            dummykey = '0';
2939        else if ((TK_szCh >= 'a' && TK_szCh <= 'z') ||
2940			(TK_szCh >= 'A' && TK_szCh <= 'Z'))
2941            dummykey = 'A';
2942        else
2943            dummykey = '_';
2944
2945        TouchEnKey_UIEevents(0, TK_cur_Field, "keydown", dummykey);
2946        TouchEnKey_UIEevents(0, TK_cur_Field, "keypress", dummykey);
2947    }
2948
2949    if (isEnc(TK_cur_Field)) {
2950        var inputText = TK_cur_Field.value;
2951        TK_KeyInputToInputObj(TK_cur_Field, inputText + TK_szCh);
2952        if (bTobe == true && TK_cur_Field.classList.value.indexOf("nexa") > -1)
2953            TouchEnKey_UIEevents(0, TK_cur_Field, "input", dummykey);
2954    } else {
2955        var MaxLength = TK_cur_Field.getAttribute("maxlength");
2956        var valueLength = TK_cur_Field.value.length;
2957        if (MaxLength != undefined && valueLength >= MaxLength) {
2958            if (TK_cur_Field.selectionStart == 0 && TK_cur_Field.selectionEnd == valueLength) {}
2959            else {
2960                return;
2961            }
2962        }
2963
2964        if (TK_cur_Field.value.length > 0) {
2965            var caretPos = GetCaretPosition(TK_cur_Field);
2966            var tmpValue = TK_cur_Field.value.toString();
2967            var tmpValue2 = "";
2968
2969            var selectSize = TK_cur_Field.selectionEnd - TK_cur_Field.selectionStart;
2970            if (selectSize > 0) {
2971
2972                if (TK_cur_Field.selectionEnd == TK_cur_Field.value.length) {
2973                    tmpValue = TK_cur_Field.value.substring(0, TK_cur_Field.selectionStart);
2974                    //TK_cur_Field.value = "";
2975                    TK_KeyInputToInputObj(TK_cur_Field, tmpValue + TK_szCh);
2976
2977                    if (bTobe == true) {
2978                        if (TK_cur_Field._linked_element.parent.linkedcontrol._type_name == "MaskEdit") {
2979                            var bTobe_MaskEdit_length = TK_cur_Field.value.length;
2980                            TouchEnKey_UIEevents(0, TK_cur_Field, "input", dummykey);
2981                            TK_cur_Field.selectionEnd = bTobe_MaskEdit_length;
2982                        } else {
2983                            TouchEnKey_UIEevents(0, TK_cur_Field, "input", dummykey);
2984                            TK_cur_Field.selectionEnd = TK_cur_Field.value.length;
2985                        }
2986                    } else {
2987                        TK_cur_Field.selectionEnd = TK_cur_Field.value.length;
2988                    }
2989                } else {
2990                    tmpValue = TK_cur_Field.value.substring(0, TK_cur_Field.selectionStart);
2991                    tmpValue2 = TK_cur_Field.value.substring(TK_cur_Field.selectionEnd, TK_cur_Field.value.length);
2992                    //TK_cur_Field.value = "";
2993                    TK_KeyInputToInputObj(TK_cur_Field, tmpValue + TK_szCh + tmpValue2);
2994                    TK_cur_Field.selectionStart = tmpValue.length + 1;
2995                    TK_cur_Field.selectionEnd = tmpValue.length + 1;
2996
2997                    if (bTobe == true)
2998                        TouchEnKey_UIEevents(0, TK_cur_Field, "input", dummykey);
2999                }
3000            } else {
3001                TK_KeyInputToInputObj(TK_cur_Field, tmpValue.substring(0, caretPos) + TK_szCh + tmpValue.substring(caretPos));
3002                TK_cur_Field.selectionStart = caretPos + 1;
3003                TK_cur_Field.selectionEnd = caretPos + 1;
3004
3005                if (bTobe == true)
3006                    TouchEnKey_UIEevents(0, TK_cur_Field, "input", dummykey);
3007            }
3008        } else {
3009            if (TK_cur_Field.end - TK_cur_Field.start > 1)
3010                Tk_InputErase(TK_cur_Field);
3011
3012            TK_KeyInputToInputObj(TK_cur_Field, TK_szCh);
3013
3014            if (bTobe == true) {
3015                TK_cur_Field.selectionStart = TK_cur_Field.value.length;
3016                TK_cur_Field.selectionEnd = TK_cur_Field.value.length;
3017                TouchEnKey_UIEevents(0, TK_cur_Field, "input", dummykey);
3018            }
3019        }
3020        TK_cur_Field.selectionStart = TK_cur_Field.selectionEnd;
3021    }
3022
3023    if (tekOption.generate_event == "true" ||
3024		tekOption.generate_event == "yes" || tekOption.generate_event == "on") {
3025        if (TK_szCh >= "0" && TK_szCh <= "9") {
3026            TouchEnKey_UIEevents(0, TK_cur_Field, "keydown", 48);
3027            TouchEnKey_UIEevents(0, TK_cur_Field, "keypress", 48);
3028            TouchEnKey_UIEevents(0, TK_cur_Field, "keyup", 48);
3029        } else if ((TK_szCh <= "z" && TK_szCh >= "a") || (TK_szCh <= "Z" && TK_szCh >= "A")) {
3030            TouchEnKey_UIEevents(0, TK_cur_Field, "keydown", 65);
3031            TouchEnKey_UIEevents(0, TK_cur_Field, "keypress", 65);
3032            TouchEnKey_UIEevents(0, TK_cur_Field, "keyup", 65);
3033        } else {
3034            TouchEnKey_UIEevents(0, TK_cur_Field, "keydown", 189);
3035            TouchEnKey_UIEevents(0, TK_cur_Field, "keypress", 189);
3036            TouchEnKey_UIEevents(0, TK_cur_Field, "keyup", 189);
3037        }
3038    } else {
3039        TouchEnKey_UIEevents(0, TK_cur_Field, "keydown", 120);
3040        TouchEnKey_UIEevents(0, TK_cur_Field, "keypress", 120);
3041        TouchEnKey_UIEevents(0, TK_cur_Field, "keyup", 120);
3042    }
3043    return;
3044}
3045
3046function TK_SeedKey_Request() {
3047    cipherEncText = "";
3048    TouchEnNXE_SeedKey = result.value;
3049    var hidKeyData = null;
3050
3051    if (tekOption.idbase == "true") {
3052        DrawHiddenKeyElementId();
3053        document.getElementById("hid_key_data").value = TouchEnNXE_SeedKey;
3054    } else {
3055        for (var i = 0; i < document.forms.length; i++) {
3056            var frm = document.forms[i];
3057            DrawHiddenKeyElement(frm);
3058            if (IsAllowIdOverlap() == false) {
3059                hidKeyData = GetHiddenKeyFieldName(frm);
3060                if (frm[hidKeyData].value.length < 512)
3061                    frm[hidKeyData].value = TouchEnNXE_SeedKey;
3062
3063            } else {
3064                if (frm.hid_key_data != undefined) {
3065                    if (frm.hid_key_data.value.length < 512)
3066                        frm.hid_key_data.value = TouchEnNXE_SeedKey;
3067                }
3068            }
3069        }
3070    }
3071
3072}
3073function TK_AddChar_Request(result) {
3074
3075    var frm;
3076    var TK_cur_Field = "";
3077    var TK_cur_E2E_Field = "";
3078    var TK_szCh = "";
3079    var dummykey = "";
3080    var TK_RecvDataLength = 1;
3081    var TK_index = 0;
3082    var TK_curFiledLength = 0;								   
3083
3084    if (tekOption.bstart == false)
3085        return false;
3086
3087    if (TK_IsNal(result.value) == false) {
3088        TK_szCh = result.value.split('_#_')[1];
3089        TK_index = result.value.split("_#_")[3];
3090
3091
3092        var tk_string_Pos = result.EncData.search("E2E_");
3093        if (tk_string_Pos != 0) return;
3094		
3095        if (tekOption.idbase == "true") {
3096            var TK_Cur_Field_Id = result.EncData.replace("E2E_", "");
3097            TK_cur_Field = document.getElementById(TK_Cur_Field_Id);
3098            TK_cur_E2E_Field =  document.getElementById("E2E_" + TK_cur_Field.id);
3099        } else {
3100            var TK_Cur_Field_Name = result.EncData.replace("E2E_", "");
3101            TK_cur_Field = document.getElementsByName(TK_Cur_Field_Name)[0];
3102            TK_cur_E2E_Field =  document.getElementsByName("E2E_" + TK_cur_Field.name)[0];
3103        }
3104		
3105        if ( TK_cur_E2E_Field.value.length > 0) 	
3106            TK_curFiledLength = TK_cur_E2E_Field.value.length / 32;
3107			
3108        if (TK_index == 0)		
3109        {
3110            Tk_InputErase(TK_cur_Field);
3111            Tk_InputErase(TK_cur_E2E_Field);
3112        }
3113		
3114        if (TK_curFiledLength != TK_index)
3115        {
3116            Tk_InputErase(TK_cur_Field);
3117            Tk_InputErase(TK_cur_E2E_Field);
3118            if(tekOption.idbase=="true")
3119                TK_Request2("ClearDB", "", TK_cur_Field.id, "");
3120            else
3121                TK_Request2("ClearDB", GetAttributeFormName(TK_cur_Field.form), TK_cur_Field.name, "");
3122			
3123            return false;
3124        }
3125		
3126    } else {
3127        if (tekOption.idbase == "true") {
3128            TK_cur_Field = document.getElementById(result.addChar.split("_#_")[1]);
3129        } else {
3130			// 20230224 name Áߺ¹
3131            resultSize =  document.getElementsByName(result.addChar.split("_#_")[1]).length;
3132			for (var i = 0; i<resultSize; i++){
3133				InputType = document.getElementsByName(result.addChar.split("_#_")[1])[i].type; 
3134				if(InputType  != "hidden")
3135				TK_cur_Field = document.getElementsByName(result.addChar.split("_#_")[1])[i];
3136				}
3137        }
3138        TK_szCh = result.addChar.split("_#_")[0];
3139    }
3140
3141    if (bTobe == true) {
3142        dummykey = TK_szCh;
3143
3144        if (TK_szCh >= '0' && TK_szCh <= '9')
3145            dummykey = '0';
3146        else if ((TK_szCh >= 'a' && TK_szCh <= 'z') ||
3147			(TK_szCh >= 'A' && TK_szCh <= 'Z'))
3148            dummykey = 'A';
3149        else
3150            dummykey = '_';
3151
3152        TouchEnKey_UIEevents(0, TK_cur_Field, "keydown", dummykey);
3153        TouchEnKey_UIEevents(0, TK_cur_Field, "keypress", dummykey);
3154    }
3155
3156    if (isEnc(TK_cur_Field)) {
3157        var inputText = TK_cur_Field.value;
3158        TK_KeyInputToInputObj(TK_cur_Field, inputText + TK_szCh);
3159        if (bTobe == true && TK_cur_Field.classList.value.indexOf("nexa") > -1)
3160            TouchEnKey_UIEevents(0, TK_cur_Field, "input", dummykey);
3161    } else {
3162        var MaxLength = TK_cur_Field.getAttribute("maxlength");
3163        var valueLength = TK_cur_Field.value.length;
3164        if (MaxLength != undefined && valueLength >= MaxLength) {
3165            if (TK_cur_Field.selectionStart == 0 && TK_cur_Field.selectionEnd == valueLength) {}
3166            else {
3167                return false;
3168            }
3169        }
3170
3171        if (TK_cur_Field.value.length > 0) {
3172            var caretPos = GetCaretPosition(TK_cur_Field);
3173            var tmpValue = TK_cur_Field.value.toString();
3174            var tmpValue2 = "";
3175
3176            var selectSize = TK_cur_Field.selectionEnd - TK_cur_Field.selectionStart;
3177            if (selectSize > 0) {
3178
3179                if (TK_cur_Field.selectionEnd == TK_cur_Field.value.length) {
3180                    tmpValue = TK_cur_Field.value.substring(0, TK_cur_Field.selectionStart);
3181                    //TK_cur_Field.value = "";
3182                    TK_KeyInputToInputObj(TK_cur_Field, tmpValue + TK_szCh);
3183
3184                    if (bTobe == true) {
3185                        if (TK_cur_Field._linked_element.parent.linkedcontrol._type_name == "MaskEdit") {
3186                            var bTobe_MaskEdit_length = TK_cur_Field.value.length;
3187                            TouchEnKey_UIEevents(0, TK_cur_Field, "input", dummykey);
3188                            TK_cur_Field.selectionEnd = bTobe_MaskEdit_length;
3189                        } else {
3190                            TouchEnKey_UIEevents(0, TK_cur_Field, "input", dummykey);
3191                            TK_cur_Field.selectionEnd = TK_cur_Field.value.length;
3192                        }
3193                    } else {
3194                        TK_cur_Field.selectionEnd = TK_cur_Field.value.length;
3195                    }
3196                } else {
3197                    tmpValue = TK_cur_Field.value.substring(0, TK_cur_Field.selectionStart);
3198                    tmpValue2 = TK_cur_Field.value.substring(TK_cur_Field.selectionEnd, TK_cur_Field.value.length);
3199                    //TK_cur_Field.value = "";
3200                    TK_KeyInputToInputObj(TK_cur_Field, tmpValue + TK_szCh + tmpValue2);
3201                    TK_cur_Field.selectionStart = tmpValue.length + 1;
3202                    TK_cur_Field.selectionEnd = tmpValue.length + 1;
3203
3204                    if (bTobe == true)
3205                        TouchEnKey_UIEevents(0, TK_cur_Field, "input", dummykey);
3206                }
3207            } else {
3208                TK_KeyInputToInputObj(TK_cur_Field, tmpValue.substring(0, caretPos) + TK_szCh + tmpValue.substring(caretPos));
3209                TK_cur_Field.selectionStart = caretPos + 1;
3210                TK_cur_Field.selectionEnd = caretPos + 1;
3211
3212                if (bTobe == true)
3213                    TouchEnKey_UIEevents(0, TK_cur_Field, "input", dummykey);
3214            }
3215        } else {
3216            if (TK_cur_Field.end - TK_cur_Field.start > 1)
3217                Tk_InputErase(TK_cur_Field);
3218
3219            TK_KeyInputToInputObj(TK_cur_Field, TK_szCh);
3220
3221            if (bTobe == true) {
3222                TK_cur_Field.selectionStart = TK_cur_Field.value.length;
3223                TK_cur_Field.selectionEnd = TK_cur_Field.value.length;
3224                TouchEnKey_UIEevents(0, TK_cur_Field, "input", dummykey);
3225            }
3226        }
3227        TK_cur_Field.selectionStart = TK_cur_Field.selectionEnd;
3228    }
3229
3230    if (tekOption.generate_event == "true" ||
3231		tekOption.generate_event == "yes" || tekOption.generate_event == "on") {
3232        if (TK_szCh >= "0" && TK_szCh <= "9") {
3233            TouchEnKey_UIEevents(0, TK_cur_Field, "keydown", 48);
3234            TouchEnKey_UIEevents(0, TK_cur_Field, "keypress", 48);
3235            TouchEnKey_UIEevents(0, TK_cur_Field, "keyup", 48);
3236        } else if ((TK_szCh <= "z" && TK_szCh >= "a") || (TK_szCh <= "Z" && TK_szCh >= "A")) {
3237            TouchEnKey_UIEevents(0, TK_cur_Field, "keydown", 65);
3238            TouchEnKey_UIEevents(0, TK_cur_Field, "keypress", 65);
3239            TouchEnKey_UIEevents(0, TK_cur_Field, "keyup", 65);
3240        } else {
3241            TouchEnKey_UIEevents(0, TK_cur_Field, "keydown", 189);
3242            TouchEnKey_UIEevents(0, TK_cur_Field, "keypress", 189);
3243            TouchEnKey_UIEevents(0, TK_cur_Field, "keyup", 189);
3244        }
3245    } else {
3246         TouchEnKey_UIEevents(0, TK_cur_Field, "keydown", 120);
3247         TouchEnKey_UIEevents(0, TK_cur_Field, "keypress", 120);
3248         TouchEnKey_UIEevents(0, TK_cur_Field, "keyup", 120);
3249    }
3250
3251    return true;
3252
3253}
3254function TK_EncData_Request(result) {
3255
3256    var frm;
3257    var TK_cur_Field = "";
3258    var TK_cur_E2E_Field = "";
3259    var TK_szCh = "";
3260    var TK_e2eValue = "";
3261
3262    if (tekOption.bstart == false)
3263        return;
3264
3265    var TK_RecvDataLength = result.value.split("_#_").length;
3266    if (TK_RecvDataLength == 4)
3267        TK_e2eValue = result.value.split('_#_')[0];
3268    else
3269        TK_e2eValue = result.value;
3270
3271    if (tekOption.idbase == "true") {
3272
3273        if (tekOption.usegetenc == "false") {
3274            var crypt = document.getElementById(result.EncData).value;
3275            Tk_InputErase(document.getElementById(result.EncData));
3276            document.getElementById(result.EncData).value = crypt + TK_e2eValue;
3277        } else {
3278            //console.log("20190806 - 4-3");
3279            var e2eEle = findElmentByNamesId(result.name);
3280            var nodeLen = document.all.length;
3281            var htmlColl = document.all;
3282
3283            for (var k = 0; k < nodeLen; k++) {
3284                if (result.EncData == htmlColl[k].id) {
3285                    htmlColl[k].value = TK_e2eValue;
3286                    cipherEncText += htmlColl[k].id;
3287                    cipherEncText += "=";
3288                    cipherEncText += TK_e2eValue;
3289                    cipherEncText += "%TK%";
3290                }
3291
3292            }
3293            //console.log("20190806 - 4-4");
3294        }
3295    } else {
3296
3297        if (frm == undefined) {
3298            //console.log("20190806 - 4-6");
3299            if (document.getElementsByName(result.EncData)[0] != undefined)
3300                frm = document.getElementsByName(result.EncData)[0].form;
3301            //console.log("20190806 - 4-7");
3302        }
3303
3304        if (tekOption.usegetenc == "false") {
3305            if (frm != undefined) {
3306                //console.log("20190806 - 4-8");
3307                var crypt = frm[result.EncData].value;
3308                Tk_InputErase(frm[result.EncData]);
3309                frm[result.EncData].value = crypt + TK_e2eValue;
3310            }
3311        } else {
3312            for (var k = 0; k < frm.length; k++) {
3313                if (result.EncData == frm.elements[k].name) {
3314                    frm.elements[k].value = TK_e2eValue;
3315                    cipherEncText += frm.elements[k].name;
3316                    cipherEncText += "=";
3317                    cipherEncText += TK_e2eValue;
3318                    cipherEncText += "%TK%";
3319                }
3320            }
3321        }
3322    }
3323    return;
3324}
3325
3326function TK_InterClear_Request() {
3327    var HiddenEnc = "";
3328    var TK_tmp = "";
3329    if (tekOption.idbase == "true") {
3330        HiddenEnc = "E2E_" + result.inputClear;
3331        TK_tmp = document.getElementById(result.inputClear);
3332        if (isEnc(TK_tmp)) {
3333            Tk_InputErase(document.getElementById(HiddenEnc));
3334            Tk_InputErase(document.getElementById(result.inputClear));
3335            return;
3336        } else {
3337            if (document.getElementById(HiddenEnc) != undefined) {
3338                Tk_InputErase(document.getElementById(HiddenEnc));
3339                Tk_InputErase(document.getElementById(result.inputClear));
3340            }
3341            return;
3342        }
3343    } else {
3344        HiddenEnc = "E2E_" + result.inputClear;
3345        TK_tmp = document.getElementsByName(result.inputClear)[0];
3346        if (isEnc(TK_tmp)) {
3347            Tk_InputErase(document.getElementsByName(HiddenEnc)[0]);
3348            Tk_InputErase(document.getElementsByName(result.inputClear)[0]);
3349            return;
3350        } else {
3351            if (document.getElementsByName(HiddenEnc)[0] != undefined) {
3352                Tk_InputErase(document.getElementsByName(HiddenEnc)[0]);
3353                Tk_InputErase(document.getElementsByName(result.inputClear)[0]);
3354            }
3355            return;
3356        }
3357    }
3358}
3359
3360
3361
3362// 20220520
3363function TK_Rescan_Id() {
3364    if (TK_IsNal(TK_bInit) || TK_bInit == 0) return;
3365    if(!useTouchEnnxKey) return;
3366    try {
3367    	if(getTouchEnNXEType.MSIEBrowser &&!TK_IEDaemonCheck()){
3368    		 TK_Request2("Rescan2", "");
3369   	}
3370   	else{
3371    	
3372            makeEncDataId();
3373            TK_AddEventListner();
3374   	}
3375    } catch (e) {
3376        exlog("_TOUCHENNX", "TK_Rescan() exception");
3377    }
3378}
3379
3380
3381// 20220520
3382function TK_Rescan_Form() {
3383    if (TK_IsNal(TK_bInit)  || TK_bInit == 0) return;
3384    if (!useTouchEnnxKey) return;
3385
3386    try {
3387    	if(getTouchEnNXEType.MSIEBrowser &&  !TK_IEDaemonCheck()){
3388    		 TK_Request2("Rescan2", "");		
3389    	}
3390    	else{
3391    	
3392              for (var i = 0; i < document.forms.length; i++) {
3393                if (GetAttributeFormName(document.forms[i]) != undefined && GetAttributeFormName(document.forms[i]) != touchenexInfo.exFormName)
3394                    makeEncDataEx(document.forms[i]);
3395             }
3396            TK_AddEventListner();
3397
3398        }
3399    } catch (e) {
3400        exlog("_TOUCHENNX", "TK_Rescan() exception");
3401    }
3402}
3403
3404//20220520
3405function TK_EnqueueList_Form(inputObj) {
3406
3407    if (TK_IsNal(inputObj))
3408        return false;
3409
3410    var frmname = inputObj.form.name;
3411    var elename = inputObj.name;
3412
3413    if (getTouchEnNXEType.MSIEBrowser && !TK_IEDaemonCheck() ) {
3414        TK_Request2("EnqueueList", frmname, elename, "");
3415    }
3416
3417    else if (getTouchEnNXEType.MSIEBrowser &&TK_IEDaemonCheck()){
3418   	 TK_AddEventListner2(inputObj);
3419   	
3420   }
3421   
3422    else if (getTouchEnNXEType.WebKitBrowser) {
3423        TK_AddEventListner2(inputObj);
3424    }
3425
3426    if (!TK_IsNal(inputObj)) {
3427        if (isEnc(inputObj)) {
3428            var E2E_ele = null;
3429            Create_E2E_element_Form(inputObj);
3430            E2E_ele = inputObj.form["E2E_" + inputObj.name];
3431
3432            if (!TK_IsNal(E2E_ele))
3433                Tk_InputErase(E2E_ele);
3434        }
3435    }
3436
3437    return true;
3438}
3439
3440//20220520
3441function TK_EnqueueList_Id(inputObj) {
3442
3443    var ret = false;
3444    var eleId = null;
3445
3446
3447    if (TK_IsNal(TK_bInit) || TK_bInit == 0)
3448        return ret;
3449    if (!useTouchEnnxKey)
3450        return ret;
3451
3452    if (TK_IsNal(inputObj))
3453        return false;
3454
3455    eleId = inputObj.id;
3456	
3457    if (getTouchEnNXEType.MSIEBrowser && !TK_IEDaemonCheck()) {
3458        TK_Request2("EnqueueList", "", eleId, "");
3459    }
3460    else if (getTouchEnNXEType.MSIEBrowser && TK_IEDaemonCheck()){
3461    	 TK_AddEventListner2(inputObj);
3462    	
3463    }
3464    
3465    else if (getTouchEnNXEType.WebKitBrowser) {
3466        TK_AddEventListner2(inputObj);
3467    }
3468
3469    if (isEnc(inputObj)) {
3470        var E2E_ele = null;
3471        //Crate_E2E_element(frmname, inputObj);
3472        Create_E2E_element_Id(inputObj);
3473        E2E_ele = document.getElementById("E2E_" + inputObj.id);
3474
3475        if (!TK_IsNal(E2E_ele))
3476            Tk_InputErase(E2E_ele);
3477    }
3478    return true;
3479}
3480
3481function Create_E2E_element(formname, eleObj) {
3482    var E2E_eleName = null;
3483    var E2E_eleObj = null;
3484
3485    if (formname == "") {
3486        Create_E2E_element_Id(eleObj);
3487    } else {
3488        Create_E2E_element_From(eleObj);
3489    }
3490
3491}
3492
3493// 20220520
3494function Create_E2E_element_Form(eleObj) {
3495    var E2E_eleName = null;
3496    var E2E_eleObj = null;
3497
3498    if (!TK_IsNal(eleObj)) {
3499		
3500		// 20230224	input name ¾øÀ» °æ¿ì && º¸¾ÈÇʵ忩ºÎüũ
3501			if(TK_IsNal(eleObj.name) && isSecurityCheck(eleObj)){
3502			 eleObj.name = eleObj.id;
3503			}
3504        E2E_eleName = "E2E_" + eleObj.name;
3505        E2E_eleObj = findElementByName(eleObj.form, E2E_eleName);
3506
3507        if (E2E_eleObj == null) {
3508            E2E_eleObj = document.createElement("input");
3509            E2E_eleObj.type = "hidden";
3510            E2E_eleObj.name = E2E_eleName;
3511            Tk_InputErase(E2E_eleObj);
3512            eleObj.form.appendChild(E2E_eleObj);
3513        }
3514        /* 20230224
3515        else
3516            Tk_InputErase(eleObj);
3517         */
3518    }
3519}
3520
3521// 20220520
3522function Create_E2E_element_Id(eleObj) {
3523    var E2E_eleName = null;
3524    var E2E_eleObj = null;
3525
3526    if (!TK_IsNal(eleObj)) {
3527        E2E_eleName = "E2E_" + eleObj.id;
3528        E2E_eleObj = findElmentByNamesId(E2E_eleName);
3529
3530        if (E2E_eleObj == null) {
3531            E2E_eleObj = document.createElement("input");
3532            E2E_eleObj.type = "hidden";
3533            E2E_eleObj.id = E2E_eleName;
3534            Tk_InputErase(E2E_eleObj);
3535            document.body.appendChild(E2E_eleObj);
3536        }
3537        else
3538            Tk_InputErase(E2E_eleObj);
3539    }
3540}
3541
3542function DrawHiddenDataElementsForm(formObj) {
3543    var e2eEle =null;
3544    var j = 0;
3545    var name = new Array(formObj.elements.length);
3546    var value = new Array(formObj.elements.length);
3547    var len = formObj.elements.length;
3548    var makeEncField = false;
3549
3550    for (var i = 0; i < len; i++) {
3551        makeEncField = false;
3552		// 20230224 j ->  i ·Î º¯°æ
3553        var InputObject = formObj.elements[i];
3554
3555        if (isEnc(InputObject)) {
3556            makeEncField = true;
3557        }
3558        else continue;
3559
3560        if (makeEncField == true) {
3561            Create_E2E_element_Form(InputObject);
3562            j++;
3563        }
3564    }
3565    return j;
3566}
3567
3568function DrawHiddenDataElementsId() {
3569
3570    var j = 0;
3571    var htmlAllColl = document.all;
3572    var len = htmlAllColl.length;
3573    var makeEncField = false;
3574
3575    for (var i = 0; i < len; i++) {
3576        if (htmlAllColl[i].tagName != "INPUT")
3577            continue;
3578        if (htmlAllColl[i].type != "text" && htmlAllColl[i].type != "password")
3579            continue;
3580
3581        makeEncField = false;
3582        var InputObject = htmlAllColl[i];
3583
3584        if (isEnc(InputObject)) {
3585            makeEncField = true;
3586        } else continue;
3587
3588        if (makeEncField == true) {
3589            Create_E2E_element_Id(InputObject);
3590            j++
3591        }
3592    }
3593    return j;
3594}
3595
3596
3597function DrawHiddenDataElementsUnder(inputObj) {
3598
3599    var j = 0;
3600
3601    var len = formObj.elements.length;
3602    var makeEncField = false;
3603
3604    if (TK_IsNal(inputObj)) return;
3605    if (isEnc(inputObj)) {
3606        makeEncField = true;
3607    }
3608
3609    if (makeEncField == true) {
3610        var value = "";
3611        var E2E_eleName = "";
3612        var E2E_eleObj = null;
3613
3614        if (TK_IsAvailble(tekOption.idbase) && tekOption.idbase == true) {
3615            E2E_eleName = "E2E_" + inputObj.id;
3616            E2E_eleObj = findElmentByNamesId(E2E_eleName);
3617
3618        } else {
3619            E2E_eleName = "E2E_" + inputObj.name;
3620            E2E_eleObj = findElementByName(inputObj.form, inputObj.name);
3621        }
3622
3623        if (E2E_eleObj == null) {
3624            E2E_eleObj = document.createElement("input");
3625            E2E_eleObj.type = "hidden";
3626            E2E_eleObj.name = E2E_eleName;
3627            inputObj.appendChild(E2E_eleObj);
3628            Tk_InputErase(E2E_eleObj);
3629        }
3630    }
3631}
3632
3633function GetCipherDataId()
3634{
3635    var cipherEncText="";
3636    var nodeLen = document.all.length;
3637    var htmlColl = document.all;
3638    for (var k = 0; k < nodeLen; k++) {
3639        if (htmlColl[k].id.indexOf('E2E_') != -1) {
3640            cipherEncText += htmlColl[k].id;
3641            cipherEncText += "=";
3642            cipherEncText += htmlColl[k].value;
3643            cipherEncText += "%TK%";
3644        }
3645    }
3646    return cipherEncText;
3647}
3648function GetCipherDataForm(frmObj)
3649{
3650    var cipherEncText = "";
3651    for (var k = 0; k < frmObj.elements.length; k++) {
3652        if (frmObj.elements[k].tagName == "INPUT") {
3653            if (frmObj.elements[k].name.indexOf('E2E_') != -1) {
3654                cipherEncText += frmObj.elements[k].name;
3655                cipherEncText += "=";
3656                cipherEncText += frmObj.elements[k].value;
3657                cipherEncText += "%TK%"
3658            }
3659        }
3660    }
3661    return cipherEncText;
3662}
3663
3664
3665function TK_Isidbase() {
3666    if (TK_IsAvailble(tekOption.idbase) && tekOption.idbase === "true")
3667        return true;
3668    return false;
3669}
3670
3671function TK_IEDaemonCheck(){
3672	if (TK_IEDaemon == true) 
3673		return true;
3674	else return false;
3675	
3676}
3677
3678function TK_MSIEBrowserDaemonCheck(){
3679	if (getTouchEnNXEType.MSIEBrowser && TK_IEDaemonCheck())
3680		return true;
3681	else return false;
3682	
3683}
3684
3685// 20230224  comma À̽´
3686function TK_InputE2EDelete(Obj){
3687		str = "";
3688		Obj.value = null;
3689		E2E_Obj = null;
3690		if(tekOption.idbase == "false"){
3691			E2E_Obj = "E2E_"+ Obj.name;
3692				inputObjelement = document.getElementsByName(E2E_Obj)[0];
3693				if (inputObjelement){
3694					var inputObj_Form = inputObjelement.parentElement;
3695					 inputObjelement.parentNode.removeChild(inputObjelement);
3696					 TK_EnqueueList(inputObj_Form.name, Obj.name);
3697				}
3698		}
3699		else{
3700			E2E_Obj = "E2E_"+ Obj.id;
3701				inputObjelement = document.getElementById(E2E_Obj);
3702				if (inputObjelement){
3703					 inputObjelement.parentNode.removeChild(inputObjelement);
3704					 TK_EnqueueList("", Obj.id);
3705				}	
3706		}
3707}
3708
3709

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.