/*********************************************
* common.js
* -------------------------------------------
* @namespace
* - EPOS_CARD_DYNAMIC
* @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
* - formLayout
* - revoChangeControl
* - popup
* - sparkle
* - sideNaviControl
* - pointInputControl
* - pointSelectControl
* - discountCalculate
* - tableHeadAppend
* - revoAllInput
* - inputNumberControl
* - maxlengthControl
*********************************************/
/* -------------------------------------------
* @namespace
------------------------------------------- */
var EPOS_CARD_DYNAMIC = EPOS_CARD_DYNAMIC || {};
/* -------------------------------------------
* @noConflict
------------------------------------------- */
jqNew = jQuery.noConflict();
if($ === undefined){
$ = jQuery;
}
j$ = jQuery || jqNew;
/* -------------------------------------------
* @constructor
------------------------------------------- */
EPOS_CARD_DYNAMIC.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_DYNAMIC.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 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_DYNAMIC.module = function(){
var u = new EPOS_CARD_DYNAMIC.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.elemswap();
this.findRowLast();
this.inputFrame();
this.radioBtn();
this.radioWrapList();
this.customCheck();
this.checkTable();
this.clickableCell();
this.allCheck();
this.selectBox();
this.setNum();
this.popup();
this.sparkle();
this.sideNaviControl();
this.pointInputControl();
this.pointSelectControl();
this.discountCalculate();
this.tableHeadAppend();
this.revoAllInput();
this.inputNumberControl();
this.maxlengthControl();
},
/*
* @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 + ''));
});
}
},
/*
* @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()){
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"
}, config);
/* vars
------------------------------- */
var url = j$(location).attr("href"),
hash = location.hash,
href,
target,
position,
webkit = /webkit/;
/* trigger
------------------------------- */
/* ページ遷移+アンカー移動制御 */
u.$win.load(function(){
if(url.indexOf("#anc") != -1){
target = j$(hash);
position = target.offset().top;
j$("html, body").animate({
scrollTop: position
}, c.speed, c.easing);
}
});
/* スクロール制御 */
j$("a[href^=#]").not("a[href=#], a[href^=#tab], " + c.noScrollClass + "").click(function(){
href = j$(this).attr("href");
target = j$(href);
position = target.offset().top;
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) {
/* if(u.isRangeSP()){
return false;
} */
var c = j$.extend({
className: "#pageTopBtn",
fadePoint: 0
}, config);
if(j$(c.className).length == 0) { return false; }
var $this = j$(c.className);
j$(window).scroll(function () {
if (j$(this).scrollTop() > c.fadePoint) {
$this.fadeIn();
} else {
$this.fadeOut();
}
});
},
/*
* @method sizeFix
* - 画像幅取得
*/
sizeFix: function(config){
// user option
var c = j$.extend({
elm: ".sizeFix",
isSpRun: true,
resizeRerun: true
}, config);
// vars
var $elm = j$(c.elm),
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(config){
var c = j$.extend({
className: ".equalHeight",
childBaseName: "equalChild"
}, config);
if(j$(c.className).length == 0) return false;
/* vars
------------------------------- */
var $this = j$(c.className),
$children = $this.children(),
$childName = j$("." + c.childBaseName),
num_$children = $children.size(),
arr_parents = [];
if(num_$children < 2) return false;
function ChildrenGrouping(){
var arr_groups = [],
$children = $this.find($childName);
if($children.length) arr_groups.push($children);
var $groupedChildren = $this.find('*[class*=' + c.childBaseName + ']:not(.' + c.childBaseName + ')');
if($groupedChildren.length){
var classNames = {};
$groupedChildren.each(function(){
var split_class = j$(this).attr("class").split(" "),
len_split_class = split_class.length,
i,
new_class;
for(i = 0; i < len_split_class; i++){
new_class = split_class[i].match(RegExp(c.childBaseName + "[a-z0-9_-]+", 'i'));
if(!new_class) continue;
new_class = new_class.toString();
if(new_class) classNames[new_class] = new_class;
}
});
for(var new_class in classNames) arr_groups.push($this.find("." + new_class));
}
$children = $this.children();
if($children.length) arr_groups.push($children);
$this.data("EqualHeightChildrenGroups", arr_groups);
arr_parents.push($this);
return arr_groups
}
j$.fn.EqualHeight = function(){
var maxHeight = 0;
this.css("height", "auto");
// IE用
this.css("zoom", 1);
this.each(function(){
if (j$(this).height() > maxHeight) {
maxHeight = j$(this).height();
}
});
return this.height(maxHeight)
};
j$.fn.EqualHeightInit = function(){
var arr_groups = ChildrenGrouping();
j$.each(arr_groups, function(){
var $children = j$(this),
arr_child = [],
top = 0;
$children.each(function(){
if(top != j$(this).position().top){
j$(arr_child).EqualHeight();
arr_child = [];
top = j$(this).position().top;
}
arr_child.push(this);
});
if(arr_child.length) j$(arr_child).EqualHeight();
});
};
/* 初期表示のみ */
//$this.EqualHeightInit();
/* 可変に対応 */
u.isFontSizeCheck($this.EqualHeightInit);
u.isWindowSizeCheck($this.EqualHeightInit);
},
/*
* @method equalWidth
* - 幅揃え
* @param {Boolean}
* - 文字可変・リサイズに対応するかどうか
*/
equalWidth: function(fsCheck, wsCheck){
/* vars
------------------------------- */
var $elm = j$(".equalWidth"),
$children = $elm.children(),
childBaseName = "equalChild",
fsCheck = fsCheck || false,
wsCheck = wsCheck || false;
if($elm.length === 0 || $children.length < 2){
return false;
}
/* function
------------------------------- */
/* 各要素ごとにグループ化 */
var grouping = function(){
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;
}
}
});
for(var c in classNames){
groups.push($elm.find("." + c));
}
groups.push($children);
return groups;
};
/* 各要素の幅を揃える */
var equalWidth = function(elm){
var maxWidth = 0;
elm.css("width", "auto");
elm.each(function(){
if(j$(this).width() > maxWidth){
maxWidth = j$(this).width() + 5;
}
});
return elm.width(maxWidth);
};
/* init */
var init = function(){
var groups = grouping(),
w = [],
child = [],
maxWidth = 0;
j$.each(groups, function(){
var $group = j$(this);
$group.each(function(i){
j$(this).css("width", "auto");
w[i] = j$(this).width();
child.push(this);
});
});
if(child.length > 1){ equalWidth(j$(child)); }
};
/* init
------------------------------- */
// 文字可変・リサイズへの対応可否
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));
}
};
// ロード時
u.$win.on("load", function(){
swapImg();
});
// リサイズ時
u.isWindowSizeCheck(swapImg);
});
},
/**
* @method accordion
*/
accordion: function(config){
var $elm = j$(".accBox");
if ($elm.length === 0){ return false;};
var c = j$.extend({
switchClass: ".accBtn",
boxClass: ".detailsBox",
activeClass: "open"
}, config);
$elm.each(function(){
var box = j$(c.boxClass, this),
accordSwitch = j$(c.switchClass, this);
box.hide();
accordSwitch.show();
/* 開閉 */
var accordion = function(){
if (box.is(":hidden")){
box.stop(true).slideToggle(300);
accordSwitch.toggleClass(c.activeClass);
} else {
box.stop(true).slideToggle(300);
accordSwitch.toggleClass(c.activeClass);
};
EPOS_CARD_DYNAMIC.module.equalHeight();
};
j$(accordSwitch).on({
click: function(){
accordion();
EPOS_CARD_DYNAMIC.module.equalHeight();
}
});
});
},
/*
* @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 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_DYNAMIC.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);
},
/**
* @inputFrame
*/
inputFrame: function(config){
var c = j$.extend({
elm: ".input01",
changeBgColor: "#777777",
baseBgColor: "#adadad"
}, config);
var $elm = j$(c.elm)
if($elm.length === 0){ return false; }
$elm.each(function(){
// フォーカス時
j$(this).on('focus', function(){
j$(this).css('border-color', c.changeBgColor);
});
// 通常時
j$(this).on('blur', function(){
j$(this).css('border-color', c.baseBgColor);
});
});
},
/**
* @radioBtn
*/
radioBtn: function(config){
var c = j$.extend({
elm: ".radioList",
activeClass: "checked"
}, config);
var $elm = j$(c.elm);
var checklessClass = "checkless";
if($elm.length === 0){ return false; }
j$('input[type="radio"]', $elm).each(function(){
if (j$(this).prop('checked')) {
j$(this).parents(c.elm).find("label").addClass(checklessClass);
j$(this).next("label").removeClass(checklessClass).addClass(c.activeClass);
}
});
j$("label", $elm).on("click", function(){
j$(this).parents(c.elm).find("label").removeClass(c.activeClass).addClass(checklessClass);
j$(this).removeClass(checklessClass).addClass(c.activeClass).prev('input[type="radio"]').prop('checked', true);
});
},
/**
* @radioWrapList
*/
radioWrapList: function(config){
var c = j$.extend({
elm: ".radioWrapList",
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).parents("li").addClass(c.activeClass);
}
});
j$("label", $elm).on("click", function(){
$elm.find("li").removeClass(c.activeClass);
j$(this).find('input[type="radio"]').prop("checked", true).parents("li").addClass(c.activeClass);
});
},
/**
* @customCheck
*/
customCheck: function(config){
var c = j$.extend({
elm: ".customCheck",
activeClass: "checked",
disableClass: "disabled"
}, 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).parent(c.elm).hasClass(c.disableClass)){ return false; }
if(j$(this).prev('input[type="checkbox"]').prop("checked")){
j$(this).removeClass(c.activeClass);
} else {
j$(this).addClass(c.activeClass);
}
});
},
/**
* @checkTable
*/
checkTable: function(config){
var c = j$.extend({
elm: ".checkTable.rowClickable",
activeClass: "checked"
}, config);
var $elm = j$(c.elm);
if($elm.length === 0){ return false; }
j$("tr", c.elm).each(function(){
var self = j$(this);
if(self.find('input[type="checkbox"]').prop('checked')){
self.addClass(c.activeClass);
} else {
self.removeClass(c.activeClass);
}
});
j$('tr:not(.noClick)', c.elm).on('click', function(){
var self = j$(this);
if(self.find('input[type="checkbox"]').prop('checked')){
self.removeClass(c.activeClass);
self.find('label').removeClass(c.activeClass).prop('checked',false);
self.find('input[type="checkbox"]').prop('checked',false);
} else {
self.addClass(c.activeClass);
self.find('label').addClass(c.activeClass).prop('checked',true);
self.find('input[type="checkbox"]').prop('checked',true);
}
});
},
/**
* @checkTable
*/
clickableCell: function(config){
var c = j$.extend({
elm: ".clickableCell",
activeClass: "checked",
disableClass: "disabled"
}, config);
var $elm = j$(c.elm).not(c.disabledNm);
if($elm.length === 0){ return false; }
$elm.each(function(){
var self = j$(this);
if(self.find('input[type="checkbox"]').prop('checked')){
self.addClass(c.activeClass);
} else {
self.removeClass(c.activeClass);
}
});
$elm.on('click', function(){
var self = j$(this);
if(self.hasClass(c.disableClass)){ return false; }
if(self.find('input[type="checkbox"]').prop('checked')){
self.removeClass(c.activeClass);
self.find('label').removeClass(c.activeClass).prop('checked',false);
self.find('input[type="checkbox"]').prop('checked',false);
} else {
self.addClass(c.activeClass);
self.find('label').addClass(c.activeClass).prop('checked',true);
self.find('input[type="checkbox"]').prop('checked',true);
}
});
},
/**
* @allCheck
*/
allCheck: function(config){
var c = j$.extend({
elm: ".allCheckWrap",
trigger: ".allCheck",
activeClass: "checked",
allCheckElm: '.allCheckElm input[type="checkbox"]',
checkInTxt: "リボ払いにしたいお支払い全てにチェックを入れる",
checkOutTxt: "リボ払いにしたいお支払い全てのチェックを外す"
}, config);
var $elm = j$(c.elm);
if($elm.length === 0){ return false; }
// ロード時
$elm.each(function(){
var self = j$(this),
$trigger = self.find(c.trigger);
if($trigger.prev('input').prop('checked')){
$trigger.text(c.checkOutTxt);
}
});
// クリック時
$elm.find(c.trigger).on('click', function(){
var $this = j$(this);
if($this.prev('input[type="checkbox"]').prop('checked')){
$this.text(c.checkInTxt).prop('checked', false).next('label').removeClass(c.activeClass);
$this.parents(c.elm).find('.allCheckElm input[type="checkbox"]').prop('checked', false).next('label').removeClass(c.activeClass);
$this.parents(c.elm).find('tr' + '.' + c.activeClass).removeClass(c.activeClass);
} else{
$this.text(c.checkOutTxt).prop('checked', true).next('label').addClass(c.activeClass);
$this.parents(c.elm).find('.allCheckElm input[type="checkbox"]').prop('checked', true).next('label').addClass(c.activeClass);
$this.parents(c.elm).find('.allCheckElm').parents('tr').addClass(c.activeClass);
}
});
var elmToggle = function(){
$elm.each(function(){
var self = j$(this),
checkAllLen = self.find(c.allCheckElm).length,
checkedLen = self.find(".allCheckElm label.checked").length;
if(checkAllLen === checkedLen){
self.find(c.trigger).text(c.checkOutTxt).prop('checked', true).addClass(c.activeClass).prev('input[type="checkbox"]').prop('checked', true);
} else {
self.find(c.trigger).text(c.checkInTxt).prop('checked', false).removeClass(c.activeClass).prev('input[type="checkbox"]').prop('checked', false);
}
});
};
elmToggle();
j$('.allCheckElm input[type="checkbox"]').on("change",function(){
elmToggle();
});
j$('.allCheckElm').parents("tr").on("click",function(){
elmToggle();
});
},
/**
* @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();
});
});
},
/**
* @setNum
*/
setNum: function() {
var $elm = j$('.setNum');
if($elm.length === 0){ return false; }
$elm.each(function(){
var $this = j$(this),
$numOutput = j$(".numOutput", $this),
$numInput = j$(".numInput input", $this),
$oneDelete = j$(".oneDelete", $this),
$allDelete = j$(".allDelete", $this);
$numOutput.val('');
// 数字入力
var setClick = function(){
var maxLength = $numOutput.attr('maxlength');
$numInput.on('click', function(){
if($numOutput.val().length < maxLength ){
$numOutput.val($numOutput.val() + j$(this).val());
}
if($numOutput.val().length > 0 ){
$numOutput.css('border-color', '#777777');
} else {
$numOutput.css('border-color', '#adadad');
}
});
};
// 一つ消す
var setClear = function(){
$oneDelete.on('click', function(){
if($numOutput.val().length > 0 ){
$numOutput.val($numOutput.val().substring(0, $numOutput.val().length - 1));
}
if($numOutput.val().length > 0 ){
$numOutput.css('border-color', '#777777');
} else {
$numOutput.css('border-color', '#adadad');
}
});
};
// すべて消す
var setAllClear = function(){
$allDelete.on('click',function(){
if($numOutput.val().length > 0 ){
$numOutput.val('');
$numOutput.css('border-color', '#adadad');
}
});
};
// ボタン以外での入力制御
var setInputChk = function(){
$numOutput.on('click keypress keyup keydown focus blur',function(e){
e.returnValue = false;
return false;
});
};
// ボタンをランダム表示
var setRand = function(){
var arrey = [0,1,2,3,4,5,6,7,8,9];
// ランダムに配列
arrey.sort(function() {
return Math.random() - Math.random();
});
// 配列をvalueに格納
for(i=0; i < arrey.length; i++) {
$numInput.eq(i).val(arrey[i]);
}
}
// 実行
setClick();
setClear();
setAllClear();
setInputChk();
setRand();
});
},
/**
* @method revoChangeControl
* - リボ変更の制御
*/
revoChangeControl: function() {
// vars
var $fixWrap = j$(".revoFixWrap"),
$floatingPoint = j$(".floatingPoint").eq(0),
$shoppingTotal = j$(".shoppingTotal"),
$limitCell = j$(".shoppingLmt02"),
$allInput = j$(".revoLimit01 .allInput"),
$elmShop01 = j$(".shoppingRivo01"),
$shopInput = $elmShop01.find('.revoValue input[type="text"]'),
$elmShop02 = j$(".shoppingRivo02"),
$shopCheck = j$("[type='checkbox']",$elmShop02),
payTypeBase = "payType",
payType_two = payTypeBase + "-02",
payType_Bonus = payTypeBase + "-Bo",
$elmCash = j$(".cashingRivo"),
$cashCheck = j$("[type='checkbox']",$elmCash),
$confirmInput = j$(".revoConfirm input.confirm"),
$errorInput = j$(".revoConfirm input.error"),
notNumber = new RegExp("[^0-9]", "i"),
checkLimit = 200,
checkCnt,
errorClass = "error",
errFlag01,
errFlag02;
// false
if($fixWrap.length === 0) { return false; }
// setting
var fixSet = function(){
var fixHeight = $fixWrap.innerHeight();
j$("body").css("padding-bottom",fixHeight + "px");
j$("#pageTopBtn").css("bottom",fixHeight + "px");
};
fixSet();
u.isWindowSizeCheck(function(){
fixSet();
});
// SP スクロール表示
var floatingFade = function(){
var pointTop = $floatingPoint.offset().top,
pointHeight = $floatingPoint.height(),
fltHeight = $fixWrap.innerHeight(),
scrTop = u.$win.scrollTop(),
winHeight = u.$win.height(),
fixNm = "fixed";
if((!$fixWrap.hasClass(fixNm)) && (scrTop + winHeight >= pointTop + pointHeight + fltHeight)){
$fixWrap.addClass(fixNm).animate({
"opacity": 1.0
},300);
}
};
floatingFade();
u.$win.scroll(function(){
floatingFade();
});
/*
* function - 確認ボタン出し分け
*/
var submittable = function(){
$confirmInput.show();
$errorInput.hide();
};
var unsubmittable = function(){
$confirmInput.hide();
$errorInput.show();
};
// 合計金額による判別
var confirmCheck01 = function(){
if(!errFlag01 && !errFlag02){
submittable();
} else {
unsubmittable();
}
};
// チェック件数による判別
var checkCount = function(){
checkCnt = j$("tr.checked").length;
};
checkCount();
setInterval(function(){checkCount()},500);
var confirmCheck02 = function(){
var checkTotal = j$("tr.checked").length;
if(checkTotal >= checkLimit){
j$("#chkTotal").html(checkTotal);
if(checkTotal > checkCnt){
j$.colorbox({
inline: true,
opacity: 0.6,
fixed: true,
maxWidth: "100%",
href: j$("#chkboxAlert")
});
}
unsubmittable();
} else if(errFlag01) {
unsubmittable();
} else {
submittable();
}
};
/*
* function - ショッピングリボ変更(テキスト入力)
*/
var shopRivoTotal01 = function(){
if($elmShop01.length === 0){ return; }
var limitPrice = $elmShop01.find(".shoppingLmt02").html().replace(/(,|円)/g, ""),
limit = parseInt(limitPrice),
inputVal = $shopInput.val(),
$box = $elmShop01.find(".revoCountWrap01"),
$target = $shoppingTotal.find(".value");
// SPでフォーカス時に固定パーツを非表示
/* if(u.isNotPC){
$shopInput.on({
"focus":function(){$fixWrap.stop().animate({"opacity":"0"},200)},
"blur":function(){$fixWrap.stop().animate({"opacity":"1.0"},200)}
});
} */
// エラーフラグ
var errCheck = function(){
if(inputVal.match(notNumber)){
errFlag01 = true;
$shoppingTotal.addClass(errorClass);
} else if(parseInt(inputVal) > limit){
errFlag01 = true;
$limitCell.addClass(errorClass);
$box.addClass(errorClass);
$shoppingTotal.addClass(errorClass);
} else {
errFlag01 = false;
$limitCell.removeClass(errorClass);
$box.removeClass(errorClass);
$shoppingTotal.removeClass(errorClass);
}
};
errCheck();
// 入力数値を成形して表示
if($allInput.hasClass("checked")){
var inputVal = (limit + "").replace( /^(0+)/g, "").replace( /(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
$shopInput.val(parseInt(limit)).prop("disabled", true);
$target.html(inputVal + "円");
// 再度エラーチェック
var inputVal = $shopInput.val();
errCheck();
} else {
$shopInput.prop("disabled", false);
var inputVal = inputVal.replace( /^(0+)/g, "").replace( /(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"),
inputVal = inputVal === ""? 0:inputVal;
$target.html(inputVal + "円");
}
// エラー判別
confirmCheck01();
};
/*
* function - ショッピングリボ変更(チェックボックス)
*/
var shopRivoTotal02 = function(){
if($elmShop02.length === 0){ return; }
var limitPrice = $elmShop02.find(".shoppingLmt02").html().replace(/(,|円)/g, ""),
limit = parseInt(limitPrice),
$box = $elmShop02.find(".revoCountWrap02"),
$elmRow = $elmShop02.find("tr.checked"),
checkedLen = $elmRow.length,
cash01 = [],
cash02 = [],
$target1 = $elmShop02.find(".revoChangeBox .valueBlock"),
$target2 = $elmShop02.find(".revoDifferenceBox .valueBlock"),
$target3 = $elmShop02.find(".revoAddingBox .valueBlock"),
$target4 = $shoppingTotal.find(".value");
// エラーフラグ
if(checkedLen >= checkLimit) {
errFlag01 = true;
} else {
errFlag01 = false;
}
// 配列に金額を格納
if(checkedLen === 0){
cash01 = [0];
cash02 = [0];
} else {
for(i = 0; i < checkedLen; i++){
// 選択した金額を格納
var cashPrice01 = $elmRow.eq(i).find(".cashPrice").html().replace(/(,|円)/g, ""),
cashPrice01 = parseInt(cashPrice01);
cash01.push(cashPrice01);
// 選択した金額のうち2回払い、ボーナス払いを除いて格納
var $payType = $elmRow.eq(i).find("[class*='" + payTypeBase + "']");
if(!$payType.hasClass(payType_two) && !$payType.hasClass(payType_Bonus)) {
var cashPrice02 = $elmRow.eq(i).find(".cashPrice").html().replace(/(,|円)/g, ""),
cashPrice02 = parseInt(cashPrice02);
cash02.push(cashPrice02);
}
}
}
// 配列の値を合計する関数
var sum = function(arr) {
var sum = 0;
for (var i=0,len=arr.length; i limit){
errFlag01 = true;
$limitCell.addClass(errorClass);
$shoppingTotal.addClass(errorClass);
$box.addClass(errorClass);
} else {
errFlag01 = false;
$limitCell.removeClass(errorClass);
$shoppingTotal.removeClass(errorClass);
$box.removeClass(errorClass);
}
// 金額を成形して表示
var sumCash = sum(cash01) + "",
sumCash = sumCash.replace( /(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"),
addCash = sum(cash02) + "",
addCash = addCash.replace( /(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"),
diffCash = limit - sum(cash01),
diffCash = diffCash + "",
diffCash = diffCash.replace( /(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
$target1.html(sumCash);
$target2.html(diffCash);
$target3.html(addCash);
$target4.html(sumCash + "円");
// エラー判別
confirmCheck01();
confirmCheck02();
};
/*
* function - キャッシングリボ変更
*/
var cashRivoTotal = function(){
if($elmCash.length === 0){ return; }
var $elmRow = $elmCash.find("tr.checked"),
checkedLen = $elmRow.length,
cash = [],
$target = j$(".cashingTotal .value");
// エラーフラグ
if(checkedLen >= checkLimit) {
errFlag02 = true;
} else {
errFlag02 = false;
}
// 配列に金額を格納
if(checkedLen === 0){
cash = [0];
} else {
for(i = 0; i < checkedLen; i++){
var cashPrice = $elmRow.eq(i).find(".cashPrice").html().replace(/(,|円)/g, ""),
cashPrice = parseInt(cashPrice);
cash.push(cashPrice);
}
}
// 配列の値を合計する関数
var sum = function(arr) {
var sum = 0;
for (var i=0,len=arr.length; i '),
SPARKLE_CSS = {
"position": "absolute",
"display": "block",
"width": "100%",
"height": "100%",
"top": 0,
"left": "-100%",
"background": "url(/memberservice/pc/v1/common-files/img/com_sparkle_bg01.png) 0 0 no-repeat",
"background-size": "100%"
},
cookie_name = "pg_sparkle_animation",
speed = 800, // 光沢のスピード
interval = 1000, // 繰り返しの間隔
lmtTime = 1; // 繰り返しの回数
// 要素がなければ実行しない
if($elm.length === 0){ return false; }
// cookie.jsが読み込まれていないページでは実行しない
if(typeof($.cookie) === "undefined" || typeof($.cookie) === null){ return false; }
// セッションcookieが既にある場合は実行しない
if($.cookie(cookie_name)){ return false; }
// setting
$elm.css({
display: "block",
position:"relative",
overflow: "hidden"
});
SPARKLE_HTML.css(SPARKLE_CSS).appendTo(elm);
var $SPARKLE_HTML = j$(".elm-sparkle");
// function
var sparkle = function(){
$SPARKLE_HTML.each(function(){
j$(this).animate({
left: "100%"
},speed,function(){
j$(this).css({
left: "-100%"
})
});
});
$.cookie(cookie_name, "1", { path: "/" }); // セッションcookieをセット
};
// timer
var sparkleTimeout = function(){
setTimeout(function(){
sparkle();
},interval);
};
// trigger
u.$win.on("load",function(){
var i;
for(i=0; i < lmtTime; i++){
sparkleTimeout();
}
});
},
/**
* @method sideNaviControl
* - 左ナビ制御
*/
sideNaviControl: function(){
var openNm = "open",
toggleTrg = ".sideNaviMenuBlock .sideNaviMenuList > dl > dt"
speed = 300;
if(j$(".sideNaviMenuBlock").length === 0){ return false; }
// setting
j$(toggleTrg + ".open").next("dd").show();
//sideNavi open
j$(toggleTrg).on("click",function() {
var self = j$(this);
if(self.hasClass(openNm)){
if(u.isIE8()){
//self.next("dd").hide();
self.removeClass(openNm);
} else {
self.next("dd").stop().slideUp(speed,function(){
self.removeClass(openNm);
});
}
} else {
if(u.isIE8()){
//self.next("dd").show();
self.addClass(openNm);
} else {
self.next("dd").stop().slideDown(speed,function(){
self.addClass(openNm);
});
}
}
});
//more btn open
j$(".sideNaviMenuBlock .sideNaviMenuList > dl > dd .moreBtn").click(function() {
j$(this).hide(0);
j$(this).closest("dd").find("li").removeClass("firstHide");
});
},
/**
* @method pointInputControl
* - ポイント割引 手入力
*/
pointInputControl: function(config){
var c = j$.extend({
minPoint: 1
},config);
var wrapID = "#point-discount-input",
$wrapper = j$(wrapID);
if($wrapper.length === 0){ return false; }
/* vars
------------------------------- */
var userPayment = parseInt(j$(".user-payment").html().split(",").join("")),
userPoint = parseInt(j$(".user-point").html().split(",").join("")),
$target = j$(".point-input"),
$allBtn = j$(".all-point-input"),
$nextBtn = j$('.confirmArea input[type="button"]'),
errorNm = "error",
disableNm = "disabled",
maxPoint = userPayment > userPoint? userPoint:userPayment,
minPoint = c.minPoint,
numFlag = false,
maxFlag = false,
minFlag = false,
$alertOver = j$(".point-alert.type-over"),
$alertShort = j$(".point-alert.type-short");
/* function
------------------------------- */
/*
* function:inputNumeric
* 入力値を半角数字のみに
*/
var inputNumeric = function(elm){
var str = elm.val(),
hankaku = str.replace(/[A-Za-z0-9]/g,function(s){return String.fromCharCode(s.charCodeAt(0)-0xFEE0)});
// 半角変換
if(str.match(/[A-Za-z0-9]/g)){
elm.val(hankaku);
str = elm.val();
}
// 数字以外削除
if(!str.match(/^\d+$/)){
elm.val(str.replace(/[^0-9]/g,""));
}
};
/*
* function:checkPoint
* 入力ポイントのチェックフラグ
*/
var checkPoint = function(){
var inputVal = $target.val();
// 半角数字かどうか
if(inputVal.match(/^[0-9]+$/g)){
numFlag = true;
} else {
numFlag = false;
}
// 最小値以上かどうか
if(inputVal < minPoint){
minFlag = false;
} else {
minFlag = true;
}
// 最大値以下かどうか
if(inputVal > maxPoint){
maxFlag = false;
} else {
maxFlag = true;
}
};
/*
* function:checkEntry
* フラグによるエラー判断
*/
var checkEntry = function(){
// 最大値チェック
switch(maxFlag){
case true:
$alertOver.hide();
break;
case false:
$alertOver.show();
break;
default:
break;
}
// 最小値チェック
switch(minFlag){
case true:
$alertShort.hide();
break;
case false:
$alertShort.show();
break;
default:
break;
}
// 確認ボタンの切換
switch(numFlag&&maxFlag&&minFlag){
case true:
$target.removeClass(errorNm);
$nextBtn.removeClass(disableNm).prop("disabled",false);
break;
case false:
$target.addClass(errorNm);
$nextBtn.addClass(disableNm).prop("disabled",true);
break;
default:
break;
}
};
/*
* function:validate
* チェック関数
*/
var validate = function(){
checkPoint();
checkEntry();
}
/* trigger
------------------------------- */
/* 以下のイベントで実行
------------------------------- */
validate();
$target.on("keyup blur",function(){
inputNumeric($target);
validate();
});
$allBtn.on("click",function(){
$target.val(userPoint);
validate();
});
/* Enterキーによる送信を抑止
------------------------------- */
$target.keypress(function(ev) {
if ((ev.which && ev.which === 13) || (ev.keyCode && ev.keyCode === 13)) {
return false;
} else {
return true;
}
});
},
/*
* @method pointSelectControl
* - ポイント割引 債権ごとに選択
*/
pointSelectControl: function(config){
var c = j$.extend({
minPoint: 1
},config);
var wrapID = "#point-discount-select",
$wrapper = j$(wrapID);
if($wrapper.length === 0){ return false; }
/* vars
------------------------------- */
var userPayment = parseInt(j$(".user-payment").html().split(",").join("")),
userPoint = parseInt(j$(".user-point").html().split(",").join("")),
$floatingPoint = j$(".floatingPoint").eq(0),
$cashPrice = j$(".cashPrice"),
$target = j$(".point-input"),
$allBtn = j$(".all-point-input"),
$tableRow = j$(".each-point-input tbody > tr"),
rowLen = $tableRow.length,
priceCell = ".cashPrice",
$nextBtn = j$('.confirmArea input.confirm,.pointConfirm input.confirm'),
errorNm = "error",
disableNm = "disabled",
discheckableNm = "discheckable",
checkCell = ".clickableCell",
checkedNm = "checked",
allCheckNm = "all-check-cell",
$allCheck = j$("." + allCheckNm),
$checkBox = j$(checkCell).find('input[type="checkbox"]'),
maxPoint = userPayment > userPoint? userPoint:userPayment,
minPoint = c.minPoint,
nextFlag = false,
$fixContent = j$(".pointFixWrap"),
$totalWrap = $fixContent.find(".totalList"),
$total = $totalWrap.find(".value > .price"),
checkCnt = 0,
checkLimit = 121,
limitFlag = false,
arr_point = [];
/* setting
------------------------------- */
// フローティング設定
var fixSet = function(){
var fixHeight = $fixContent.innerHeight();
j$("body").css("padding-bottom",fixHeight + "px");
j$("#pageTopBtn").css("bottom",fixHeight + "px");
};
fixSet();
u.isWindowSizeCheck(function(){
fixSet();
});
// SP スクロール表示
var floatingFade = function(){
var pointTop = $floatingPoint.offset().top,
pointHeight = $floatingPoint.height(),
fltHeight = $fixContent.innerHeight(),
scrTop = u.$win.scrollTop(),
winHeight = u.$win.height(),
fixNm = "fixed";
if((!$fixContent.hasClass(fixNm)) && (scrTop + winHeight >= pointTop + pointHeight + fltHeight)){
$fixContent.addClass(fixNm).animate({
"opacity": 1.0
},300);
}
};
floatingFade();
u.$win.scroll(function(){
floatingFade();
});
// チェックボックス活性/非活性判定
$tableRow.each(function(){
var self = j$(this),
price = parseInt(self.find(priceCell).html().split(",").join(""));
switch(price > maxPoint){
case true:
self.addClass(discheckableNm)
.find(checkCell).addClass(disableNm)
.find(".customCheck").addClass(disableNm)
.find('input[type="checkbox"]').prop("disabled",true);
break;
case false:
break;
default:
break;
}
});
/* function
------------------------------- */
/*
* function:checkIn(cell)
* チェックイン関数
* - 引数には対象セル指定
*/
var checkIn = function(cell){
var $check = cell.find("input"),
$label = cell.find("label");
cell.addClass(checkedNm);
$check.prop("checked",true);
$label.addClass(checkedNm);
};
/*
* function:checkOut(cell)
* チェックアウト関数
* - 引数には対象セル指定
*/
var checkOut = function(cell){
var $check = cell.find("input"),
$label = cell.find("label");
cell.removeClass(checkedNm);
$check.prop("checked",false);
$label.removeClass(checkedNm);
};
/*
* function:checkEach(elm)
* チェックボックスによる入力
*/
var checkEach = function(elm){
if(elm.hasClass(allCheckNm)){ return; }
var $row = elm.parents("tr"),
$input = $row.find($target),
points = parseInt($row.find($cashPrice).html().split(",").join(""));
if(elm.hasClass(checkedNm)){
$input.val(points);
} else {
$input.val("");
}
};
/*
* function:checkInAll
* 全てチェックイン
*/
var checkInAll = function(){
var i;
for(i = 0; i < rowLen; i++){
var $row = $tableRow.eq(i),
$input = $row.find($target),
$cell = $row.find(checkCell),
points = parseInt($row.find($cashPrice).html().split(",").join(""));
if($row.hasClass(discheckableNm)){
continue;
} else {
$input.val(points);
checkIn($cell);
}
}
};
/*
* function:checkOutAll
* 全てチェックアウト
*/
var checkOutAll = function(){
var i;
for(i = 0; i < rowLen; i++){
var $row = $tableRow.eq(i),
$input = $row.find($target),
$cell = $row.find(checkCell);
if($row.hasClass(discheckableNm)){
continue;
} else {
$input.val("");
checkOut($cell);
}
}
};
/*
* function:checkAuto
* 自動チェック判定
*/
var checkAuto = function(){
var $clickable = j$(checkCell).not("." + disableNm + ",." + allCheckNm),
$checked = j$(("." + checkedNm),$clickable),
clickableLen = $clickable.length,
checkedLen = $checked.length;
if(clickableLen === 0){ return false; }
switch(clickableLen === checkedLen){
case true:
$allCheck.addClass(checkedNm);
$allCheck.find("label").addClass(checkedNm);
$allCheck.find("input").prop("checked",true);
break;
case false:
$allCheck.removeClass(checkedNm);
$allCheck.find("label").removeClass(checkedNm);
$allCheck.find("input").prop("checked",false);
break;
default:
break;
}
};
/*
* function:inputNumeric
* 入力値を半角数字のみに
*/
var inputNumeric = function(elm){
var str = elm.val(),
hankaku = str.replace(/[A-Za-z0-9]/g,function(s){return String.fromCharCode(s.charCodeAt(0)-0xFEE0)});
// 半角変換
if(str.match(/[A-Za-z0-9]/g)){
elm.val(hankaku);
str = elm.val();
}
// 数字以外削除
if(!str.match(/^\d+$/)){
elm.val(str.replace(/[^0-9]/g,""));
}
};
/*
* function:sum(arr)
* 配列の値を合計する関数
*/
var sum = function(arr) {
var sum = 0;
for (var i=0,len=arr.length; i= minPoint && pointTotal() <= maxPoint){
case true:
check = true;
break;
case false:
check = false;
break;
default:
check = false;
break;
}
return check;
};
/*
* function:withinFlag
* 割引金額がご利用金額を超えていないか
* return{boolean}
*/
var withinFlag = function(){
var check = false,
overLen = 0,
i;
// 上限を超えている個数をカウント
for(i = 0; i < rowLen; i++){
var $input = $tableRow.eq(i).find($target),
point = parseInt($input.val().split(",").join("")),
price = parseInt($tableRow.eq(i).find($cashPrice).html().split(",").join("")),
maxUsage = price > maxPoint? maxPoint:price;
switch(point > maxUsage){
case true:
overLen++;
$input.addClass(errorNm);
break;
case false:
$input.removeClass(errorNm);
break;
default:
$input.removeClass(errorNm);
break;
}
}
// 上限を超えている個数が0ならtrueを返す
switch(overLen === 0){
case true:
check = true;
break;
case false:
check = false;
break;
default:
check = false;
break;
}
return check;
// 初期化
overLen = 0;
};
// チェック件数の監視
var checkCount = function(){
checkCnt = 0;
$target.each(function(){
var self = j$(this);
if(self.val() !== "" && self.val() !== "undefined"){
checkCnt++
}
});
};
setInterval(function(){checkCount()},500);
// チェック件数によるエラー判定
var limitCheck = function(){
var checkTotal = 0;
$target.each(function(){
var self = j$(this);
if(self.val() !== "" && self.val() !== "undefined"){
checkTotal++
}
});
if(checkTotal >= checkLimit){
j$("#chkTotal").html(checkTotal);
if(checkTotal > checkCnt){
j$.colorbox({
inline: true,
opacity: 0.6,
fixed: true,
maxWidth: "100%",
href: j$("#chkboxAlert")
});
}
limitFlag = false;
} else {
limitFlag = true;
}
};
/*
* function:validate
* バリデーションチェック
*/
var validate = function(){
withinFlag();
switch(totalFlag() && withinFlag() && limitFlag){
case true:
$nextBtn.removeClass(disableNm).prop("disabled",false);
$totalWrap.removeClass(errorNm);
break;
case false:
$nextBtn.addClass(disableNm).prop("disabled",true);
$totalWrap.addClass(errorNm);
break;
default:
$nextBtn.removeClass(disableNm).prop("disabled",true);
$totalWrap.removeClass(errorNm);
break;
}
};
/*
* function:init
* 実行記述
*/
init_times = 0;
var init = function(){
totalOutput();
limitCheck();
init_times++;
var timer = setTimeout(function(){
validate();
},100);
// 実行重複を制御
if(init_times > 1){
clearTimeout(timer);
init_times = 0;
}
};
/* init
------------------------------- */
init();
/* trigger
------------------------------- */
/* 以下のイベントで実行
------------------------------- */
// 個別チェック時
j$(checkCell).on("click",function(event){
var self = j$(this);
if(self.hasClass(disableNm)){ return false; }
checkEach(self);
init();
// 全チェックボタンじゃなければ自動チェック判定を実行
if(!self.hasClass(disableNm) && !self.hasClass(allCheckNm)){
checkAuto();
}
event.preventDefault();
});
// 全チェック時
$allCheck.on("click",function(){
switch(j$(this).hasClass(checkedNm)){
case true:
checkInAll();
break;
case false:
checkOutAll();
break;
default:
break;
}
init();
});
// 手入力時
$target.on("keyup blur",function(){
var self = j$(this),
$cell = self.parents("tr").find(checkCell);
inputNumeric(self);
checkOut($cell);
checkAuto();
init();
});
/* Enterキーによる送信を抑止
------------------------------- */
$target.keypress(function(ev) {
if ((ev.which && ev.which === 13) || (ev.keyCode && ev.keyCode === 13)) {
return false;
} else {
return true;
}
});
},
/*
* @method discountCalculate
* - 割引後金額計算
*/
discountCalculate: function(config){
var c = j$.extend({
wrap: ".discount-calculate",
elm: "tbody > tr",
minuend: ".cashPrice",
subtrahend: ".discountPrice",
total: ".totalPrice",
unitStr: "円"
},config);
// vars
var $wrap = j$(c.wrap),
$elm = $wrap.find(c.elm);
if($wrap.length === 0){ return false; }
$elm.each(function(){
var self = j$(this),
minuend = parseInt(self.find(c.minuend).html().split(",").join("")),
subtrahend = parseInt(self.find(c.subtrahend).html().split(",").join("")),
total = minuend - subtrahend + c.unitStr,
$totalElm = self.find(c.total);
$totalElm.html(total.replace( /(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"));
});
},
/*
* @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 revoAllInput
* - リボ増額 全額お支払
*/
revoAllInput: function(){
// element
var $elm = j$(".revo-all-input");
if($elm.length === 0){ return false; }
// function
var inputSwitch = function(elm){
var $radio = elm.find('input[type="checkbox"]'),
$input = elm.find('input.inputPrice'),
isChecked = $radio.prop("checked")? true: false;
switch(isChecked){
case true:
$input.prop("disabled",true).val("");
break;
case false:
$input.prop("disabled",false);
break;
default:
break;
}
};
// trigger
$elm.each(function(){
var self = j$(this),
$radio = self.find('input[type="checkbox"]');
inputSwitch(self);
$radio.on("change",function(){
inputSwitch(self);
});
});
},
/*
* @method inputNumberControl
* - 数字入力制御
*/
inputNumberControl:function(){
if(u.isNotPC()){ return false; }
var $elm = j$("input.inputNum");
if($elm.length === 0){ return false; }
$elm.each(function(){
j$(this).attr("type","text");
});
},
/*
* @method maxlengthControl
* - maxlength制御
*/
maxlengthControl:function(){
var $elm = j$("input[data-maxlength]");
if($elm.length === 0){ return false; }
$elm.on("blur, keyup", function(){
var self = j$(this),
maxLength = self.data("maxlength");
if(self.val().length > maxLength){
self.val(self.val().slice(0, maxLength));
}
});
}
};
}();
/* -------------------------------------------
* @init
------------------------------------------- */
j$(function(){
var u = new EPOS_CARD_DYNAMIC.Util();
EPOS_CARD_DYNAMIC.module.initialize();
u.$win.on("load", function(){
EPOS_CARD_DYNAMIC.module.equalHeight(true, true);
EPOS_CARD_DYNAMIC.module.equalWidth(true, true);
EPOS_CARD_DYNAMIC.module.sizeFix();
EPOS_CARD_DYNAMIC.module.revoChangeControl();
});
});