/**
* 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;
}
}