PageSourceSearch

https://news.infoseek.co.jp/pc/js/reading_mission-2.5.js

js infoseek.co.jp collected 2026-10-02 08:48:17 UTC 29,639 bytes, 691 lines download raw bytes

1$(function () {
2
3    // Check if we are on the last page of the article: true if the specific mission part is not there
4    const articleLastPageIsReached = document.getElementById('mission-window-complete-mission-on-last-page-please') === null;
5
6    let stayOnPageConditionIsCompleted = false;
7    let scrollToReactionIconConditionIsCompleted = false;
8    let progressBarCompleted = false;
9    let selectedArticleReaction = null;
10    let agreedMissionList = null;
11    const mission_window = $('#mission-window');
12    const missionBar = $('.mission-stay_bar');
13    const missionStayCheckIcon = $('.mission-stay_bar-icon img');
14    const missionReactCheckIcon = $('.mission-react_icon img');
15    const missionNotCompletedStayBar = $('#mission_not_completed_stay_bar');
16    const missionLoading = $('#mission-window-loading');
17    const missionWindowCount = $('#mission-window-count');
18    const missionWindowError = $('#mission-window-error');
19    const missionClose = $('.mission-window-close');
20    const articleId = $('#article-id').val();
21    const missionProgress = $('.mission-progress');
22
23    const missionBoxHead = $('#missionBoxHead');
24    const missionNotLogin = $('#missionStatus_NotLogin');
25    const missionError = $('#missionStatus_Error');
26    const missionLogin = $('#missionStatusContent');
27
28    const reactionIconContainer = $('#reaction-icon-container');
29    const reactionIconContainerClickWall = $('#reaction-icon-container-click-wall');
30    const reactionIconContainerLink = $('#reaction-icon-container-link');
31    const reactionIconErrorContainer = $('#reaction-icon-error-container');
32    const reactionIconLoadingContainer = $('#reaction-icon-loading-container');
33    const reactionIconBalloon = $('.reaction-icon-balloon');
34    const reactionIcons = $('.js-reaction-icon');
35
36    const switchTeamsiteByMissionProgressConfig = $('#switch_teamsite_by_mission_progress_config');
37
38    const adDataInArticleContentsPc = $('#adDataInArticleContentsPc');
39    const adDataInArticleContentsPcDMission = $('#adDataInArticleContentsPcDMission');
40    const adDataInArticleContentsPcInitialState = $('#adDataInArticleContentsPcInitialState');
41
42    const middleDoubleRectangle2Detail = $('#middle_double_rectangle2_detail');
43    const middleDoubleRectangle2DetailDMission = $('#middle_double_rectangle2_detail_dmission');
44
45    const rnRectangle1Detail = $('#rnRectangle1Detail');
46    const rnRectangle1DetailDMission = $('#rnRectangle1DetailDMission');
47
48    const rnRectangle2Detail = $('#rnRectangle2Detail');
49    const rnRectangle2DetailDMission = $('#rnRectangle2DetailDMission');
50
51    const rnRectangle3Detail = $('#rnRectangle3Detail');
52    const rnRectangle3DetailDMission = $('#rnRectangle3DetailDMission');
53
54    const rnRectangle4Detail = $('#rnRectangle4Detail');
55    const rnRectangle4DetailDMission = $('#rnRectangle4DetailDMission');
56
57    const headerAd1CmpDetail = $('#headerAd1CmpDetail');
58    const headerAd1CmpDetailDMission = $('#headerAd1CmpDetailDMission');
59
60    const detailUnderSNS = $('#detailUnderSNS');
61    const detailUnderSNSDMission = $('#detailUnderSNSDMission');
62
63    const loginBox = $('#loginBox');
64    const userBox = $('#userBox');
65
66    const STARTED = 'STARTED';
67    const ANY_COMPLETED = 'ANY_COMPLETED';
68    const ANY_PROGRESSED = 'ANY_PROGRESSED';
69    const IN_PROGRESS = 'IN_PROGRESS';
70    const COMPLETED = 'COMPLETED';
71    const POINTS_REQUESTED = 'POINTS_REQUESTED';
72    const DAY = 'DAY';
73    const WEEK = 'WEEK';
74    const MONTH = 'MONTH';
75
76    const stayPageMilliSecond = 10000; // Stay on page for 10 seconds
77    const IN_PROGRESS_DISPLAY_TIME = 5000;
77 // Stay for 5 seconds if only in progress
78    const COMPLETED_DISPLAY_TIME = 8000; // Stay for 8 seconds if completed exists
79    const VALID_ARTICLE_REACTIONS = new Set(['bikkuri', 'iine', 'naruhodo', 'zannen']);
80
81    missionLoading.hide();
82    missionWindowError.hide();
83    missionWindowCount.hide();
84
85    missionBoxHead.hide();
86    missionNotLogin.hide();
87    missionError.hide();
88    missionLogin.hide();
89
90    let startedReadingMissionList = [];
91
92    /* Start Mission window timer logic */
93    const progressBar = document.getElementById('mission-stay_bar-item-id');
94    let progressBarWidth = 0;
95    let progressBarIntervalId;
96
97    /* Variables related to interstitial ads*/
98    let isInterstitialAdShowing = false;
99
100    const interstitialAdObserver = new MutationObserver(() => {
101        const externalAdFrame = $('body > #gn_interstitial_iframe_content');
102        const runaAdFrame = $('.interstitialClickAdRUNA');
103
104        if (externalAdFrame.length || runaAdFrame.length) {
105            interstitialAdObserver.disconnect();
106            clearTimeout(adObserverFallbackTimer);
107
108            isInterstitialAdShowing = true;
109            if (progressBarIntervalId !== undefined) {
110                pause();
111            }
112            window.addEventListener('CloseInterstitialModal', () => {
113                isInterstitialAdShowing = false;
114                play();
115            }, { once: true });
116        }
117    });
118
119    const adObserverFallbackTimer = setTimeout(
120        () => interstitialAdObserver.disconnect(),
121        10000
122    );
123
124    interstitialAdObserver.observe(document.body, { childList: true, subtree: true });
125
126    // We only start missions and show reaction UI on the last page of an article
127    if (articleLastPageIsReached) {
128        // Display article reaction loading state
129        displayReactionIconLoadingContainer();
130
131        // When window is on focus, play mission window timer
132        window.addEventListener('focus', play, false);
133
134        // When window loses focus, pause mission window timer
135        window.addEventListener('blur', pause, false);
136
137        // Handle page visibility change
138        document.addEventListener('visibilitychange', () => {
139            if (document.hidden) {
140                pause();
141            } else {
142                play();
143            }
144        });
145
146        window.addEventListener('StartMissionStatusBar', play, false);
147    }
148
149    // request mission list
150    requestMissionList();
151
152    // Close button
153    if (missionClose) {
154        missionClose.on('click', function () {
155            mission_window.toggleClass('mission-window-fixed');
156        });
157    }
158
159    function startProgressBar() {
160        progressBarIntervalId = clearInterval(progressBarIntervalId);
161        progressBarIntervalId = setInterval(() => {
162            if (progressBarWidth < 100) {
163                progressBarWidth++;
164                progressBar.style.width = `${progressBarWidth}%`;
165            } else {
166                progressBarCompleted = true;
167                progressBarIntervalId = clearInterval(progressBarIntervalId);
168
169                $(missionBar).addClass('stay-clear');
170                $(missionStayCheckIcon).attr('src', '/pc/img/mission/mission_check_icon_green-1.0.png');
171            }
172        }, 100);
173    }
174
175    function play() {
176        if (isInterstitialAdShowing) {
177            return;
178        }
179        startProgressBar();
180    }
181
182    function pause() {
183        progressBarIntervalId = clearInterval(progressBarIntervalId);
184    }
185
186    /* End Mission window timer logic */
187
188    function requestMissionList() {
189        $.ajax({
190             url: '/mission/progress/list/ajax/',
191             method: 'POST',
192             timeout: 10000,
193             data: {
194                 articleId: articleId,
195             },
196         })
197            /**
198             * @param {Object} missionListResult
199             * @param {Boolean} missionListResult.isLoggedIn
200             * @param {Boolean} missionListResult.progressPossibleMissionExists
201             * @param {Array} missionListResult.agreedMissionList
202             * @param {string} missionListResult.reactionToHighlight
203             */
204         .done(function (missionListResult) {
205
206             if (!missionListResult.isLoggedIn) {
207                 missionBoxHead.show();
208                 missionNotLogin.show();
209                 loginBox?.show();
210                 displayReactionIconInactiveContainer();
211                 // Show the default ads in article and detail under sns
212                 displayAdInArticleAndAdUnderSNS();
213                 globalDatabaseFunction.displayInterstitialAdForNonDailyMissionUser();
214                 return;
215             }
216             userBox.show();
217             if (missionListResult.activeMissionCount !== 0) {
218                 // Show mission status bar
219                 startedReadingMissionList = getStartedReadingMissionList(missionListResult.missionStatusInfoList);
220                 window.globalFunction.displayMissionStatusBar(missionListResult);
221
222                 let isDailyMissionAgreed = false;
223                 // Show interstitial ad
224                 missionListResult.agreedMissionList.forEach((mission) => {
225                     let advancement = mission.missionProgressAdvancement;
226                     if (mission.missionTaskTimeframe === 'DAY' && (advancement === IN_PROGRESS || advancement === STARTED ||
227                         advancement === COMPLETED || advancement === POINTS_REQUESTED)) {
228                         displayTeamsiteAds(mission);
229                         isDailyMissionAgreed = true;
230                     }
231                 });
232
233                 // Show the default ads content if there's no daily reading mission agreed
234                 if (!isDailyMissionAgreed) {
235                     displayAdInArticleAndAdUnderSNS();
236                     globalDatabaseFunction.displayInterstitialAdForNonDailyMissionUser();
237                 }
238             } else {
239                 globalDatabaseFunction.displayInterstitialAdForNonDailyMissionUser();
240             }
241
242             // If not on the last page, we do not start the mission, nor show the reaction counts
243             if (!articleLastPageIsReached) {
244                 // Only if there are missions to do, we invite the user to go to the last page to complete the mission
245                 if (missionListResult.progressPossibleMissionExists) {
246                     mission_window.toggleClass('mission-window-fixed');
247                 }
248                 return;
249             }
250
251             // If we are on the last page, we can start handling the missions, and show reaction UI
252             if (missionListResult.agreedMissionList.length === 0) {
253                 // If the user didn't join any article mission, do not start missions
254                 // And only show the reaction counts with an invitation to start missions
255                 displayReactionIconInactiveContainer();
256                 // Show the default ads content if there's no reading mission agreed
257                 displayAdInArticleAndAdUnderSNS();
258             } else if (missionListResult.progressPossibleMissionExists) {
259                 // Play mission window timer
260                 play();
261
262                 // Store agreed mission list to make it usable outside of this function's scope
263                 agreedMissionList = missionListResult.agreedMissionList;
264
265                 // Show article reaction icon
266                 displayReactionIconActiveContainer();
267
268                 // show mission window
269                 mission_window.toggleClass('mission-window-fixed');
270
271                 // IntersectionObserver replaces scroll handler (INP optimization)
272                 const reactionIconObserver = new IntersectionObserver((entries) => {
273                     if (entries[0].isIntersecting) {
274                         checkScrollToReactionButtonCondition();
275                         reactionIconObserver.disconnect();
276                     }
277                 }, { rootMargin: '0px 0px -90px 0px', threshold: 0 });
278                 if (reactionIcons.length > 0) {
279                     reactionIconObserver.observe(reactionIcons[0]);
280                     // Alternative to $(window).trigger('scroll'): check initial state
281                     const rect = reactionIcons[0].getBoundingClientRect();
282                     if (rect.top < window.innerHeight - 90) {
283                         checkScrollToReactionButtonCondition();
284                         reactionIconObserver.disconnect();
285                     }
286                 }
287
288                 // Page stay duration
289                 setTimeout(function () {
290                     stayPageCompleted(missionListResult.agreedMissionList);
291                 }, stayPageMilliSecond);
292             } else {
293                 // If there is no possible mission to be completed i.e. article already counted in all missions
294                 displayReactionIconHighlightedContainer(missionListResult.reactionToHighlight);
295             }
296         })
297         .fail(function () {
298             missionBoxHead.show();
299             missionError.show();
300             userBox.show();
301             displayReactionIconErrorContainer();
302         });
303    }
304
305    function displayReactionIconLoadingContainer() {
306        reactionIconLoadingContainer.css('display', 'flex');
307    }
308
309    function hideReactionIconLoadingContainer() {
310        reactionIconLoadingContainer.css('display', 'none');
311    }
312
313    function displayReactionIconErrorContainer() {
314        // Do not show, unless on last article page
315        if (!articleLastPageIsReached) {
316            return;
317        }
318        hideReactionIconLoadingContainer();
319        reactionIconErrorContainer.css('display', 'flex');
320    }
321
322    // Show reaction icon UI if there is a reaction that user can react
323    function displayReactionIconActiveContainer() {
324        hideReactionIconLoadingContainer();
325        reactionIconContainerClickWall.hide();
326        reactionIcons.on('click', reactionArticleIconClickedHandler);
327        reactionIconContainer.show();
328    }
329
330    function displayReactionIconInactiveContainer() {
331        // Do not show, unless on last article page
332        if (!articleLastPageIsReached) {
333            return;
334        }
335
336        hideReactionIconLoadingContainer();
337        disableClickOnReactionIcons();
338        reactionIconContainerLink.show();
339        reactionIcons.addClass('is-disabled');
340        reactionIconBalloon.addClass('is-not-joined-mission');
341        reactionIconContainer.show();
342    }
343
344    function displayReactionIconHighlightedContainer(reaction) {
345        // Hide loading UI
346        hideReactionIconLoadingContainer();
347
348        // If the reaction value is not supported or null, do not show the reaction UI
349        if (!VALID_ARTICLE_REACTIONS.has(reaction)) {
350            return;
351        }
352
353        // Show highlighted reaction icon UI
354        disableClickOnReactionIcons();
355        reactionIcons.addClass('is-disabled');
356        reactionIcons.filter('.reaction-icon.-' + reaction).addClass('is-active');
357        reactionIconBalloon.addClass('is-active');
358        reactionIconContainer.show();
359    }
360
361    function reactionArticleIconClickedHandler() {
362        // Extract the reaction from the icon's class name
363        const iconClassList = $(this).attr('class').split(' ');
364        selectedArticleReaction = iconClassList.find(className => className.startsWith('-')).substring(1);
365
366        // Update mission progress icon on mission parts
367        $(missionReactCheckIcon).attr('src', '/pc/img/mission/mission_check_icon_green-1.0.png');
368        $(missionReactCheckIcon).addClass('read-clear');
369
370        // Check if the mission was completed or not
371        checkArticleMissionCompleteCondition(agreedMissionList);
372
373        // Prevent any other click
374        reactionIconContainerClickWall.show();
375        disableClickOnReactionIcons();
376    }
377
378    function disableClickOnReactionIcons() {
379        // Remove click listeners, e.g. reaction or RAT
380        reactionIcons.off('click');
381    }
382
383    function getStartedReadingMissionList(missionStatusInfoList) {
384        let missionList = [];
385        for (const missionStatusInfo of missionStatusInfoList) {
386            if (missionStatusInfo.taskRepetitionCondition === 'DIFFERENT_ARTICLE') {
387                missionList.push(missionStatusInfo.missionTaskTimeframe);
388            }
389        }
390        return missionList;
391    }
392
393    function stayPageCompleted(missionList) {
394        if (stayOnPageConditionIsCompleted) {
395            checkArticleMissionCompleteCondition(missionList);
396        } else {
397            stayOnPageConditionIsCompleted = true;
398        }
399    }
400
401    function checkScrollToReactionButtonCondition() {
402        if (!scrollToReactionIconConditionIsCompleted) {
403            scrollToReactionIconConditionIsCompleted = true;
404        }
405    }
406
407    // Check if all conditions to complete article mission already fulfilled or not, and record mission data if all conditions fulfilled
408    function checkArticleMissionCompleteCondition(missionList) {
409        let IntervalId = setInterval(() => {
410            if (scrollToReactionIconConditionIsCompleted && stayOnPageConditionIsCompleted && progressBarCompleted && VALID_ARTICLE_REACTIONS.has(selectedArticleReaction)) {
411                clearInterval(IntervalId);
412
413                $('#mission-window-during').hide();
414                missionLoading.show();
415
416                let missionIdArray = [];
417                for (let missionData of missionList) {
418                    if (missionData.missionProgressAdvancement === COMPLETED ||
419                        missionData.missionProgressAdvancement === POINTS_REQUESTED) {
420                        continue;
421                    }
422                    missionIdArray.push(missionData.missionId);
423                }
424                let missionIds = missionIdArray.join(',');
425
426                $.ajax({
427                     url: '/mission/progress/ajax/',
428                     method: 'POST',
429                     timeout: 10000,
430                     data: {
431                         articleId: articleId,
432                         missionIds: missionIds,
433                         articleReaction: selectedArticleReaction,
434                     },
435                 })
436                 .done(function (progressResult) {
437
438                     missionLoading.hide();
439                     mission_window.removeClass('mission-window-fixed').addClass('mission-window-fixed');
440                     missionWindowCount.show();
441
442                     let progressResultMap = createProgressResultMap(progressResult, missionList);
443                     let displayTime = displayProgressResult(progressResultMap);
444                     setTimeout(function () {
445                         if ($(mission_window).hasClass('mission-window-fixed')) {
446                             $(mission_window).removeClass('mission-window-fixed');
447                         }
448                     }, displayTime);
449                 })
450                 .fail(function () {
451                     // Error
452                     missionLoading.hide();
453                     missionWindowError.show();
454                 });
455            }
456        }, 500);
457    }
458
459    function createProgressResultMap(progressResultList, missionList) {
460        let resultMap = new Map();
461        let anyCompleted = false;
462        let anyProgressed = false;
463
464        /**
465         * @param {Object} missionData
466         * @param {Number} missionData.missionProgressNumDoneRepetitions
467         * @param {String} missionData.missionProgressAdvancement
468         * @param {String} missionData.missionTaskTimeframe
469         * @param {Boolean} missionData.changedToCompleted
470         * @param {Number} missionData.missionTaskPointsToGrant
471         */
472        for (let missionData of missionList) {
473            for (let progressResult of progressResultList) {
474                if (progressResult.missionId === missionData.missionId.toString()) {
475                    missionData.missionProgressNumDoneRepetitions = progressResult.missionProgressNumDoneRepetitions;
476                    missionData.changedToCompleted =
477                        (missionData.missionProgressAdvancement !== progressResult.missionProgressAdvancement
478                            && progressResult.missionProgressAdvancement === COMPLETED);
479                    missionData.missionProgressAdvancement = progressResult.missionProgressAdvancement;
480                }
481            }
482            if (missionData.missionProgressAdvancement === COMPLETED) {
483                anyCompleted = true;
484            }
485            if (missionData.missionProgressAdvancement === IN_PROGRESS) {
486                anyProgressed = true;
487            }
488            resultMap.set(missionData.missionTaskTimeframe, missionData);
489        }
490
491        resultMap.set(ANY_COMPLETED, anyCompleted);
492        resultMap.set(ANY_PROGRESSED, anyProgressed);
493        return resultMap;
494    }
495
496    function displayProgressResult(resultDataMap) {
497        displayStatus(resultDataMap, DAY);
498        displayStatus(resultDataMap, WEEK);
499        displayStatus(resultDataMap, MONTH);
500
501        changeNotYetRequestedPoints(resultDataMap);
502
503        if (resultDataMap.get(ANY_PROGRESSED)) {
504            $('#mission-next-article-button').show();
505        } else {
506            $('#mission-next-article-button').hide();
507        }
508
509        let displayTime;
510        if (resultDataMap.get(ANY_COMPLETED)) {
511            $('#mission-completed').show();
512            $('#mission-not_completed').hide();
513            displayTime = COMPLETED_DISPLAY_TIME;
514        } else {
515            $('#mission-completed').hide();
516            $('#mission-not_completed').show();
517            missionNotCompletedStayBar.css('width', '100%');
518            missionNotCompletedStayBar.css('background-color', '#002896');
519            displayTime = IN_PROGRESS_DISPLAY_TIME;
520        }
521
522        return displayTime;
523    }
524
525    function displayStatus(resultDataMap, timeframe) {
526
527        let innerElement = $('#mission-' + timeframe + '-inner');
528        let statusElement = $('#mission-' + timeframe + '-status');
529
530        let resultData = resultDataMap.get(timeframe);
531        if (!resultData) {
532            if (!startedReadingMissionList.includes(timeframe)) {
533                innerElement.hide();
534            }
535            return;
536        }
537
538        let statusText;
539        if (resultData.missionProgressAdvancement === POINTS_REQUESTED) {
540            innerElement.addClass('text-gray');
541            statusText = '完了';
542        } else if (resultData.missionProgressAdvancement === COMPLETED) {
543            statusElement.addClass('text-red');
544            statusText = resultData.missionTaskNumRepetitionsToComplete + '/' + resultData.missionTaskNumRepetitionsToComplete + '記事達成!';
545        } else {
546            statusText = resultData.missionProgressNumDoneRepetitions + '/' + resultData.missionTaskNumRepetitionsToComplete + '記事達成!';
547        }
548        statusElement.text(statusText);
549
550        if (resultData.changedToCompleted) {
551            // update mission status bar
552            let prefix = '#pcReading' + timeframe;
553            let completed_inProgress = $(prefix + '_completed_inProgress');
554            let completed_completed = $(prefix + '_completed_completed');
555            let requested_notAgreedInProgress = $(prefix + '_requested_notAgreedInProgress');
556            let requested_completed = $(prefix + '_requested_completed');
557            completed_inProgress.css({'cssText': 'display: none!important;'});
558            completed_completed.show();
559            requested_notAgreedInProgress.css({'cssText': 'display: none!important;'});
560            requested_completed.show();
561        }
562
563        if (resultData.missionProgressAdvancement === IN_PROGRESS ||
564            (resultData.missionProgressAdvancement === COMPLETED && resultData.changedToCompleted)) {
565            let ratId = 'mission_' + resultData.missionId + '_progress_' + resultData.missionProgressNumDoneRepetitions;
566            missionProgress.append('<p data-ratid="' + ratId + '" data-ratevent="appear"></p>');
567        }
568    }
569
570    function changeNotYetRequestedPoints(resultDataMap) {
571        let dayData = resultDataMap.get(DAY);
572        let weekData = resultDataMap.get(WEEK);
573        let monthData = resultDataMap.get(MONTH);
574
575        if ((dayData && dayData.changedToCompleted) || (weekData && weekData.changedToCompleted) || (monthData && monthData.changedToCompleted)) {
576            let notYetRequestedPoints = 0;
577            if (dayData && dayData.missionProgressAdvancement === COMPLETED) {
578                notYetRequestedPoints += dayData.missionTaskPointsToGrant;
579            }
580            if (weekData && weekData.missionProgressAdvancement === COMPLETED) {
581                notYetRequestedPoints += weekData.missionTaskPointsToGrant;
582            }
583            if (monthData && monthData.missionProgressAdvancement === COMPLETED) {
584                notYetRequestedPoints += monthData.missionTaskPointsToGrant;
585            }
586            const notYetRequestedInfo = $('#notYetRequestedInfo');
587            notYetRequestedInfo.empty();
588            notYetRequestedInfo.append('未獲得:' + notYetRequestedPoints + 'ポイント');
589        }
590    }
591
592    /**
593     * Show the target interstitial ads by the number of daily mission progress repetitions and agreementDateTime
594     * @param {Object}  agreedMission
595     * @param {Number}  agreedMission.missionNumDoneRepetitions
596     * @param {Number}  agreedMission.missionTaskNumRepetitionsToComplete
597     * @param {String}  agreedMission.missionAgreementDateTime
598     * @param {String}  agreedMission.missionProgressAdvancement
599     */
600    function displayTeamsiteAds(agreedMission) {
601        const numDoneRepetitions = agreedMission.missionNumDoneRepetitions;
602        const numToComplete = agreedMission.missionTaskNumRepetitionsToComplete;
603        const agreedDateTime = agreedMission.missionAgreementDateTime;
604        const missionProgressAdvancement = agreedMission.missionProgressAdvancement;
605
606        // Show interstitial ads
607        globalDatabaseFunction.displayInterstitialAdForDailyMissionUser(numDoneRepetitions, numToComplete, agreedDateTime, missionProgressAdvancement);
608
609        // Show ads inside article and ads under SNS if mission progress more than switchTeamsiteByMissionProgressConfig
610        displayAdInArticleDmissionAndAdUnderSNSDmission(numDoneRepetitions);
611
612        displayMiddleDouble2DetailDMissionAds(numDoneRepetitions);
613
614        displayRnRectangle1DetailDMission(numDoneRepetitions);
615
616        displayRnRectangle2DetailDMission(numDoneRepetitions);
617
618        displayRnRectangle3DetailDMission(numDoneRepetitions);
619
620        displayRnRectangle4DetailDMission(numDoneRepetitions);
621
622        displayHeaderAd1DetailDMission(numDoneRepetitions);
623    }
624
625    /* This function will show ad_in_article_dmission and detail_under_sns_dmission teamsite */
626    function displayAdInArticleDmissionAndAdUnderSNSDmission(numDoneRepetitions) {
627        if (numDoneRepetitions >= parseInt(switchTeamsiteByMissionProgressConfig.attr('value'))) {
628            if (adDataInArticleContentsPcInitialState.length !== 0) {
629                adDataInArticleContentsPcInitialState.replaceWith(adDataInArticleContentsPcDMission.attr('value'));
630            }
631            if (detailUnderSNSDMission.length !== 0) {
632                detailUnderSNSDMission.replaceWith(detailUnderSNSDMission.attr('value'));
633            }
634        } else {
635            displayAdInArticleAndAdUnderSNS();
636        }
637    }
638
639    /* This function will show ad_in_article and detail_under_sns teamsite */
640    function displayAdInArticleAndAdUnderSNS() {
641        if (adDataInArticleContentsPcInitialState.length !== 0) {
642            adDataInArticleContentsPcInitialState.replaceWith(adDataInArticleContentsPc.attr('value'));
643        }
644        if (detailUnderSNS.length !== 0) {
645            detailUnderSNS.replaceWith(detailUnderSNS.attr('value'));
646        }
647    }
648
649    /* This function will show middle_double_rectangle2_detail_dmission teamsite */
650    function displayMiddleDouble2DetailDMissionAds(numDoneRepetitions) {
651        if (numDoneRepetitions >= parseInt(switchTeamsiteByMissionProgressConfig.attr('value'))) {
652            middleDoubleRectangle2Detail.html(middleDoubleRectangle2DetailDMission.attr('value'));
653        }
654    }
655
656    /* This function will show rn_1st_rectangle_detail_dmission teamsite */
657    function displayRnRectangle1DetailDMission(numDoneRepetitions) {
658        if (numDoneRepetitions >= parseInt(switchTeamsiteByMissionProgressConfig.attr('value'))) {
659            rnRectangle1Detail.html(rnRectangle1DetailDMission.attr('value'));
660        }
661    }
662
663    /* This function will show rn_2nd_rectangle_detail_dmission teamsite */
664    function displayRnRectangle2DetailDMission(numDoneRepetitions) {
665        if (numDoneRepetitions >= parseInt(switchTeamsiteByMissionProgressConfig.attr('value'))) {
666            rnRectangle2Detail.html(rnRectangle2DetailDMission.attr('value'));
667        }
668    }
669
670    /* This function will show rn_3rd_rectangle_detail_dmission teamsite */
671    function displayRnRectangle3DetailDMission(numDoneRepetitions) {
672        if (numDoneRepetitions >= parseInt(switchTeamsiteByMissionProgressConfig.attr('value'))) {
673            rnRectangle3Detail.html(rnRectangle3DetailDMission.attr('value'));
674        }
675    }
676
677    /* This function will show rn_4th_rectangle_detail_dmission teamsite */
678    function displayRnRectangle4DetailDMission(numDoneRepetitions) {
679        if (numDoneRepetitions >= parseInt(switchTeamsiteByMissionProgressConfig.attr('value'))) {
680            rnRectangle4Detail.html(rnRectangle4DetailDMission.attr('value'));
681        }
682    }
683
684    /* This function will show header_ad1_detail_dmission teamsite */
685    function displayHeaderAd1DetailDMission(numDoneRepetitions) {
686        if (numDoneRepetitions >= parseInt(switchTeamsiteByMissionProgressConfig.attr('value'))) {
687            headerAd1CmpDetail.html(headerAd1CmpDetailDMission.attr('value'));
688        }
689    }
690
691}); /* $function */

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.