/** * common.lib.js * * js/common.js extend * Functon Name : camelCase */ /** * 포인트 창 **/ var win_point = function(href) { var new_win = window.open(href, 'win_point', 'left=100,top=100,width=600, height=600, scrollbars=1'); new_win.focus(); } /** * 쪽지 창 **/ var win_memo = function(href) { var new_win = window.open(href, 'win_memo', 'left=100,top=50,width=450,height=600,scrollbars=1'); new_win.focus(); } /** * 스크랩 창 **/ var win_scrap = function(href) { var new_win = window.open(href, 'win_scrap', 'left=100,top=100,width=600,height=600,scrollbars=1'); new_win.focus(); } // intval function intval(s) { var s = s || ''; return parseInt(s.toString().replace(/[^0-9]/g, ''), 10) || 0; } // 좌표값으로 지도 로드 function mapGeoCoord(obj, lat, lng, level) { try { var mapContainer = obj, mapOption = { center: new daum.maps.LatLng(lat, lng), level: level // 지도의 확대 레벨 }; var map = new daum.maps.Map(mapContainer, mapOption); var markerPosition = new daum.maps.LatLng(lat, lng); var marker = new daum.maps.Marker({ position: markerPosition }); marker.setMap(map); } catch (e) { } } // 주소로 좌표값 가져오기 function getGeoCoord(address, callback) { try { var oScript = document.createElement('script'); oScript.src = g5_url + '/js/kakaorest.js.php?' + 'api=local&func=address' + '&output=json&callback=' + callback + '&query=' + address; oScript.id ='geocoord'; oScript.type ='text/javascript'; oScript.charset ='utf-8'; var element = document.getElementById('geocoord'); if (element) element.parentNode.removeChild(element); document.getElementsByTagName('head')[0].appendChild(oScript); } catch (e) { } } // 좌표값 가져온 후 기본 콜백 function getGeoCoordCallback(data) { var mapObj = document.getElementById('map'), latObj = document.getElementById('mb_lat'), lngObj = document.getElementById('mb_lng'); try { var lat = data.documents[0].y; var lng = data.documents[0].x; if (latObj) { if (latObj.nodeName == 'INPUT') { latObj.value = lat; } else { latObj.innerText = lat; } } if (lngObj) { if (lngObj.nodeName == 'INPUT') { lngObj.value = lng; } else { lngObj.innerText = lng; } } if (mapObj) { mapGeoCoord(mapObj, lat, lng, 5); } } catch (e) { } } // 글자 줄이기 function ellipsis(str, len) { var len = isNaN(len) ? 10 : len; var l = str.toString().length, s = Math.round(len / 2), e = Math.floor(len / 2); $return = str; if (l > len) { str = str.substr(0, s) + '…' + str.substr(l-e, e); } return str; } // Bootstrap .custom-file $(document).on('change', '.custom-file label.custom-file-label', function() { var $this = $(this), $that = $this.siblings('.custom-file-input'); $that.trigger('click'); }); $(document).on('change', '.custom-file input.custom-file-input', function() { var $this = $(this), $that = $this.siblings('.custom-file-label'); $that.text($this.val().replace(/.*[\/\\]/, '')); }); // 우편번호 창 (새창으로 재설정) var win_zip = function(frm_name, frm_zip, frm_addr1, frm_addr2, frm_addr3, frm_jibeon) { if(typeof daum === 'undefined'){ alert("다음 우편번호 postcode.v2.js 파일이 로드되지 않았습니다."); return false; } var zip_case = 2; //0이면 레이어, 1이면 페이지에 끼워 넣기, 2이면 새창 var complete_fn = function(data){ // 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분. // 각 주소의 노출 규칙에 따라 주소를 조합한다. // 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다. var fullAddr = ''; // 최종 주소 변수 var extraAddr = ''; // 조합형 주소 변수 // 사용자가 선택한 주소 타입에 따라 해당 주소 값을 가져온다. if (data.userSelectedType === 'R') { // 사용자가 도로명 주소를 선택했을 경우 fullAddr = data.roadAddress; } else { // 사용자가 지번 주소를 선택했을 경우(J) fullAddr = data.jibunAddress; } // 사용자가 선택한 주소가 도로명 타입일때 조합한다. if(data.userSelectedType === 'R'){ //법정동명이 있을 경우 추가한다. if(data.bname !== ''){ extraAddr += data.bname; } // 건물명이 있을 경우 추가한다. if(data.buildingName !== ''){ extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName); } // 조합형주소의 유무에 따라 양쪽에 괄호를 추가하여 최종 주소를 만든다. extraAddr = (extraAddr !== '' ? ' ('+ extraAddr +')' : ''); } // 우편번호와 주소 정보를 해당 필드에 넣고, 커서를 상세주소 필드로 이동한다. var of = document[frm_name]; of[frm_zip].value = data.zonecode; of[frm_addr1].value = fullAddr; if(of[frm_addr3] !== undefined) { of[frm_addr3].value = extraAddr; } if(of[frm_jibeon] !== undefined){ of[frm_jibeon].value = data.userSelectedType; } setTimeout(function(){ of[frm_addr2].focus(); // fireEvent change if ("createEvent" in document) { var evt = document.createEvent("HTMLEvents"); evt.initEvent("change", false, true); of[frm_zip].dispatchEvent(evt); of[frm_addr1].dispatchEvent(evt); } } , 100); }; switch(zip_case) { case 1 : //iframe을 이용하여 페이지에 끼워 넣기 var daum_pape_id = 'daum_juso_page'+frm_zip, element_wrap = document.getElementById(daum_pape_id), currentScroll = Math.max(document.body.scrollTop, document.documentElement.scrollTop); if (element_wrap == null) { element_wrap = document.createElement("div"); element_wrap.setAttribute("id", daum_pape_id); element_wrap.style.cssText = 'display:none;border:1px solid;left:0;width:100%;height:300px;margin:5px 0;position:relative;-webkit-overflow-scrolling:touch;'; element_wrap.innerHTML = '접기 버튼'; jQuery('form[name="'+frm_name+'"]').find('input[name="'+frm_addr1+'"]').before(element_wrap); jQuery("#"+daum_pape_id).off("click", ".close_daum_juso").on("click", ".close_daum_juso", function(e){ e.preventDefault(); jQuery(this).parent().hide(); }); } new daum.Postcode({ oncomplete: function(data) { complete_fn(data); // iframe을 넣은 element를 안보이게 한다. element_wrap.style.display = 'none'; // 우편번호 찾기 화면이 보이기 이전으로 scroll 위치를 되돌린다. document.body.scrollTop = currentScroll; }, // 우편번호 찾기 화면 크기가 조정되었을때 실행할 코드를 작성하는 부분. // iframe을 넣은 element의 높이값을 조정한다. onresize : function(size) { element_wrap.style.height = size.height + "px"; }, width : '100%', height : '100%' }).embed(element_wrap); // iframe을 넣은 element를 보이게 한다. element_wrap.style.display = 'block'; break; case 2 : //새창으로 띄우기 new daum.Postcode({ oncomplete: function(data) { complete_fn(data); } }).open(); break; default : //iframe을 이용하여 레이어 띄우기 var rayer_id = 'daum_juso_rayer'+frm_zip, element_layer = document.getElementById(rayer_id); if (element_layer == null) { element_layer = document.createElement("div"); element_layer.setAttribute("id", rayer_id); element_layer.style.cssText = 'display:none;border:5px solid;position:fixed;width:300px;height:460px;left:50%;margin-left:-155px;top:50%;margin-top:-235px;overflow:hidden;-webkit-overflow-scrolling:touch;z-index:10000'; element_layer.innerHTML = '닫기 버튼'; document.body.appendChild(element_layer); jQuery("#"+rayer_id).off("click", ".close_daum_juso").on("click", ".close_daum_juso", function(e){ e.preventDefault(); jQuery(this).parent().hide(); }); } new daum.Postcode({ oncomplete: function(data) { complete_fn(data); // iframe을 넣은 element를 안보이게 한다. element_layer.style.display = 'none'; }, width : '100%', height : '100%' }).embed(element_layer); // iframe을 넣은 element를 보이게 한다. element_layer.style.display = 'block'; } } // 레이어 가운데 (fixed) jQuery.fn.center = function () { /* absolute this.css("position","absolute"); this.css("top", Math.max(0, (($(window).height() - $(this).outerHeight()) / 2) + $(window).scrollTop()) + "px"); this.css("left", Math.max(0, (($(window).width() - $(this).outerWidth()) / 2) + $(window).scrollLeft()) + "px"); */ /* fixed : 스크롤된 값을 더하지 않는다 2017-10-12 */ this.css("position","fixed"); this.css("top", Math.max(0, (($(window).height() - $(this).outerHeight()) / 2)) + "px"); this.css("left", Math.max(0, (($(window).width() - $(this).outerWidth()) / 2)) + "px"); return this; } jQuery.fn.visible = function() { return this.css('visibility', 'visible'); }; jQuery.fn.invisible = function() { return this.css('visibility', 'hidden'); }; jQuery.fn.visibilityToggle = function() { return this.css('visibility', function(i, visibility) { return (visibility == 'visible') ? 'hidden' : 'visible'; }); }; $.fn.selectRange = function(start, end) { if(end === undefined) { end = start; } return this.each(function() { if('selectionStart' in this) { this.selectionStart = start; this.selectionEnd = end; } else if(this.setSelectionRange) { this.setSelectionRange(start, end); } else if(this.createTextRange) { var range = this.createTextRange(); range.collapse(true); range.moveEnd('character', end); range.moveStart('character', start); range.select(); } }); }; function CheckEmail(str) { var reg_email = /^([0-9a-zA-Z_\.-]+)@([0-9a-zA-Z_-]+)(\.[0-9a-zA-Z_-]+){1,2}$/; if(!reg_email.test(str)) { return false; } else { return true; } }