/* -------------------------------------------
* @namespace
------------------------------------------- */
var EPOS_CARD_over = EPOS_CARD_over || {};
/* -------------------------------------------
* @noConflict
------------------------------------------- */
jqNew = jQuery.noConflict();
if($ === undefined){
$ = jQuery;
}
j$ = jQuery || jqNew;
/* -------------------------------------------
* @constructor
------------------------------------------- */
EPOS_CARD_over.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_over.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_over.module = function(){
var u = new EPOS_CARD_over.Util();
return {
/*
* @method initialize
* - 初期化
*/
initialize: function(){
this.rollover();
this.swapImg();
this.floationgControl();
this.IsAccordion();
},
/*
* @method rollover
* - ロールオーバー
*/
rollover: function(){
if(u.isNotPC() || u.isRangeSP()){
return false;
}
var $elm = j$(".rollover02"),
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 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 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 IsAccordion
*/
IsAccordion: function(config){
var c = $.extend({
elm: ".IsToggleWrap",
trigger: ".IsToggleTrigger",
target: ".IsToggleContent",
speed: 300,
openNm: "open"
},config);
// vars
var $elm = $(c.elm),
$trg = $(c.trigger);
if($elm.length === 0){ return false; }
// setting
$(c.target).not("." + c.openNm).hide();
// trigger
$trg.on("click",function(){
var self = $(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);
}
});
}
};
}();
/* -------------------------------------------
* @init
------------------------------------------- */
j$(function(){
var u = new EPOS_CARD_over.Util();
EPOS_CARD_over.module.initialize();
});