/********************************************* * point_use.js --------------------------------------------- @constructor @init @plugin *********************************************/ /* ------------------------------------------- * @constructor ------------------------------------------- */ var u = new EPOS_CARD.Util(); // u インスタンスを作成 /* ------------------------------------------- * @init ------------------------------------------- */ j$(function(){ j$.prepaid_toggle(); j$.tabSwitcher(); j$.setDesignCookie(); j$.setDesignCookieUA(); }); /* ------------------------------------------- * @plugin ------------------------------------------- */ (function(j$){ /* * @plugin - prepaid_toggle */ j$.prepaid_toggle = function(){ /* element ------------------------------- */ var $elm = j$(".prepaid-toggle"); if($elm.length === 0){ return false; } var speed = 300, openNm = "open", queryBase = "initTab", myQuery = location.search; /* クエリによる初期表示制御 */ /* initTab=02(ゲームエンタメタブ)を初期表示にする際は、 * 一番目のアコーディオンを展開した状態にする */ if(u.isRangeSP() && myQuery && myQuery.indexOf("initTab=02") !== -1){ var tabQuery = myQuery.match(/initTab=(\d\d)/), tabID = tabQuery[0].replace("initTab=","prepaid-tab"), firstTab = "#" + tabID, $firstTab = $(firstTab), $firstAcd = $firstTab.find(".prepaid-toggle").eq(0), $trigger = $firstAcd.find(".toggle-head"), $content = $firstAcd.find(".toggle-content"); $trigger.addClass(openNm); $content.show(); } $elm.each(function(){ var self = j$(this), $trigger = self.find(".toggle-head"), $content = self.find(".toggle-content"); if(u.isRangeSP() && $trigger.hasClass(openNm)) { $content.show(); } $trigger.on("click",function(){ if(!u.isRangeSP() || $content.is(":animated")){ return false; } $content.find(".equalHeight").children("*").css("height","auto"); var self = j$(this); switch(self.hasClass(openNm)){ case true: self.removeClass(openNm); $content.stop().slideUp(speed); break; case false: self.addClass(openNm); $content.stop().slideDown(speed,function(){ EPOS_CARD.module.equalHeight(); }); break; } }); }); }; /* * @plugin tabSwitcher */ j$.tabSwitcher = function(config){ /* options ------------------------------- */ var c = $.extend({ containerName: ".prepaid-tab", noSwitchName: "noSwitch", naviClass: ".prepaid-tabLine", panelClass: ".prepaid-tabContent", currentName: "active", firstTarget: "#prepaid-tab02" // 初期表示対象:タブのidを指定(※何も指定しなければ一番最初のタブを表示) }, config); /* vars ------------------------------- */ var $container = $(c.containerName), tabNavi = $(c.naviClass, $container), tabPanel = $(c.panelClass, $container), firstPanel, targetTab, targetPanel, queryBase = "initTab", myQuery = location.search; if($container.length == 0){ return false; } /* setting ------------------------------- */ /* タブの数をclassとして付与 */ $container.each(function(){ var tab = $(this), btn = $(".prepaid-tabLine", tab), num = $("> .prepaid-tabHead01", btn).length; $(btn).addClass("count" + num); }); /* クエリによる初期表示制御 */ if(myQuery && myQuery.indexOf("initTab") !== -1){ var tabQuery = myQuery.match(/initTab=(\d\d)/), tabID = tabQuery[0].replace("initTab=","prepaid-tab"), firstTab = "#" + tabID, $firstTab = $(firstTab); if($firstTab.length > 0){ c.firstTarget = firstTab; } } /* trigger ------------------------------- */ $container.not("." + c.noSwitchName).each(function(){ targetTab = $(this); tabNavi = $(c.naviClass, targetTab); tabPanel = $(c.panelClass, targetTab); /* 初期表示 */ if(c.firstTarget != ""){ // JS側で初期表示タブに指定がある場合 firstPanel = c.firstTarget; } else if(tabNavi.find(".prepaid-tabHead01").hasClass(c.currentName)){ // HTML側で現在地の指定がある場合 firstPanel = $("." + c.currentName, targetTab).find("a").attr("href"); } else { firstPanel = tabNavi.find(".prepaid-tabHead01:first a").attr("href"); } tabNavi.find("a[href = '"+ firstPanel +"']").parent().addClass(c.currentName); tabPanel.show().not(firstPanel).hide(); /* 「タブボタン」クリック制御 */ tabNavi.on("click", "a", function(){ var self = $(this); tabPanel.find(".equalHeight").children("*").css("height","auto"); if(self.parent().hasClass(c.currentName)){ return false; } else { targetPanel = self.attr("href"); targetTab = self.parents(c.containerName); tabNavi = $(c.naviClass, targetTab); tabPanel = $(c.panelClass, targetTab); tabNavi.find(".prepaid-tabHead01").removeClass(c.currentName); tabNavi.find("a[href = '"+ targetPanel +"']").parent().addClass(c.currentName); tabPanel.show().not(targetPanel).hide(); EPOS_CARD.module.equalHeight(); return false; } }); }); }; /* * @plugin setDesignCookie */ j$.setDesignCookie = function(){ var $btn = j$(".prepaid-btn"); if($btn.length === 0){ return false; } $btn.on("click",function(){ var self = j$(this).closest(".col"), $label = self.find(".prepaid-card"), designNoArray = $label.find("img").attr("src").split('card_'); if(designNoArray.length >= 2) { var designNo = designNoArray[1].slice(0, 4); } else { var designNo = designNoArray; } j$.cookie("prepaiddesignno", designNo, {expires: 30, path: "/"}); }); }; /* * @plugin setDesignCookieUA ※UAバナー固有処理 */ j$.setDesignCookieUA = function(){ var $elm = j$(".js-uaBanner"); if($elm.length === 0){ return false; } $elm.on("click",function(){ j$.cookie("prepaiddesignno", "0779", {expires: 30, path: "/"}); }); }; })(jQuery);