/*总地址接收控件ＩＤ：RecvAddress*/
/*省份控件ＩＤ：area_province*/
/*城市控件ＩＤ：area_city*/
/*地区控件ＩＤ：area_district*/
/*街镇控件ＩＤ：area_town*/

/*各控件如果需要初始化值，需要存在以下几个控件，存放相应初始值*/
/*省份值控件：province_value*/
/*城市值控件：city_value*/
/*地区值控件：district_value*/
/*街镇值控件：town_value*/

/*如果需要自动获取区号，则需要存在以下两个控件*/
/*邮编控件ＩＤ：postCode*/
/*区号控件ＩＤ：areaCode*/

/*如果需要在选择各地区信息后，将所选省份城市值合并提示，则需要将合并值存放的控件ＩＤ设为以下ＩＤ*/
/*地区合并值存放控件ＩＤ：RecvAddress*/

/*以下字段标明是否允许添加新区域*/
var allowAddArea = false;
var AllowChangeQuickShipType = false;//快速订购界面是否允许选择物流

/*特别说明：如果服务器返回的对应地区子项为空,表示此项可以不填(不显示)
所以支持动态合法性判断(省)或(省+城市)或(省+城市+区县)或(省+城市+区县+街镇)
改变地址级数，只要改变服务器对getArea的方法*/

//初始化第一选择框（省份）
function getAreaProvince()
{
	if ($('#area_province').children().length < 2)
	{
		$.ajax({
			type: 'POST',
			url: 'action.php',
			dataType: 'json',
			data: 'act=ajaxArea&areaID=&areaType=province',
			success: function(msg)
			{
				var provinceValue = $('#province_value').val();
				$.each(msg, function(i, n) /*循环出数据*/
				{
					if (n.AID == provinceValue)
					{
						$('<option selected value='+ n.AID +'>'+ n.areaName +'</option>').appendTo("#area_province");
					}
					else
					{
						$('<option value='+ n.AID +'>'+ n.areaName +'</option>').appendTo("#area_province");
					}
				});
				$('#area_province').change();
			}
		});
	}
	else
	{
		$('#area_province').change();
	}
}

/*检查一个指定名称的区域框值是否需要提示合法性(当存在的+显示的+值为0或为为空时*/
function subCheckAreaSelected(areaname)
{
	var areaObj = $('#' + areaname);
	if (areaObj.length && areaObj.css('display') != 'none')
	{
		if (areaObj.val() == '0' || areaObj.val() == '')
		{
			return true;
		}
	}
	return false;
}

/*判断应选区域是否全部选中，此函数用于其它需要地址判断的页面*/
/*参数ifalert=true时，函数会显示提示，否则需要自行实现提示*/
function checkAreaSelected(ifalert)
{
	if (subCheckAreaSelected('area_province'))
	{
		if (ifalert){alert('请选择收货人所在的省份');}
		return false;
	}

	if (subCheckAreaSelected('area_city'))
	{
		if (ifalert){alert('请选择收货人所在的城市');}
		return false;
	}

	if (subCheckAreaSelected('area_district'))
	{
		if (ifalert){alert('请选择收货人所在的区县');}
		return false;
	}

	if (subCheckAreaSelected('area_town'))
	{
		if (ifalert){alert('请选择收货人所在的街镇');}
		return false;
	}

	return true;
}

/*获得具体地址的区号和邮编*/
function getAreaCodeAndPostCode(provinceID, cityID, districtID, townID)
{
	$.ajax({
		type : 'post',
		url  : 'action.php',
		dataType : 'json',
		data : 'act=getAreaCodeAndPostCode&PID='+ provinceID +'&CID='+ cityID +'&DID='+ districtID +'&TID='+ townID,
		success : function(msg)
		{
			if (msg != '')
			{
				var areaInfo = eval(msg);
				var postCodeValue=$('#postCode').val();
				if (postCodeValue=='' || postCodeValue==$('#postCode').attr('autoget'))
				{
					$('#postCode').attr('autoget',areaInfo.PostCode)
					$('#postCode').val(areaInfo.PostCode);
				}

				var areaCodeValue=$('#areaCode').val();
				if (areaCodeValue=='' || areaCodeValue == $('#areaCode').attr('autoget'))
				{
					$('#areaCode').attr('autoget',areaInfo.AreaCode);
					$('#areaCode').val(areaInfo.AreaCode);	
				}
			}
		}
	});
}

