	var canDoAddAction=1;
	function getAccessoriesId(){
		var accessIds=document.getElementsByName("accessoriesId");
		var ids="";
		if(accessIds!=null){
			for(var i=0;i<accessIds.length;i++){
				if(accessIds[i].checked){
					ids+=accessIds[i].value+",";
				}
			}
		}
		return ids;
	}
	//图片的路径
	var addToCartButtonImg = "";
	/**
	 * 
	 * @param {Object} productCode 产品code
	 * @param {Object} quantity 购买数量
	 * @param {Object} $obj 触发购买的控件
	 * @param {Object} $event 鼠标定位,一般略
	 */
	 
	function fnAddProToCart(productCode,quantity,$obj,$event){
		var productqty = 0;
		var returnVar=false;
      	DWREngine.setAsync(false);
		$importDwr(function(){
			productDwr.getProdcutByCode(productCode,function fnRefreshForProduct1(data){
				if(quantity>data.stockQty || data.stockQty<=0){
					returnVar=false;
					productqty=data.stockQty;
				}else{
					returnVar=true;
				}
			});
		});
		if(!returnVar){
			alert("产品库存不足,当前库存为："+productqty);
			return false;
		}
		
		//alert(quantity);
		var accessoryIds=getAccessoriesId();
		if(canDoAddAction==1){
			replaceImg($obj);
			canDoAddAction=0;
			$importDwr(function(){
				shoppingcartDwr.moveProductToCart(productCode,quantity,accessoryIds,function fnRefreshForProduct(ret){
					fnAddToCartHandler(productCode,ret,$obj);
				});
			});	
		}
	}
	
	/**
	 * 积分换购
	 */
	function fnExchangeShoppingPoint(productId,productName,quantity){
		if(canDoAddAction==1){
			canDoAddAction=0;
			$obj = getEventSourceObject()
		    replaceImg($obj);
		    $importDwr(function(){
				shoppingcartDwr.addToCartByShoppingPoint(productId,quantity,function fnRefreshForProduct(ret){
					if(ret == "exchangeProduct.exchangeproducterror_4"){
						replaceImg($obj);
						canDoAddAction=1;
						doRequiredLoginAction(function(){
						    document.location.reload();	
						}); 					   	   
					}
					else{
					       fnAddToCartHandler(productName,ret,$obj);
					}
				});
		    });
		}
	}
	
	function replaceImg(objImg){
		if(objImg.tagName=="A"){
			objImg=objImg.getElementsByTagName("IMG")[0];
		}
		var loading="_loading";
		var imgPath=objImg.src;
		var imgPath_start=imgPath.substring(0,imgPath.lastIndexOf("."));
		var imgPath_end=imgPath.substring(imgPath.lastIndexOf("."),imgPath.length);
		if((imgPath_start.length-loading.length)==imgPath_start.lastIndexOf(loading)){
			imgPath_start=imgPath_start.substring(0,imgPath_start.length-loading.length);
			objImg.src=imgPath_start+imgPath_end;
		}else{
			objImg.src=imgPath_start+loading+imgPath_end;
		}
	}
	
	function fnAddToCartHandler(productCode,ret,$obj){
		replaceImg($obj);
		canDoAddAction=1;
		var minicart_addToCartMessage="";
		if(ret=="1"){ //添加购物车成功
			minicart_addToCartMessage=__FMT.minicart_addToCartSuccess;
		}else if(ret=="2"){ //加入购物车时有部分加到BuyNow,有部分加到BuyLater
			minicart_addToCartMessage=__FMT.minicart_addToCartAndFavoriteSuccess;
		}else if(ret=="3"){//添加结帐流程不同提示
			minicart_addToCartMessage=__FMT.minicart_addException;
		}
		else if(ret == "exchangeProduct.exchangeproducterror_1"){
			alert(__FMT.exchangeproducterror_1)
			return ;
		}
		else if(ret == "exchangeProduct.exchangeproducterror_2"){
			alert(__FMT.exchangeproducterror_2)
			return ;
		}
		else if(ret == "exchangeProduct.exchangeproducterror_3"){
			alert(__FMT.exchangeproducterror_3)
			return ;
		}
		else if(ret!=""){//会员等级提示
			minicart_addToCartMessage=fnReplace(ret);
		}
		var minCartInfo=getCookie("cookie_shoppingcart");
		if(minCartInfo!=null){
			var cartInfo=minCartInfo.split("|");
			fnShowAddToCartInfo(productCode,minicart_addToCartMessage,cartInfo[1],__FMT.minicart_itemUnit,cartInfo[2].split(".")[0],$obj);
		}else{
			fnShowAddToCartInfo(productCode,minicart_addToCartMessage,0,__FMT.minicart_itemUnit,"0",$obj);
		}
		//更新头部购物车内容
		refreshMiniCartInfo();
		return ret;
	}
	
	function fnUpdateCart(productId,productCode,quantity){
		var accessoryIds=getAccessoriesId();
		$importDwr(function(){
			//productCode,Integer quantity,String accessoryIds
			shoppingcartDwr.saveShoppingcartItem(productId,productCode,quantity,accessoryIds,{	
				callback:function(data){
				location.href=__ctxPath+"/cart/shoppingcart.html";
			},async:false}
			);
		});
	}

	function fnAddProToSaveForLater(productCode,quantity,$obj){
		var accessoryIds=getAccessoriesId();
		$importDwr(function(){
			shoppingcartDwr.moveProductToSaveForLater(productCode,quantity,accessoryIds,function(data){
				if(!isNaN(data)){
					createMessageDlg("saveForLater"+productCode,__FMT.product_addFavorite_success,$obj);
				}else{
					createMessageDlg("saveForLater"+productCode,__FMT.product_addFavorite_failed,$obj);
				}
			});
		});
	}
	/**
	 * add the product to cart from alsobuy list
	 */
	function fnAddProToCartForCart(productCode,quantity,$obj){
			$importDwr(function(){
				shoppingcartDwr.moveProductToCart(productCode,quantity,"",{callback:function (data){var ret=fnAddToCartHandler.call(this,productCode,data,$obj);
					if(!isNaN(ret)){location.href=__ctxPath+"/cart/shoppingcart.html?rand="+parseInt(1000*Math.random());}} ,async:false});
		});
	}	
	function fnReplace(val){
		var tmp=__FMT.shoppingcart_lowMembership;
		tmp=tmp.replace("####",val);
		return tmp;
	}
	
	var messageDlgPointerHeight=14;
	var messageDlgPointerWidth=14;
	function fnSetPosition($messageDlgId,$obj,$event){
		//如果是超链接的,获取里面的元素
		if($obj.tagName=="A"){
			var childNodes=$obj.childNodes;
			for(var i=0;i<childNodes.length;i++){
				if(childNodes[i].tagName=="IMG"||childNodes[i].tagName=="INPUT"){
					$obj=childNodes[i];
				}
			}
		}
		//提示框箭头高宽
		var messageDlgPointer=$("messageDlgPointer"+$messageDlgId);
		var messageDlg=$("messageDlg"+$messageDlgId);
		var messageDlgHeight=messageDlg.offsetHeight;
		var messageDlgWidth=messageDlg.offsetWidth;
		var objTopAntLeft=getOffsetTopAndLeft($obj);
		var objTop=objTopAntLeft[0];
		var objLeft=objTopAntLeft[1];
		var objWidth=$obj.offsetWidth;
		var objHeight=$obj.offsetHeight;
		var clientWidth=parseInt(document.documentElement.clientWidth||document.body.clientWidth);
		var clientHeight=parseInt(document.documentElement.clientHeight||document.body.clientHeight);
		var scrollTop=parseInt((document.documentElement.scrollTop||document.body.scrollTop));
		var scrollLeft=parseInt((document.documentElement.scrollLeft||document.body.scrollLeft));
		//是否鼠标定位
		if($event){
			var clientX=parseInt($event.clientX);
			var clientY=parseInt($event.clientY);
			objTop=(clientY+scrollTop);
			objLeft=(clientX+scrollLeft);
			objWidth=0;
			objHeight=0;
		}
		//默认在下方
		var top=objTop+objHeight;
		var left=objLeft+objWidth/2-messageDlgWidth/2;
		var pointerTop=0;
		var pointerLeft=0;
		var position=(messageDlgPointerHeight+top+messageDlgHeight<=clientHeight+scrollTop)?"bottom":(objTop-scrollTop>=messageDlgHeight+messageDlgPointerHeight)?"top":(objLeft-scrollLeft>=messageDlgWidth+messageDlgPointerWidth)?"left":"right"
		if(position=="bottom"||position=="top"){
			if(position=="bottom"){
				messageDlgPointer.className="zindex-cart-topimg";
				top+=messageDlgPointerHeight;
				pointerTop=top-messageDlgPointerHeight;
				pointerTop+=1;
			}else{
				messageDlgPointer.className="zindex-cart-bottomimg";
				top=objTop-messageDlgHeight-messageDlgPointerHeight;
				pointerTop=top+messageDlgHeight;
				pointerTop-=1;
			}
			pointerLeft=objLeft+objWidth/2-messageDlgPointerWidth/2;
			if(scrollLeft-left>0){
				left=scrollLeft+1;
			}else if(left+messageDlgWidth>scrollLeft+clientWidth){
				left=scrollLeft+clientWidth-messageDlgWidth-1;
			}
		}else{
			if(position=="left"){
				messageDlgPointer.className="zindex-cart-rightimg";
				left=objLeft-messageDlgWidth-messageDlgPointerWidth;
				pointerTop=objTop+objHeight/2-messageDlgPointerHeight/2;
				pointerLeft=objLeft-messageDlgPointerWidth;
				pointerLeft-=1;
			}else{
				messageDlgPointer.className="zindex-cart-leftimg";
				left=objLeft+objWidth+messageDlgPointerWidth;
				pointerLeft=objLeft+objWidth;
				pointerLeft+=1;
			}
			pointerTop=objTop+objHeight/2-messageDlgPointerHeight/2;
			top=objTop+objHeight/2-messageDlgHeight/2;
			if(top<scrollTop){
				top=scrollTop+1;
			}else if(top+messageDlgHeight>clientHeight+scrollTop){
				top=clientHeight+scrollTop-messageDlgHeight-1;
			}
		}
		messageDlg.style.top=top+"px";
		messageDlg.style.left=left+"px";
		var messageDlgIFrame=$("messageDlgIFrame"+$messageDlgId);
		messageDlgIFrame.style.top=top+"px";
		messageDlgIFrame.style.left=left+"px";
		messageDlgIFrame.style.width=messageDlgWidth+"px";
		messageDlgIFrame.style.height=messageDlgHeight+"px";
		messageDlgPointer.style.top=pointerTop+"px";
		messageDlgPointer.style.left=pointerLeft+"px";
		var messageDlgPointerIFrame=$("messageDlgPointerIFrame"+$messageDlgId);
		messageDlgPointerIFrame.style.top=pointerTop+"px";
		messageDlgPointerIFrame.style.left=pointerLeft+"px";
		messageDlgPointerIFrame.style.width=messageDlgPointerWidth+"px";
		messageDlgPointerIFrame.style.height=messageDlgPointerHeight+"px";
	}

	function getOffsetTopAndLeft($obj){
		var array_Top_Left=new Array();
		if(document.all){
			var offsetTop=0;
			var offsetLeft=0;
			var offsetParent=$obj;
			while(offsetParent!=null&&offsetParent!=document.body){
				offsetTop+=offsetParent.offsetTop;
				offsetLeft+=offsetParent.offsetLeft;
				offsetParent=offsetParent.offsetParent;
			}
			array_Top_Left.push(offsetTop);
			array_Top_Left.push(offsetLeft);
		}else{
			array_Top_Left.push($obj.offsetTop);
			array_Top_Left.push($obj.offsetLeft);
		}
		return array_Top_Left;
	}

	/**
	 * 弹出显示购物车信息
	 * @param {Object} productCode 产品Id
	 * @param {Object} addToCartMessageInfo 信息内容
	 * @param {Object} itemCount 产品数量
	 * @param {Object} itemUnit 单位
	 * @param {Object} sumPrice 总价
	 * @param {Object} $obj 触发提示控件
	 */
	function fnShowAddToCartInfo(productCode,addToCartMessageInfo,itemCount,itemUnit,sumPrice,$obj){
		var cartMessageContent=_getCartMessageDlgContent(productCode,addToCartMessageInfo,itemCount,itemUnit,sumPrice);
		createMessageDlg(productCode,cartMessageContent,$obj);
	}

	var messageDlgTimers=new Array();
	var messageDlgZIndex=10000;
	/**
	 * 
	 * @param {Object} $messageDlgId 提示框Id
	 * @param {Object} $content 内容(js)
	 * @param {Object} $obj 触发提示控件
	 * @param {Object} $event 一般不需要
	 */
	function createMessageDlg($messageDlgId,$content,$obj,$event){
		cancelMessageDlgTimer($messageDlgId);
		var messageDlgDomId="messageDlgDom"+$messageDlgId;
		var messageDlgDom=$(messageDlgDomId);
		if(!messageDlgDom){
			messageDlgDom = document.createElement("span");
			messageDlgDom.id=messageDlgDomId;
			messageDlgDom.style.filter="Alpha(opacity=0)";
			messageDlgDom.style.opacity=0;
			document.body.appendChild(messageDlgDom);
			messageDlgDom.innerHTML=_getMessageDlgHtml($messageDlgId,$content);
		}else{
			$("messageDlgContent"+$messageDlgId).innerHTML=$content;
		}
		$("messageDlg"+$messageDlgId).style.zIndex=messageDlgZIndex+=1;
		$("messageDlgPointer"+$messageDlgId).style.zIndex=messageDlgZIndex+=1;
		fnSetPosition($messageDlgId,$obj,$event);
		messageDlgDom.style.filter="Alpha(opacity=100)";
		messageDlgDom.style.opacity=1;
		var messageDlgTimer=setTimeout(function(){closeMessageDlg($messageDlgId);cancelMessageDlgTimer($messageDlgId);},4000);
		messageDlgTimers.push(new Array(messageDlgDomId,messageDlgTimer));
	}
	
	/**
	 * 删除弹出框
	 * @param {Object} $messageDlgId
	 */
	function closeMessageDlg($messageDlgId){
		var messageDlgDom=$("messageDlgDom"+$messageDlgId);
		if(messageDlgDom)
			document.body.removeChild(messageDlgDom);
	}
	/**
	 * 取消弹出框timer
	 * @param {Object} $messageDlgId
	 */
	function cancelMessageDlgTimer($messageDlgId){
		var messageDlgDomId="messageDlgDom"+$messageDlgId;
		for(var i=0;i<messageDlgTimers.length;i++){
			if(messageDlgTimers[i][0]==messageDlgDomId){
				var timer=messageDlgTimers[i][1];
				if(timer!=null){
					clearTimeout(timer);
				}
				messageDlgTimers.splice(i,1);
				return true;
			}
		}
		return false;
	}
	
	function _getMessageDlgHtml($messageDlgId,$dlgContent){
		var messageDlgBox='<iframe id="messageDlgPointerIFrame'+$messageDlgId+'" style="position:absolute;z-index:0;" frameborder="0" ></iframe><div id="messageDlgPointer'+$messageDlgId+'"></div>';
		messageDlgBox+='<iframe id="messageDlgIFrame'+$messageDlgId+'" style="position:absolute;z-index:0;" frameborder="0" ></iframe><div id="messageDlg'+$messageDlgId+'" class="zindex-cart"><div id="messageDlgContent" class="zindex-content">';
		messageDlgBox+='<div class="layer-btn"><a href="javascript:void%200;" onclick="closeMessageDlg(\''+$messageDlgId+'\');cancelMessageDlgTimer(\''+$messageDlgId+'\');"><img src="'+__tsCtxPath+'/images/btn/btn_close.gif" style="cursor:pointer" width="13px" height="13px"/></a></div><div id="messageDlgContent'+$messageDlgId+'" class="layer-wrap">';
		messageDlgBox+=$dlgContent;
		messageDlgBox+='</div></div></div>';
		return messageDlgBox;
	}
	
	function _getCartMessageDlgContent(productCode,addToCartMessageInfo,itemCount,itemUnit,sumPrice){
		var cartMessageDlgContent=addToCartMessageInfo+'<br/>';
		cartMessageDlgContent+=__FMT.minicart_cart+'('+itemCount+itemUnit+'&nbsp;'+__defaultCurrencySymbol+sumPrice+'）';
		cartMessageDlgContent+='<div class="x-line"></div><a href="'+__ctxPath+'/cart/shoppingcart.html"><img src="'+__tsCtxPath+'/images/btn/btn_add.gif" width="70px" height="23px"/></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="'+__ctxPath+'/checkout/checkout.html?process=begin"><img src="'+__tsCtxPath+'/images/btn/btn_check.gif" width="70px" height="23px"/></a>'
		return cartMessageDlgContent;
	}
