PageSourceSearch

https://www.duskin-gift.jp/common/re2021/js/nav.js

js duskin-gift.jp collected 2026-10-06 07:19:14 UTC 14,071 bytes, 430 lines download raw bytes

1(function() {
2
3    var state = false;
4    var scrollpos;
5    window.addEventListener('DOMContentLoaded', init, false);
6
7
8    function init() {
9
10
11        // ID設定で指定した場合の処理
12        var bgInner = [];
13        var mdlIdBgs = document.querySelectorAll("[data-nav-id-bg]");
14        var mdlIdBodys = document.querySelectorAll("[data-nav-id-body]");
15
16        for (var i = 0; i < mdlIdBgs.length; i++) {
17
18            mdlIdBgs[i].classList.add("nav-bg");
19            bgInner[i] = document.createElement('div');
20            bgInner[i].classList.add("nav-bg-inner");
21
22            bgInner[i].appendChild(mdlIdBodys[i].parentNode.replaceChild(bgInner[i], mdlIdBodys[i]));
23        }
24
25
26        var mdlIds = document.querySelectorAll("[data-nav-id]");
27        var mdlClasses = document.querySelectorAll("[data-mdl-class]");
28        var mdlIdKeys = document.querySelectorAll("[data-nav-id-key]");
29        var mdlBody = document.querySelectorAll("[data-nav-id-body]");
30
31        var mdlClassKeys = document.querySelectorAll("[data-mdl-class-key]");
32
33        maru(mdlIds, 'click', openMdl);
34        maru(mdlIdKeys, 'click', closeMdl);
35        maru(mdlBody, 'click', stopActMdlBody);
36
37
38        //サーチボックスの開閉
39        var iconSearch = document.querySelectorAll(".icon-search");
40        maru(iconSearch, 'click', isActSearch);
41
42        //プラスマイナスの開閉
43        var ttlPlusMinus = document.querySelectorAll(".ctgy-ttl.plusMinus");
44        maru(ttlPlusMinus, 'click', isPlusMinus);
45        var navTtlPlusMinus = document.querySelectorAll(".nav-ctgr-ttl.plusMinus");
46        maru(navTtlPlusMinus, 'click', isPlusMinus);
47
48
49        //マイページ情報等の開閉
50        var mA = document.querySelectorAll(".info-mA-btnA .btnA-btn");
51        maru(mA, 'click', isMA);
52
53        //ステータス判定
54        var elSts = document.querySelector("[data-member-status]");
55        var sts = elSts.dataset.memberStatus;
56        var elname = document.querySelector("[data-member-name]");
57        var memberName = $('.info-na-name').text();
58
59        judgeMemberStatus(sts, elSts, memberName);
60
61        //ナビのヘッダー対応
62        var parentDiv = document.querySelector(".mdl-body");
63        var headerA = document.querySelector(".headerA");
64        var felmc = parentDiv.firstElementChild;
65        clone = headerA.cloneNode(true);
66        clone.classList.add("clone-headerA");
67        // idの重複を防ぐ対応
68        $(clone).find('[id]').each(function(){
69            $(this).prop('id', $(this).prop('id') + '_nav');
70        });
71        parentDiv.insertBefore(clone,felmc);
72        var cloneMdlIdKeys = document.querySelectorAll(".clone-headerA [data-nav-id-key]");
73        maru(cloneMdlIdKeys, 'click', closeMdl);
74
75    } //function init ()
76
77
78    function maru(obj, ev, fn) {
79        for (i = 0; i < obj.length; i++) {
80            obj[i].addEventListener(ev, (function(j) {
81                return function(e) {
82                    fn(e, j, obj);
83                }
84            })(i), false);
85        }
86    }
87
88
89    function isActSearch(event, str, obj) {
90
91        for (i = 0; i < obj.length; i++) {
92            obj[i].classList.toggle("actSearchBtn");
93        }
94        var hSearchA = document.querySelectorAll(".header-searchA");
95
96        for (i = 0; i < hSearchA.length; i++) {
97            hSearchA[i].classList.toggle("actSearchA");
98        }
99    }
100
101    function isPlusMinus(event, str, obj) {
102        obj[str].classList.toggle("plus");
103    }
104
105
106    function isMA(event, str, obj) {
107        var infoMA = document.querySelectorAll(".info-mA");
108        for (i = 0; i < infoMA.length; i++) {
109            infoMA[i].classList.toggle("close");
110        }
111    }
112
113
114    function openMdl(event, str, obj) {
115        scrollpos = scroll;
116
117        var mdlIdV = obj[str].dataset.navId;
118        var mdlIdKeyQuery = "[data-nav-id-key=\'" + mdlIdV + "\']";
119        var mdlBg = document.querySelector(mdlIdKeyQuery);
120
121        mdlBg.classList.remove("d-n");
122        mdlBg.classList.add("d-b");
123
124        document.getElementsByTagName("body")[0].classList.add("mdl-fixed");
125        document.getElementsByTagName("body")[0].style.top = '-' + scrollpos + 'px';
126
127        mdlBg.classList.add("mdl-open");
128
129        var mdlIdQuery = "[data-nav-id=\'" + mdlIdV + "\']";
130        var mdlId = document.querySelector(mdlIdQuery);
131        mdlId.classList.remove("active");
132        mdlId.classList.add("passive");
133
134    }
135
136
137
138    function closeMdl(event, str, obj) {
139        var mdlIdKeyV = obj[str].dataset.navIdKey;
140        var mdlIdKeyQuery = "[data-nav-id-key=\'" + mdlIdKeyV + "\']";
141        var mdlBg = document.querySelector(mdlIdKeyQuery);
142
143        document.getElementsByTagName("body")[0].classList.remove("mdl-fixed");
144        document.getElementsByTagName("body")[0].style.top = '0px';
145
146        window.scrollTo(0, scrollpos);
147
148        mdlBg.classList.remove("mdl-open");
149        mdlBg.classList.remove("d-b");
150        mdlBg.classList.add("d-n");
151
152        var mdlIdQuery = "[data-nav-id=\'" + mdlIdKeyV + "\']";
153        var mdlId = document.querySelector(mdlIdQuery);
154        mdlId.classList.remove("passive");
155        mdlId.classList.add("active");
156
157
158        state = false;
159    }
160
161
162
163    function stopActMdlBody(event, str, obj) {
164        // ウィンドウの中身をクリックしても、閉じないようにする
165        event.stopPropagation();
166    }
167
168
169    function judgeMemberStatus(sts, el, mName) {
170
171        if (sts == 'pre' || sts == 'org' || sts == 'jnrl' || sts == 'org_pre' || sts == 'hataraki' || sts == 'jigyo' || sts == 'biz' || sts == 'biz_pre') {
172
173            var stsClassName = 'mmbrSts-' + sts;
174            var infoNam;
175          
176            if (sts == 'pre' || sts == 'org' || sts == 'jnrl' || sts == 'org_pre' || sts == 'hataraki' || sts == 'jigyo') {
177              infoName = '<a href="https://dduet.duskin.jp/cst/setting/" class="name-op1"><span>' + mName + '</span></a><div class="info-li-logout pc beforeNone"><a href="/apisys/logout_dduetmember_api.do">ログアウト</a></div>';
178            } else {
179              infoName = mName;
180            }
181
182            el.classList.add(stsClassName);
183
184            var elInfoName = document.querySelector(".info-na-name");
185            var elInfoGrp = document.querySelector(".info-na-grp");
186            var elInfoLiName = document.querySelector(".info-li-name");
187            var elInfoLiNameA = document.querySelector(".info-li-name.name-op1");
188          
189            var elIcnLogin = document.querySelector(".icon-login");
190            var elIcnNewM = document.querySelector(".icon-newmember");
191            var elLoginSts = document.querySelector(".login-status");
192          
193            //elInfoName.innerHTML = infoName;
194            if( elInfoName != null ){
195              elInfoLiNameA.innerHTML = infoName;
196              elInfoLiName.classList.add(stsClassName);
197            }
198          
199            elIcnLogin.classList.add(stsClassName);
200            elIcnNewM.classList.add(stsClassName);
201
202            /* 会員種別とログイン先DOMが無い場合はログイン無し状態とする */
203            if (elInfoGrp == null || elLoginSts == null) {
204            	sts = '';
205            }
206
207            if (sts == 'pre') {
208                elInfoGrp.innerHTML = "あなたはDDuetプレミアム会員です";
209                elLoginSts.innerHTML = "<a href='https://www.duskin.jp/apisys/logout_dduetmember_api.do'>ログアウト</a>";
210            } else if (sts == 'org') {
211                elInfoGrp.innerHTML = "あなたはDDuet組織員会員です";
212                elLoginSts.innerHTML = "<a href='https://www.duskin.jp/apisys/logout_dduetmember_api.do'>ログアウト</a>";
213            } else if (sts == 'jnrl') {
214                elInfoGrp.innerHTML = "あなたはDDuet会員です";
215                elLoginSts.innerHTML = "<a href='https://www.duskin.jp/apisys/logout_dduetmember_api.do'>ログアウト</a>";
216            } else if (sts == 'org_pre') {
217                elInfoGrp.innerHTML = "あなたはDDuet組織員プレミアム会員です";
218                elLoginSts.innerHTML = "<a href='https://www.duskin.jp/apisys/logout_dduetmember_api.do'>ログアウト</a>";
219            } else if (sts == 'hataraki') {
220                elInfoGrp.innerHTML = "あなたは働きさんです";
221                elLoginSts.innerHTML = "<a href='https://www.duskin.jp/apisys/logout_dduetmember_api.do'>ログアウト</a>";
222            } else if (sts == 'jigyo') {
223                elInfoGrp.innerHTML = "";
224                elLoginSts.innerHTML = "";
225            } else if (sts == 'biz') {
226                elInfoGrp.innerHTML = "あなたはDDuet事業所会員です";
227                elLoginSts.innerHTML = "事業所<br>会員";
228            } else if (sts == 'biz_pre') {
229                elInfoGrp.innerHTML = "あなたはDDuet事業所プレミアム会員です";
230                elLoginSts.innerHTML = "事業所<br>プレミアム<br>会員";
231            }
232
233            /* DDuet(事業所用サイト)のリンク先変更 */
234            if (sts == 'pre' || sts == 'org' || sts == 'jnrl' || sts == 'org_pre' || sts == 'hataraki' || sts == 'jigyo' || sts == 'biz' || sts == 'biz_pre') {
235                $(".ctgr03 a").attr("href", "https://dduet.duskin.jp/bridge/shift_bs.html");
236            }
237
238        }
239
240    }
241
242
243})();
244
245/* footeraccordion */
246jQuery(function($) {
247
248	$(".button a").toggle(
249		function(e) {
250			e.preventDefault();
251		
252			var target = $(this).attr("href");
253			$(target).slideDown(0);
254			
255			var img = $(this).children("img");
256			var osrc = img.attr("src");
257			var nsrc = osrc.replace(/\.png/, "_on.png");
258			
259			img.attr("src", nsrc).attr("alt", "閉じる");
260			
261			$('html,body').animate({ scrollTop: $($(this).attr("href")).offset().top},'250');
262		},
263		function(e) {
264			e.preventDefault();
265			
266			var target = $(this).attr("href");
267			$(target).slideUp(0);
268			
269			var img = $(this).children("img");
270			var osrc = img.attr("src");
271			var nsrc = osrc.replace(/_on/, "");
272			
273			img.attr("src", nsrc).attr("alt", "詳しく見る");
274		}
275	);
276	
277	$(".button a").eq(this).click();
278
279});
280
281/* navscrl */
282$(function () {
283	var bt = $("body").offset().top;
284    var ds = 0;
285    var hh = 43;
286
287	$(document).scroll(function () {
288        
289		ds = $(this).scrollTop();
290
291		if (bt + hh <= ds) {
292			$(".headerA").addClass('navscrl');
293		} else if (bt + hh > ds) {
294			$(".headerA").removeClass('navscrl');
295		}
296	});
297});
298
299//サイドメニューのカートの使い方のポップアップ制御
300function cartHelpWindowOpen(link) {
301    window.open(link, 'cartHelp','status=yes,scrollbars=yes,resizable=yes,width=668,height=750');
302}
303
304/* nav musk toggle */
305$(function () {
306    var $musk = $('[data-nav-id-musk]');
307    var $mdlIdKeys = $('[data-nav-id-key]');
308
309    $musk.on('click', function(){
310        $mdlIdKeys.trigger('click');
311    });
312});
313
314/* support toggle */
315$(function () {
316	var $tgl = $('.js-nav-tgl');
317	var $musk = $('.js-nav-musk');
318	var $trg = $('.js-nav-trg');
319	var $cnt = $('.js-nav-cnt ul');
320
321    $trg.on('click', function(){
322        var $tTgl = $(this).closest($tgl);
323        var $tCnt = $tTgl.find($cnt);
324
325        if($tTgl.hasClass('op')){
326            $tCnt
327                //.stop()
328                .slideUp(function(){
329                    $tTgl
330                        .removeClass('op');
331                });
332        }
333        else{
334            $tCnt
335                //.stop()
336                .slideDown(function(){
337                    $tTgl
338                        .addClass('op');
339                });
340        }
341    });
342
343    $musk.on('click', function(){
344        $cnt
345            .slideUp(function(){
346                $tgl
347                    .removeClass('op');
348            });
349    });
350});
351
352/* 検索窓 */
353$(function () {
354    var $bc = $('.breadcrumbs');
355    var $tgl = $('.js-search');
356    var $trg = $('.js-search_trg');
357
358    if($bc[0]){
359        $('body').addClass('is-bc');
360    }
361
362    $trg.on('click', function(){
363        if($(this).hasClass('op')){
364            //$tgl.hide();
365            $(this).removeClass('op');
366        }
367        else{
368            //$tgl.show();
369            $(this).addClass('op');
370        }
371    });
372});
373
374/* footer SNS[instagram,x_logo] toggle */
375$(function () {
376    var insta = 'insta';
377    var x_logo = 'x_logo';
378    var $tgl = $('.js-sns-tgl');
379    var $trg = {
380        insta:$('.js-insta-trg'),
381        x_logo:$('.js-x_logo-trg')
382    };
383    var $cnt = {
384        insta:$('.js-insta-cnt'),
385        x_logo:$('.js-x_logo-cnt')
386    };
387    var op = 'op';
388    var opSNS = {
389        insta: 'insta-op',
390        x_logo: 'x_logo-op'
391    };
392
393    $trg[insta].on('click', function(){
394        if($tgl.hasClass(opSNS[insta])){//instaが開いている場合
395            hideIcon(insta);
396        }
397        else if($tgl.hasClass(opSNS[x_logo])){//x_logoが開いている場合
398            hideIcon(x_logo);
399            showIcon(insta);
400        }
401        else{//どっちも閉じている場合
402            showIcon(insta);
403        }
404    });
405
406    $trg[x_logo].on('click', function(){
407        if($tgl.hasClass(opSNS[x_logo])){//x_logoが開いている場合
408            hideIcon(x_logo);
409        }
410        else if($tgl.hasClass(opSNS[insta])){//instaが開いている場合
411            hideIcon(insta);
412            showIcon(x_logo);
413        }
414        else{//どっちも閉じている場合
415            showIcon(x_logo);
416        }
417    });
418
419    function hideIcon(sns){
420        $cnt[sns].hide();
421        $tgl.removeClass(opSNS[sns]);
422        $trg[sns].parent().removeClass(op);
423    }
424
425    function showIcon(sns){
426        $cnt[sns].show();
427        $tgl.addClass(opSNS[sns]);
428        $trg[sns].parent().addClass(op);
429    }
430});

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.