/**
* init.js
* @use : news.joins.com (Pc) 에서만 사용한다.
*/
(function(window, document, $) {
// Defind Area Variable.
var layout = window.layout,
nowDate = new Date(),
pageType = utils.config('pageType'),
articleType = utils.config('articleType'),
imagePath = utils.config('imagePath');
// datepicker configuration.
if($.datepicker !== undefined) {
$.datepicker.regional["ko"] = {
closeText: '닫기',
prevText: '이전달',
nextText: '다음달',
currentText: '오늘',
monthNames: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'],
monthNamesShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
dayNames: ['일', '월', '화', '수', '목', '금', '토'],
dayNamesShort: ['일', '월', '화', '수', '목', '금', '토'],
dayNamesMin: ['일', '월', '화', '수', '목', '금', '토'],
weekHeader: 'Wk',
dateFormat: 'yy.mm.dd',
firstDay: 0,
isRTL: false,
showMonthAfterYear: true,
yearSuffix: ".",
showAnim: 'drop',
buttonImageOnly: true
};
$.datepicker.setDefaults($.datepicker.regional['ko']);
}
// global init
// header(navigation), footer, right, get font cookie, config.
(function init() {
$('#content > div > ul.stock').remove();
var fontSize = utils.getCookie(COOKIE_NAMES.fontSize) || '4',
openWide = utils.getCookie(COOKIE_NAMES.wide),
windowSize = utils.windowSize();
layout.render();
if (pageType == PAGE_TYPE.article) {
initFontSize(fontSize);
}
var removedWide = ['retirement', 'find', 'realestate'];
//홈에서 와이드 닫기버튼 제거(계속 펼쳐놓기 위해) = 20190401
//if (pageType == PAGE_TYPE.index) {
// layout.wide.open();
//}
//else {
// 와이드 오픈용 resize Handler. // 높이를 제외하고 width 만 체크한다. // IE8 에서 높이값이 고정되지 않는 버그 있음.(css).
$(window).resize(function () {
if (pageType != PAGE_TYPE.pcHome) {
var _windowSize = utils.windowSize();
var bRemovedWide = true;
var currentMenuKey = utils.menu.getPageMenuKey().toLowerCase();
for (var i = 0; i < removedWide.length; i++) {
if (currentMenuKey.indexOf(removedWide[i]) !== -1) {
bRemovedWide = false;
break;
}
}
if (!utils.isSpCoverTypeCheck() && bRemovedWide) {
// IE 7, 8 에서 body 사이즈 변경될 때, window.resize 이벤트가 발생함.
// 내부 변수에 처음 size 를 cache 하여 추가 조건 작성.
if (windowSize.width != _windowSize.width) {
windowSize = utils.windowSize();
utils.removeCookie(COOKIE_NAMES.wide, COOKIE_CONDITION.path, COOKIE_CONDITION.domain);
if (_windowSize.width > 1390) {
layout.wide.open();
} else {
layout.wide.close();
}
}
}
}
});
//}
$('.count .mg').each(function () {
var $count = $(this),
count = $count.text() || '';
count = utils.getDisplayCount(count);
$count.text(count);
});
// pc : Mobile 보기 전환
$(document.body).on('click', '#showMobileWeb', function () {
utils.setIgnoreUserAgent();
utils.redirectUrl();
return false;
});
// pc : 기사내 용어사전 접고 펼치기
$('.ab_term_hd', $("div#article_body")).on('click', function () {
var $wrap = $(this).closest('.ab_term');
if ($wrap.hasClass('ab_term_off')) {
$wrap.addClass('ab_term_on').removeClass('ab_term_off');
} else {
$wrap.addClass('ab_term_off').removeClass('ab_term_on');
}
});
// 이미지 inline 사이즈 제거
$('.html_photo_left img, .photo_center img').width('').height('');
})();
function initFontSize(fontSize) {
if(location.href.toLowerCase().indexOf('providednews') > -1) {
return;
}
var $changefont = $('#changefont');
$('#changefont').changeFontSize().show();
}
utils.shareCountCallback = function(target) {
// 서비스별 카운트 처리.
var
TARGET_SELECTORS = {
news: '#article_share_total_count',
issue: '#issue_keyword_share_count'
},
targetSelector = TARGET_SELECTORS[target],
$totalCountArea = $(targetSelector),
totalCount = 0;
if(!targetSelector) {
return;
}
if($totalCountArea.length == 0) {
return;
}
totalCount = $totalCountArea.text() || 0;
totalCount = parseInt(totalCount, 10);
$totalCountArea.text(totalCount + 1);
};
// MVC Ajax : 클릭된 버튼 타겟.
var $moreBtn = null;
utils.setMoreBtn = function($btn) {
$moreBtn = $btn;
};
// MVC Ajax : mvcAjaxSuccess
utils.mvcAjaxSuccess = function() {
var articleType = utils.config('articleType');
var menuKey = utils.menu.getPageMenuKey();
setTimeout(function() {
$('#loading').hide();
}, 3000);
if(articleType = ARTICLE_TYPE.live) {
if($.fn.articleComponent) {
$('#live_content').articleComponent();
if (menuKey.toLowerCase().indexOf('election2017') !== -1) {
$('.ab_photo').attr("style", "width:580px;");
}
}
}
if($moreBtn == null || !$moreBtn.length) {
return false;
}
var data = $moreBtn.data();
if(data.totalCount <= data.currentPage * data.pageSize) {
$moreBtn.hide();
}
if($moreBtn && $moreBtn.length == 1) {
$moreBtn.data('active', 'true');
$moreBtn.removeClass('disable');
}
utils.mvcAjaxCallbackQueue.callback($moreBtn);
};
function trackingLogAd(types) {
//var adsnMaps = {
// 'Home': '7528',
// 'Section': '7529',
// 'Article': '7531',
// 'Cover': '7540',
// 'Live': '7539',
// 'Piki': '7541',
// 'Money': '7542',
// 'Culture': '7543',
// 'Sports': '7544',
// 'JPlus': '7545',
// 'Travel': '7546',
// 'Week': '7547',
// 'Politics': '8169',
// 'Sunday': '9393'
//},
//iframeUrls = 'http://dgate.opap.co.kr/imp/?ssn=566&adsn={ADSN}&cresn=5362';
//if ($.isArray(types)) {
// types.forEach(function (v, i, a) {
// var urls = iframeUrls.replace('{ADSN}', adsnMaps[v]);
// utils.createIFrame({ id: 'tracking_ad_' + v, url: urls });
// });
//} else {
// var urls = iframeUrls.replace('{ADSN}', adsnMaps[types]);
// utils.createIFrame({ id: 'tracking_ad_' + types, url: urls });
//}
// 임시용 - 추후 기존과 동일하게 아티클 별 구분
var
AD_INFO = {
'Home': { src: '//cast.imp.joins.com/persona.js', 'data-id': '2RE4FFUXS-O1V8KVl0-Uug', name: 'joongang_p/main/main@main_track?mlink=217' }, // 홈 트래킹
'Other': { src: '//cast.imp.joins.com/persona.js', 'data-id': 'Dz7056EzTsaTLfAhUdaZBA', name: 'joongang_p/article/article@article_track?mlink=219' }, // 그 외 트래킹
};
types = (types === 'Home') ? 'Home' : 'Other';
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = AD_INFO[types].src;
script.setAttribute('data-id', AD_INFO[types]['data-id']);
script.setAttribute('name', AD_INFO[types]['name']);
document.body.appendChild(script);
}
// 쿼츠용 GA코드 삽입
function initQuartzGA() {
var strHtml = [];
strHtml.push("");
strHtml.push("");
strHtml.push("");
$('body').append(strHtml.join(' '));
}
//document.ready
$(function ($) {
var showLeftAd = true;
var menuKey = utils.menu.getPageMenuKey();
if (menuKey.toLowerCase().indexOf('coronavirus') !== -1)
showLeftAd = false;
if (menuKey.toLowerCase().indexOf('sunday') !== -1) {
trackingLogAd('Sunday');
}
if (pageType === PAGE_TYPE.article) {
if (menuKey.toLowerCase().indexOf('sunday') !== -1) {
trackingLogAd('Article');
} else if (menuKey.indexOf('Money') !== -1) {
trackingLogAd('Money');
} else if (menuKey.indexOf('JPlus') !== -1) {
trackingLogAd('JPlus');
} else if (menuKey.indexOf('Culture') !== -1) {
trackingLogAd('Culture');
} else if (menuKey.indexOf('Sports') !== -1 || menuKey.toLowerCase().indexOf('rio2016') !== -1) {
trackingLogAd('Sports');
} else if (menuKey.indexOf('Travel') !== -1) {
trackingLogAd('Week');
} else if (menuKey.indexOf('Politics') !== -1) {
trackingLogAd('Politics');
}
if (articleType === ARTICLE_TYPE.cover) {
trackingLogAd('Cover');
} else if (articleType === ARTICLE_TYPE.live) {
trackingLogAd('Live');
} else if (articleType === ARTICLE_TYPE.piki) {
trackingLogAd('Piki');
} else {
trackingLogAd('Article');
}
if (articleType !== utils.isCoverTypeCheck() && articleType !== ARTICLE_TYPE.cover) {
if (menuKey.indexOf('Money') !== -1) {
$('#leftbanner2').loadAd({ type: 'left_915' });
} else {
$('#leftbanner2').loadAd({ type: 'left_915_no_money' });
}
}
// 쿼츠 서비스
var keywords = utils.getMetaValue("news_keywords");
if (keywords != '') {
var arrKeywords = keywords.split(',');
for (var i = 0; i < arrKeywords.length; i++) {
var keyword = $.trim(arrKeywords[i]).toLowerCase();
if (keyword == '쿼츠' || keyword == 'quartz') {
initQuartzGA();
}
}
}
}
var bannerFoot = '
';
if (pageType == PAGE_TYPE.pcHome) {
// 메인 광고 시 제외
if (typeof(isAdExNo) == "undefined" || (typeof(isAdExNo) != "undefined" && isAdExNo.indexOf("589") < 0)) {
$('#shapepopup').loadAd({ type: 'shapepopup_589' }).append(bannerFoot);
}
trackingLogAd('Home');
}
if (pageType == PAGE_TYPE.index) {
// 메인 광고 시 제외
if (typeof (isAdExNo) == "undefined" || (typeof (isAdExNo) != "undefined" && isAdExNo.indexOf("592") < 0)) {
$('#leftbanner').loadAd({ type: 'left_592' }).show().append(bannerFoot);
}
} else if (pageType == PAGE_TYPE.section || pageType === PAGE_TYPE.unique) {
// 오피니언, 정치, 경제 광고 수정
if (menuKey.indexOf('Money') !== -1 || menuKey.indexOf('Opinion') !== -1 || menuKey.indexOf('Politics') !== -1) {
$('#leftbanner').loadAd({ type: 'left_593_type2' });
} else {
if (showLeftAd) {
$('#leftbanner').loadAd({ type: 'left_593' }).show().append(bannerFoot);
}
}
// 라면로드 광고 예외처리
if (menuKey.toLowerCase().indexOf('ramyeonroad') !== -1 || menuKey.toLowerCase().indexOf('kimchiroad') !== -1 || menuKey.toLowerCase().indexOf('quartz') !== -1 ||
menuKey.toLowerCase().indexOf('misezero') !== -1) {
$('#ramyeonroad_display_680').loadAd({ type: 'display_680' });
}
// 더오래 좌우측 120x600 배너
if (menuKey.indexOf('Retirement') !== -1) {
$('#left_retirement').loadAd({ type: 'left_120' }).show().append(bannerFoot);
$('#right_retirement').loadAd({ type: 'right_120' }).show().append(bannerFoot);
}
} else {
// 라면로드 광고 예외처리
if (menuKey.toLowerCase().indexOf('ramyeonroad') !== -1 || menuKey.toLowerCase().indexOf('kimchiroad') !== -1 || menuKey.toLowerCase().indexOf('quartz') !== -1) {
$('#ramyeonroad_display_680').loadAd({ type: 'display_680' });
} else {
if (articleType !== utils.isCoverTypeCheck() && articleType !== ARTICLE_TYPE.cover) {
$('#leftbanner').loadAd({ type: 'left_593' }).show().append(bannerFoot);
}
}
// 더오래 좌우측 120x600 배너
if (menuKey.indexOf('Retirement') !== -1) {
$('#left_retirement').loadAd({ type: 'left_120' }).show().append(bannerFoot);
$('#right_retirement').loadAd({ type: 'right_120' }).show().append(bannerFoot);
}
}
if(pageType == PAGE_TYPE.index || pageType === PAGE_TYPE.list || pageType === PAGE_TYPE.unique || pageType === PAGE_TYPE.search || pageType === PAGE_TYPE.pcHome) {
$('#eventBanner').loadAd({ type: 'home_ci_806' });
}
if (pageType == PAGE_TYPE.section) {
// 정치 실시간 주요뉴스 고정기사(정정보도문) 예외처리
/*if (menuKey.indexOf('Politics') !== -1) {
var checkDaytime = __Ndaytime.ymdhms || '';
var checkTotalId = "23475465";
if (checkDaytime >= '20190522095000' && checkDaytime <= '20190523103000') {
//기사가 등록된지 얼마 안된경우 실시간 리스트에 보이므로 체크 (5번째 넘어가면 화면에 안보이니 이 때 넣자)
if ($("#ulItems li:has(a[href*='/article/" + checkTotalId + "'])").index() == -1 || $("#ulItems li:has(a[href*='/article/" + checkTotalId + "'])").index() >= 5) {
var realtimeHtml = '05월 22일[장제원 의원 \'이해충돌\' 관련 정정보도문]2019.05.22 09:40';
$("#ulItems li:has(a[href*='/article/" + checkTotalId + "'])").remove();
$("#ulItems li").eq(1).after(realtimeHtml);
}
}
}*/
//정정보도 사회면 (19년 8월27일 08시30분 ~ 28일 09시)
/*if (menuKey.indexOf('Society') !== -1) {
var checkDaytime = __Ndaytime.ymdhms || '';
if (checkDaytime >= '20190827083000' && checkDaytime <= '20190828090000') {
$("div.default_realtime").before("");
}
}*/
//오피니언, 정치, 경제 광고 수정
if (menuKey.indexOf('Money') !== -1 || menuKey.indexOf('Politics') !== -1) {
$('div[data-widget-service="display_680"]').attr('data-widget-service', 'da_300_type2');
}
if (menuKey.split(',').length > 1 && menuKey.indexOf('JPlus') !== -1) {
trackingLogAd('JPlus');
} else {
if (menuKey.toLowerCase().indexOf('sunday') !== -1) {
trackingLogAd('Section');
} else if (menuKey.indexOf('Money') !== -1) {
trackingLogAd(['Section', 'Money']);
} else if (menuKey.indexOf('Culture') !== -1) {
trackingLogAd(['Section', 'Culture']);
} else if (menuKey.indexOf('Sports') !== -1) {
trackingLogAd(['Section', 'Sports']);
} else if (menuKey.indexOf('Travel') !== -1) {
trackingLogAd(['Section', 'Travel']);
} else if (menuKey.indexOf('Politics') !== -1) {
trackingLogAd(['Section', 'Politics']);
} else {
trackingLogAd('Section');
}
if (menuKey.indexOf('Money') !== -1) {
$('#leftbanner2').loadAd({ type: 'left_915' });
} else {
$('#leftbanner2').loadAd({ type: 'left_915_no_money' });
}
}
}
if (pageType === PAGE_TYPE.list) {
////경제 광고 type 동적으로 수정
//if (utils.menu.getPageMenuKey().toLowerCase().indexOf('money') !== -1) {
// $('div[data-widget-service="display_680"]').attr('data-widget-service', 'da_300_money');
//}
if (menuKey.toLowerCase().indexOf('sunday') !== -1) {
trackingLogAd('Section');
} else if (menuKey.indexOf('Money') !== -1) {
trackingLogAd(['Section', 'Money']);
} else if (menuKey.indexOf('Culture') !== -1) {
trackingLogAd(['Section', 'Culture']);
} else if (menuKey.indexOf('Sports') !== -1 || menuKey.toLowerCase().indexOf('rio2016') !== -1) {
trackingLogAd(['Section', 'Sports']);
} else if (menuKey.indexOf('Travel') !== -1) {
trackingLogAd(['Section', 'Week']);
} else if (menuKey.indexOf('Politics') !== -1) {
trackingLogAd(['Section', 'Politics']);
} else {
trackingLogAd('Section');
}
if (menuKey.indexOf('Money') !== -1) {
$('#leftbanner2').loadAd({ type: 'left_915' });
} else {
$('#leftbanner2').loadAd({ type: 'left_915_no_money' });
}
}
// 부동산 섹션 좌측 120*600 광고 적용
if (utils.menu.getPageMenuKey().toLowerCase().indexOf('realestate') !== -1 && (utils.config('pageType') === 'List')) {
$('#wrap').prepend('');
//$('#leftbanner').loadAd({ type: 'left_593' });
$('#leftbanner_realestate').loadAd({ type: 'left_915' });
}
if (pageType === PAGE_TYPE.unique) {
var adPage = ['Opinion', 'Cartoon', 'Issue', 'Time7', 'MyNews', 'Jebo', 'BrandNews', 'CustomerCenter', 'Section', 'Star', 'Pic', 'UsaDiscover', 'SatiricalCartoon'];
if (menuKey.indexOf('SatiricalCartoon') !== -1) {
trackingLogAd('Section');
}
if (menuKey.toLowerCase().indexOf('sunday') !== -1) {
trackingLogAd('Section');
} else if (menuKey.indexOf('CanadaDiscover') !== -1 || menuKey.indexOf('UsaDiscover') !== -1) {
$('#adTravel').loadAd({ type: 'display_748' });
} else {
adPage.forEach(function (v, i, a) {
if (menuKey.indexOf(v) !== -1) {
if (v === 'UsaDiscover') {
trackingLogAd(['Section', 'Week']);
} else {
trackingLogAd('Section');
}
}
});
}
if (showLeftAd) {
if (menuKey.indexOf('Money') !== -1) {
$('#leftbanner2').loadAd({ type: 'left_915' });
} else {
$('#leftbanner2').loadAd({ type: 'left_915_no_money' });
}
}
//오피니언, 정치, 경제 광고 수정
if (menuKey.indexOf('Opinion') !== -1) {
$('div[data-widget-service="display_680"]').attr('data-widget-service', 'da_300_type2');
}
//오피니언 정정 보도문
if (menuKey.indexOf('Opinion') !== -1) {
var checkDaytime = __Ndaytime.ymdhms || '';
var viewTotalId = "23374877";
var viewTitle = "[반론보도]\"차라리 창조경제에서 배워라\" 관련";
if (checkDaytime >= '20190215213000' && checkDaytime <= '20190216223000') {
var strInsertHtml = '';
$("div.opinion_home_row01").after(strInsertHtml);
}
}
//2020 총선 광고 type 동적으로 수정
if (utils.menu.getPageMenuKey().toLowerCase().indexOf('election2020') !== -1) {
$('div[data-widget-service="da_300"]').attr('data-widget-service', 'da_300_election2020');
}
}
// init Article Reporter
//$('.journalist_area').find('.profile a').reporterCard(); //리포터 레이어 뜨지 않고 리포터 페이지로 이동
if (pageType == PAGE_TYPE.article) {
//tag(키워드)에 의한 분기
if (utils.isNoneADCheck()) {
//nothing
}
//부동산 섹션 좌측 120*600 광고 적용
if (utils.menu.getPageMenuKey().toLowerCase().indexOf('realestate') !== -1) {
$('#leftbanner').after('');
$('#leftbanner_realestate').loadAd({ type: 'left_915' });
}
////경제 광고 type 동적으로 수정
//if (utils.menu.getPageMenuKey().toLowerCase().indexOf('money') !== -1) {
// $('div[data-widget-service="da_300"]').attr('data-widget-service', 'da_300_money');
//}
//2020 총선 광고 type 동적으로 수정
if (utils.menu.getPageMenuKey().toLowerCase().indexOf('election2020') !== -1) {
$('div[data-widget-service="da_300"]').attr('data-widget-service', 'da_300_election2020');
}
initArticle();
if (articleType !== utils.isCoverTypeCheck()) {
//$('#leftbanner').loadAd({type: 'left_593'}).show().append(bannerFoot);
$('#shapepopup').loadAd({ type: 'shapepopup_590' }).append(bannerFoot);
if (articleType !== ARTICLE_TYPE.cover) {
$('#articeltopbanner').loadAd({ type: 'shoppingbox_496' }).show().append(bannerFoot);
}
//선데이 예외 - 임시
if (menuKey != undefined && menuKey.toLowerCase().indexOf('sunday') > -1) {
$('#articeltopbanner').hide();
}
}
}
//많이본 기사 하단 광고
$('#widget_favorite_articlesAD').loadAd({ type: 'favorite_ad' }).show();
//aside영역 광고
$('#wide_ad_bottom').loadAd({ type: 'wide_798' });
// MVC Ajax : 버튼 이벤트 선 처리.
$(document.body).on('click', 'a.btnMore', function() {
//utils.log('## btnMore click');
var $btn = $(this),
data = $btn.data(),
url = $btn.attr('href').split('?'),
pathname = url[0],
param = url[1],
href = '',
paramData = $.fn.deparam(param);
if(data.active == 'false') {
return false;
}
paramData.page = parseInt(data.currentPage, 10) + 1;
$btn.data({
'currentPage': paramData.page
});
if(data.url) {
href = decodeURIComponent(data.url).replace('{page}', paramData.page);
} else {
href = pathname + '?' + $.param(paramData);
}
//utils.log('');
$btn.attr({'href': href}).addClass('disable');
utils.setMoreBtn($btn);
});
// set paging_date
$('.paging_date').setPagingDate();
// set Search Form (s)
// set Search Form (e)
// set Tooltip
$('a.btnTooltip').on('mouseenter', function() {
var targetId = $(this).data('target'),
$target = $('#' + targetId);
if(!targetId) {
return false;
}
$target.show();
return false;
}).on('mouseleave', function() {
var targetId = $(this).data('target'),
$target = $('#' + targetId);
if(!targetId) {
return false;
}
$target.hide();
return false;
});
$("a.tab_button").on('click', function() {
var $ul = $(this).closest('ul');
$ul.children('li').attr('class', '');
var $li = $(this).parent();
$li.attr('class', 'on');
});
$('.share_wrap').sharePlate();
if ($('#sub').length > 0) {
$('#sub').widget();
}
$('#btnFollow').on('click', function() {
var $btn = $(this),
isFollow = $btn.data('isFollow') == true || $btn.data('isFollow') == 'True' ? true : false;
targetFollow($btn, $btn.data('id'), $btn.data('type'), isFollow);
});
$('#subscribed a.btn_subs, #btnFollowv2, .journalist_list a.btn_subs').on('click', function () {
var $btn = $(this),
isFollow = $btn.data('isFollow') == true || $btn.data('isFollow') == 'True' ? true : false;
targetFollowv2($btn, $btn.data('id'), $btn.data('type'), isFollow);
});
$('.back_top > a').on('click', function() {
$(window).scrollTop(0);
return false;
});
$('#head').sticky({
top: (articleType == ARTICLE_TYPE.cover ? 460 : 136),
cls: 'fake_sticky',
callback: function ($head) {
var $btn = $('.back_top > a');
if ($('html').hasClass('fake_sticky')) {
$btn.show();
} else {
$btn.hide();
}
}
});
$('#doc').find('div.ad').on('click', '.ft button', function() {
$(this).closest('.ad').hide();
return false;
});
$('.ad_top, .ft_close').on('click', '.ft button', function () {
$(this).closest('.ad').hide();
if ($(this).parents(".premium_richmedia").length > 0) {
$(".premium_richmedia").hide();
}
return false;
});
//윈도우 로드 완료 후 페렐렉스 스크롤 실행되도록 수정
/*var WindowLoad = window.onload;
window.onload = function (e) {
if (typeof (WindowLoad) == "function") {
WindowLoad();
}
// Set Parallax Scroll
// Cover Article 을 제외한 전체 페이지에 적용.
if (utils.config('applicationType') == APPLICATION_TYPE.pc && articleType != ARTICLE_TYPE.cover && location.host.indexOf(utils.config('cmsHost')) == -1) {
//utils.log('$$$$$ Set Parallax Scroll');
$.parallaxScrolling && $.parallaxScrolling();
}
}*/
$(window).load(function () {
// Set Parallax Scroll
// Cover Article 을 제외한 전체 페이지에 적용.
if (utils.config('applicationType') == APPLICATION_TYPE.pc && !utils.isCoverTypeCheck() && location.host.indexOf(utils.config('cmsHost')) == -1) {
//utils.log('$$$$$ Set Parallax Scroll');
$.parallaxScrolling && $.parallaxScrolling();
}
});
function initArticle() {
var totalId = utils.getTotalId();
var commentTotalId = $('#comment_total_id').val() || '';
var $articleBody = $('#article_body');
if (articleType == ARTICLE_TYPE.spGallery) {
$articleBody = $('#content');
}
var sourceCode = utils.getArticleSourceCode();
var articleTitle = utils.getArticleTitle();
var isLoginContents = utils.getIsLoginContents();
// 클립보드 복사 이벤트 처리.
if ((sourceCode == '1') || (sourceCode == '3') || (sourceCode == 'd5')) {
if (document.addEventListener) {
document.addEventListener("copy", fnCopyTextAdd, false);
} else if (document.attachEvent) {
document.attachEvent("oncopy", fnCopyTextAdd);
}
}
function fnCopyTextAdd() {
var getSelection = window.getSelection ? window.getSelection() : document.selection;
var getRange = getSelection.getRangeAt ? getSelection.getRangeAt(0) : getSelection.createRange();
if (!getSelection.rangeCount) return null
var addText = "[출처: 중앙일보] " + articleTitle;
var addHtml = "
" + addText;
var body = document.getElementsByTagName("body")[0];
var span = document.createElement("span");
span.appendChild(getRange.cloneContents());
if (span.innerHTML == "") return null;
var copytext = span.innerHTML + addHtml;
var addDiv = document.createElement("div");
body.appendChild(addDiv);
addDiv.innerHTML = copytext;
getSelection.selectAllChildren(addDiv);
window.setTimeout(function () {
body.removeChild(addDiv);
getSelection.removeAllRanges();
getSelection.addRange(getRange);
}, 0);
}
resetAdCriteo();
$('img[data-src], img[data-origin]', '#body').setDefaultImage();
$('iframe[data-src]', '#body').each(function () {
var $iframe = $(this);
if (!$iframe.attr('src')) {
$iframe.attr('src', $iframe.data('src'));
}
});
$('.tag_list').find('li').on('click', 'a', function() {
var $p = $(this).parent(),
keyword = '';
//utils.log($p.hasClass('issue'));
if($p.hasClass('issue') === false) {
keyword = $(this).text().replace('#', '');
utils.saveSearchHistory(keyword);
}
});
// init Article Components
if ($.fn.articleComponent && (!isLoginContents || userInfo.isLogin())) {
var pageMenuKey = utils.menu.getPageMenuKey().toLowerCase();
if((articleType == ARTICLE_TYPE.general || articleType == ARTICLE_TYPE.cover) && pageMenuKey.indexOf('jplus') == -1 && !utils.getIsCartoon()) {
//$articleBody.articleNewsflash(); // 속보
}
$articleBody.articleComponent();
if(pageMenuKey.indexOf('jplus') !== -1) {
$articleBody.articleJplusRecentlyNews();
}
}
// init Article Bottom
if (!utils.isSpCoverTypeCheck()) {
if ($.fn.articleBottom) {
$('#content').articleBottom();
}
}
$('.share_article a', '#content').setShareForArticle();
var headHeight = $('#head').height(),
headOffset = $('#head').offset();
// init Article sticky Menu (Only Article)
if ($('#head').length > 0) {
$('#head').sticky({
top: (articleType == ARTICLE_TYPE.cover ? 460 : 136 + headOffset.top),
callback: function($head) {
var $body = $('#body'),
bodyStyls = {'margin-top': ''};
if($head.hasClass('sticky')) {
layout.header.showSnsArea(true);
layout.header.bindCloseSearchArea(); // 검색 폼 / sns 변경 처리 이벤트 bind
$('.sns_wrap a', '#head').setShareForArticle(true);
bodyStyls['margin-top'] = headHeight;
} else {
layout.header.showSearchArea(false);
layout.header.unbindCloseSearchArea(); // 검색 폼 / sns 변경 처리 이벤트 unbind (검색폼 고정)
$('.sns_wrap a', '#head').setShareForArticle(false);
}
// 연재 와이드 타입은 body margin-top이 유지
if (articleType != ARTICLE_TYPE.spWide) {
$body.css(bodyStyls);
}
}
});
}
if (articleType == ARTICLE_TYPE.cover && $('#head').length > 0) {
$('#head').sticky({
top: 260,
cls: 'fixed_bg',
callback: function($head) {
if($head.hasClass('fixed_bg')) {
$('#cover').addClass('fixed_bg');
} else {
$('#cover').removeClass('fixed_bg');
}
}
});
}
// init Article Comment
if (!commentTotalId.isEmpty() && $.fn.comment) {
$('#comment').comment({
id: commentTotalId,
page: 'article' //news, user
});
}
//프리미엄 기사일 경우 click 이벤트 예외 처리
if (isLoginContents && !userInfo.isLogin()) {
$('.btn_paper, #btnDislike, #btnLike, #btnPrint').on('click', function () {
//프리미엄 기사일 경우 예외 처리
if (isLoginContents) {
alert('로그인을 해야 이용하실 수 있습니다.');
return false;
}
});
return false;
}
// set Article Print
$('#btnPrint').on('click', function () {
if(!totalId) {
utils.error('not defined total_id', true);
return false;
}
var windowSize = utils.windowSize();
var height = windowSize.height > 650 ? 650 : windowSize.height;
window.open('/article/print/' + totalId, 'print', 'directories=no,location=no,menubar=no,status=no,toolbar=no,scrollbars=yes,resizable=no,width=800,height=' + windowSize.height);
});
// set Article Scrap
$('#btnScrap').on('click', function() {
//utils.log('## scrap');
var userInfo = commentUserInfo.getInfo();
if (userInfo.type === "joins") {
articleScrap(totalId);
} else {
alert("joins 로그인 후, 이용할 수 있습니다.\n(※ 소셜로그인 사용자는 해당 기능을 이용할 수 없습니다.)");
}
});
// set Article Like
$('#btnLike').on('click', function () {
var $btn = $(this),
count = $btn.find('.count').text(),
url = utils.config('apiPath') + '/article/' + totalId + '/like';
if (totalId.length == 0) {
return alert('요청을 처리중 오류가 발생했습니다.\n새로 고침 후, 다시 시도해주세요.');
}
count = parseInt(count, 10);
utils.ajaxPost({
url: url,
success: function (res) {
if (res.IsSuccess) {
//alert('좋아요를 선택하셨습니다.');
$btn.find('.count').text(count + 1);
} else {
alert('이미 선택하셨습니다.');
}
}
});
});
// set Article Hate
$('#btnDislike').on('click', function() {
var $btn = $(this),
count = $btn.find('.count').text(),
url = utils.config('apiPath') + '/article/' + totalId + '/hate';
if(totalId.length == 0) {
return alert('요청을 처리중 오류가 발생했습니다.\n새로 고침 후, 다시 시도해주세요.');
}
count = parseInt(count, 10);
utils.ajaxPost({
url: url,
success: function(res) {
if(res.IsSuccess) {
//alert('싫어요를 선택하셨습니다.');
$btn.find('.count').text(count + 1);
} else {
alert('이미 선택하셨습니다.');
}
}
});
});
//$articleBody.on('resize_content', function () { utils.log('##font resize'); resetAdCriteo();});
//set criteo
function resetAdCriteo() {
// criteo_network 광고.
var isCulture = utils.menu.getPageMenuKey().toLowerCase().indexOf('culture') !== -1 ? true : false //문화 아티클일 경우 광고 타입이 변경됨
var isTravel = utils.menu.getPageMenuKey().toLowerCase().indexOf('travel') !== -1 ? true : false, //week& 아티클일 경우 광고 타입이 변경됨
//여행 기사내 광고 분기처리 제거 20171214
//$adCriteoNetwork = isTravel ? $adCriteoNetwork = $('#display_749').css('margin-left', '20px') : $('#criteo_network').css('margin-left', '20px'),
$adCriteoNetwork = $('#criteo_network').css('margin-left', '20px'),
$articleChildren = null,
//$articleAppendLast = $('');
relatedElementHeight = 0,
jplus1 = 0,
jplus2 = 0;
function init() {
//$articleChildren = $articleBody.children();
$articleChildren = $articleBody.children().filter(':not(div[class^=ab_jplus], div[class^=ab_related], #criteo_network)');
if ($articleChildren.length === 0) {
loadCriteo();
}
else {
relatedElementHeight = $articleBody.find('>div.ab_related').outerHeight() || 0;
jplus1 = $articleBody.find('>div.ab_jplus_notice').outerHeight() || 0;
jplus2 = $articleBody.find('>div.ab_jplus').outerHeight() || 0;
resetPosition();
}
}
if ($adCriteoNetwork.length > 0) {
init();
}
function resetPosition() {
var $targetChild = null;
for (var i = $articleChildren.length; i > 0; i--) {
$targetChild = $articleChildren.eq(i -1);
//utils.log('## $targetChild');
//utils.log($targetChild);
// 마지막 요소탐색이 끝나면
// 컴포넌트 여부 체크
if (i == 1 || $targetChild.is('div[class^=tag_], img, div[class^=ab_]')) {
if (i != 1) {
$adCriteoNetwork.css('margin-top', 0);
}
loadCriteo();
return;
}
//$targetChild.after($adCriteoNetwork); //이걸 왜 넣었는지 모르겠다..
if ($("div[style*='background:'][style*='width:'][style*='border:'][style*='border-image:']").length > 0) {
$articleBody.append($adCriteoNetwork);
}
else {
if (isBodyInside()) {
if (i == $articleChildren.length) {
$articleBody.append($adCriteoNetwork);
}
else {
$articleChildren.eq($targetChild.index() +1).before($adCriteoNetwork);
}
loadCriteo();
return;
}
else {
$targetChild.before($adCriteoNetwork);
if (isBodyInside()) {
//$targetChild.after($adCriteoNetwork); //이걸 왜 넣었는지 모르겠다..
loadCriteo();
return;
}
}
}
}
};
function isBodyInside() {
var adOffsetBottom = 0,
articleOffsetBottom = 0;
adOffsetBottom = $articleBody.offset().top + $adCriteoNetwork.offset().top + $adCriteoNetwork.outerHeight(true);
articleOffsetBottom = $articleBody.offset().top + $articleBody.height() - relatedElementHeight - jplus1 - jplus2; // article_body 높이 계산에 제외 할 요소들의 높이 제거
adOffsetBottom = Math.ceil(adOffsetBottom);
articleOffsetBottom = Math.ceil(articleOffsetBottom);
return adOffsetBottom < articleOffsetBottom ? true : false;
}
function loadCriteo() {
//기사내 광고 정치,문화,여행 분기처리 제거 20171214
/*if (isCulture) {
$('#criteo_network', $articleBody).loadAd({ type: 'da_250_culture' });
}
else if (utils.menu.getPageMenuKey().toLowerCase().indexOf('politics') !== -1) {
$('#criteo_network', $articleBody).loadAd({ type: 'da_250_politics' });
}
else {
if (!isTravel) {
$('#criteo_network', $articleBody).loadAd({ type: 'da_250_1' });
}
}*/
$('#criteo_network', $articleBody).loadAd({ type: 'da_250_1' });
}
};
}
function articleScrap(totalId) {
if(totalId.length == 0) {
return alert('요청을 처리중 오류가 발생했습니다.\n새로 고침 후, 다시 시도해주세요.');
}
var url = utils.config('apiPath') + '/article/' + totalId + '/subscribe';
if(!utils.config(CONFIG_NAMES.isLogin)) {
return alert('joins 로그인 후, 이용할 수 있습니다.\n(※ 소셜로그인 사용자는 해당 기능을 이용할 수 없습니다.)');
}
utils.ajaxPost({
url: url,
success: function(res) {
if(res.IsSuccess) {
alert('기사가 스크랩되었습니다.\n\'독자서비스> MY 뉴스\'에서 확인하실 수 있습니다.');
} else {
if(res.Code === 'Duplicated') {
alert('이미 스크랩한 기사입니다.');
} else {
alert('요청을 처리중 오류가 발생했습니다.\n새로 고침 후, 다시 시도해주세요.');
}
}
}
});
}
function targetFollow($btn, id, type, isFollow) {
var unfollowMessage = {
reporter: '해당 기자를 구독해지하시겠습니까?',
issue: '해당 이슈를 구독해지하시겠습니까?'
};
if(!id || !type) {
return alert('요청을 처리중 오류가 발생했습니다.\n새로 고침 후, 다시 시도해주세요.');
}
//utils.log('## articleScrap');
var url = utils.config('apiPath') + '/' + type + '/' + id + (isFollow ? '/unsubscribe' : '/subscribe');
if(!utils.config(CONFIG_NAMES.isLogin)) {
return alert('joins 로그인 후, 이용할 수 있습니다.\n(※ 소셜로그인 사용자는 해당 기능을 이용할 수 없습니다.)');
} else {
var userInfo = commentUserInfo.getInfo();
if (userInfo.type !== "joins") {
return alert('joins 로그인 후, 이용할 수 있습니다.\n(※ 소셜로그인 사용자는 해당 기능을 이용할 수 없습니다.)');
}
}
if(isFollow) {
if(!confirm(unfollowMessage[type])) {
return false;
}
}
utils.ajaxPost({
url: url,
success: function(res) {
if(isFollow) {
unFollow(false);
} else {
follow(true);
}
}
});
function follow(_isFollow) {
alert('구독되었습니다.\n\'독자서비스> 보관함\'에서 확인하실 수 있습니다.');
$btn.data('isFollow', _isFollow).parent().removeClass('toggle_off').addClass('toggle_on');
}
function unFollow(_isFollow) {
alert('구독해지 되었습니다.');
$btn.data('isFollow', _isFollow).parent().removeClass('toggle_on').addClass('toggle_off');
}
}
function targetFollowv2($btn, id, type, isFollow) {
var unfollowMessage = {
reporter: '필진 pick을 취소 하시겠습니까?\n취소할 경우, 필진 pick에서 해당 필진의 업데이트되는 컬럼을 확인할 수 없습니다.'
};
if (!id || !type) {
return alert('요청을 처리중 오류가 발생했습니다.\n새로 고침 후, 다시 시도해주세요.');
}
var url = utils.config('apiPath') + '/' + type + '/' + id + (isFollow ? '/unsubscribe' : '/subscribe');
if (!utils.config(CONFIG_NAMES.isLogin)) {
return alert('joins 로그인 후, 이용할 수 있습니다.\n(※ 소셜로그인 사용자는 해당 기능을 이용할 수 없습니다.)');
} else {
var userInfo = commentUserInfo.getInfo();
if (userInfo.type !== "joins") {
return alert('joins 로그인 후, 이용할 수 있습니다.\n(※ 소셜로그인 사용자는 해당 기능을 이용할 수 없습니다.)');
}
}
if (isFollow) {
if (!confirm(unfollowMessage[type])) {
return false;
}
}
utils.ajaxPost({
url: url,
success: function (res) {
if (isFollow) {
unFollow(false);
} else {
follow(true);
}
}, error: function (request, status, error) {
//alert(request.status + '//' + status + '//' + error )
}
});
function follow(_isFollow) {
alert('필진 Pick 목록에 추가 되었습니다.\n\필진 Pick에서 업데이트 되는 컬럼을 모아서 볼 수 있습니다.');
$btn.data('isFollow', _isFollow).addClass('btn_subs_ing');
}
function unFollow(_isFollow) {
alert('취소 되었습니다.');
$btn.data('isFollow', _isFollow).removeClass('btn_subs_ing');
}
}
// 아티클
// 기자 리스트
//$('div#content div.journalist_area a').each(function() {
// $(this).attr('href', utils.getClocUrl($(this).attr('href'), 'joongang|article|reporter'));
//});
// 지면 보기
$('div.article_head .byline a').each(function() {
$(this).attr('href', utils.getClocUrl($(this).attr('href'), 'joongang|article|paper'));
});
// 관련 태그
$('div#content div.tag_list a').each(function() {
$(this).attr('href', utils.getClocUrl($(this).attr('href'), 'joongang|article|tagkeyword'));
});
// 섹션홈
var pathname = location.pathname.toLowerCase();
// BI
$('div#head div.logo a').each(function() {
if(pathname.indexOf('article') > -1) {
$(this).attr('href', utils.getClocUrl($(this).attr('href'), 'joongang|article|bi'));
} else {
$(this).attr('href', utils.getClocUrl($(this).attr('href'), 'joongang|section|bi'));
}
});
// 아티클 내 필진
$('div#articleRetirement a').each(function () {
$(this).attr('href', utils.getClocUrl($(this).attr('href'), 'joongang|article|retirementreporter'));
});
/* Cloc */
});
})(window, document, jQuery);