// 保存所有要显示的单件运算的商品名称(数组)
productNames = null;
// 选中的ship area id
shipArea = "";
// 选中的ship type id 
shipType = "";
// 是否有非单件计算运费的商品
nonSingle = true;



function POFillInList223_change(frm,rmanID) { 
	if (frm.POFillInList223_Isone.checked == true) {
		rmanID.style.display = 'block';
	}
	else {
		rmanID.style.display = 'none';
	}
}			

//*************控制配送地区、配送方式、配送费和支付方式之间的显示**************

// 隐藏与type对应的所有div
function hideDivs(type) {
	var x = document.getElementsByTagName("div");
	if (!x)
		return;

	for(i=0; i<x.length; i++) {
		if (compare(x[i].title, type)) {
			x[i].style.display = 'none';
		}
	}
}



//选择某个配送地区调用的方法
function selectArea(form, areaId, ssbinds) {	
	shipArea = areaId;
	
	// 隐藏所有配送方式的div
	hideDivs("ShipType");		
	
	// 显示对应的配送方式div
	var ids = ssbinds.split('#');
	for (i=0; i < ids.length; i++){		
		var E = document.getElementById(ids[i]);		
		E.style.display = 'block';			
  }		 	  
  
  // 选中第一个ShipType  div
  selectDefaultShipType(form, ids[0]); 
}



function selectDefaultShipArea(form, areaId, ssbinds) {
	var radios = form.POFillInList223_ShipArea;
	for(i=0;i<radios.length;i++) {
 		if (radios[i].value == areaId) {
 			radios[i].checked = true;
 			selectArea(form, areaId, ssbinds);
 			break;
 		} 	
  }
	
}



//选择某个配送方式时调用的方法
function selectShipType(form, shipTypeId, str) {	
	shipType = shipTypeId;
	//隐藏所有支付方式的div
	hideDivs("PayType");
	hideDivs("ShipFee");
	
	// 显示对应的支付方式div
	var ids = str.split('#');
	for (i=0; i < ids.length; i++){		
		var E = document.getElementById(ids[i]);		
		E.style.display = 'block';
  }		 		
  
  // 选中第一个PayType
  selectPayType(form, ids[0]);  
  
  // 显示和已选择的配送地区和配送方式对应的各种商品单件配送费div    
 	showSingleShipFee(form, shipArea, shipTypeId);
 	//
 	names = form.ProductNames.value.split(","); 	
 	if (names && productNames.length==names.length) {
 		//alert('no nonsingle ship fee products')
 		nonSingle = false;
 		return;
 	} 		
 	showNonSingleShipFee(form, shipArea, shipTypeId);
}



//选中缺省的pay type
function selectPayType(form, payTypeId) {
	var radios = form.POFillInList223_PayType;
  if (radios.length != null) {
	  for(i=0;i<radios.length;i++) {
	 		if (radios[i].value == payTypeId) {
	 			radios[i].checked = true;
	 			break;
	 		} 	
	  }
	} else 
		radios.checked = true;
}


// 显示和areaId、shipTypeId关联的商品单件配送div
function showSingleShipFee(form, areaId, shipTypeId) {	
	var divId = areaId + "#" + shipTypeId;
	
	var divs = document.getElementsByTagName("div");
	if (divs) {
		// 保存要显示的单件配送的商品名称
		productNames = new Array();

		for (i=0,k=0; i<divs.length; i++) {			
			if ((divs[i].id.indexOf(divId)!=-1) && divs[i].title=="ShipFee") {					
				// 如果是非单件计算运费的商品,则
				if (divs[i].id != divId) {
					// 把对应的商品名称添加到数组中,并显示对应的div
					productNames[k++] = divs[i].id.split("#")[0];
					divs[i].style.display = 'block';
				}					
			}
		}
	}
}

// 显示和area id 、ship type id 关联的非单件商品配送div
function showNonSingleShipFee(form, areaId, shipTypeId) {
	//alert('show non single ship fee');
	var divId = areaId + "#" + shipTypeId;
	
	var divs = document.getElementsByTagName("div");
	if (divs) {
		for (i=0; i<divs.length; i++) {
			if (divs[i].id==divId && divs[i].title=="ShipFee") {
				divs[i].style.display = 'block';
			}	
		}
	}
	
	// 修改非单件计算运费的商品名称
	setNonSingleFeeProductNames(form);
}


// 修改非单件计算运费的商品名称
function setNonSingleFeeProductNames(form) {
	var names = form.ProductNames.value.split(",");
	// 从names中删除所有已经显示的运费按单件计算的商品
	for (i=0;i<names.length;i++) {
		if (productNames && productNames.length) {
			for (j=0;j<productNames.length;j++) {
				if (names[i] == productNames[j]) {
					names[i] = null;
					productNames[j] = null;
				}
			}
		}
	}
	var result = "";
	for (i=0;i<names.length;i++) {
		if (names[i]) {
			result = result + names[i] + ",";
		}
	}
	if (result) 
		result = result.substring(0,result.length-1);	
	
	var x = document.getElementsByName("NonSingleFeeProducts");
	if (x) {
		for (i=0;i<x.length;i++) {
			x[i].value = result;
		}
	}	
	form.NonSingleFeeProducts.value = result;
}



// 选择缺省的ship type
function selectDefaultShipType(form, ssbindingId) {
	var radios = form.POFillInList223_ShipType;
	for(i=0;i<radios.length;i++) {
 		if (radios[i].title == ssbindingId) {
 			radios[i].checked = true;
 			var shipTypeId = radios[i].value;
 			var payTypeIds = getPayTypeIdsByShipType(form, ssbindingId);
 			selectShipType(form, shipTypeId, payTypeIds);
 			break;
 		} 	
  }
}



