/********************************************* * card-payment.js * ------------------------------------------- * @init * @plugin *********************************************/ /* ------------------------------------------- * @init ------------------------------------------- */ j$(function(){ var u = new EPOS_CARD.Util(); j$.anchorAdjust(); j$.cardPayment_tabs(); j$.modal(); j$.parameter_control(); }); j$(window).on("load", function(){ var u = new EPOS_CARD.Util(); j$.cardPayment_equalHeight(true, true); }); /* ------------------------------------------- * @plugin ------------------------------------------- */ (function(j$){ var u = new EPOS_CARD.Util(); /* * @method equalHeight * - 高さ揃え * @param {Boolean} * - 文字可変・リサイズに対応するかどうか */ j$.cardPayment_equalHeight = function(fsCheck, wsCheck){ var className = ".card-payment_equalHeight", childBaseName = "equalChild", cancelName = "sp-eqCancel", $elm = j$(className), $children = $elm.children(), $spChildren = $elm.not("." + cancelName).children(),// SP時に有効となる要素 winW = u.$win.width(), fsCheck = fsCheck || false, wsCheck = wsCheck || true, spCheck = false; if($elm.length === 0 || $children.length < 2){ return false; } if(winW < u.breakPoint1){ spCheck = true; } /* childBaseNameのグループ化 */ var grouping = function(w){ var $groupedChildren = $elm.find("*[class*=" + childBaseName + "]"), classNames = {},groups = []; $groupedChildren.each(function(){ var splitClass = j$(this).attr("class").split(" "), splitClassNum = splitClass.length, newClassName; for(var i = 0; i < splitClassNum; i++){ newClassName = splitClass[i].match(RegExp(childBaseName + "[a-z0-9,_,-]*", "i")); if(!newClassName){ continue; } else { newClassName.toString(); classNames[newClassName] = newClassName; } } }); // childBaseNameの格納 for(var c in classNames){ if(w < u.breakPoint1){ groups.push($elm.not("." + cancelName).find("." + c));// SP時にcancelNameを持つ要素を対象から外す } else { groups.push($elm.find("." + c)); } } return groups; }; /* 各要素の高さを揃える */ var equalHeight = function(elm){ var maxHeight = 0; elm.css("height", "auto"); elm.each(function(){ if(j$(this).outerHeight() > maxHeight){ maxHeight = j$(this).outerHeight(); } }); return elm.outerHeight(maxHeight); }; /* init */ var init = function(){ var winW = u.$win.width(), groups = grouping(winW); var eqAct = function(eqObj){ var h = [], child = [], maxHeight = 0, top = 0; j$.each(eqObj, function(){ var $group = j$(this).not(":hidden");// 非表示要素に適用させない場合.not(":hidden")を付与 $group.each(function(i){ j$(this).css("height", "auto"); h[i] = j$(this).outerHeight(); if ((top !== Math.round(j$(this).offset().top)) && (top !== Math.round(j$(this).offset().top) + 1) && (top !== Math.round(j$(this).offset().top) - 1)) { equalHeight(j$(child)); child = []; top = Math.round(j$(this).offset().top); } child.push(this); }); }); if(child.length > 1){ equalHeight(j$(child)); } } // childBaseName要素の高さを揃える eqAct(groups); // 子要素の高さを揃える if(winW < u.breakPoint1){ // SP時 eqAct($spChildren); j$("." + cancelName).children().css("height", "auto"); j$("." + cancelName).find("*[class*=" + childBaseName + "]").css("height", "auto"); } else { // PC時 eqAct($children); setTimeout( function(){ j$(".equalChild_bottom").css({ top: "inherit", bottom: 0 }); },100); } }; // 文字可変への対応可否 fsCheck ? u.isFontSizeCheck(init) : init(); wsCheck ? u.isWindowSizeCheck(init) : init(); } j$.cardPayment_tabs = function() { var showTab; var c = j$.extend({ tabName: ".jsTabContents", tablist: ".jsTabList", lastTablist: ".jsLastTabList", boxName: ".jsTabDetail", openClass : "active", lastClass : "is-last", escapeClass : "noTabLink", headerHight : j$('#header').outerHeight() }); var j$elm = j$(c.tabName); if(j$elm.length === 0){ return false; } j$elm.each(function(){ var j$this = j$(this), j$list = j$(c.tablist, j$this), j$box = j$(c.boxName, j$this); // 初期表示 j$box.hide(); j$list.on('click', 'li', function() { if(j$(this).is('.' + c.escapeClass)) {return false;} if(j$(this).hasClass(c.openClass)) { j$(this).removeClass("active"); j$box.hide(); } else { j$.cardPayment_equalHeight(true, true) var href = j$("a", this).attr("href"); j$(this).removeClass("active"); j$list.children().removeClass(c.openClass); j$(this).addClass(c.openClass); j$box.hide(); j$(href).show(); return false; } }); }); } /* * @method modal */ j$.modal = function(config){ var c = j$.extend({ elm: ".cb-inline" },config); // vars var $elm = j$(c.elm); if($elm.length === 0){ return false; } // trigger if(!u.isRangeSP()){ $elm.colorbox({ inline: true, width: "100%", maxWidth: "900px", maxHeight: "92%", fixed: true, onComplete: function(){ EPOS_CARD.module.equalHeight(true, true); EPOS_CARD.module.sizeFix(); } }); } else { $elm.colorbox({ inline: true, height: "", maxWidth: "100%", maxHeight: "100%", fixed: true, onComplete: function(){ EPOS_CARD.module.equalHeight(true, true); EPOS_CARD.module.sizeFix(); } }); } }, /* * parameter_control */ $.parameter_control = function(config){ var c = $.extend({ elm: ".js-paramChange01", elm02: ".js-paramChange02" },config); // vars var $elm = $(c.elm), $elm02 = $(c.elm02); if($elm.length === 0 && $elm02.length === 0){ return false; } // trigger var paramName = 'mpt_panel_card-payment'; function getParam(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, "\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, " ")); } if(getParam('int_id') == paramName) { $elm.hide(); $elm02.show(); } else { $elm.show(); $elm02.hide(); j$.headerFixed(); } } j$.headerFixed = function() { // vars var header = $('#header'), headerHight = header.outerHeight(), mainContainer = $('#mainContainer'); // setting mainContainer.css('margin-top', headerHight) } j$.anchorAdjust = function() { var headerHight = j$('#header').outerHeight(); j$('a[href^="#"]').not("a[href=#], a[href^=#tab], a[href^=#modal]").click(function () { var href = j$(this).attr("href"); var target = j$(href == "#" || href == "" ? "html" : href); var position = target.offset().top - headerHight; j$("html, body").animate({ scrollTop: position }, 500, "swing"); return false; }); } })(jQuery);