1 2const COLOR_DANGER = "#dc512f"; 3 4 5(function($) { 6 7 $.searchArray = function(array, field, value) 8 { 9 for (var i in array) 10 { 11 if (array[i][field] == value) 12 { 13 return array[i]; 14 } 15 } 16 }; 17 18 $.fn.zip = function(settings) 19 { 20 var defaultSettings = { 21 searchButton: ".btn_search", 22 zipCodeElement: ".zip_area", 23 addressElement: ".address_area" 24 }; 25 settings = $.extend(defaultSettings, settings || {}); 26 27 return $(this).each(function() { 28 var manager = ZipManager._get($(this)); 29 30 manager.init(settings); 31 }); 32 33 }; 34 35 /** 36 ì¬ì©ë°©ë² : 37 38 var options = { 39 nameField: "", 40 41 valueField: "", 42 43 list: [ 44 object1, object2, "option1", "option2", object3 45 ], 46 47 prepend: { 48 name: "", 49 value: "" 50 }, 51 52 postpend: { 53 name: "", 54 value: "" 55 } 56 }; 57 58 $(selector).combo("make", options); 59 */ 60 61 $.fn.combo = function(jobs, options) { 62 63 return $(this).each(function() { 64 var manager = ComboManager._get($(this)); 65 66 if ("make" == jobs) 67 { 68 manager.make(options); 69 } 70 }); 71 72 }; 73 74 $.fn.table = function(job, options) 75 { 76 return $(this).each(function() { 77 var manager = TableManager.getManager($(this)); 78 79 if ("make" == job) 80 { 81 manager.make(options); 82 } 83 else if ("addData" == job) 84 { 85 manager.addData(options); 86 } 87 else if ("sort" == job) 88 { 89 manager.sort(options); 90 } 91 else if ("filter" == job) 92 { 93 manager.filter(options); 94 } 95 else if ("clear" == job) 96 { 97 manager.clear(); 98 } 99 }); 100 }; 101 102 103 $.fn.fillData = function(data) { 104 return $(this).each(function(index, item) { 105 __fillDataSlot(item, data); 106 }); 107 }; 108 109 $.fn.fillData20 = function(data) { 110 return $(this).each(function(index, item) { 111 __fillDataSlot(item, data); 112 }); 113 }; 114 115 116 $.phoneNumber = function(phoneNumber, what) 117 { 118 if (!phoneNumber) 119 { 120 return ""; 121 } 122 123 var index1 = phoneNumber.indexOf("-"); 124 var index2 = phoneNumber.indexOf("-", index1 + 1); 125 126 if (index1 >= 0) 127 { 128 if (what == 1) 129 { 130 return phoneNumber.substring(0, index1); 131 } 132 else if (what == 2) 133 { 134 return phoneNumber.substring(index1 + 1, index2); 135 } 136 else 137 { 138 return phoneNumber.substring(index2 + 1); 139 } 140 } 141 else 142 { 143 return ""; 144 } 145 }; 146 147 $.isEmpty = function(value) { 148 149 return (!value || (value + "").trim().length == 0); 150 151 }; 152 153 /* ì°í¸ë²í¸ ê²ì - by daum */ 154 function ZipManager(elem) 155 { 156 this.elem = elem; 157 } 158 159 ZipManager.prototype.init = function(settings) 160 { 161 this.settings = settings; 162 163 var this1 = this; 164 $(settings.searchButton).on("click", function() { 165 this1._doSearch(); 166 }); 167 }; 168 169 ZipManager.prototype._doSearch = function() 170 { 171 var this1 = this; 172 new daum.Postcode({ 173 oncomplete: function(data) { 174 if (data) 175 { 176 $(this1.settings.zipCodeElement).val(data.zonecode); 177 $(this1.settings.addressElement).val(data.address); 178 } 179 } 180 }).open(); 181 }; 182 183 ZipManager._instances = []; 184 185 ZipManager._get = function(elem) 186 { 187 for (var i in ZipManager._instances) 188 { 189 if (ZipManager._instances[i].elem.is(elem)) 190 { 191 return ZipManager._instances[i]; 192 } 193 } 194 195 return ZipManager._make(elem); 196 }; 197 198 ZipManager._make = function(elem) 199 { 200 var instance = new ZipManager(elem); 201 ZipManager._instances.push(instance); 202 203 return instance; 204 } 205 206 207 /* 콤보 ë°ì¤ */ 208 function ComboManager(elem) 209 { 210 this.elem = elem; 211 } 212 213 ComboManager.prototype.make = function(options) 214 { 215 this.elem.empty(); 216 217 if (options.prepend) 218 { 219 for (var i in options.prepend) 220 { 221 this.appendOption(options.prepend[i].name, options.prepend[i].value); 222 } 223 } 224 225 for (var i in options.list) 226 { 227 var name; 228 var value; 229 230 if (typeof options.list[i] == "string") 231 { 232 name = options.list[i]; 233 value = options.list[i]; 234 } 235 else 236 { 237 name = extractData(options.list[i], options.nameField); 238 value = extractData(options.list[i], options.valueField); 239 } 240 241 this.appendOption(name, value); 242 } 243 244 if (options.postpend) 245 { 246 for (var i in options.postpend) 247 { 248 this.appendOption(options.postpend[i].name, options.postpend[i].value); 249 } 250 } 251 }; 252 253 ComboManager.prototype.appendOption = function(name, value) 254 { 255 var option = $("<option />"); 256 option.attr("value", value); 257 option.html(name); 258 259 this.elem.append(option); 260 }; 261 262 ComboManager._list = []; 263 264 ComboManager._get = function(elem) { 265 for (var i in ComboManager._list) 266 { 267 if (elem.is(ComboManager._list[i].elem)) 268 { 269 return ComboManager._list[i]; 270 } 271 } 272 273 return ComboManager._make(elem); 274 }; 275 276 ComboManager._make = function(elem) 277 { 278 var manager = new ComboManager(elem); 279 ComboManager._list.push(manager); 280 281 return manager; 282 }; 283 284 285 /* 286 * Table Manager 287 */ 288 function TableManager(elem) 289 { 290 this.elem = elem; 291 this.list = []; 292 this.sortDirection = 1; 293 } 294 295 TableManager.prototype.make = function(options) 296 { 297 this.options = options; 298 299 this.elem.addClass("table"); 300 this.elem.addClass("table-fixed"); 301 302 this._makeHeader(options); 303 this._makeBody(options); 304 305 }; 306 307 TableManager.prototype.addData = function(data) 308 { 309 if (Array.isArray(data)) 310 { 311 for (var i in data) 312 { 313 this.list.push(data[i]); 314 this._addRow(data[i]); 315 } 316 } 317 else 318 { 319 this.list.push(data); 320 this._addRow(data); 321 } 322 }; 323 324 TableManager.prototype.sort = function(field) 325 { 326 if (this.sortField == field) 327 { 328 this.sortDirection *= -1; 329 } 330 else 331 { 332 this.sortField = field; 333 this.sortDirection = 1; 334 } 335 336 var this1 = this; 337 this.list.sort(function(a, b) { 338 return ((this1._extractData(a, field) > this1._extractData(b, field)) ? 1 : -1) * this1.sortDirection; 339 }); 340 341 this._redrawHeader(); 342 this._redrawRows(); 343 344 if (this.options.callbackSort) 345 { 346 this.options.callbackSort(field, this.sortDirection); 347 } 348 }; 349 350 TableManager.prototype.filter = function(filterOption) 351 { 352 this.filterField = filterOption.field; 353 this.filterValue = filterOption.value; 354 355 this._redrawRows(); 356 }; 357 358 TableManager.prototype.clear = function() 359 { 360 this.list.splice(0, this.list.length); 361 this.tbody.empty(); 362 }; 363 364 365 TableManager.prototype._makeHeader = function() 366 { 367 this.thead = $("<thead />"); 368 this.elem.append(this.thead); 369 370 this._redrawHeader(); 371 }; 372 373 TableManager.prototype._makeBody = function(options) 374 { 375 this.tbody = $("<tbody />"); 376 this.elem.append(this.tbody); 377 378 this.tbody.css("height", $(window).height() - 220); 379 380 this.tbody.on("contextmenu", function(event) { 381 event.preventDefault(); 382 }); 383 384 var this1 = this; 385 if (options.eventHandlers) 386 { 387 for (var i in options.eventHandlers) 388 { 389 this.tbody.on(options.eventHandlers[i].type, function(event) { 390 var tr1 = $(event.target).parent("tr"); 391 var data = this1._getData(tr1.attr("data-key")); 392 393 for (var j in options.eventHandlers) 394 { 395 if (options.eventHandlers[j].type == event.type) 396 { 397 if (event.type == "taphold") 398 { 399 event.pageX = __pageX; 400 event.pageY = __pageY; 401 } 402 403 options.eventHandlers[j].callback(event, data); 404 } 405 } 406 }); 407 } 408 } 409 } 410 411 TableManager.prototype._redrawHeader = function() 412 { 413 this.thead.empty(); 414 415 this.thead.append("<tr />"); 416 417 for (var i in this.options.columns) 418 { 419 this._appendHeaderColumn(this.options.columns[i]); 420 } 421 }; 422 423 TableManager.prototype._appendHeaderColumn= function(column) 424 { 425 var title = column.title; 426 if (column.field == this.sortField) 427 { 428 title += " " + (this.sortDirection == 1 ? "↓" : "↑"); 429 } 430 431 var th = $("<th />
431"); 432 th.html(title); 433 th.addClass(column.clazz); 434 435 this.thead.find("tr").append(th); 436 437 var this1 = this; 438 th.bind("click", function() { 439 this1.sort(column.field); 440 }); 441 }; 442 443 TableManager.prototype._redrawRows = function() 444 { 445 this.tbody.empty(); 446 447 var list = []; 448 449 if (this.filterField && this.filterValue) 450 { 451 for (var i in this.list) 452 { 453 var value = this._extractData(this.list[i], this.filterField) + ""; 454 if (value && value.indexOf(this.filterValue) >= 0) 455 { 456 list.push(this.list[i]); 457 } 458 } 459 } 460 else 461 { 462 list = this.list; 463 } 464 465 for (var i in list) 466 { 467 this._addRow(list[i]); 468 } 469 }; 470 471 TableManager.prototype._addRow = function(rowData) 472 { 473 var tr = $("<tr />"); 474 475 for (var i in this.options.columns) 476 { 477 this._appendColumn(tr, this.options.columns[i], rowData); 478 } 479 480 this.tbody.append(tr); 481 482 483 if (this.options.keyField) 484 { 485 tr.attr("data-key", this._extractData(rowData, this.options.keyField)); 486 } 487 }; 488 489 TableManager.prototype._appendColumn = function(tr, column, rowData) 490 { 491 var td = $("<td />"); 492 td.css("width", "300px"); 493 494 var content = ""; 495 if (column.fn && typeof(column.fn) == "function") 496 { 497 content = column.fn(rowData); 498 } 499 else 500 { 501 content = this._extractData(rowData, column.field); 502 } 503 504 td.addClass(column.clazz); 505 td.html(content + " "); 506 507 tr.append(td); 508 }; 509 510 TableManager.prototype._extractData = function(object, column) 511 { 512 if (!object || !column) 513 { 514 return ""; 515 } 516 517 var index = column.indexOf("."); 518 if (index < 0) 519 { 520 return object[column]; 521 } 522 else 523 { 524 var pre = column.substring(0, index); 525 526 return this._extractData(object[pre], column.substring(index + 1)); 527 } 528 529 }; 530 531 TableManager.prototype._getData = function(key) 532 { 533 if (this.options.keyField) 534 { 535 for (var i in this.list) 536 { 537 if (key == this._extractData(this.list[i], this.options.keyField)) 538 { 539 return this.list[i]; 540 } 541 } 542 } 543 } 544 545 546 var __tableManagers = []; 547 548 TableManager.getManager = function(elem) 549 { 550 for (var i in __tableManagers) 551 { 552 if (elem.is(__tableManagers[i].elem)) 553 { 554 return __tableManagers[i]; 555 } 556 } 557 558 return TableManager.makeManager(elem); 559 }; 560 561 TableManager.makeManager = function(elem) 562 { 563 var manger = new TableManager(elem); 564 __tableManagers.push(manger); 565 566 return manger; 567 }; 568 569 570 571 function __fillDataSlot(slot, data) 572 { 573 var dataField = $(slot).attr("data-field") || $(slot).attr("data-value") || $(slot).attr("name") || ""; 574 var dataFunction = window[$(slot).attr("data-function")]; 575 var value = extractData(data, dataField); 576 //console.log("fillDataSlot", $(slot), dataField, value, data); 577 578 if (!dataFunction && $(slot).data("function")) { 579 var fnStr = $(slot).data("function"); 580 var fn = eval(fnStr); 581 if (fn && typeof(fn) == "function") { 582 dataFunction = fn; 583 } 584 } 585 586 if ((value === null) || (value === undefined) || (value === "")) 587 { 588 value = ""; 589 590 if ($(slot).attr("data-empty")) 591 { 592 value = $(slot).attr("data-empty"); 593 } 594 } 595 596 value = value + ""; 597 598 if (dataFunction) 599 { 600 dataFunction(slot, data, value); 601 } 602 else 603 { 604 if ($(slot).attr('data-postfix')) 605 { 606 value += $(slot).attr('data-postfix'); 607 } 608 609 if (($(slot).attr("type") == "checkbox") || ($(slot).attr("type") == "radio")) 610 { 611 //console.log("dataField", dataField, value, $(slot).attr("value"), (($(slot).attr("data-match") == value) || ($(slot).attr("value") == value))); 612 $(slot).attr("checked", (($(slot).attr("data-match") == value) || ($(slot).attr("value") == value))); 613 /*if (($(slot).attr("data-match") == value) || ($(slot).attr("value") == value)) 614 { 615 $(slot).attr("checked", true); 616 }*/ 617 } 618 else 619 { 620 var tagName = $(slot).prop("tagName"); 621 622 if ((tagName == "INPUT") || (tagName == "SELECT") || (tagName == "TEXTAREA")) 623 { 624 $(slot).val(value); 625 } 626 else 627 { 628 $(slot).html(value); 629 } 630 } 631 } 632 } 633 634 635})(jQuery); 636 637$(document).ready(function() { 638 639 if ($.datepicker) 640 { 641 $.datepicker.regional['ko'] = { 642 closeText : 'ë«ê¸°', 643 prevText : 'ì´ì ë¬', 644 nextText : 'ë¤ìë¬', 645 currentText : 'ì¤ë', 646 monthNames : ["1ì", "2ì", "3ì", "4ì", "5ì", "6ì", "7ì", "8ì", "9ì", "10ì", "11ì", "12ì"], 647 monthNamesShort : ["1ì", "2ì", "3ì", "4ì", "5ì", "6ì", "7ì", "8ì", "9ì", "10ì", "11ì", "12ì"], 648 dayNames : [ 'ì¼', 'ì', 'í', 'ì', '목', 'ê¸', 'í ' ], 649 dayNamesShort : [ 'ì¼', 'ì', 'í', 'ì', '목', 'ê¸', 'í ' ], 650 dayNamesMin : [ 'ì¼', 'ì', 'í', 'ì', '목', 'ê¸', 'í ' ], 651 weekHeader : 'Wk', 652 dateFormat : 'yy-mm-dd', 653 showMonthAfterYear: true, 654 yearSuffix: 'ë ',
655 changeMonth: false, 656 changeYear: false 657 }; 658 659 $.datepicker.setDefaults($.datepicker.regional[ "ko" ]); 660 } 661 662}); 663 664 665 666/* ì ê·ì */ 667var REGEX_TIME_HHMM = /([01][0-9]|2[0-3])[\:\s]*([0-6][0-9])$/; 668 669/***** Date *****/ 670var MONTH_NAMES = ["JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", 671 "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER"]; 672 673var WEEK_NAMES = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]; 674 675Date.prototype.format = function(f) { 676 if (!this.valueOf()) return " "; 677 678 var weekName = ["SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"]; 679 var weekNameShort = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]; 680 var weekNameKr = ["ì¼ìì¼", "ììì¼", "íìì¼", "ììì¼", "목ìì¼", "ê¸ìì¼", "í ìì¼"]; 681 var d = this; 682 683 return f.replace(/(yyyy|yy|MM|dd|E|hh|mm|ss|SSS|a\/p)/gi, function($1) { 684 switch ($1) { 685 case "yyyy": return d.getFullYear(); 686 case "yy": return (d.getFullYear() % 1000).zf(2); 687 case "MM": return (d.getMonth() + 1).zf(2); 688 case "dd": return d.getDate().zf(2); 689 case "E": return weekNameKr[d.getDay()]; 690 case "e": return weekNameShort[d.getDay()]; 691 case "HH": return d.getHours().zf(2); 692 case "hh": return ((h = d.getHours() % 12) ? h : 12).zf(2); 693 case "mm": return d.getMinutes().zf(2); 694 case "ss": return d.getSeconds().zf(2); 695 case "SSS": return d.getMilliseconds().zf(3); 696 case "a/p": return d.getHours() < 12 ? "ì¤ì " : "ì¤í"; 697 default: return $1; 698 } 699 }); 700}; 701 702function parseDate(s) 703{ 704 if (!s) {return null;} 705 if (s.length == 0) 706 { 707 return null; 708 } 709 710 s= s.replace(/\-/g, ""); 711 712 var years = 0; 713 var months = 0; 714 var days = 0; 715 var hours = 0; 716 var minutes = 0; 717 var seconds = 0; 718 var milliSeconds = 0; 719 720 if (s.length >= 8) 721 { 722 years = parseInt(s.substring(0, 4)); 723 months = parseInt(s.substring(4, 6)) - 1; 724 days = parseInt(s.substring(6, 8)); 725 } 726 if (s.length >= 14) 727 { 728 hours = parseInt(s.substring(8, 10)); 729 minutes = parseInt(s.substring(10, 12)); 730 seconds = parseInt(s.substring(12, 14)); 731 } 732 if (s.length == 17) 733 { 734 milliSeconds = parseInt(s.substring(14)); 735 } 736 737 var time = new Date(); 738 time.setFullYear(years, months, days); 739 time.setHours(hours, minutes, seconds, milliSeconds); 740 741 return time; 742} 743 744 745function isNowIncluded(from, to) 746{ 747 var now = new Date().getTime(); 748 749 if (from == null) 750 { 751 if (to == null) 752 { 753 return true; 754 } 755 else 756 { 757 to.setHours(23, 59, 59, 999); 758 return (now <= to.getTime()); 759 } 760 } 761 else 762 { 763 from.setHours(0, 0, 0, 0); 764 765 if (to == null) 766 { 767 return (now >= from.getTime()); 768 } 769 else 770 { 771 to.setHours(23, 59, 59, 999); 772 return ((now >= from.getTime()) && (now <= to.getTime())); 773 } 774 } 775} 776 777 778/***** String *****/ 779String.prototype.string = function(len){var s = '', i = 0; while (i++ < len) { s += this; } return s;}; 780String.prototype.zf = function(len){return "0".string(len - this.length) + this;}; 781Number.prototype.zf = function(len){return this.toString().zf(len);}; 782 783function initExtraProtoType() { 784 if(typeof String.prototype.trim !== 'function') { 785 String.prototype.trim = function() { 786 return this.replace(/^\s+|\s+$/g, ''); 787 }; 788 } 789 790} 791 792if (!String.prototype.endsWith) { 793 String.prototype.endsWith = function(searchString, position) { 794 var subjectString = this.toString(); 795 if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) { 796 position = subjectString.length; 797 } 798 position -= searchString.length; 799 var lastIndex = subjectString.indexOf(searchString, position); 800 return lastIndex !== -1 && lastIndex === position; 801 }; 802 } 803 804 805/***** ì°í¸ë²í¸ *****/ 806function zip(fnCallback) // <script src="http://dmaps.daum.net/map_js_init/postcode.v2.js"></script> ì¶ê°ëì´ ìì´ì¼ í¨ 807{ 808 new daum.Postcode({ 809 oncomplete: function(data) { 810 var zipcode = data.zonecode; 811 var address = data.address; 812 813 if (fnCallback) 814 { 815 fnCallback(zipcode, address); 816 } 817 818 } 819 }).open(); 820 821} 822 823 824/***** ì íë²í¸ Parser *****/ 825function PhoneNumber() 826{ 827 this.phoneNumber1 = ""; 828 this.phoneNumber2 = ""; 829 this.phoneNumber3 = ""; 830 831 this.validPhoneNumber = false; 832} 833 834PhoneNumber.prototype.parse = function(phoneNumber) 835{ 836 if (phoneNumber == "") 837 { 838 this.valid = true; 839 return; 840 } 841 842 var regex = /^\(?([0-9]{3})\)?[-. ]?([0-9]{4})[-. ]?([0-9]{4})$/; // xxx xxxx xxxx 843 var result = phoneNumber.match(regex); 844 845 if (!result) 846 { 847 regex = /^\(?([02]{2})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/; // 02 xxx xxxx 848 result = phoneNumber.match(regex); 849 } 850 851 if (!result) 852 { 853 regex = /^\(?([02]{2})\)?[-. ]?([0-9]{4})[-. ]?([0-9]{4})$/; // 02 xxxx xxxx 854 result = phoneNumber.match(regex); 855 } 856 857 if (!result) 858 { 859 regex = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/; // xxx xxx xxxx 860 result = phoneNumber.match(regex); 861 } 862 863 if (result) 864 { 865 this.phoneNumber1 = result[1]; 866 this.phoneNumber2 = result[2]; 867 this.phoneNumber3 = result[3]; 868 869 this.valid = true; 870 } 871 else 872 { 873 this.valid = false; 874 } 875}; 876 877/** 878 * íì¼ ì´ë¦ì íì¥ì를 ì´ì©í´ì 주ì´ì§ íì¼ ì´ë¦ì ê°ì§ íì¼ì´ ì¬ì§(그림) íì¼ì¸ì§ ì¬ë¶ë¥¼ ëë린ë¤. 879 * 880 * @param fileName íì¼ ì´ë¦ 881 * @returns ì¬ì§(그림) íì¼ì´ë©´ true, ìëë©´ false 882 */ 883function isImageFile(fileName) 884{ 885 return (fileName.toLowerCase().match(/\.(jpg|jpeg|png|gif)$/)); 886} 887 888 889/** 890 * íì¼ ì´ë¦ì íì¥ì를 ì´ì©í´ì 주ì´ì§ íì¼ ì´ë¦ì ê°ì§ íì¼ì´ ëìì íì¼ì¸ì§ ì¬ë¶ë¥¼ ëë린ë¤. 891 * 892 * @param fileName íì¼ ì´ë¦ 893 * @returns ëìì íì¼ì´ë©´ true, ìëë©´ false 894 */ 895function isMovieFile(fileName) 896{ 897 return (fileName.toLowerCase().match(/\.(avi|mp4|mpg|mpeg|mpe|wmv|asf|asx)$/)); 898} 899 900 901function setCookie(name, value, expireDay) 902{ 903 var cookies = name + '=' + escape(value) + '; path=/ '; 904 905 if (typeof expireDay != 'undefined') 906 { 907 var expire = new Date(); 908 expire.setDate(expire.getDate() + expireDay); 909 cookies += ';expires=' + expire.toGMTString() + ';'; 910 } 911 912 document.cookie = cookies; 913} 914 915function getCookie(name) { 916 name = name + '='; 917 var cookieData = document.cookie; 918 919 var start = cookieData.indexOf(name); 920 var value = ''; 921 922 if (start != -1) 923 { 924 start += name.length; 925 var end = cookieData.indexOf(';', start); 926 if (end == -1) 927 { 928 end = cookieData.length; 929 } 930 value = cookieData.substring(start, end); 931 } 932 return unescape(value); 933} 934 935 936function removeDuplicatedItem(list) 937{ 938 if (list instanceof Array) 939 { 940 var removeCount = 0; 941 for (var i = 0 ; i < list.length ; i++) 942 { 943 for (var j = i + 1 ; j < list.length ; j++) 944 { 945 removeCount = 0; 946 947 if (list[i] == list[j]) 948 { 949 list.splice(j, 1); 950 951 j--; 952 removeCount++; 953 } 954 } 955 i -= removeCount; 956 } 957 } 958} 959 960 961/** 962 * ììì objectì í¬í¨ëì´ ì´ë²¤í¸ ë°ìê³¼ ìì ì ë´ë¹í ì´ë²¤í¸ ê´ë¦¬ì 963 */ 964function EventDispatcher() 965{ 966 this.listenerMap = {}; 967} 968 969/* ì´ë²¤í¸ 리ì¤ë를 ë±ë¡íë¤. */ 970EventDispatcher.prototype.addEventListener = function(eventType, fnListener) 971{ 972 var listeners = this.listenerMap[eventType]; 973 if (listeners === undefined) 974 { 975 listeners = []; 976 this.listenerMap[eventType] = listeners; 977 } 978 979 listeners.push(fnListener); 980};
981 982/* ì´ë²¤í¸ 리ì¤ë를 ì ê±°íë¤. */ 983EventDispatcher.prototype.removeEventListener = function(eventType, fnListener) 984{ 985 var listeners = this.listenerMap[eventType]; 986 if (listeners) 987 { 988 for (var i in listeners) 989 { 990 if (listeners[i] === fnListener) 991 { 992 listeners.splice(i, 1); 993 break; 994 } 995 } 996 } 997}; 998 999/* ì´ë²¤í¸ë¥¼ ë°ììí¨ë¤. */ 1000EventDispatcher.prototype.dispatchEvent = function(eventType) 1001{ 1002 var listeners = this.listenerMap[eventType]; 1003 1004 if (listeners) 1005 { 1006 var args = []; 1007 for (var j = 1 ; j < arguments.length ; j++) 1008 { 1009 args.push(arguments[j]); 1010 } 1011 1012 for (var i in listeners) 1013 { 1014 listeners[i].apply(this, args); 1015 } 1016 } 1017}; 1018 1019 1020function zeroFill( number, width ) 1021{ 1022 width -= number.toString().length; 1023 if (width > 0) { 1024 return new Array(width + (/\./.test(number) ? 2 : 1)).join('0') 1025 + number; 1026 } 1027 return number + ""; 1028} 1029 1030 1031function justifyLabels() 1032{ 1033 $(".form_item label").each(function(index, label) { 1034 var $label = $(label); 1035 var labelWidth = $label.width(); 1036 labelWidth = 80; 1037 var text = $label.html().trim(); 1038 1039 var div = $("<div>"); 1040 div.css("width", " 200px") 1041 div.css("height", "15px"); 1042 div.html(text); 1043 1044 $label.empty(); 1045 $label.append(div); 1046 1047 var fontName = $label.css("font-family"); 1048 var wordWidth = getWidthOfText(text, fontName, $label.css("font-size")); 1049 1050 var letterSpacing = ((((labelWidth - 0) - (wordWidth + 0)) / (text.length - 1))) * 1.0; 1051 1052 $label.css("letter-spacing", letterSpacing + "px"); 1053 }); 1054 1055 1056 function getWidthOfText(txt, fontname, fontsize) 1057 { 1058 // Create dummy span 1059 var e = document.createElement('span'); 1060 // Set font-size 1061 e.style.fontSize = fontsize; 1062 // Set font-face / font-family 1063 e.style.fontFamily = fontname; 1064 // Set text 1065 e.innerHTML = txt; 1066 document.body.appendChild(e); 1067 // Get width NOW, since the dummy span is about to be removed from the document 1068 var w = e.offsetWidth; 1069 // Cleanup 1070 document.body.removeChild(e); 1071 // All right, we're done 1072 return w; 1073 } 1074} 1075 1076 1077function extractData(object, column) 1078{ 1079 //console.log(" extractData", object, column) 1080 if (!object || !column) 1081 { 1082 return ""; 1083 } 1084 1085 var index = column.indexOf("."); 1086 if (index < 0) 1087 { 1088 return object[column]; 1089 } 1090 else 1091 { 1092 var pre = column.substring(0, index); 1093 1094 return extractData(object[pre], column.substring(index + 1)); 1095 } 1096 1097}; 1098 1099 1100function nl2Br(str) 1101{ 1102 if (!str) 1103 { 1104 return ""; 1105 } 1106 1107 return str.replace(/(?:\r\n|\r|\n)/g, '<br>'); 1108} 1109 1110/** 1111 * 주ì´ì§ 문ìì´ìì ì«ìì ììì , - ì ì ì¸í 모ë 문ì를 ì ê±°íë¤. 1112 */ 1113function removeNonDigit(str) 1114{ 1115 if (!str) 1116 { 1117 return ""; 1118 } 1119 1120 return str.replace(/[^\d.-]/g,''); 1121} 1122 1123function round(value, position) 1124{ 1125 if (typeof position == "undefined") 1126 { 1127 position = 0; 1128 } 1129 1130 var pad = Math.pow(10, position); 1131 1132 return (Math.round((value * pad)) / pad).toFixed(position); 1133} 1134 1135/* query stringì parsing í´ì json ì¼ë¡ ëë림 */ 1136function getUrlParams() { 1137 var params = {}; 1138 window.location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { params[key] = value; }); 1139 return params; 1140}; 1141 1142function form2Json(form) 1143{ 1144 var array = form.serializeArray(); 1145 var result = {}; 1146 1147 var item; 1148 for (var i in array) 1149 { 1150 item = array[i]; 1151 1152 result[item.name] = item.value; 1153 } 1154 1155 return result; 1156 1157} 1158 1159function formatNumber(x) 1160{ 1161 return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); 1162} 1163 1164function checkCorporateRegiNumber(number){ 1165 var numberMap = number.replace(/-/gi, '').split('').map(function (d){ 1166 return parseInt(d, 10); 1167 }); 1168 1169 if(numberMap.length == 10){ 1170 var keyArr = [1, 3, 7, 1, 3, 7, 1, 3, 5]; 1171 var chk = 0; 1172 1173 keyArr.forEach(function(d, i){ 1174 chk += d * numberMap[i]; 1175 }); 1176 1177 chk += parseInt((keyArr[8] * numberMap[8])/ 10, 10); 1178 return Math.floor(numberMap[9]) === ( (10 - (chk % 10) ) % 10); 1179 } 1180 1181 return false; 1182} 1183
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.