1(function() { 2 // ìë¨ header daum 주ì API ì¶ê° 3 var headTag = document.getElementsByTagName("head")[0]; 4 var daumPostcodeJs = document.createElement('script'); 5 daumPostcodeJs.type = 'text/javascript'; 6 daumPostcodeJs.src = 'https://t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js'; 7 headTag.appendChild(daumPostcodeJs); 8 function RSObject(){ 9 } 10 11 RSObject.prototype.uuidv4Unique = function(){ 12 return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c => 13 (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) 14 ); 15 } 16 RSObject.prototype.htmlUnescape = function(str){ 17 const textarea = document.createElement("textarea"); 18 textarea.innerHTML = str; 19 return textarea.value; 20 } 21 RSObject.prototype.multiFileImg = function(thisTarget, contentOfFiles){ 22 var deferred = $.Deferred(); 23 var resultFileObj = new Object(); 24 var datacode = thisTarget.data("datacode"); 25 var categorytype = thisTarget.data("categorytype"); 26 var multitype = thisTarget.data("filemultitype"); 27 var accepttype = thisTarget.data("accepttype"); 28 var filecode = thisTarget.data("filecode"); 29 var lengType = thisTarget.data("langtype"); 30 var extchecklist = JSON.parse(thisTarget.data("extchecklist").replace(/'/gi, '"')); 31 32 var resultHtml = ""; 33 if(accepttype == 'normal') { 34 resultHtml += "<div class='badge list' id='" + categorytype + datacode + "file_item_{{ index }}' data-uid='{{ uuid }}' data-filecode='' >"; 35 resultHtml += " <i class='icon icon-doc'></i>";
36 resultHtml += " <a href='javascript:void()' download=''>{{file_name}}</a>"; 37 resultHtml += " <button type='button' class='icon icon-close' onclick='deleteItemAction({{ index }},\"" + categorytype + datacode + "file_item_{{ index }}\")'>ìì </button>"; 38 resultHtml += "</div>"; 39 } 40 41 var acceptlist = ''; 42 extchecklist.forEach(function (el, idx, arr) { 43 if (idx == 0) { 44 acceptlist += '.' + el; 45 } else { 46 acceptlist += ',.' + el; 47 } 48 }); 49 50 $file = $('<input type="file" ' + (multitype == 'multifile' ? 'multiple="multiple"' : '')+' accept="'+acceptlist+'">'); 51 var files_wrap = thisTarget.closest(".files_wrap"); 52 $file.change(function(){ 53 $('#save_btn').prop("disabled",true); 54 var files = $file[0].files; 55 var filesArr = Array.prototype.slice.call(files); 56 var fileRowCnt = 0; 57 var fileTimes = 0; 58 59 if(multitype == 'onefile'){ 60 contentOfFiles = []; 61 } 62 63 if(lengType === 'kor'){ 64 if( (files_wrap.children(".list").length+1) > parseInt(thisTarget.data("uploadcnt"))){ 65 alert('ì ë¡ëë ìµë '+thisTarget.data("uploadcnt")+' ê° ê¹ì§ ê°ë¥í©ëë¤.'); 66 return false; 67 } 68 69 70 if((filesArr.length) > parseInt(thisTarget.data("uploadcnt"))){ 71 alert('ì ë¡ëë ìµë '+thisTarget.data("uploadcnt")+' ê° ê¹ì§ ê°ë¥í©ëë¤.'); 72 return false; 73 } 74 }else{ 75 if( (files_wrap.children(".list").length+1) > parseInt(thisTarget.data("uploadcnt"))){ 76 alert('You can upload up to '+thisTarget.data("uploadcnt")+' files.'); 77 return false; 78 } 79 80 if((filesArr.length) > parseInt(thisTarget.data("uploadcnt"))){ 81 alert('You can upload up to '+thisTarget.data("uploadcnt")+' files.'); 82 return false; 83 } 84 85 } 86 87 filesArr.forEach(function(f, idx) { 88 var _fileLen = f.name.length; 89 var _lastDot = f.name.lastIndexOf('.'); 90 var ext = f.name.substring(_lastDot+1, _fileLen).toLowerCase(); 91 if($.inArray(ext, extchecklist) == -1) { 92 if(lengType === 'kor'){ 93 alert(ext+'íì¼ì ì ë¡ë íì¤ì ììµëë¤.'); 94 }else{ 95 alert(ext + ' files cannot be uploaded.'); 96 } 97 return; 98 } 99 100 function readFileAsync(file) { 101 return new Promise((resolve, reject) => { 102 const reader = new FileReader(); 103 reader.readAsDataURL(file); 104 reader.onload = function(e) { 105 var fileUUID = $util.uuidv4Unique(); 106 var data = { 107 "uuid": fileUUID, 108 "num": contentOfFiles.length+1, 109 "index": contentOfFiles.length, 110 "file_name": f.name, 111 "url_src":e.target.result, 112 "is_delete":false 113 }; 114 // fileElement.push(data); 115 116 var _fileLen = f.name.length; 117 var _lastDot = f.name.lastIndexOf('.'); 118 119 // íì¼ëª , íì¥ì ëª ë§ ì¶ì¶í í ì문ìë¡ ë³ê²½ 120 var _fileName = f.name.substring(0,_lastDot); 121 var _fileExt = f.name.substring(_lastDot, _fileLen).toLowerCase(); 122 const filenameFirst = _fileName; 123 const fileExtension = _fileExt; 124 const newFile = new File([f], filenameFirst+"|"+fileUUID+"|"+datacode+fileExtension, {type: f.type}); 125 // contentOfFiles.push(newFile); 126 fileRowCnt++; 127 // var template = $("#temp_item").html(); 128 var html = Mustache.render(resultHtml, data); 129 console.log(multitype == 'multifile'); 130 if(multitype == 'multifile'){ 131 files_wrap.append(html); 132 }else{ 133 files_wrap.html(html); 134 } 135 resolve(newFile); 136 }; 137 reader.onerror = reject; 138 }); 139 } 140
141 async function processFile() { 142 try { 143 const file = f; 144 const newFile = await readFileAsync(file); 145 contentOfFiles.push(newFile); 146 if(thisTarget.parent().find("ul>li").length > 1){ 147 $('.fileLoading').find('.loading-container').css('margin-top','57px'); 148 } 149 } catch(err) { 150 console.log(err); 151 } 152 } 153 processFile(); 154 }); 155 $file.val(''); 156 setTimeout(function() { 157 resultFileObj = { 158 contentOfFiles: contentOfFiles, 159 categorytype : categorytype, 160 }; 161 deferred.resolve(resultFileObj); 162 $('.fileLoading').remove(); 163 }, fileTimes); 164 }); 165 $file.trigger('click'); 166 return deferred.promise(); 167 } 168 169 RSObject.prototype.multiFiles = function(thisTarget, contentOfFiles){ 170 var deferred = $.Deferred(); 171 var resultFileObj = new Object(); 172 var datacode = thisTarget.data("datacode"); 173 var categorytype = thisTarget.data("categorytype"); 174 var multitype = thisTarget.data("filemultitype"); 175 var accepttype = thisTarget.data("accepttype"); 176 var filecode = thisTarget.data("filecode"); 177 var lengType = thisTarget.data("langtype"); 178 var extchecklist = JSON.parse(thisTarget.data("extchecklist").replace(/'/gi, '"')); 179 180 var resultHtml = ""; 181 if(accepttype == 'normal') { 182 resultHtml += "<div class='badge list' id='" + categorytype + datacode + "file_item_{{ index }}' data-uid='{{ uuid }}' data-filecode='' >"; 183 resultHtml += " <i class='icon icon-doc'></i>";
184 resultHtml += " <a href='javascript:void()' download=''>{{file_name}}</a>"; 185 resultHtml += " <button type='button' class='icon icon-close' onclick='deleteItemAction({{ index }},\"" + categorytype + datacode + "file_item_{{ index }}\")'>ìì </button>"; 186 resultHtml += "</div>"; 187 } 188 189 var acceptlist = ''; 190 extchecklist.forEach(function (el, idx, arr) { 191 if (idx == 0) { 192 acceptlist += '.' + el; 193 } else { 194 acceptlist += ',.' + el; 195 } 196 }); 197 198 $file = $('<input type="file" ' + (multitype == 'multifile' ? 'multiple="multiple"' : '')+' accept="'+acceptlist+'">'); 199 var files_wrap = thisTarget.closest(".files_wrap"); 200 $file.change(function(){ 201 $('#save_btn').prop("disabled",true); 202 var files = $file[0].files; 203 var filesArr = Array.prototype.slice.call(files); 204 var fileRowCnt = 0; 205 var fileTimes = 0; 206 207 if(multitype == 'onefile'){ 208 contentOfFiles = []; 209 } 210 211 212 filesArr.forEach(function(f, idx) { 213 var _fileLen = f.name.length; 214 var _lastDot = f.name.lastIndexOf('.'); 215 var ext = f.name.substring(_lastDot+1, _fileLen).toLowerCase(); 216 if($.inArray(ext, extchecklist) == -1) { 217 alert(ext+'íì¼ì ì ë¡ë íì¤ì ììµëë¤.'); 218 return; 219 } 220 221 function readFileAsync(file) { 222 return new Promise((resolve, reject) => { 223 const reader = new FileReader(); 224 reader.readAsDataURL(file); 225 reader.onload = function(e) { 226 var fileUUID = $util.uuidv4Unique(); 227 var data = { 228 "uuid": fileUUID, 229 "num": contentOfFiles.length+1, 230 "index": contentOfFiles.length, 231 "file_name": f.name, 232 "url_src":e.target.result, 233 "is_delete":false 234 }; 235 // fileElement.push(data); 236 237 var _fileLen = f.name.length; 238 var _lastDot = f.name.lastIndexOf('.'); 239 240 // íì¼ëª , íì¥ì ëª ë§ ì¶ì¶í í ì문ìë¡ ë³ê²½ 241 var _fileName = f.name.substring(0,_lastDot); 242 var _fileExt = f.name.substring(_lastDot, _fileLen).toLowerCase(); 243 const filenameFirst = _fileName; 244 const fileExtension = _fileExt; 245 const newFile = new File([f], filenameFirst+"|"+fileUUID+"|"+datacode+fileExtension, {type: f.type}); 246 // contentOfFiles.push(newFile); 247 fileRowCnt++; 248 // var template = $("#temp_item").html(); 249 var html = Mustache.render(resultHtml, data); 250 console.log(multitype == 'multifile'); 251 if(multitype == 'multifile'){ 252 files_wrap.append(html); 253 }else{ 254 files_wrap.html(html); 255 } 256 resolve(newFile); 257 }; 258 reader.onerror = reject; 259 }); 260 } 261 262 async function processFile() { 263 try { 264 const file = f; 265 const newFile = await readFileAsync(file); 266 contentOfFiles.push(newFile); 267 if(thisTarget.parent().find("ul>li").length > 1){ 268 $('.fileLoading').find('.loading-container').css('margin-top','57px'); 269 } 270 } catch(err) { 271 console.log(err); 272 } 273 } 274 processFile(); 275 }); 276 $file.val(''); 277 setTimeout(function() { 278 resultFileObj = { 279 contentOfFiles: contentOfFiles, 280 categorytype : categorytype, 281 }; 282 deferred.resolve(resultFileObj); 283 $('.fileLoading').remove(); 284 }, fileTimes); 285 }); 286 $file.trigger('click'); 287 return deferred.promise(); 288 } 289 290 // -------------- ë¤ì 주ì api -------------------- // 291 /** 292 * ë¤ì 주ì api ê¸°ë¥ ### 293 * ì¤ëª )
294 * 주ì api를 ì°ëí´ ê° input ì¡°ê±´ì ë§ê² ì¤ì . 295 * 296 * @since 2023.08.08 297 * @param 298 * @return 299 * ************************* 300 * ## ì½ë íì¤í 리 ## 301 * ë ì§ | ìì ë´ì© | ìì±ì 302 * 2023.08.08 | ìµì´ìì± | í©ê²½í 303 * ************************* 304 */ 305 RSObject.prototype.daumPostcode = function(e,type){ 306 // íì¬ scroll ìì¹ë¥¼ ì ì¥í´ëëë¤. 307 $('.addressSrch').remove(); 308 var postcodeHtml = ''; 309 postcodeHtml +='<div id="'+type+'AddressSrch" class="addressSrch" style="display:none;border:1px solid;width:92%;height:300px;margin:-8px 0;position:absolute; z-index: 1;">' 310 postcodeHtml +=' <img src="//t1.daumcdn.net/postcode/resource/images/close.png" style="cursor:pointer;position:absolute;right:0px;top:-1px;z-index:1" onclick="$util.foldDaumPostcode(\''+type+'\')" alt="ì 기 ë²í¼">'; 311 postcodeHtml +='</div>'; 312 $(e).parent().parent().find('div').eq(0).after(postcodeHtml); 313 314 var currentScroll = Math.max(document.body.scrollTop, document.documentElement.scrollTop); 315 var addressSrch = document.getElementById(type+'AddressSrch'); 316 new daum.Postcode({ 317 oncomplete: function(data) { 318 // ê²ìê²°ê³¼ í목ì í´ë¦íìë ì¤íí ì½ë를 ìì±íë ë¶ë¶. 319 320 // ê° ì£¼ìì ë ¸ì¶ ê·ì¹ì ë°ë¼ 주ì를 ì¡°í©íë¤. 321 // ë´ë ¤ì¤ë ë³ìê° ê°ì´ ìë ê²½ì°ì 공백('')ê°ì ê°ì§ë¯ë¡, ì´ë¥¼ ì°¸ê³ íì¬ ë¶ê¸° íë¤. 322 var addr = ''; // 주ì ë³ì 323 var extraAddr = ''; // ì°¸ê³ í목 ë³ì 324 325 //ì¬ì©ìê° ì íí 주ì íì ì ë°ë¼ í´ë¹ 주ì ê°ì ê°ì ¸ì¨ë¤. 326 if (data.userSelectedType === 'R') { // ì¬ì©ìê° ëë¡ëª 주ì를 ì ííì ê²½ì° 327 addr = data.roadAddress; 328 } else { // ì¬ì©ìê° ì§ë² 주ì를 ì ííì ê²½ì°(J) 329 addr = data.jibunAddress; 330 } 331 332 // ì¬ì©ìê° ì íí 주ìê° ëë¡ëª íì ì¼ë ì°¸ê³ í목ì ì¡°í©íë¤. 333 if(data.userSelectedType === 'R'){ 334 // ë²ì ëëª ì´ ìì ê²½ì° ì¶ê°íë¤. (ë²ì 리ë ì ì¸) 335 // ë²ì ëì ê²½ì° ë§ì§ë§ 문ìê° "ë/ë¡/ê°"ë¡ ëëë¤. 336 if(data.bname !== '' && /[ë|ë¡|ê°]$/g.test(data.bname)){ 337 extraAddr += data.bname; 338 } 339 // ê±´ë¬¼ëª ì´ ìê³ , ê³µë주íì¼ ê²½ì° ì¶ê°íë¤. 340 if(data.buildingName !== '' && data.apartment === 'Y'){ 341 extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName); 342 } 343 // íìí ì°¸ê³ íëª©ì´ ìì ê²½ì°, ê´í¸ê¹ì§ ì¶ê°í ìµì¢ 문ìì´ì ë§ë ë¤. 344 if(extraAddr !== ''){ 345 extraAddr = ' (' + extraAddr + ')'; 346 } 347 // ì¡°í©ë ì°¸ê³ í목ì í´ë¹ íëì ë£ëë¤. 348 document.getElementById(type+"Address").value = extraAddr; 349 350 } else { 351 document.getElementById(type+"Address").value = ''; 352 } 353 354 // ì°í¸ë²í¸ì 주ì ì 보를 í´ë¹ íëì ë£ëë¤. 355 document.getElementById(type+"Postcode").readOnly = false; 356 document.getElementById(type+"Address").readOnly = false; 357 358 document.getElementById(type+"Postcode").value = data.zonecode; 359 document.getElementById(type+"Address").value = addr; 360 // 커ì를 ìì¸ì£¼ì íëë¡ ì´ëíë¤. 361 document.getElementById(type+"DetailAddress").focus(); 362 363 // iframeì ë£ì element를 ìë³´ì´ê² íë¤. 364 // (autoClose:false 기ë¥ì ì´ì©íë¤ë©´, ìë ì½ë를 ì ê±°í´ì¼ íë©´ìì ì¬ë¼ì§ì§ ìëë¤.) 365 addressSrch.style.display = 'none'; 366 $('.addressSrch').remove(); 367 368 document.getElementById(type+"Postcode").readOnly = true; 369 document.getElementById(type+"Address").readOnly = true; 370 371 // ì°í¸ë²í¸ 찾기 íë©´ì´ ë³´ì´ê¸° ì´ì ì¼ë¡ scroll ìì¹ë¥¼ ëë린ë¤. 372 document.body.scrollTop = currentScroll; 373 }, 374 // ì°í¸ë²í¸ 찾기 íë©´ í¬ê¸°ê° ì¡°ì ëììë ì¤íí ì½ë를 ìì±íë ë¶ë¶. iframeì ë£ì elementì ëì´ê°ì ì¡°ì íë¤. 375 onresize : function(size) { 376 addressSrch.style.height = size.height+'px'; 377 }, 378 width : '100%', 379 height : '100%', 380 maxSuggestItems: 5 381 }).embed(addressSrch); 382 383 // iframeì ë£ì element를 ë³´ì´ê² íë¤. 384 addressSrch.style.display = 'block'; 385 } 386 387 RSObject.prototype.foldDaumPostcode = function(type){ 388 $('.addressSrch').remove(); 389 } 390 391 RSObject.prototype.autoHyphen = function(target){ 392 let str = target.value.replace(/[^0-9]/g, ''); 393 // ì ì ì í (02) ì²ë¦¬ 394 if (str.startsWith('02')) { 395 if (str.length > 2 && str.length <= 5) { 396 str = str.replace(/^(\d{2})(\d{1,3})$/, '$1-$2'); 397 } else if (str.length > 5 && str.length <= 9) { 398 str = str.replace(/^(\d{2})(\d{3,4})(\d{0,4})$/, '$1-$2-$3'); 399 } else if (str.length >= 10) { 400 str = str.replace(/^(\d{2})(\d{4})(\d{4})$/, '$1-$2-$3'); 401 } 402 } 403 // í´ëì í ëë 기í ì§ìë²í¸ (010, 031 ë±) 404 else { 405 if (str.length > 3 && str.length <= 7) { 406 str = str.replace(/^(\d{3})(\d{1,4})$/, '$1-$2'); 407 } else if (str.length > 7) { 408 str = str.replace(/^(\d{3})(\d{3,4})(\d{4})$/, '$1-$2-$3'); 409 } 410 } 411 target.value = str; 412 } 413 414 if(!window.$util){ 415 window.$util = new RSObject(); 416 } 417})();
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.