/*获取区域信息*/
function getArea(type, child)
{
	var areaID = $('#area_' + type).val();
	var areaChildList = $('#area_' + child);
	var area = $('select[@name=area_' + type + '] option[@selected]').text();

	if (areaID == '*')//areaID=*表示新增一个区域
	{
		if (type == 'city')
		{
			var parentType = 'area_province';
			var parentTypeName = 'Province';
		}
		else if (type == 'district')
		{
			var parentType = 'area_city';
			var parentTypeName = 'City';
		}
		else if (type == 'town')
		{
			var parentType = 'area_district';
			var parentTypeName = 'District';
		}

		var parentID = $('#'+parentType).val();//获得父级地区ID
		Boxy.ask('地区名称：<input type="text" name="newArea" id="newArea" value="" />',
				 ['确定','放弃'],
				 function(val)
				 {
					if (val == '确定')
					{
						var areaName = $('#newArea').val();
						if (areaName != '')
						{
							$.ajax({
								type: 'post',
								url: 'action.php',
								data: 'act=addNewArea&areaName=' + areaName + '&areaType=' + type + '&parentID=' + parentID + '&parentTypeName=' + parentTypeName,
								success: function(msg)
								{
									if (msg == 1)
									{
										/*请新地区追加到地址信息中*/
										var provinceName = $('select[@name=area_province] option[@selected]').text();
										var cityName = $('select[@name=area_city] option[@selected]').text();
										var districtName = $('select[@name=area_district] option[@selected]').text();
										var townName = $('select[@name=area_town] option[@selected]').text();

										//如果存在以下４个用于保存选中区域名称的字段或控件，则把名称都填进去。
										$('#province_name').val(provinceName);
										$('#city_name').val(cityName);
										$('#district_name').val(districtName);
										$('#town_name').val(townName);
										
										if (type == 'city')
										{
											var newAddress = provinceName + areaName;
										}
										else if (type == 'district')
										{
											var newAddress = provinceName + cityName + areaName;
										}
										else if (type == 'town')
										{
											var newAddress = provinceName + cityName + districtName + areaName;
										}
										
										Boxy.alert(newAddress,null,{title: '提示信息...'});
										
										var RecvEle=$('#RecvAddress');
										if (RecvEle.text()!=undefined)
										{
											RecvEle.text(newAddress);
										}
										$("#area_" + type).empty();
										$('<option value="#">'+ areaName +'</option>').appendTo("#area_" + type);
										Boxy.alert('地区添加成功.',null,{title: '提示信息...'});
									}
									else
									{
										Boxy.alert('操作失败.',null,{title: '提示信息...'});
									}
								}
							});
						}
					}	
				 },
				{title:'添加地区'});
		return false;
	}

	//areaID==0时，表示此项未选，需要初始化后面的信息
	if (areaID == '0')
	{
	 	var areaOldChildCount = $('#area_'+child+' option').length;
		areaChildList.empty();
		$('<option selected value="0">...请选择...</option>').appendTo(areaChildList);
		areaChildList.attr("value", "0");//选中第一项
		areaChildList.change();
		areaChildList.css('display','none');
		$('#' + child).css('display','none');//购物车当中所用

		var RecvEle = $('#RecvAddress');
		if (RecvEle.text() != undefined){RecvEle.text('');}

		quickOrderCheckShip();
		return false;
	}

	//否则开始获取区域信息
	$.ajax({
		type: 'POST',
		url: 'action.php',
		dataType: 'json',
		data: 'act=ajaxArea&areaID=' + areaID + '&areaType=' + child,
		success: function(msg)
		{
			areaChildList.empty();//清空原有数据
			if (msg.length > 0) //如果取回的数据大于０
			{
				$('<option value="0">...请选择...</option>').appendTo(areaChildList);
				var childValue = $('#' + child + '_value').val();//获取需要初始化的列表值，有则默认选中,购物车当中所用

				$.each(msg, function(i, n)//循环出数据
							{
								if (n.AID == childValue)
								{
									$('<option selected value=' + n.AID + '>' + n.areaName + '</option>').appendTo(areaChildList);
								}
								else
								{
									$('<option value=' + n.AID + '>' + n.areaName + '</option>').appendTo(areaChildList);
								}
							}
				);

				if (allowAddArea){$('<option value="*">...添加地区...</option>').appendTo(areaChildList);	}

				areaChildList.css('display','inline');//显示标签
				$('#' + child).css('display','inline');//显示标签,购物车当中所用
				areaChildList.change();//激发修改事件
			}
			else
			{
				areaChildList.css('display','none');//隐藏标签
				$('#' + child).css('display','none');//隐藏标签,购物车当中所用
			}

			/*将上次的结果写入地址框*/
			var provinceName = $('select[@name=area_province] option[@selected]').text();
			var cityName = $('select[@name=area_city] option[@selected]').text();
			var districtName = $('select[@name=area_district] option[@selected]').text();
			var townName = $('select[@name=area_town] option[@selected]').text();

			//如果存在以下４个用于保存选中区域名称的字段或控件，则把名称都填进去。
			$('#province_name').val(provinceName);
			$('#city_name').val(cityName);
			$('#district_name').val(districtName);
			$('#town_name').val(townName);

			if (type == 'province')
			{
				var newAddress = provinceName;
			}
			else if (type == 'city')
			{
				var newAddress = provinceName + cityName;
			}
			else if (type == 'district')
			{
				var newAddress = provinceName + cityName + districtName;
			}
			else if (type == 'town')
			{
				var newAddress = provinceName + cityName + districtName + townName;
			}

			var RecvEle = $('#RecvAddress');
			if (RecvEle.text() != undefined){RecvEle.text(newAddress);}//显示完整地址	

			$('.addByAjax').remove();/*清理上次ajax加载的信息内容*/

			//获取邮政编号
			if (type == 'district' || type == 'town')
			{
				var provinceID	= $('#area_province').val();
				var cityID		= $('#area_city').val();
				var districtID	= $('#area_district').val();
				var townID		= $('#area_town').val();
				getAreaCodeAndPostCode(provinceID, cityID, districtID, townID);
			}

			quickOrderCheckShip();//修改物流类型
		}//end ajax success
	});
}

