// システム側で実装
window.marketFunc = {};
$(function() {
window.onunload = function() {};
history.forward();
$(document).ready(function($){
// console.log('history:' + JSON.stringify(window.history));
if (window.history && window.history.pushState) {
// console.log('call 1');
window.history.pushState('forward', null, '');
$(window).on('popstate', function () {
window.history.pushState('forward', null, '');
// console.log('call back button');
});
}
});
// 入力ボックスをトリムする処理
$(function() {
$('input[type="text"]').focusout(function(e) {
$(this).val($.trim($(this).val()));
});
});
var $props = $('#props');
var props = $props.size() ? $.parseJSON($props.text()): {};
window.marketFunc.trigger = function(name) {
$(document).trigger(name);
}
// カート情報管理者
var cartInfoManager = {
COOKIE_NAME: "cartInfo",
list: [],
init: function() {
var data = ($.cookie(this.COOKIE_NAME));
this.list = ($.parseJSON(data || '[]') || []);
},
createObject: function(key, count) {
return {
goodsKey: key,
count: count
};
},
update: function(info) {
var tempList = this.list.filter(function(e) {
return e.goodsKey !== info.goodsKey;
});
tempList.unshift(info);
this.list = tempList;
},
updateAll: function(list) {
var self = this;
var ary = list.map(function(element, index, array) {
return self.createObject(element.goodsKey, element.intA);
});
ary.reverse();
ary.forEach(function(element, index, array) {
self.update(element);
});
},
remove: function(key) {
this.list = this.list.filter(function(e) {
return e.goodsKey !== key;
});
},
removeAll: function() {
this.list = [];
},
flush: function() {
$.cookie(this.COOKIE_NAME, JSON.stringify(this.list));
}
};
cartInfoManager.init();
var oldGoodsKeys = [];
var isFirstChangeCartInfo = true;
// カート情報の更新イベント処理
$(document).on('custom.changeCartInfo', function(event, obj) {
// 最初のカート変更
if (isFirstChangeCartInfo) {
oldGoodsKeys = obj.initDataArray.filter(function(element, index, array) {
return element.goodsKey;
}).map(function(element, index, array) {
return element.goodsKey;
});
isFirstChangeCartInfo = false;
}
var itemArray = obj.itemArray;
var nowGoodsKeys = itemArray.filter(function(element, index, array) {
return element.goodsKey;
}).map(function(element, index, array) {
return element.goodsKey;
});
var removeTargetGoodsKey = oldGoodsKeys.filter(function(element, index, array) {
return nowGoodsKeys.indexOf(element) === -1;
});
// 更新
cartInfoManager.updateAll(itemArray.filter(function(element, index, array) {
return element.goodsKey;
}));
// 削除
removeTargetGoodsKey.forEach(function(element, index, array) {
cartInfoManager.remove(element);
});
cartInfoManager.flush();
oldGoodsKeys = nowGoodsKeys;
});
// カート情報の削除イベント処理
$(document).on('custom.removeCartInfo', function(event, itemList) {
var key = $(itemList).find('.js-item-name').data('goodskey');
cartInfoManager.remove(key);
cartInfoManager.flush();
});
var $zipcode = $('.zipcode', $(document));
var $prefTextBox = $('.data-pref', $(document));
var $shikugunTextBox = $('.data-district', $(document));
var $macdTextBox = $('.data-macd', $(document));
var $macdEdaTextBox = $('.data-macd-sub', $(document));
var $streetTextBox = $('.data-street', $(document));
var $optTextBox = $('.data-opt', $(document));
var $cmpZipCodeTextBox = $('.data-cmpZipCode', $(document));
var $regShikugun = $('.regist-district', $(document));
var $regChome = $('.regist-chome', $(document));
var $jusyoTextBox = $('#DeliverySettingsAction_doSetDeliveryInfo_jusyo');
var $jusyoView = $('#jusyo_view');
// [住所検索]ボタンを押下する
$('#addr_search_button').on('click', function(event) {
// alert("addr_search_button click");
var $this = $(this);
var settings = {
data: { ZIP : $zipcode.val() === $zipcode.attr('title') ? '' :$zipcode.val() },
dataType: 'JSON',
method: 'POST',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
success: function(data, textStatus, jqXHR) {
$zipcode.removeClass('error');
$('#address_ui_area').find('.error-text').remove();
// システムエラー
var resultCode = parseInt(data.resultCode, 10);
if (resultCode === 2) {
window.location.href = props.actionUrls.error;
// パラメータエラーまたは検索結果零
} else if (resultCode === 1 || resultCode === 4) {
$(document).trigger('custom.invalidZipCode');
} else if (resultCode === 3) {
window.location.href = props.actionUrls.maintenance;
// 郵便番号なし
} else if (data.url){
$this.data('url', data.url);
$(document).trigger('custom.viewAddrSearch', $this);
// 郵便番号あり
} else {
var bean = data.inputtedAddressInfo;
// 住所の隠しボックスの値を更新
$prefTextBox.val(bean['pref']);
$shikugunTextBox.val(bean['majorAddressKanji'] + bean['blockNameKanji']);
$macdTextBox.val(bean['majorAddressCode']);
$macdEdaTextBox.val("");
$regShikugun.val(bean['majorAddressKanji']);
$regChome.val(bean['blockNameKanji']);
$jusyoTextBox.val(bean.inputtedAddress);
// 住所の表示を更新
$jusyoView.text(bean.inputtedAddress);
$cmpZipCodeTextBox.val(bean['zipCode']);
$(document).trigger('custom.endSearch');
checkEmptyForm();
}
},
error: function(jqXHR, textStatus, errorThrown) {
console.warn(textStatus);
window.location.href = props.actionUrls.error;
}
};
$.ajax( $(this).data('action'), settings);
return false;
});
// お届け先設定画面でタブ切り替え時にタブの状態をcookieに保存
$('#addrBookSele').on('click', function(event) {
document.cookie = 'tabId=';
});
$('#addrInputSele').on('click', function(event) {
document.cookie = 'tabId=tab2-02';
});
// 住所設定画面のAPI呼出
$('.items').on('click', function(event) {
$('#itemsForm').submit();
});
(function() {
var kbnToTimeMapText = $(document).find('#kbnToTimeMap').text();
var kbnToTimeMap = kbnToTimeMapText ? $.parseJSON(kbnToTimeMapText): {};
var constact = $.parseJSON($('#constact').text() || '{}');
var preOptions = $('.js-form-select-time').children('option');
/**
* お届け時間帯optionsの設定
*/
function createTimesOptions(sendDateKbn, selDataKbn, $defaultOption) {
var results = [];
// 選択した日付の配送グループ区分及び日付区分により、時間帯の選択肢を決定する。
var defaultOption = $('