// 和ship type 关联的pay type的ids
function getPayTypeIdsByShipType(form, ssId) {
	var radios = form.POFillInList223_ShipType;
	for(i=0;i<radios.length;i++) {
 		if (radios[i].title == ssId) {
 			return radios[i].alt;
 		} 	
  }
  return null;
}

//************************************************************************

function selectPackType(form, sum, textname) {
	var x = document.getElementsByName(textname)[0];
	if (x && x.title=="PackType") {
		x.value = format(sum);
	}
}




function  POFillInList223_frmSubmit(form) {
	caculatePackCost(form);
	caculateSingleShipCost(form);
	
	// 校验收货人信息是否正确
	if (!POFillInList223_validate(form)) 
		return;
	// 校验付款人信息是否正确
	if(form.POFillInList223_Isone.checked == true && !POFillInList223_validatePayer(form)) {
    return;
  }
	// 在生成定单时候校验订单备注长度
	if(form.POFillInList223_PONote.value.length >200) {
  	alert("您输入的订单备注必须在200个字以内");
    return;
  }
  
  // 在生成定单时候校验是否有包装方式
  var packSelected = false;
  if (form.POFillInList223_Pack) {
  	// 如果有非单件计算的包装方式
  	packSelected = true;
  }
  if (!packSelected) {
  	// 判断是否有单件计算的包装方式
  	var x = document.getElementsByTagName("input");
  	for(i=0;i<x.length;i++) {
  		if (x[i].type=='radio' && x[i].name.indexOf('POFillInList223_Pack#')!=-1) {
  			packSelected = true;
  			break;
  		}
  	}
  }
  
	if(!packSelected)	{
			alert("请选择包装方式");
			return;
	}
  
	
	
	form.submit();
}



// 计算包装费
function caculatePackCost(form) {
	// 非单件包装费
	var total = Number(0.00);
	var x = form.elements;
	for (i=0; i<x.length; i++) {
		if (x[i].type=="text" && x[i].title=="PackType") {
			total += Number(x[i].value);
		}
	}
	form.POFillInList223_PackCost.value = format(total);
}


// 计算总运费
function caculateSingleShipCost(form) {
	// 总运费
	var fee = 0;
	// 单件计算运费的text的name
	name = shipArea + "#" + shipType;
	//var x = document.getElementsByName(name);
	var x = form.elements[name];
	if (x) {
		if (x.length) {
			for(i=0;i<x.length;i++) {		
				if (x[i].title=='ShipFee') {
					fee += Number(x[i].value);
				}
			}				
		} else {
			fee += Number(x.value);
		}
	}
	// 如果有非单件计算运费的商品
	if (nonSingle) {
		name1 = "NonSingle"+name;
		var y = form.elements[name1];
		if (y.title=='ShipFee') {
			fee += Number(y.value);
		}
	}
	form.POFillInList223_ShipFee.value = fee;
}


			
function POFillInList223_validate(frm) {
	var b = true;
	if(isNull(trim(frm.POFillInList223_RName.value))){
		alert("收货人姓名不能为空");
		b = false;
	}	
	else if(!isTelNo(trim(frm.POFillInList223_RTel.value),false)){
	  alert("请输入正确的收货人电话号码, 包含0-9、-、+ 、(、)、/。");
		b = false;
		}
	else if(!isNumber(trim(frm.POFillInList223_RZIP.value),false)){
	  alert("收货人邮编请输入0-9之间的数字");
		b = false;
	}
	else if(trim(frm.POFillInList223_RZIP.value).length != 6){
	  alert("收货人邮编必须为6位");
		b = false;
	}
	else if(!isEmail(trim(frm.POFillInList223_RE_mail.value),false)){
	  alert("请输入正确的收货人邮件地址");
		b = false;
	}
	else if(isNull(trim(frm.POFillInList223_RAddr.value))){
	  alert("收货人地址不能为空");
		b = false;
	}
	else
		b = true;
		
	return b;
}

function show_giftList(GiftListPage){
  window.open(GiftListPage,"","width=420,height=300,top=90,scrollbars=yes");
}

//$$ add by byy 2005-08-12 校验付款人信息是否正确
function POFillInList223_validatePayer(frm)
{
  var b = true;
  if(isNull(trim(frm.POFillInList223_PName.value))){
		alert("付款人姓名不能为空");
		b = false;
		}
	else if(!isTelNo(trim(frm.POFillInList223_PTel.value),false)){
	  alert("请输入正确的付款人电话号码, 包含0-9、-、+ 、(、)、/。");
		b = false;
	}
	else if(!isNumber(trim(frm.POFillInList223_PZipCode.value),false)){
	  alert("付款人邮编请输入0-9之间的数字");
		b = false;
	}
	else if(trim(frm.POFillInList223_PZipCode.value).length != 6){
	  alert("付款人邮编必须为6位");
		b = false;
	}
	else if(!isEmail(trim(frm.POFillInList223_PEmail.value),false)){
	  alert("请输入正确的付款人邮件地址");
		b = false;
	}
	else if(isNull(trim(frm.POFillInList223_PAddress.value))){
	  alert("输入字符不能为空");
		b = false;
	}
	else
		b = true;
	return b;
}
//add end


function format(num) {
	var reg1 = /^\d+$/;
	var reg2 = /^\d+\.\d$/;
	//var reg3 = /^\d+\.$/;
	var v = String(num);
	//var reg1 = /^$/;
	if (reg1.test(v)) {
		v = v + ".00";
	} else if (reg2.test(v)) {
		v = v + "0";
	}
	return v;
	//alert(v);
}