//************************************************************//
//****用于快速订购的配送和支付方式可用性判断函数********************//
//****１：要求每一个配送方式Input组件，需要有一个ifcod属性
//****２：要求每一个支付方式Input组件，需要有一个payID属性
//****３：如果需要判断配送，请将对应配送Input的父组件ID设为"ShipParent"的
//****４：如果需要判断支付，请将对应支付Input的父组件ID设为"PayParent"的
//****	并添加对应配送方式的OnClick事件为quickOrderSelectShip(ShipID,ifCod);
//****５：如果需要将选中物流方式的名称放到一个隐藏字段中，需要一个id为shipName的元素
//****６：如果需要将选中支付方式的名称和描述放到两个隐藏字段中，对应的需要两个id为payName和payDesc的隐藏字段
//****	并且为每个支付方式的Input指定OnClick事件为setPayDescValue(payid)
//****７：如果需要计算运费：需要一个隐藏字段id为：Ship_Money;
//****８：如果需要显示计算后的运费：需要一个id为：showShipPay的显示控件（如Span)
//************************************************************//
function quickOrderSetShipStatus(ValidGroupID,DefaultShipID)
{
	  var validShipTypeGroup = ','+ValidGroupID+',';
	  var shipList = $('#ShipParent input[@type=radio]');
	  var currShipIfCod = '';
	  var allIfCod = 0;
	  var ifselok = false;
	  var selShiptypeOk = false;
	  var currSeledShipObj = null; 
	  var currSeledShipValue = '';

	  for (var j = 0; j < shipList.length; j++) 
	  {
		  var currShipValue=shipList[j].value;
		  var currShipID=','+currShipValue+',';

		  if (validShipTypeGroup.indexOf(currShipID)>-1)
		  {
			  var currShipObj = shipList[j];
			  currShipObj.style.display = 'inline';
			  if (ifselok == false && (DefaultShipID == '' || DefaultShipID == currShipValue))
			  {
				  ifselok = true;
	  			  currShipObj.checked = true;
	  			  currSeledShipObj = currShipObj;
	  			  currSeledShipValue = currShipValue;
			  }
			  var currentShipIfCodValue = currShipObj.getAttribute('ifcod');
			  allIfCod = isMax(allIfCod,Number(currentShipIfCodValue));
		  }
		  else
		  {
			  shipList[j].checked=false;
			  shipList[j].style.display='none';
		  }
	 }

	if (currSeledShipObj != null)
	{	
		currShipIfCod = currSeledShipObj.getAttribute('ifcod');
		quickOrderSelectShip(currSeledShipValue,currShipIfCod);	
		selShiptypeOk = true;
	}

	if (selShiptypeOk == false)
	{
		return (currShipIfCod == '') ? allIfCod : currShipIfCod;
	}
	else
	{
		return "-";
	}
}

