var mes_confirm = "ご入力された全てのお届け先情報は消去されます。\nよろしいですか？";
var mes_nextstep = "※どの商品をどのお届け先へご配達するかは次の画面で選択できます。";
var mes_itemreset = "商品が割り当てられないお届け先の情報は消去されます。\nよろしいでしょうか？";
var mes_imcomplete = "お届け先が指定されていない商品があります。";
// onload
$(function(){
	$('.deliv_cancel').hover(
		function(){$(this).css({'color':'#FF4900'});},
		function(){$(this).css({'color':'#555555'});}
	);
	// お届け先指定のチェックボックス確認処理
	$('input[name=deliv_check]').click(function() {
		if($('#deliv_check').attr('checked') === true) {
			fnDelivMulti();
			fnAddNextDeliv();
			fnDelivOrderToggle(true);
		} else {
			if(confirm(mes_confirm) === true) {
				$('#deliv_check').val(0);
				$('#deliv_multi_box').empty();
				fnDelivOrderToggle(false);
			}else {
				$('#deliv_check').attr('checked', true);
			}
		}
	});
});
function fnDelivOrderToggle(on) {
	if(on) {
		$('#deliv_order').removeAttr('disabled');
		$('label[for=deliv_order]').css('color', '#000000');
	} else {
		$('#deliv_order').attr('disabled', 'disabled');
		$('label[for=deliv_order]').css('color', '#C0C0C0');
	}
}
// お届け先指定の場合
function fnDelivMulti() {
	$('#deliv_multi_box')
	.append(
		$('<img />')
		.attr({
			'src': '/user_data/packages/mango/img/shopping/info_title2.gif',
			'alt': 'お届け先情報入力'
		})
		.width(700)
		.height(40)
	)
	.append(
		$('<div />')
		.attr('id', 'add_deliv_table')
		.click(function(){
			fnAddNextDeliv();
		})
		.append(' 更にお届け先を追加する')
	)
	.append(
		$('<p />')
		.attr('id','message_nextstep')
		.append(mes_nextstep)
	);
}
// お届け先入力フォームの追加
function fnAddDelivForm(no, val, len, sty) {
	var key1 = key2 = key3 = '';
	var table = $('<table />')
	.attr('id','deliv_form_'+no)
	.addClass('deliv_form')
	.append(
		$('<tr />')
		.append(
			$('<th />')
			.attr('colspan', 2)
			.append(
				$('<em />')
				.addClass('deliv_name')
				.append('お届け先'+no)
			)
			.append(
				$('<p />')
				.addClass('deliv_cancel deliv_cancel_top')
				.hover(
					function(){$(this).css({'color':'#FF4900'});},
					function(){$(this).css({'color':'#555555'});}
				)
				.attr('id', 'delivcancel'+no)
				.click(function(){
					var id = $(this).attr('id');
					var no = id.replace('delivcancel','');
					fnCancelDeliv(no);
				})
				.append('取り消す')
			)
		)
	);
	key1 = 'deliv_name01_';
	key2 = 'deliv_name02_';
	table.append(
		$('<tr />')
		.append(
			$('<th />')
			.append('お名前')
			.append(
				$('<span />')
				.addClass('attention')
				.append('※')
			)
		)
		.append(
			$('<td />')
			.append('姓 ')
			.append(
				$('<input />')
				.addClass('box120 must')
				.attr({
					'type': 'text',
					'name': key1+no,
					'value': val[key1+no],
					'maxlength': len[key1+'0'],
					'style': sty[key1+'0']
				})
			)
			.append('名 ')
			.append(
				$('<input />')
				.addClass('box120 must')
				.attr({
					'type': 'text',
					'name': key2+no,
					'value': val[key2+no],
					'maxlength': len[key2+'0'],
					'style': sty[key2+'0']
				})
			)
		)
	);
	key1 = 'deliv_kana01_';
	key2 = 'deliv_kana02_';
	table.append(
		$('<tr />')
		.append(
			$('<th />')
			.append('お名前（フリガナ）')
			.append(
				$('<span />')
				.addClass('attention')
				.append('※')
			)
		)
		.append(
			$('<td />')
			.append('セイ ')
			.append(
				$('<input />')
				.addClass('box120 must')
				.attr({
					'type': 'text',
					'name': key1+no,
					'value': val[key1+no],
					'maxlength': len[key1+'0'],
					'style': sty[key1+'0']
				})
			)
			.append('メイ ')
			.append(
				$('<input />')
				.addClass('box120 must')
				.attr({
					'type': 'text',
					'name': key2+no,
					'value': val[key2+no],
					'maxlength': len[key2+'0'],
					'style': sty[key2+'0']
				})
			)
		)
	);
	key1 = 'deliv_zip01_';
	key2 = 'deliv_zip02_';
	table.append(
		$('<tr />')
		.append(
			$('<th />')
			.append('郵便番号')
			.append(
				$('<span />')
				.addClass('attention')
				.append('※')
			)
		)
		.append(
			$('<td />')
			.append(
				$('<p />')
				.append('〒 ')
				.append(
					$('<input />')
					.addClass('box60 must')
					.attr({
						'type': 'text',
						'name': key1+no,
						'value': val[key1+no],
						'maxlength': len[key1+'0'],
						'style': sty[key1+'0'],
						'size': 6
					})
				)
				.append(' - ')
				.append(
					$('<input />')
					.addClass('box60 must')
					.attr({
						'type': 'text',
						'name': key2+no,
						'value': val[key2+no],
						'maxlength': len[key2+'0'],
						'style': sty[key2+'0'],
						'size': 6
					})
				)
				.append(
					$('<a />')
					.attr({
						'href': 'http://search.post.japanpost.jp/zipcode/',
						'target': '_blank'
					})
					.append('郵便番号検索')
				)
			)
			.append(
				$('<p />')
				.addClass('zipimg')
				.append(
					$('<img />')
					.width(86)
					.height(20)
					.attr({
						'id': 'calladdress'+no,
						'src': '/user_data/packages/mango/img/common/address.gif',
						'alt': '住所自動入力'
					})
					.click(function(){
						var id = $(this).attr('id');
						var no = id.replace('calladdress','');
						fnCallAddress('/input_zip.php', 'deliv_zip01_'+no, 'deliv_zip02_'+no, 'deliv_pref_'+no, 'deliv_addr01_'+no);
					})
				)
				.append(
					$('<span />')
					.addClass('mini')
					.append(' 郵便番号を入力後、クリックしてください。')
				)
			)
		)
	);
	key1 = 'deliv_pref_';
	key2 = 'deliv_addr01_';
	key3 = 'deliv_addr02_';
	table.append(
		$('<tr />')
		.append(
			$('<th />')
			.append('住所')
			.append(
				$('<span />')
				.addClass('attention')
				.append('※')
			)
		)
		.append(
			$('<td />')
			.append(
				$('<select />')
				.attr('name',key1+no)
				.addClass('must')
				.append($('<option />').attr('value', '').append('都道府県を選択'))
				.append($('<option />').attr('value','1').append('北海道'))
				.append($('<option />').attr('value','2').append('青森県'))
				.append($('<option />').attr('value','3').append('岩手県'))
				.append($('<option />').attr('value','4').append('宮城県'))
				.append($('<option />').attr('value','5').append('秋田県'))
				.append($('<option />').attr('value','6').append('山形県'))
				.append($('<option />').attr('value','7').append('福島県'))
				.append($('<option />').attr('value','8').append('茨城県'))
				.append($('<option />').attr('value','9').append('栃木県'))
				.append($('<option />').attr('value','10').append('群馬県'))
				.append($('<option />').attr('value','11').append('埼玉県'))
				.append($('<option />').attr('value','12').append('千葉県'))
				.append($('<option />').attr('value','13').append('東京都'))
				.append($('<option />').attr('value','14').append('神奈川県'))
				.append($('<option />').attr('value','15').append('新潟県'))
				.append($('<option />').attr('value','16').append('富山県'))
				.append($('<option />').attr('value','17').append('石川県'))
				.append($('<option />').attr('value','18').append('福井県'))
				.append($('<option />').attr('value','19').append('山梨県'))
				.append($('<option />').attr('value','20').append('長野県'))
				.append($('<option />').attr('value','21').append('岐阜県'))
				.append($('<option />').attr('value','22').append('静岡県'))
				.append($('<option />').attr('value','23').append('愛知県'))
				.append($('<option />').attr('value','24').append('三重県'))
				.append($('<option />').attr('value','25').append('滋賀県'))
				.append($('<option />').attr('value','26').append('京都府'))
				.append($('<option />').attr('value','27').append('大阪府'))
				.append($('<option />').attr('value','28').append('兵庫県'))
				.append($('<option />').attr('value','29').append('奈良県'))
				.append($('<option />').attr('value','30').append('和歌山県'))
				.append($('<option />').attr('value','31').append('鳥取県'))
				.append($('<option />').attr('value','32').append('島根県'))
				.append($('<option />').attr('value','33').append('岡山県'))
				.append($('<option />').attr('value','34').append('広島県'))
				.append($('<option />').attr('value','35').append('山口県'))
				.append($('<option />').attr('value','36').append('徳島県'))
				.append($('<option />').attr('value','37').append('香川県'))
				.append($('<option />').attr('value','38').append('愛媛県'))
				.append($('<option />').attr('value','39').append('高知県'))
				.append($('<option />').attr('value','40').append('福岡県'))
				.append($('<option />').attr('value','41').append('佐賀県'))
				.append($('<option />').attr('value','42').append('長崎県'))
				.append($('<option />').attr('value','43').append('熊本県'))
				.append($('<option />').attr('value','44').append('大分県'))
				.append($('<option />').attr('value','45').append('宮崎県'))
				.append($('<option />').attr('value','46').append('鹿児島県'))
				.append($('<option />').attr('value','47').append('沖縄県'))
				.val(val[key1+no] ? val[key1+no] : '')
			)
			.append(
				$('<p />')
				.addClass('mini')
				.append(
					$('<input />')
					.addClass('box380 must')
					.attr({
						'type': 'text',
						'name': key2+no,
						'value': val[key2+no],
						'maxlength': len[key2+'0'],
						'style': sty[key2+'0']
					})
				)
				.append($('<br />'))
				.append('市区町村名（例：千代田区神田神保町）')
			)
			.append(
				$('<p />')
				.addClass('mini')
				.append(
					$('<input />')
					.addClass('box380 must')
					.attr({
						'type': 'text',
						'name': key3+no,
						'value': val[key3+no],
						'maxlength': len[key3+'0'],
						'style': sty[key3+'0']
					})
				)
				.append($('<br />'))
				.append('番地・ビル名（例：1-3-5）')
			)
			.append(
				$('<p />')
				.addClass('mini')
				.append(
					$('<em />')
					.append('住所は2つに分けてご記入いただけます。マンション名は必ず記入してください。')
				)
			)
		)
	);
	key1 = 'deliv_tel01_';
	key2 = 'deliv_tel02_';
	key3 = 'deliv_tel03_';
	table.append(
		$('<tr />')
		.append(
			$('<th />')
			.append('電話番号')
			.append(
				$('<span />')
				.addClass('attention')
				.append('※')
			)
		)
		.append(
			$('<td />')
			.append(
				$('<input />')
				.addClass('box60 must')
				.attr({
					'type': 'text',
					'name': key1+no,
					'value': val[key1+no],
					'maxlength': len[key1+'0'],
					'style': sty[key1+'0'],
					'size': 6
				})
			)
			.append(' - ')
			.append(
				$('<input />')
				.addClass('box60 must')
				.attr({
					'type': 'text',
					'name': key2+no,
					'value': val[key2+no],
					'maxlength': len[key2+'0'],
					'style': sty[key2+'0'],
					'size': 6
				})
			)
			.append(' - ')
			.append(
				$('<input />')
				.addClass('box60 must')
				.attr({
					'type': 'text',
					'name': key3+no,
					'value': val[key3+no],
					'maxlength': len[key3+'0'],
					'style': sty[key3+'0'],
					'size': 6
				})
			)
		)
	);
	$('#add_deliv_table')
	.before(table)
	.before(
		$('<p />')
		.addClass('deliv_cancel deliv_cancel_bottom')
		.hover(
			function(){$(this).css({'color':'#FF4900'});},
			function(){$(this).css({'color':'#555555'});}
		)
		.click(function(){
			fnCancelDeliv(no);
		})
		.append('お届け先'+no+'を取り消す')
	);
}
// 配送先の追加処理
function fnAddNextDeliv(){
	var no = parseInt($('#deliv_check').val())+1;
	$('#deliv_check').val(no);
	fnAddDelivForm(no,{},{},{});
}
// 配送先取り消し処理
function fnCancelDeliv(del_no){
	if(confirm("お届け先"+del_no+"の情報は消去されます。\nよろしいですか？") == false){
		return false;
	}
	var count = parseInt($('#deliv_check').val());
	var val = {};
	var new_count=0;
	// 削除以外のフォームを退避
	for(var i=1; i<=count; i++) {
		new_count++;
		if(i == del_no) {
			new_count--;
			continue;
		}
		val['deliv_name01_'+new_count] = $('input[name=deliv_name01_'+i+']').val();
		val['deliv_name02_'+new_count] = $('input[name=deliv_name02_'+i+']').val();
		val['deliv_kana01_'+new_count] = $('input[name=deliv_kana01_'+i+']').val();
		val['deliv_kana02_'+new_count] = $('input[name=deliv_kana02_'+i+']').val();
		val['deliv_zip01_'+new_count] = $('input[name=deliv_zip01_'+i+']').val();
		val['deliv_zip02_'+new_count] = $('input[name=deliv_zip02_'+i+']').val();
		val['deliv_pref_'+new_count] = $('select[name=deliv_pref_'+i+']').val();
		val['deliv_addr01_'+new_count] = $('input[name=deliv_addr01_'+i+']').val();
		val['deliv_addr02_'+new_count] = $('input[name=deliv_addr02_'+i+']').val();
		val['deliv_tel01_'+new_count] = $('input[name=deliv_tel01_'+i+']').val();
		val['deliv_tel02_'+new_count] = $('input[name=deliv_tel02_'+i+']').val();
		val['deliv_tel03_'+new_count] = $('input[name=deliv_tel03_'+i+']').val();
	}
	$('#deliv_multi_box').empty();
	$('#deliv_check').val(new_count);
	if(new_count > 0){
		$('#deliv_check').attr('checked', true);
		fnDelivOrderToggle(true);
		fnDelivMulti();
		for(var j=1; j<=new_count; j++) {
			fnAddDelivForm(j, val, {}, {});
		}
	} else {
		$('#deliv_single').attr('checked', true);
		fnDelivOrderToggle(false);
	}
}
// 商品個数変更処理
function fnChangeItemCount(did, pid){
	// カート内の商品個数を取得し、商品ID一覧を保持
	var cart_count = {};
	var item_ids = [];
	$('span[id^=remain_]').each(function(k,v){
		var tmp = $(v).attr('id').split('_');
		item_ids.push(tmp[1]);
		cart_count[tmp[1]] = $(v).attr('title');
	});
	// 商品ごとに計算
	var sub_total = 0;	// 配送先ごとの小計
	var stocked = {};		// 配送指定済みの商品数
	$('select[name^=item_]').each(function(k,v){
		var tmp = $(v).attr('name').split('_');
		var d_id = tmp[1];
		var p_id = tmp[2];
		// カートにある商品を処理
		if($.inArray(tmp[2], item_ids) >= 0) {
			// 変更されたプルダウンのある商品ごとの小計と配送先ごとの小計を計算
			if(d_id == did) {
				ss_total = parseInt($(v).attr('title'))*parseInt($(v).val());
				$('#ss_total_'+d_id+'_'+p_id).empty().append(ss_total.toString().replace(/([0-9]+?)(?=(?:[0-9]{3})+$)/g,'$1,')+'円');
				sub_total+= parseInt(ss_total);
			}
			// 配送先が指定済みの商品数をカウント
			if(!stocked[p_id]) {
				stocked[p_id] = 0;
			}
			stocked[p_id] += parseInt($(v).val());
		}
	});
	// 配送料が必要な場合は表示と配送先ごとの小計に加算
	var fee = $('#postage_'+did).attr('title').split('_');
	if(sub_total > 0) {
		if(sub_total < parseInt(fee[0]) || !fee[0]) {
			$('#postage_'+did).empty().append(fee[1].toString().replace(/([0-9]+?)(?=(?:[0-9]{3})+$)/g,'$1,')+'円').css('color','#000000');
			sub_total+=parseInt(fee[1]);
		} else {
			$('#postage_'+did).empty().append('無料').css('color','#FF0000');
		}
		} else {
		$('#postage_'+did).empty().append('－').css('color','#000000');
		}
	$('#sub_total_'+did).empty().append(sub_total.toString().replace(/([0-9]+?)(?=(?:[0-9]{3})+$)/g,'$1,')+'円');

	var remain_none = true;
	$(item_ids).each(function(k,v){
		// 配送先が指定されていない残りの個数
		var remain = cart_count[v] - stocked[v];
		// 指定可能な最大商品数を変更
		$('select[name^=item_][name$=_'+v+']').each(function(m,n){
			var crnt = $(n).val();
			var max = remain+parseInt(crnt);
			$(n).empty()
			for(var i=0; i<=max; i++) {
				$(n).append($('<option />').val(i).append(i));
			}
			$(n).val(crnt);
		});
		// メッセージの変更
		$('#remain_'+v).empty().append(remain);
		if(remain > 0 && remain <= cart_count[v]) {
			remain_none=false;
			$('#remain_record_'+v).show();
			$('.remain_'+v)
			.empty()
			.removeClass('clear_cart clear_message')
			.addClass('remain_cart remain_message')
			.append('お届け先未定：あと'+remain+'個');
		}else if(remain == 0){
			$('#remain_record_'+v).hide();
			$('.remain_'+v)
			.empty()
			.removeClass('remain_cart  remain_message')
			.addClass('clear_cart clear_message')
			.append('お届け先指定完了');
		}else{
			alert('不正な処理です。');
		}
	});
	// 全ての商品の配送先が指定済みならテーブルを消す
	if(remain_none){
		$('#remain_table').hide();
	}else{
		$('#remain_table').show();
	}
}
// 商品の配送先が完了しているか判定
function fnCheckItemAssign(login){
	if($('#remain_table').css('display') == 'none') {
		if(!login) {
			var no_assign_item = false;
			$('span[id^=sub_total_]').each(function(k,v){
				if(k > 0) {
					if(parseInt($(v).html().replace('円', '').replace(',','')) <= 0) {
						no_assign_item = true;
					}
				}
			});
			if(no_assign_item) {
				if(confirm(mes_itemreset) == true) {
					return true;
				} else {
					return false;
				}
			} else {
				return true;
			}
		} else {
			return true;
		}
	} else {
		alert(mes_imcomplete);
		return false;
	}
}

