123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378 |
- var AwtOn = '1';
- var AwtServerIp = "128.127.100.128";
- var AwtServerPort = "8080";
- var AwtSearchUrl = "http://" + AwtServerIp + ":" + AwtServerPort + "/awtSearchKnuh.jsp";
- var AwtAjaxUrl = "./awtAjaxKnuh.jsp";
- AwtBrowser.navigate(AwtSearchUrl);
- var AwtCtrl = null;
- var AwtCtrlDatagrid = null;
- var AwtCtrlType = null;
- var AwtWordBegin = -1;
- var AwtWordEnd = -1;
- var AwtSendWord = null;
- var AwtCarrotPos = 0;
- function AwtSearchKnuh() {
- if (event.keyCode == 113) {
- if (AwtGetSearchWordPopup()) {
- //alert("f '" + AwtWordBegin);
- //alert("f '" + AwtWordEnd);
- //alert("f '" + AwtSendWord + "'");
- if (AwtSendWord != "") {
- AwtBrowser.document.parentWindow.execScript("AwtSearchLike('" + AwtAjaxUrl + "', '" + AwtSendWord + "')", "javascript");
-
- attachAwtByObject();
- AwtShow();
- }
- }
- } else if (event.keyCode == 32 || event.keyCode == 13 || event.keyCode == 188 || event.keyCode == 190 || event.keyCode == 222) { //,188 .190 '222
- if (AwtOn != '1')
- return;
-
- if (AwtGetSearchWord()) {
- //alert("f '" + AwtWordBegin);
- //alert("f '" + AwtWordEnd);
- //alert("f '" + AwtSendWord + "'");
-
- AwtBrowser.document.parentWindow.execScript("AwtSearchOne('" + AwtAjaxUrl + "', '" + AwtSendWord + "')", "javascript");
- }
- }
- }
- function attachAwtByObject() {
- if (document.controls(event.currentTarget).elementName.replace("xforms:", "") == "datagrid") {
- AwtCtrl = document.controls(event.currentTarget).input;
- AwtCtrlType = "datagrid";
- } else {
- AwtCtrl = document.controls(event.currentTarget);
- AwtCtrlType = document.controls(event.currentTarget).elementName;
- }
- var top = 0;
- var left = 0;
- var width = 0;
- var height = 0;
- /*
- if (document.controls(objId).elementName == "xforms:datagrid")
- objId = objId + ".input";
-
- var obj = document.controls(objId);
- */
- var obj = AwtCtrl;
- var pObj = obj.parent;
-
- while (pObj != null && pObj.attribute("id") != "body") {
- top = top + parseInt(pObj.attribute("top").replace("px", ""));
- left = left + parseInt(pObj.attribute("left").replace("px", ""));
-
- //alert(pObj.attribute("id") + "-" + top);
-
- pObj = pObj.parent;
- }
-
- width = parseInt(obj.attribute("width").replace("px", ""));
- height = parseInt(obj.attribute("height").replace("px", ""));
- top = top + parseInt(obj.attribute("top").replace("px", ""));
- left = left + parseInt(obj.attribute("left").replace("px", ""));
-
- //alert(window.height + "-" + top + "-" + height + "-" + 311);
- if (window.height < top + height + 190) {
- top = top - 190 - height;
- //alert("A" + top);
- } else {
- //alert("B" + top);
- }
-
- //alert(window.width + "-" + left + "-" + 209);
- if (window.width < left + 209) {
- //left = left - 209;
- //alert("C" + left);
- } else {
- //alert("D" + left);
- }
- //alert(window.height + "-" + top);
- //alert(window.height + "-" + left);
- AwtGroup.attribute("top") = top + height;
- AwtGroup.attribute("left") = left;
- //alert(AwtGroup.attribute("top"));
- //alert(AwtGroup.attribute("left"));
- //alert('attachAwtByObject-' + AwtShowSearch);
- }
- function AwtGetSearchWordPopup() {
- if (document.controls(event.currentTarget).elementName.replace("xforms:", "") == "datagrid") {
- //alert('데이터그리드에서는 F2(단어조회창) 기능을 사용할 수 없습니다\r(실제 운영에서는 알림 메세지 없음)');
- //return false;
-
- AwtCtrlDatagrid = document.controls(event.currentTarget);
- AwtCtrl = document.controls(event.currentTarget).input;
- AwtCtrlType = "datagrid";
- if (AwtCtrl.attribute("visible") == "hidden")
- return;
- } else {
- AwtCtrlDatagrid = null;
- AwtCtrl = document.controls(event.currentTarget);
- AwtCtrlType = document.controls(event.currentTarget).elementName;
- }
- if (AwtCtrl.selBegin != AwtCtrl.selEnd)
- return false;
-
- AwtCarrotPos = AwtCtrl.selEnd;
-
- var text = AwtCtrl.currentText;
-
- //캐럿의 위치를 기준으로 앞으로 구분자를 찾음
- //구분자을 만나면 캐럿위치의 단어의 시작, 끝 부분임(단, 단어가 시작하기 전에 구분자를 만나면 무시)
- var foundC = false;
-
- var nowWordStartPos = AwtCtrl.selBegin - 1; //space를 못찾으면 그냥 첫 위치(0)가 들어감
- for (j = nowWordStartPos; j >= 0; j--) {
- //alert(j + " " + text.charAt(j) + " " + foundC);
- if (text.charAt(j) == ' ' //space
- || text.charAt(j) == ' ' //tab
- || text.charAt(j) == '\n' //enter
- || text.charAt(j) == '.' //.
- || text.charAt(j) == ',' //,
- || text.charAt(j) == '\'' //'
- || text.charAt(j) == '"' //"
- ) {
- nowWordStartPos = j + 1;
- foundC = true;
- break;
- }
- }
- if (!foundC)
- nowWordStartPos = 0; //구문의 첫 글자부터 찾을 단어의 시작임
-
- //alert(nowWordStartPos);
-
- foundC = false;
- for (k = nowWordStartPos; k < text.length; k++) {
- if (text.charAt(k) == ' ' //space
- || text.charAt(k) == ' ' //tab
- || text.charAt(k) == '\n' //enter
- || text.charAt(k) == '.' //.
- || text.charAt(k) == ',' //,
- || text.charAt(k) == '\'' //'
- || text.charAt(k) == '"' //"
- ) {
- nowWordEndPos = k;
- foundC = true;
- break;
- }
- }
-
- if (!foundC)
- nowWordEndPos = text.length; //구문의 끝 글자까지 찾을 단어임
-
- if (nowWordStartPos == nowWordEndPos)
- return false;
-
- AwtSendWord = text.substring(nowWordStartPos, nowWordEndPos);
- AwtWordBegin = nowWordStartPos;
- AwtWordEnd = nowWordEndPos;
-
- return true;
- }
- function AwtGetSearchWord() {
- if (document.controls(event.currentTarget).elementName.replace("xforms:", "") == "datagrid") {
- AwtCtrlDatagrid = document.controls(event.currentTarget);
- AwtCtrl = document.controls(event.currentTarget).input;
- AwtCtrlType = "datagrid";
- } else {
- AwtCtrlDatagrid = null;
- AwtCtrl = document.controls(event.currentTarget);
- AwtCtrlType = document.controls(event.currentTarget).elementName;
- }
- if (AwtCtrl.selBegin != AwtCtrl.selEnd)
- return false;
-
- AwtCarrotPos = AwtCtrl.selEnd;
-
- var text = AwtCtrl.currentText;
-
- //캐럿의 위치를 기준으로 앞으로 구분자를 찾음
- //구분자을 만나면 캐럿위치의 단어의 시작, 끝 부분임(단, 단어가 시작하기 전에 구분자를 만나면 무시)
- var beforeIsGubun = false;
- var found1 = false;
- var foundC = false;
-
- var nowWordStartPos = AwtCtrl.selBegin - 1; //space를 못찾으면 그냥 첫 위치(0)가 들어감
- for (j = nowWordStartPos; j >= 0; j--) {
- //alert(j + " " + text.charAt(j) + " " + foundC);
- if (text.charAt(j) == ' ' //space
- || text.charAt(j) == ' ' //tab
- || text.charAt(j) == '\n' //enter
- || text.charAt(j) == '.' //.
- || text.charAt(j) == ',' //,
- || text.charAt(j) == '\'' //'
- || text.charAt(j) == '"' //"
- ) {
- if (j == nowWordStartPos) { //처음부터 구분자가 나오면
- if (beforeIsGubun == true) //좀전에 찾앗던 단어가 구분자이면...
- return false; //구분자가 두번연속으로 나온 경우리므로 return
- nowWordStartPos = j - 1; //구분자가 두번 반복될때를 대비해서 처음시작을 하나 이동시킴
- //alert("yyy" + nowWordStartPos);
- beforeIsGubun = true; //지금 찾은 단어가 구분자였음을 기록하고
- } else {
- if (foundC) {
- found1 = true;
- nowWordStartPos = j + 1;
- //alert("xxx" + nowWordStartPos);
- break;
- }
- }
- } else
- foundC = true;
- }
- if (!found1)
- if (nowWordStartPos == -1)
- return false; //내용이 모두 구분자임, 찾을 단어가 없음
- else
- nowWordStartPos = 0; //구문의 첫 글자부터 찾을 단어의 시작임
-
- //alert(nowWordStartPos);
-
- var found2 = false;
- var nowWordEndPos = 0;
- for (k = nowWordStartPos; k < text.length; k++) {
- if (text.charAt(k) == ' ' //space
- || text.charAt(k) == ' ' //tab
- || text.charAt(k) == '\n' //enter
- || text.charAt(k) == '.' //.
- || text.charAt(k) == ',' //,
- || text.charAt(k) == '\'' //'
- || text.charAt(k) == '"' //"
- ) {
- found2 = true;
- nowWordEndPos = k;
- // alert("A" + nowWordEndPos);
- break;
- }
- }
- if (found2)
- nowWordEndPos; //찾아진 구분자까지
- else {
- if (text.charAt(text.length - 1) == ' ' //space
- || text.charAt(text.length - 1) == ' ' //tab
- || text.charAt(text.length - 1) == '\n' //enter
- || text.charAt(text.length - 1) == '.' //.
- || text.charAt(text.length - 1) == ',' //,
- || text.charAt(text.length - 1) == '\'' //'
- || text.charAt(text.length - 1) == '"' //"
- )
- nowWordEndPos = text.length - 1; //마지막 글자까지
- else
- nowWordEndPos = text.length; //마지막 글자까지
- //alert("B" + nowWordEndPos);
- }
-
- //alert(nowWordEndPos);
-
- AwtSendWord = text.substring(nowWordStartPos, nowWordEndPos);
- AwtWordBegin = nowWordStartPos;
- AwtWordEnd = nowWordEndPos;
-
- return true;
- }
- function AwtHide() {
- AwtGroup.visible = false;
- if (AwtCtrlType != "datagrid" && AwtCtrl != null) {
- model.setFocus("AwtGroup");
- model.setFocus(AwtCtrl.attribute("id"));
- }
-
- if (AwtCtrl != null) {
- AwtCtrl.selEnd = AwtCarrotPos;
- AwtCtrl.selBegin = AwtCarrotPos;
- }
- }
- function AwtShow() {
- AwtGroup.visible = true;
- model.setFocus("AwtBrowser");
- AwtBrowser.document.parentWindow.execScript("focus()", "javascript");
- }
- function AwtSetResult(awtResult, awtMode) {
- var result = null;
- var hanengmode = null;
- if (awtMode == "matchone") {
- var tokens = awtResult.split("||");
- hanengmode = tokens[0];
- result = tokens[1];
- } else {
- result = awtResult;
- }
-
- if (AwtCtrlType != "datagrid" && AwtCtrl != null) {
- } else {
- if (AwtCtrlDatagrid != null) {
- AwtCtrlDatagrid.editCell();
- }
- }
-
- if (result == AwtSendWord)
- return;
-
- var first = AwtCtrl.currentText.substr(0, AwtWordBegin);
- var last = AwtCtrl.currentText.substr(AwtWordEnd, AwtCtrl.currentText.length);
-
- var cnt = 1;
- if (awtMode == "autocomplete")
- cnt = 0;
-
- AwtCarrotPos = (first + result).length + cnt;
-
- if (AwtCtrlType != "datagrid" && AwtCtrl != null) {
- model.setFocus("AwtGroup");
- model.setFocus(AwtCtrl.attribute("id"));
- } else {
- if (AwtCtrlDatagrid != null) {
- model.setFocus("AwtGroup");
- model.setFocus(AwtCtrl.attribute("id"));
- AwtCtrlDatagrid.editCell();
- }
- }
- AwtCtrl.currentText = first + result + last;
-
- if (AwtCtrl != null) {
- if (awtMode == "matchone") {
- if (hanengmode == "1") {
- AwtCtrl.attribute("imemode") = "alpha";
- model.setFocus("AwtGroup");
- model.setFocus(AwtCtrl.attribute("id"));
- } else if (hanengmode == "2") {
- AwtCtrl.attribute("imemode") = "hangul";
- model.setFocus("AwtGroup");
- model.setFocus(AwtCtrl.attribute("id"));
- }
- }
-
- if (AwtCtrlType != "datagrid" && AwtCtrl != null) {
- } else {
- if (AwtCtrlDatagrid != null) {
- AwtCtrlDatagrid.editCell();
- }
- }
- AwtCtrl.selEnd = AwtCarrotPos;
- AwtCtrl.selBegin = AwtCarrotPos;
- }
-
- AwtCtrl = null;
- AwtCtrlType = null;
- }
|