/*********************************************
* common.js
* -------------------------------------------
* @namespace
* - EPOS_CARD
* @noConflict
* - j$
* @constructor
* - Util(variable/method)
* :variable
* - $win
* - $doc
* - ua
* - SMART_UA
* :method
* - isRangeSP
* - isNotPC
* - isSmartphone
* - isTablet
* - isAndroid
* - isChrome
* - isIE8
* @module
* - respondBrowser
* - viewport
* - rollover
* - opacityRollover
* - smoothScroll
* - fadePageTop
* - sizeFix
* - accordion
* - tabs
* - equalHeight
* - swapImg
* - findRowLast
* - customCheck
* - selectBox
* - headingNavi
* - headingNavi2
* - modal
* - tableHeadAppend
* - elemswap
* - floationgControl
* - popup
* - okwave
*********************************************/
/* -------------------------------------------
* @namespace
------------------------------------------- */
var EPOS_CARD = EPOS_CARD || {};
/* -------------------------------------------
* @noConflict
------------------------------------------- */
jqNew = jQuery.noConflict();
if($ === undefined){
$ = jQuery;
}
j$ = jQuery || jqNew;
/* -------------------------------------------
* @constructor
------------------------------------------- */
EPOS_CARD.Util = function(){
this.$win = j$(window);
this.$doc = j$(document);
this.ua = navigator.userAgent.toLowerCase();
this.SMART_UA = ["iphone","ipad","android","windows phone"];
this.pageW = 1240;
this.breakPoint1 = 750;
};
EPOS_CARD.Util.prototype = {
/*
* @method isRangeSP
* @return {Boolean}
*/
isRangeSP: function(){
var winW = this.$win.width();
return (winW <= this.breakPoint1) ? true : false;
},
/*
* @method isNotPC
* @return {Boolean}
*/
isNotPC: function(){
var uaArray = new RegExp(this.SMART_UA.join("|"),"i");
return uaArray.test(this.ua);
},
/*
* @method isTablet
* @return {Boolean}
*/
isTablet: function(){
var UA = {
iPad: this.ua.indexOf('ipad') != -1,
Android: this.ua.indexOf('android') != -1 && this.ua.indexOf('mobile') == -1
};
return (UA.iPad || UA.Android) ? true : false;
},
/*
* @method isSmartphone
* @return {Boolean}
*/
isSmartphone: function(){
var UA = {
iPhone: this.ua.indexOf('iphone') != -1,
iPod: this.ua.indexOf('ipod') != -1,
Android: this.ua.indexOf('android') != -1 && this.ua.indexOf('mobile') != -1,
WindowsPhone: this.ua.indexOf('windows phone') != -1
}
return (UA.iPhone || UA.iPod || UA.Android || UA.WindowsPhone) ? true : false;
},
/*
* @method isiPhone
* @return {Boolean}
*/
isiPhone: function(){
var UA = {
iPhone: this.ua.indexOf('iphone') !== -1,
iPod: this.ua.indexOf('ipod') !== -1,
};
return (UA.iPhone || UA.iPod) ? true : false;
},
/*
* @method isAndroid
* @return {Boolean}
*/
isAndroid: function(){
return (this.ua.indexOf('android') != -1) ? true : false;
},
/*
* @method isChrome
* @return {Boolean}
*/
isChrome: function(){
return (this.ua.indexOf("chrome") != -1) ? true : false;
},
/*
* @method isIE8
* @return {Boolean}
*/
isIE8: function(){
return (this.ua.indexOf("msie 8") != -1) ? true : false;
},
/*
* @method isFontSizeCheck
* @param {function} callback
* - フォントサイズが変更されたら、callbackを実行
*/
isFontSizeCheck: function(callback){
var HTML_FS_WATCH = j$('
'),
CSS_OBJECT = {
display: "block",
visibility: "hidden",
position: "absolute",
top: "0",
padding: "0"
},
$elm,
interval = 500,
currentSize = 0;
// 監視用HTMLを生成する
HTML_FS_WATCH.css(CSS_OBJECT).appendTo("body");
$elm = j$("#fontSizeWatcher");
// 要素の高さを取得
var getSize = function($elm){ return $elm.height(); };
// 要素の高さを比較して、異なればcallbackを実行
var fontSizeCheck = function(){
var h = getSize($elm);
if(h === currentSize){
return false;
} else {
currentSize = h;
callback();
}
};
setInterval(fontSizeCheck, interval);
},
/*
* @method isWindowSizeCheck
* @param {function} callback
* - windowのリサイズ処理が完了したら、callbackを実行
*/
isWindowSizeCheck: function(callback){
var resize = false,
interval = 500;
this.$win.on("resize", function(){
// リサイズされている間は何もしない
if(resize !== false){ clearTimeout(resize); }
resize = setTimeout(function(){
callback();
}, interval);
});
}
};
/* -------------------------------------------
* @module
------------------------------------------- */
EPOS_CARD.module = function(){
var u = new EPOS_CARD.Util();
return {
/*
* @method initialize
* - 初期化
*/
initialize: function(){
this.respondBrowser();
this.viewport();
this.rollover();
this.opacityRollover();
this.smoothScroll();
this.fadePageTop();
this.accordion();
this.tabs();
this.swapImg();
this.findRowLast();
this.radioBtn();
this.customCheck();
this.selectBox();
//this.headingNavi(); Load後実行
//this.headingNavi2(); Load後実行
this.modal();
this.tableHeadAppend();
this.elemswap();
this.floationgControl();
this.popup();
//this.okwave(); 各ページで個別に実行
},
/*
* @method respondBrowser
* - ブラウザ対応
*/
respondBrowser: function(){
/* PC、タブレットの場合 */
if(!u.isSmartphone()){
// UA判別による要素削除
j$(".ua_spOnly").remove();
}
/* PC以外の場合 */
if(u.isNotPC()){
// UA判別による要素削除
j$(".ua_pcOnly").remove();
}
if(u.isSmartphone()){
// 電話リンク付与
j$('.telLink').each(function(){
var telNum = j$(this).text();
j$(this).html(j$('').attr('href', 'tel:' + telNum.replace(/\s+|-/g, '')).append(telNum + ''));
});
}
// UA判別による要素の出し分け
if(u.isiPhone()){
j$(".ua-iPhoneOnly").show();
j$(".ua-AndroidOnly").remove();
}
if(u.isAndroid()){
j$(".ua-AndroidOnly").show();
j$(".ua-iPhoneOnly").remove();
}
},
/*
* @method viewport
* - viewport対応
*/
viewport: function(){
var viewPoint = u.pageW;
if(u.isTablet()){
j$("body").css("width", viewPoint + "px");
j$("meta[name='viewport']").attr("content", "width=" + viewPoint + "px");
}
},
/*
* @method rollover
* - ロールオーバー
*/
rollover: function(){
if(u.isNotPC() || u.isRangeSP()){
return false;
}
var $elm = j$(".rollover"),
onSuffix = "on";
var src = {
over: function($elm){return $elm.attr("src").replace(/^(.+)(\.[a-z]+)$/, "$1" + onSuffix + "$2");},
out: function($elm){return $elm.attr("src").replace(new RegExp("^(.+)" + onSuffix + "(\.[a-z]+)$" ), "$1$2");},
preload: function($elm){return $elm.attr("src").replace(/^(.+)(\.[a-z]+)$/, "$1" + onSuffix + "$2");}
};
$elm
.hover(function(){
j$(this).attr("src", src.over(j$(this)));
}, function(){
j$(this).attr("src", src.out(j$(this)));
})
.each(function(){
j$("
").attr("src", src.preload(j$(this)));
});
},
/*
* @method rollover
* - ロールオーバー(透過)
*/
opacityRollover : function(config){
if(u.isNotPC()){
return false;
}
// @user option
var c = j$.extend({
className: ".opRollover",
animSpeed: 200
}, config);
j$(c.className).hover(
function(){
j$(this).stop().animate({
"opacity": 0.6
},c.animSpeed);
},
function(){
j$(this).stop().animate({
"opacity": 1.0
},c.animSpeed);
}
);
},
/*
* @method smoothScroll
* - スムーススクロール
*/
smoothScroll: function(config){
var c = j$.extend({
speed: 300,
easing: "swing",
noScrollClass: ".noScroll",
fixParts: ".heading01.hasNav"
}, config);
/* vars
------------------------------- */
var url = j$(location).attr("href"),
hash = location.hash,
href,
target,
position,
difference,
webkit = /webkit/;
/* trigger
------------------------------- */
/* ページ遷移+アンカー移動制御 */
u.$win.load(function(){
if((url.indexOf("#anc") !== -1)||(url.indexOf("#info_anchor") !== -1)){
target = j$(hash);
if(j$(c.fixParts).length === 0){
position = target.offset().top;
} else {
difference = j$(c.fixParts).innerHeight();
position = target.offset().top - difference;
}
j$("html, body").animate({
scrollTop: position
}, c.speed, c.easing);
}
});
/* スクロール制御 */
j$("a[href^=#]").not("a[href=#], a[href^=#tab], a[href^=#modal], " + c.noScrollClass + "").click(function(){
href = j$(this).attr("href");
target = j$(href);
if(j$(c.fixParts).length === 0){
position = target.offset().top;
} else {
difference = j$(c.fixParts).innerHeight();
position = target.offset().top - difference;
}
if(u.isRangeSP()){
j$("html, body").animate({
scrollTop: position
}, c.speed, c.easing);
} else {
j$("html, body").animate({
scrollTop: position
}, c.speed, c.easing);
}
return false;
});
},
/**
* @method fadePageTop
*/
fadePageTop: function(config) {
// vars
var dsClass = "in",
$elm = j$("#pageTopBtn"),
speed = 300;
// function
var fdOut = function(){
$elm.stop().animate({"opacity":"0"},speed,function(){
j$(this).removeClass(dsClass);
j$(this).hide();
});
};
var fdIn = function(){
if($elm.hasClass(dsClass)) { // 既にスクロールが始まっていたら処理しない
return;
} else {
$elm.show().addClass(dsClass).stop().animate({"opacity":"1.0"},speed);
}
};
var scrollAct = function(){
var top = u.$win.scrollTop();
if(top === 0){
fdOut();
} else {
fdIn();
}
};
// trigger
scrollAct();
u.$win.on("scroll",function(){
scrollAct();
});
// リサイズ時
u.isWindowSizeCheck(scrollAct);
},
/*
* @method sizeFix
* - 画像幅取得
*/
sizeFix: function(config){
// user option
var c = j$.extend({
elm: ".sizeFix",
isSpRun: true,
resizeRerun: true
}, config);
// vars
var $elm = j$(c.elm).not(":hidden"),
spEscName = "spEscape",
setW;
// return false
if(($elm.length === 0)||(!c.isSpRun && u.isSmartphone())){ return false; }
// function
var sizeSet = function(target){
if(c.resizeRerun){
if(u.isRangeSP() && target.hasClass(spEscName)){
target.css("width", "");
return;
} else {
target.css("width", "");
}
} else if(u.isRangeSP() && target.hasClass(spEscName)) {
return;
}
setW = j$("img", target).width();
target.css("width", setW);
};
// trigger
$elm.each(function(){
var self = j$(this);
sizeSet(self);
if(c.resizeRerun){
u.isWindowSizeCheck(function(){
sizeSet(self);
});
}
});
},
/*
* @method equalHeight
* - 高さ揃え
* @param {Boolean}
* - 文字可変・リサイズに対応するかどうか
*/
equalHeight: function(fsCheck, wsCheck){
var className = ".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 != j$(this).position().top){
equalHeight(j$(child));
child = [];
top = j$(this).position().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();
},
/*
* @method swapImg
* - ウィンドウ幅で画像切り替え
*/
swapImg: function(config){
var c = j$.extend({
targetClass: ".swap",
pcName: "pc_",
spName: "sp_"
}, config);
if(j$(c.targetClass).length === 0){
return false;
}
j$(c.targetClass).each(function(){
var self = j$(this);
var swapImg = function(){
if(u.isRangeSP()){
self.attr("src", self.attr("src").replace(c.pcName, c.spName));
} else {
self.attr("src", self.attr("src").replace(c.spName, c.pcName));
}
};
// 初回読込時
swapImg();
// リサイズ時
u.isWindowSizeCheck(swapImg);
});
},
/**
* @method accordion
*/
accordion: function(config){
var c = j$.extend({
elm: ".toggleWrap",
trigger: ".toggleTrigger",
target: ".toggleContent",
speed: 300,
openNm: "open"
},config);
// vars
var $elm = j$(c.elm),
$trg = j$(c.trigger);
if($elm.length === 0){ return false; }
// setting
j$(c.target).not("." + c.openNm).hide();
// trigger
$trg.on("click",function(){
var self = j$(this),
$wrap = self.parents(c.elm),
$target = $wrap.find(c.target);
if(self.hasClass(c.openNm)){
self.removeClass(c.openNm);
$target.stop().slideUp(c.speed);
} else {
self.addClass(c.openNm);
$target.stop().slideDown(c.speed);
EPOS_CARD.module.equalHeight(true, true);
EPOS_CARD.module.sizeFix();
}
});
},
/**
* @method tabs
*/
tabs: function(config){
var c = j$.extend({
tabName: ".tabWrap",
tablist: ".tabList",
boxName: ".tabDetail",
openClass : "active",
escapeClass : "noTabLink"
}, config);
var $elm = j$(c.tabName);
if($elm.length === 0){ return false; }
$elm.each(function(){
var $this = j$(this),
$list = j$(c.tablist, $this),
$box = j$(c.boxName, $this);
// 初期表示
$box.hide();
j$('li', $list).removeClass(c.openClass);
j$('li:first-child', c.tablist).addClass(c.openClass);
j$('li:first-child a', c.tablist).each(function(){
var showTab = j$(this).attr("href");
j$(showTab).show();
});
$list.on('click', 'li', function() {
if(j$(this).is('.' + c.escapeClass)) {
return false;
}
if(j$(this).hasClass(c.openClass)) {
return false;
} else {
var href = j$("a", this).attr("href");
$list.children().removeClass(c.openClass);
j$(this).addClass(c.openClass);
$box.hide();
j$(href).show();
EPOS_CARD.module.equalHeight();
return false;
}
});
});
},
/**
* @method findRowLast
*/
findRowLast: function(config){
var c = j$.extend({
targetElmName: "li",
rowsClass: "rowLast"
}, config);
var $elm = j$(".findRowLast");
if($elm.length === 0){ return false; }
findRowLast = function(){
$elm.each(function() {
var $target = j$(c.targetElmName, this),
len = $target.length,
num = 0,
init,
eOffset,
gOffset;
$target.removeClass(c.rowsClass);
$target.eq(len-1).addClass(c.rowsClass);
$target.each(function(){
eOffset = parseInt(j$(this).offset().top);
if(gOffset != eOffset){
j$(this).prev().addClass(c.rowsClass);
gOffset = eOffset;
}
});
});
}
//ロード時
findRowLast();
// 文字可変時
u.isFontSizeCheck(findRowLast);
// リサイズ時
u.isWindowSizeCheck(findRowLast);
},
/**
* @method radioBtn
*/
radioBtn: function(config){
var c = j$.extend({
elm: ".radioList",
activeClass: "checked"
}, config);
var $elm = j$(c.elm);
if($elm.length === 0){ return false; }
j$('input[type="radio"]', $elm).each(function(){
if (j$(this).prop('checked')) {
j$(this).next("label").addClass(c.activeClass);
}
});
j$("label", $elm).on("click", function(){
j$(this).parents(c.elm).find("label").removeClass(c.activeClass);
j$(this).addClass(c.activeClass).prev('input[type="radio"]').prop('checked', true);
});
},
/**
* @method customCheck
*/
customCheck: function(config){
var c = j$.extend({
elm: ".customCheck",
activeClass: "checked"
}, config);
var $elm = j$(c.elm);
if($elm.length === 0){ return false; }
j$('input[type="checkbox"]', c.elm).each(function(){
if(j$(this).prop("checked")) {
j$(this).next("label").addClass(c.activeClass);
}
});
j$("label", $elm).on("click", function(){
if(j$(this).prev('input[type="checkbox"]').prop("checked")){
j$(this).removeClass(c.activeClass);
} else {
j$(this).addClass(c.activeClass);
}
});
},
/*
* @method selectBox
*/
selectBox: function() {
var $elm = j$('.slcBlockWrap');
if($elm.length === 0){ return false; }
$elm.each(function(){
var $this = j$(this);
// var checkedNum = $this.find('.slcList .checked').index();
j$('.slcBlock', $this).hide();
j$(".slcBtn", $this).eq(0).trigger('click');
j$(".slcBlock", $this).eq(0).show();
j$(".slcBtn", $this).click(function() {
var slcNum = j$(".slcBtn", $this).index(this);
j$(".slcBlock", $this).hide();
j$(".slcBlock", $this).eq(slcNum).show();
});
});
},
/**
* @method headingNavi
*/
headingNavi: function(){
// var elm
var $elm = j$(".heading01.hasNav"),
$lnav = j$(".lnav"),
toggleSpeed = 300,
openNm = "open";
if($elm.length === 0 || $elm.hasClass("type-2")){ return false; }
// vars
var $mainContents = j$("#mainContents"),
elmTop = $elm.offset().top,
elmHeight = $elm.innerHeight(),
elmMb = $elm.css("margin-bottom"),
difference = elmHeight + parseInt(elmMb) + "px";
// function
var scrollHeading = function(){
var scrTop = j$(window).scrollTop(),
fixNm = "fixed";
if (scrTop >= elmTop){
$mainContents.css("padding-top",difference);
$elm.addClass(fixNm);
} else if (scrTop < elmTop){
$mainContents.css("padding-top",0);
$elm.removeClass(fixNm);
}
};
var spToggle = function(){
if(!u.isRangeSP()){
$lnav.css({
display: "block",
height: "100%"
});
$elm.removeClass(openNm);
} else {
$lnav.slideUp(toggleSpeed);
$elm.removeClass(openNm);
}
$elm.find(".headLine .head").on("click",function(){
var self = j$(this).parents(".heading01.hasNav");
if(u.isRangeSP() && self.hasClass(openNm)){
$lnav.stop().slideUp(toggleSpeed);
self.removeClass(openNm);
} else if(u.isRangeSP() && !self.hasClass(openNm)) {
$lnav.stop().slideDown(toggleSpeed);
self.addClass(openNm);
} else {
return;
}
});
};
spToggle();
// trigger
scrollHeading();
// スクロール時
u.$win.scroll(function(){
scrollHeading();
});
// ウィンドウ幅変更時
u.isWindowSizeCheck(function(){
scrollHeading();
});
},
/**
* @method headingNavi2
*/
headingNavi2: function(){
// var elm
var $elm = j$(".heading01.hasNav.type-2");
if($elm.length === 0){ return false; }
// vars
var $mainContents = j$("#mainContents"),
elmTop = $elm.offset().top,
elmHeight = $elm.innerHeight(),
elmMb = $elm.css("margin-bottom"),
difference = elmHeight + parseInt(elmMb) + "px",
outline = "headingOutline",
$lnav = $elm.find(".lnav-wrap"),
$lnavTrg = $elm.find(".headLine .head"),
$childTrg = $lnav.find(".lnav-hasC"),
childNavi = ".lnav-child",
toggleSpeed = 300,
openNm = "open",
HTML_SKIN = j$('
'),
CSS_SKIN = {
position: "fixed",
opacity: 0,
top: 0,
left: 0,
width: "100%",
height: j$(document).height(),
display: "block",
background: "rgba(68,68,68,0.95)",
"z-index": "1"
},
currentPath = location.pathname,
$skin = j$(HTML_SKIN).css(CSS_SKIN);
/*
* setting
*/
$elm.wrap('');
j$("." + outline).css("height",difference);
// 自ページへのアンカーリンクのパス置換
var childLen = j$(childNavi).find("a").length,
i;
if(currentPath.match(/.*\/$/)){
// URLパスが/で終わる場合、index.htmlを付与
currentPath = currentPath + "index.html";
}
for(i = 0; i < childLen; i++){
var self = j$(childNavi).find("a").eq(i),
_href = self.attr("href"),
__href = _href.replace(currentPath, "");
if(_href.indexOf("#") !== -1){
j$(childNavi).find("a").eq(i).attr("href",__href);
}
}
EPOS_CARD.module.smoothScroll();
/*
* function
*/
// nav1_close 見出し閉じる
var nav1_close = function(){
$lnav.stop().slideUp(toggleSpeed);
$elm.removeClass(openNm);
$childTrg.animate({
"margin-bottom":"0"
},0).removeClass(openNm);
j$(childNavi).slideUp(0);
j$("#pageTopBtn").css("z-index","");
j$("#floatingWrap01").css("z-index","");
if(u.isRangeSP()){
$skin.stop().animate({
opacity: 0
},toggleSpeed,function(){
$skin.remove();
});
}
};
// nav1_open 見出し開く
var nav1_open = function(a){
a.addClass(openNm);
$lnav.stop().slideDown(toggleSpeed,function(){
if(u.isRangeSP()){
$lnav.css({
"height":(u.$win.innerHeight() - $elm.innerHeight()) + "px"
});
}
});
j$("#pageTopBtn").css("z-index","1");
j$("#floatingWrap01").css("z-index","1");
if(u.isRangeSP()){
$skin.appendTo("body").stop().animate({
opacity: 1.0
},toggleSpeed);
}
};
// nav2_close 子階層閉じる
var nav2_close = function(a,b){
a.removeClass(openNm);
b.stop().slideUp(toggleSpeed);
};
// nav2_open 子階層開く
var nav2_open = function(a,b){
$childTrg.animate({
"margin-bottom":"0"
},toggleSpeed).removeClass(openNm);
j$(childNavi).slideUp(toggleSpeed);
a.addClass(openNm);
b.stop().slideDown(toggleSpeed);
};
// scrollHeading 見出し固定
var scrollHeading = function(){
var scrTop = j$(window).scrollTop(),
fixNm = "fixed";
if (scrTop >= elmTop && !$elm.hasClass(fixNm)){
$elm.addClass(fixNm);
} else if (scrTop < elmTop && $elm.hasClass(fixNm)){
$elm.removeClass(fixNm);
}
if(!u.isRangeSP()){
$lnav.css({
"display":"",
"height":""
});
$skin.remove();
}
/* if(u.isRangeSP()){
$lnav.css({
"height":(u.$win.innerHeight() - $elm.innerHeight()) + "px"
});
} */
};
// trigger
scrollHeading();
$lnavTrg.on("click",function(){
var self = j$(this).parents(".heading01.hasNav.type-2");
if($lnav.is(":animated") || !u.isRangeSP()){ return false; }
switch(self.hasClass(openNm)){
case true:
nav1_close();
break;
case false:
nav1_open(self);
break;
}
});
$childTrg.on("click",function(){
var self = j$(this),
$childNavi = self.find(childNavi);
if($childNavi.is(":animated")){ return false; }
switch(self.hasClass(openNm)){
case true:
nav2_close(self,$childNavi);
break;
case false:
nav2_open(self,$childNavi);
break;
}
});
// 子階層リンククリック時
j$(childNavi).find("a").on("click",function(){
var _href = j$(this).attr("href");
if(_href.match(/^\#/)){
var self = $childTrg,
$childNavi = self.find(childNavi);
nav2_close(self,$childNavi);
if(u.isRangeSP()){
nav1_close();
}
}
});
// 領域外クリック
if(navigator.userAgent.toLowerCase().indexOf('ipad') > 0){
j$("body").css("cursor","pointer");
}
j$(document).on("click",function(){
if(u.isRangeSP()){
nav1_close();
} else {
nav2_close($childTrg,j$(childNavi));
}
});
$elm.on("click",function(e){
e.stopPropagation();
});
j$(childNavi).find("a").on("click",function(e){
e.stopPropagation();
});
// スクロール時
u.$win.scroll(function(){
scrollHeading();
});
// ウィンドウ幅変更時
u.isWindowSizeCheck(function(){
scrollHeading();
});
},
/*
* @method colorbox
* @requires
* - jquery.colorbox-min.js
*/
modal: function(config){
var c = j$.extend({
elm_html: ".cb-html",
elm_inl: ".cb-inline",
elm_yt: ".cb-youtube",
elm_img: ".cb-img",
customClose: ".cb_close",
CLOSE_HTML: '閉じる
'
},config);
var $elm_html = j$(c.elm_html),
$elm_inl = j$(c.elm_inl),
$elm_yt = j$(c.elm_yt),
$elm_img = j$(c.elm_img),
$close = j$(c.customClose);
if(($elm_html.length === 0) && ($elm_inl.length === 0) && ($elm_yt.length === 0) && ($elm_img.length === 0)){ return false; }
// 外部HTMLモーダル
$elm_html.colorbox({
innerWidth: "auto",
innerHeight: "auto",
maxWidth: "100%",
maxHeight: "100%",
fixed: true,
returnFocus:false,
onComplete: function(){
EPOS_CARD.module.equalHeight(true, true);
EPOS_CARD.module.sizeFix();
// modal内アンカー制御
j$("a[href*='#anc']").on("click",function(){
var href = j$(this).attr("href"),
crr_path = location.pathname,
spl_href = href.split("#"),
hashNm = spl_href[spl_href.length - 1],
speed = 300,
easing = "swing",
fixParts = ".heading01.hasNav",
target = j$("#" + hashNm),
position,
webkit = /webkit/;
if(crr_path !== spl_href[0]){ return } // ページ内アンカーでなければreturn
if(j$(fixParts).length === 0){
position = target.offset().top;
} else {
difference = j$(fixParts).innerHeight() + 30;
position = target.offset().top - difference;
}
if(u.isRangeSP()){
j$("html, body").animate({
scrollTop: position
}, speed, easing);
} else {
j$("html, body").animate({
scrollTop: position
}, speed, easing);
}
j$.colorbox.close();
return false;
});
}
});
// インラインモーダル
$elm_inl.colorbox({
inline: true,
maxWidth: "100%",
maxHeight: "100%",
fixed: true,
onComplete: function(){
EPOS_CARD.module.equalHeight(true, true);
EPOS_CARD.module.sizeFix();
}
});
// 画像モーダル
$elm_img.colorbox({
className: "cb-imgWrap",
innerWidth: "auto",
innerHeight: "auto",
maxWidth: "100%",
maxHeight: "100%",
fixed: true
});
// YOUTUBE モーダル
if(u.isRangeSP()){
return;
} else {
$elm_yt.colorbox({
iframe: true,
innerWidth:640,
innerHeight:418,
maxWidth: "100%",
maxHeight: "100%",
fixed: true,
className: "cb-ytWrap",
closeButton: false,
onComplete: function(){
j$(c.CLOSE_HTML).appendTo("#colorbox.cb-ytWrap #cboxWrapper");
},
onClosed: function(){
j$("#ytClose").remove();
}
});
}
$close.on("click",function(){
j$.colorbox.close();
});
},
/*
* @method tableHeadAppend
* - thをtdに挿入
*/
tableHeadAppend: function(config){
var c = j$.extend({
elmBaseNm: "sp-thEach"
},config);
var $thElm = j$('[id*="'+ c.elmBaseNm + '"]');
if($thElm.length === 0){ return false; }
// trigger
$thElm.each(function(){
var self = j$(this),
thElmClass = self.attr("id"),
thText = self.html(),
$target = j$("." + thElmClass);
$target.prepend('' + thText + ':');
});
},
/*
* @method elemswap
* - 要素の位置を入れ替え
*/
elemswap: function(config){
var $elm = j$(".swap-elm");
var c = j$.extend({
baseClass: "swap-baseElm",
moveClass: "swap-moveElm",
breakPoint: u.breakPoint1
}, config);
if($elm.length === 0){ return false; }
var swap = function(){
$elm.each(function(){
var $baseClass = j$('.' + c.baseClass, this),
$moveClass = j$('.' + c.moveClass, this),
winW = u.$win.innerWidth ? window.innerWidth: u.$win.width();
if(winW <= c.breakPoint){
$moveClass.insertBefore($baseClass);
} else {
$moveClass.insertAfter($baseClass);
}
});
};
swap();
// ウィンドウ幅変更時
u.isWindowSizeCheck(function(){
swap();
});
},
/*
* @method floationgControl
* - フローティングCV制御
*/
floationgControl: function(){
// vars
var $pageContainer = j$("#pageContainer, body#freshers"), // 社会人ページは既存コンテンツのため
$elm = j$('[id*="floatingWrap"]'),
closeNm = "floatingNone",
$close = j$(".floatingClose"),
$toggleElm = j$(".floating-toggle"),
speed = 300;
if($elm.length === 0){ return false; }
// setting
var slideInSpeed = 500,
completeNm = "slide-in-completed",
negative = $elm.innerHeight() + 20;
// setting
$elm.css("bottom", "-" + negative + "px");
// function
var floatingSet = function(){
if(!$elm.hasClass(closeNm)){
$pageContainer.css("padding-bottom", $elm.innerHeight() + 10);
} else {
$pageContainer.css("padding-bottom", 0);
}
};
// close
if($close.length !== 0){
$close.on("click",function(){
if($elm.hasClass(closeNm)){
$elm.removeClass(closeNm);
$toggleElm.stop().slideDown(speed,function(){
$pageContainer.animate({"padding-bottom": $elm.innerHeight() + 10},speed);
});
} else {
$elm.addClass(closeNm);
$toggleElm.stop().slideUp(speed,function(){
$pageContainer.animate({"padding-bottom": 0},speed);
});
}
});
}
// trigger
floatingSet();
u.isWindowSizeCheck(function(){
floatingSet();
});
// load
u.$win.on("load", function(){
$elm.show();
$elm.addClass(completeNm).animate({
"bottom": 0
},slideInSpeed);
});
},
/*
* @method popup
* - ポップアップ
*/
popup: function(config){
// user option
var c = j$.extend({
elm: ".popup",
name: "POPUP",
height: 600,
width: 940,
toolbar: 0,
scrollbars: 1,
status: 0,
resizable: 1,
left: 0,
top: 0,
center: true
}, config);
/* POPUP ウィンドウを中央に表示 */
if(c.center){
c.top = (screen.height - c.height) / 2;
c.left = (screen.width - c.width) / 2;
}
var parameters = "height=" + c.height + ",width=" + c.width + ",toolbar=" + c.toolbar + ",scrollbars=" + c.scrollbars + ",status=" + c.status + ",resizable=" + c.resizable + ",left=" + c.left + ",screenX=" + c.left + ",top=" + c.top + ",screenY=" + c.top;
j$(c.elm).on("click", function(){
if(u.isRangeSP()){ return; }
window.open(this.href, c.name, parameters);
return false;
})
},
/*
* @method okwave
* - OKWAVE連携
*/
okwave: function(config){
/**
* @user option
*/
var c = j$.extend({
faqType: 'category', // category / id
num: '1',
sortType: 'sort_access', // sort_access / sort_new / sort_adjust_value
count: '5', // 表示件数
target: j$(".qaColumn"), // 表示エリア
elmBaseNm: ".okwave-elm-base",
linkNm: "okwave-link",
processIndex: 0
}, config);
/**
* vars
*/
var HTML = '',
$elmBase = c.target.find(c.elmBaseNm),
HTML_BASE = $elmBase.prop("outerHTML"),
processTime = 0;
/**
* functions
*/
var catgoryFn = function(){
var jsonURL = 'http://faq.eposcard.co.jp/category/show/' + c.num + '.json' + '?sort=' + c.sortType;
var xhr = j$.ajax({
url: jsonURL,
type: 'GET',
dataType: 'jsonp',
jsonpCallback : 'faqCategory',
timeout: 30000
});
xhr.success(function(data){
for(var i=0 ; i<=c.count-1 ; i++){
// HTML
HTML += '';
HTML += data.faqs[i].faq.question;
HTML += '
';
// output
$elmBase.before(HTML);
HTML = "";
}
// output
$elmBase.eq(0).remove();
c.target.find("." + c.linkNm).wrap(HTML_BASE);
});
},
idFn = function(){
var jsonURL = 'http://faq.eposcard.co.jp/faq/show/' + c.num + '.json';
var xhr = j$.ajax({
url: jsonURL,
type: 'GET',
dataType: 'jsonp',
jsonpCallback : 'faqId',
timeout: 30000
});
xhr.success(function(data){
// HTML
HTML += '';
HTML += data.faq.question;
HTML += '
';
// output
$elmBase.before(HTML);
$elmBase.eq(0).remove();
c.target.find("." + c.linkNm).wrap(HTML_BASE);
});
};
if(c.faqType === 'category'){
setTimeout(function(){
catgoryFn();
},300*c.processIndex);
//catgoryFn();
} else {
setTimeout(function(){
idFn();
},300*c.processIndex);
//idFn();
}
}
};
}();
/* -------------------------------------------
* @init
------------------------------------------- */
j$(function(){
var u = new EPOS_CARD.Util();
EPOS_CARD.module.initialize();
u.$win.on("load", function(){
EPOS_CARD.module.equalHeight(true, true);
EPOS_CARD.module.sizeFix();
EPOS_CARD.module.headingNavi();
EPOS_CARD.module.headingNavi2();
});
});