//根据给定参数计算运费的子函数
function subQuickOrderCalcShipPay(ShipID,PID,CID,DID,TID,GoodsID,BuyQty,SDID)
{
	if (($('#checkAddress').attr('checked')  || checkAreaSelected(false)) && Number(BuyQty)>0 && $('#Ship_Money').length && !isEmpty(ShipID))
	{
		$.ajax({
			type : 'post',
			url  : 'sale.php',
			dataType: 'json',
			data : 'act=getQuickShipPay&shipID='+ ShipID +'&PID='+ PID +'&CID='+ CID +'&DID='+ DID +'&TID='+ TID +'&GoodsID='+ GoodsID +'&BuyQty='+ BuyQty+'&SDID='+ SDID + '&GoodsType=' + $('#goodsType').val(),
			success : function(msg)
			{
				if (msg != '')
				{
					var rdata = eval(msg);
					var showShipPayMoney = '';
					if (Number(rdata.value) > 0){showShipPayMoney = '运费：' + rdata.value +'元';	}
					$('#showShipPay').text(showShipPayMoney);
					$('#Ship_Money').val(rdata.value);
					$('#Ship_Money_Verify').val(rdata.verify);
				}
			}
		});
	}
	else
	{
		$('#showShipPay').text('');
		$('#Ship_Money').val('');
	}
}

/*选中一个物流时，修改支付类型的状态，并计算运费*/
function quickOrderSelectShip(ShipID,IfCod)
{
	//以下代码判断并显示可用支付方式列表（需要将当前地址不支持的物流方式隐藏）
	var selShipIfCod = IfCod;
	if (selShipIfCod == ''){selShipIfCod = '0'}
	if (ShipID != 0)
	{
		$('#shipName').val($('#shipDesc_'+ShipID).text());
	}
	var payList = $('#PayParent input[@type=radio]');

	for (var j = 0; j < payList.length; j++)
	{
		if (selShipIfCod=='0' && payList[j].getAttribute('payID') == 0)
		{
			payList[j].checked = false;
			payList[j].style.display = 'none';
			if (payList[j].getAttribute('payID') == 0)
			{
				$('#payname_' + payList[j].value).html('货到付款<font color="#CC0000">不支持该区</font>');
			}
		}
		else
		{
			payList[j].style.display = 'inline';
			if (payList[j].getAttribute('payID') == 0)
			{
				$('#payname_' + payList[j].value).html('货到付款');
			}
		}
	}

	//计算运费
	if ($('#checkAddress').attr('checked'))
	{
		var selAddrObj = $('input[@type=radio][@name=addrID][@checked]');
		var PID = selAddrObj.attr('PID');
		var CID = selAddrObj.attr('CID');
		var DID = selAddrObj.attr('DID');
		var TID = selAddrObj.attr('TID');
	}
	else
	{
		var PID = $('#area_province').val();
		var CID = $('#area_city').val();
		var DID = $('#area_district').val();
		var TID = $('#area_town').val();
	}

	var GoodsID = $('#goods_ID').val();
	var BuyQty = $('#numShow_1_'+GoodsID).val();
	var SDID = $('#SDID').val();

	//计算快速订购运费
	if (isEmpty(ShipID)) {ShipID = $('input[@type=radio][@name=shipID][@checked]').val()};
	subQuickOrderCalcShipPay(ShipID,PID,CID,DID,TID,GoodsID,BuyQty,SDID);
}

//改变商品购买数量时对运费进行重算
function quickOrderReCalcShipPay()
{
	if ($('#checkAddress').attr('checked'))
	{
		var selAddrObj = $('input[@type=radio][@name=addrID][@checked]');
		var PID = selAddrObj.attr('PID');
		var CID = selAddrObj.attr('CID');
		var DID = selAddrObj.attr('DID');
		var TID = selAddrObj.attr('TID');
	}
	else
	{
		var PID = $('#area_province').val();
		var CID = $('#area_city').val();
		var DID = $('#area_district').val();
		var TID = $('#area_town').val();
	}

	var GoodsID = $('#goods_ID').val();
	var BuyQty = $('#numShow_1_'+GoodsID).val();
	var SDID = $('#SDID').val();	

	var pattern = /^\d{1,3}$/;
	var isNumber = (pattern.test(BuyQty)) ? true : false;
	if (!isNumber)
	{
		analysePmt(1);
		alert('订购数量需填写数字，且订购数量不能大于999，请重新输入');
		$('#numShow_1_'+GoodsID).val(1);
		return;
	}

	//计算快速订购运费
	var ShipID = $('input[@type=radio][@name=shipID][@checked]').val();
	analysePmt(BuyQty);
	subQuickOrderCalcShipPay(ShipID,PID,CID,DID,TID,GoodsID,BuyQty,SDID);	
}

