PageSourceSearch

https://dhamul.co.kr/js/common.js?v=20260910110804

js dhamul.co.kr collected 2026-09-25 09:25:08 UTC 10,806 bytes, 406 lines download raw bytes

1 /**
2  * 쿠키 데이터 변수
3  *
4  * @type {string}
5  */
6 var COOKIEDATA = document.cookie;
7
8 /**
9  * 모바일 기기 검증 변수
10  * 
11  * @type {boolean}
12  */
13 var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false;
14
15 /**
16  * 보안문자 새로고침 함수
17  *
18  * @param obj
19  * @return {boolean}
20  */
21function captchaReload(obj) {
22    var imgObj = $(obj).closest('.captcha-lay').find('img');
23    imgObj.click();
24
25    return false;
26}
27
28/**
29 * 자바스크립트 동적 호출 함수
30 */
31function dynamicLoadJs(url, implementationCode, location) {
32    var scriptTag = document.createElement('script');
33    scriptTag.src = url;
34    scriptTag.onload = implementationCode;
35    scriptTag.onreadystatechange = implementationCode;
36
37    location.appendChild(scriptTag);
38}
39
40 /**
41  * 문자 자릿수 채우기(str pad) 함수
42  *
43  * @description 문자열을 지정한 길이가 되도록 다른 문자열로 채우는 함수
44  * @param str 문자
45  * @param max 총 자릿수
46  * @param pad 채울 문자
47  * @param type 문자를 채울 위치
48  * @return {*|string}
49  */
50 function str_pad (str, max, pad, type) {
51    str = str.toString();
52    if (type == 'right') {
53        return str.length < max ? str_pad(str + pad, max) : str;
54    } else {
55        return str.length < max ? str_pad(pad + str, max) : str;
56    }
57}
58
59/* 숫자 입력 필터링 */
60function fnReplaceNumber(input, replaceType) {
61    var result = input;
62    
63    var reg =/[^\d]/g;
64    var regOnlyNumber = /[^\d]/g;
65    var regWithComma = /[^\d\,]/g;
66    var regWithCommaAndDot = /[^\d\,\.]/g;
67    
68    if (typeof(replaceType) == 'undefined') {
69        replaceType = 'regWithCommaAndDot';
70    }
71    
72    if (replaceType == 'regWithCommaAndDot') {
73        reg = regWithCommaAndDot;
74    } else if (replaceType == 'regWithComma') {
75        reg = regWithComma;
76    } else {
77        reg = regOnlyNumber;
78    }
79    
80    result = result + ''; // 문자로 변환
81    result = result.replace(reg, '');
82    return result;
83}
84function onlyNumberInput(obj) {
85    var value = obj.val();
86    if (typeof(value) !== 'undefined') {
87        var replaceType = obj.attr('data-onlyNumberType'); 
88        var replaceValue = fnReplaceNumber(value, replaceType);
89        obj.val(replaceValue);
90    }
91}
92/**
93 * 변수 초기값 검증 함수
94 */
95function defineVar(value, init_value) {
96    if (typeof (value) === 'undefined' || value === null || value === '') {
97        value = init_value;
98    }
99    return value;
100}
101
102/**
103 * 공통 알림창 호출 함수
104 *
105 * @param msg 내용
106 * @param userfunc 콜백 함수
107 */
108function commonModalAlert(msg, userfunc) {
109    msg = msg.replace(/<br\s*[\/]?>/gi, '\n');
110    alert(msg);
111    if (typeof(userfunc) == 'function'){
112        var Func = userfunc;
113        Func();
114    }else{
115        if (userfunc) {
116            var Func = window[userfunc];
117            Func();
118        }
119    }
120}
121
122/**
123 * 공통 알림창 호출 함수
124 *
125 * @param msg 내용
126 * @param userfunc 콜백 함수
127 */
128function commonModalConfirm(msg, userfunc) {
129    msg = msg.replace(/<br\s*[\/]?>/gi, '\n');
130    if (typeof(userfunc) == 'function' && confirm(msg)){
131        var Func = userfunc;
132        Func();
133    }
134}
135
136/* 난수 생성 */
137var usedRandomNumber = [];
138function randomNumber(){
139    var i = 0;
140    var createdRandomNumber = makeRandomNumber(i);
141    while (usedRandomNumber.indexOf(createdRandomNumber) > -1) {
142        createdRandomNumber = makeRandomNumber(i);
143        i++;
144    }
145    usedRandomNumber.push(createdRandomNumber);
146    return createdRandomNumber;
147}
148function makeRandomNumber(seed) {
149    var time = new Date(),
150        time = String(time.getTime()),
151        idx = time.slice(7,-1);
152    
153    var createdRandomNumber = 'tmp_'+idx+seed;
154    return createdRandomNumber;
155}
156
157 $(document).ready(function () {
158     // ajax 속성 설정 이벤트
159     $.ajaxSetup({
160         headers: {
161             'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
162         }
163     });
164     
165     $(document).on('keyup', '.onlyNumberInput', function () {
166        onlyNumberInput($(this));
167    });
168 });
169
170 function alertPageMoveBack(msg = '')
171 {
172    alert(msg);
173    history.go(-1);
174 }
175
176 
177/**
178 * input 요소 입력 최대 길이 제한 함수
179 *
180 * @description input 엘리멘트의 maxlength 항목이 있으면 span.input-group-text 엘리벤트의 data-for 엘리멘트가
181 * 해당 input의 id를 찾아 maxlength를 표시하고, 해당 maxlength를 넘지 않게 처리함.
182 */
183function maxLengthCheck() {
184    // 최대 길이 값 유효성 검증
185    $("[maxlength]:not([maxlength=''])").each(function() {
186        var getLength = function($e) {
187            var length = Number($e.val().length);
188            var maxlength = Number($e.attr('maxlength'));
189            return {'length':length, 'maxlength':maxlength};
190        };
191
192        var setLength = function(id, length, maxlength) {
193            $("span[data-for='" + id + "']").html("<span class='cur_cnt'>"+length + "</span>/" + maxlength);
194        };
195
196        var lengthObj = getLength($(this));
197        setLength($(this).attr('id'), lengthObj.length, lengthObj.maxlength);
198        $(this).on('input', function() {
199            var lengthObj = getLength($(this));
200            if(lengthObj.length > lengthObj.maxlength) {
201                $(this).val($(this).val().slice(0, lengthObj.maxlength));
202                lengthObj = getLength($(this));
203            }
204            setLength($(this).attr('id'), lengthObj.length, lengthObj.maxlength);
205        });
206    });
207}
208
209/**
210 * 다국어 메시지 파라미터 치환
211 * 
212 * @description 다국어 메시지에 포함된 :attribute를 파라미터값으로 치환
213 */
214function getExpandMessage(message, param){
215    
216    if(message === undefined){
217        message = '';
218    }
219
220    if(param === undefined){
221        param = {};
222    }
223
224    var reg = /:([a-z]*)/g;
225    var arrAttr = message.match(reg);
226
227    $.each(arrAttr,function(idx, attribute) {
228        if(Object.keys(param).length !== 0){
229            if(param[attribute] !== undefined){
230                message = message.replace(attribute, param[attribute]);
231            }
232        }
233    });
234
235    return message;    
236}
237
238function callLink(el){
239    event.preventDefault();
240    var tel = $(el).attr('href');
241    var target = $(el).is('[target]');
242    googleAdsAutoTrackingEvent('call');
243    if(isMobile){
244        if(target === true){
245            window.open("tel:"+tel);
246        }else{
247            location.href="tel:"+tel;
248        }
249    }else{
250        alert(getExpandMessage(window.i18n.common.common.call_link_pc_not_use.message))
251        return false;
252    }
253}
254
255// /**
256//  * snake to camel parser
257//  * @param {string} camelType upper/lower
258//  * @param {string} str snake case string
259//  * @returns 
260//  */
261function toCamel (camelType, str) {
262    let outputRows = "";
263    let arrInputRows = str.split("\n");
264    arrInputRows.forEach( words=>{
265        let camelWords = "";
266        let doUpper = false;
267        for (let word of Array.from(words)) {
268            if (word === "_") {
269                doUpper = true;
270                continue;
271            }
272            if (doUpper) {
273                camelWords += word.toUpperCase();
274                doUpper = false;
275            } else {
276                camelWords += word.toLowerCase();
277            }
278            if (camelWords.length === 1 && camelType === "upper") {
279                camelWords = camelWords.toUpperCase();
280            }
281        }
282        outputRows += camelWords+"\n"
283    });
284    return outputRows;
285}
286
287/**
288 * camel to snake parser
289 * @param {string} snakeType upper/lower
290 * @param {string} str snake case string
291 * @returns 
292 */
293 function toSnake (snakeType, str) {
294    let outputRows = "";
295    let arrInputRows = str.split("\n");
296    arrInputRows.forEach( words=>{
297        let snakeWords = "";
298        Array.from(words).forEach( word=>{
299            if (word.toUpperCase()===word && snakeWords.length!==0) {
300                snakeWords += "_";
301            }
302            if (snakeType==="upper") {
303                snakeWords += word.toUpperCase();
304            } else {
305                snakeWords += word.toLowerCase();
306            }
307        });
308        outputRows += snakeWords+"\n"
309    });
310
311    return outputRows;
312}
313
314
315/**
316 * html decode
317 * @param {string} text upper/lower
318 * @returns 
319 */
320function decodeHTMLEntities(text) {
321    return $("<textarea/>")
322      .html(text)
323      .text();
324}
325
326/**
327 * html encode
328 * @param {string} text upper/lower
329 * @returns 
330 */
331function encodeHTMLEntities(text) {
332    var textArea = document.createElement('textarea');
333    textArea.innerText = text;
334    return textArea.innerHTML;
335}
336
337/**
338 * 로딩 스피너 표시
339 * @description 사용하는 경우 로딩 스피너 엘리먼트 필요(loading_spinner)
340 */
341function onLoadingSpinner() {
342    $('div#pannelModal.modal_bg').css('display', 'block');
343    $('div#pannelSpinner.loading_spinner').css('display', 'block');
344}
345
346/**
347 * 로딩 스피너 미표시
348 * @description 사용하는 경우 로딩 스피너 엘리먼트 필요(loading_spinner)
349 */
350function offLoadingSpinner() {
351    $('div#pannelModal.modal_bg').css('display', 'none');
352    $('div#pannelSpinner.loading_spinner').css('display', 'none');
353}
354
355/**
356 * 쿼리 문자열을 파싱하여 객체로 분류하는 함수
357 * 
358 * @param {*} queryString 
359 * @returns 
360 */
361function parseQueryParams(queryString) {
362    const paramsObject = {};
363    if(queryString.length > 0) {
364        // 쿼리 문자열의 맨 앞의 `?`를 제거합니다.
365        queryString = queryString.startsWith('?') ? queryString.slice(1) : queryString;
366
367        // 쿼리 문자열을 `&`로 분리하여 각 매개변수를 배열로 만듭니다.
368        const paramsArray = queryString.split('&');
369    
370        // 각 매개변수를 `=`를 기준으로 분리하여 객체에 저장합니다.
371        paramsArray.forEach(param => {
372            const [key, value] = param.split('=');
373            // 키와 값을 객체에 저장합니다. 값을 디코딩하여 저장합니다.
374            paramsObject[decodeURIComponent(key)] = decodeURIComponent(value);
375        });
376    }
377
378    return paramsObject;
379}
380
381function replaceSvgCode() {
382    $.each($('.__svgCode'), function () {    
383        const img = jQuery($(this));
384        const imgURL = img.attr('src');
385        const attributes= img.prop("attributes");
386        
387        if (imgURL.indexOf('.svg') < 0) return;
388
389        $.get(imgURL, function(data) {
390            let svg = $(data).find('svg');   
391
392            svg = svg.removeAttr('xmlns:a');
393
394            $.each(attributes, function() {
395                svg.attr(this.name, this.value);
396            });
397        
398            img.replaceWith(svg);
399        }, 'xml');           
400    })
401    
402}
403
404function getLang(keyCode) {
405    return window.i18n.lang[keyCode] || keyCode;
406}

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.