//分析优惠规则是否可选择
function analysePmt(num)
{
	num = Number(num);
	price = Number($('#goodsPriceValue').val()) * num;
	var ipt = $("input[name^='PmtRule_']").each(
	function()
	{
		var c_gnum = Number($(this).attr('ctype_gnum'));
		var c_omin = Number($(this).attr('ctype_omin'));
		var c_omax = Number($(this).attr('ctype_omax'));

		if ($(this).attr('ctype') == 10)
		{
			$(this).attr('disabled', (c_gnum <= num) ? false : true);
		}
		else
		{
			$(this).attr('disabled',(price >= c_omin && price <= c_omax) ? false : true);
		}
	
		if ($(this).attr('disabled'))
		{
			$(this).attr('checked',false);
			$(this).css('display','none');
			$('#tip' + $(this).attr('id')).css('display','');
		}
		else
		{
			$(this).css('display','');
			$('#tip' + $(this).attr('id')).css('display','none');
		}

		//使无偿赠品随购买主品而变动数量
		var ltype = Number($(this).attr('ltype'));
		if (ltype > 0)
		{
			var rid = String($(this).attr('id'));
			rid = rid.substr(rid.indexOf('_')+1);
			if (ltype == 1)
			{
				var slct = $('select[@name=GiftQty_' + rid + ']');
				slct.empty();
				for (var i = 1; i <=  num; ++i)
				{
					slct.append('<option value="'+ i +'">'+ i +'件</option>'); 
				}
			}
			else
			{
				$('input[@name=GiftQty_' + rid + ']').val(num);
				$('#BGiftQty_' + rid).text(num + ' 件');
			}
		}
	});
}

//地址改变时修改物流方式的可用性和设置默认物流
function quickOrderSubCheckShip(PID,CID,DID,TID)
{
	$.ajax({
			type : 'post',
			url  : 'action.php',
			dataType:'json',
			data : 'act=getValidShipTypeFromArea&PID='+PID+'&CID='+CID+'&DID='+DID+'&TID='+TID,
			success : function(msg)
			{   
				var rsData = eval(msg);
				$('#shipDesc').text(isNull(rsData.ShipTypeDesc,''));
				var ifCod = quickOrderSetShipStatus(rsData.ShipTypeGroup,rsData.Default);
				if (ifCod != "-"){quickOrderSelectShip(0, ifCod);}
			}
		});
}

//改变地区信息或购买数量时对运费的冗余检测
function quickOrderCheckShip()
{
	if ($('#ShipParent').length)
	{
		var PID = $('#area_province').val();
		var CID = $('#area_city').val();
		var DID = $('#area_district').val();
		var TID = $('#area_town').val();

		if (checkAreaSelected(false) && (PID != 0 || CID != 0 || DID != 0 || TID != 0))
		{
			quickOrderSubCheckShip(PID, CID, DID, TID);
		}
		else
		{
			var ifCod = quickOrderSetShipStatus('', '');
			quickOrderSelectShip(0, 1);//将货到付款默认为可选		
		}
	}
}

//设置支付说明值
function setPayDescValue(payid)
{
	var payDescEle = $('#payname_'+payid);
	var payInputEle = $('#payment_'+payid);
	$('#payMode').val(payInputEle.attr('payID'));
	$('#payName').val(payDescEle.text());
	$('#payDesc').val('');
	$('#payPmt').val(payInputEle.attr('pmt'));
	$('#payVerify').val(payInputEle.attr('verify'));
}

//加载用户地址列表
function loadAddress(o)
{
	if (o.checked)
	{
		var myAddress = $('#myAddrArea').html();
		if (!myAddress)
		{
			$.ajax({
				type : 'get',
				url : '/action.php?act=ajaxGetMyAddress',
				success: function(msg){$('#myAddrArea').html(msg);}
				});
		}

		$('#myAddrArea').css('display', '');
		$('#myAddrArea').css('border', '1px solid #E7CA96');
		$('#myAddrArea').css('background-color', '#FBF7EE');
		$('#userAddrArea').css('display', 'none');

		var selAddrObj = $('input[@type=radio][@name=addrID][@checked]');
		if (!isEmpty(selAddrObj)){selAddrObj.click();}
	}
	else
	{
		$('#myAddrArea').css('display', 'none');
		$('#userAddrArea').css('display', '');
		quickOrderCheckShip();
	}
}
