﻿function $(id)
{
	return document.getElementById(id);
}

var get_a_k={
	'object':function(a,k){return a[1][k];},
	'string':function(a,k){return a[k-0+1];}
};
function StringBuilder(d)
{
	this.s = new Array(d);
	this.append=function(d)
	{
		this.s.push(d);
		return this;
	};
	this.toString=function()
	{
		return this.s.join('');
	};
	this.clear=function()
	{
		this.s=new Array();
	};
	this.appendFormat=function()
	{
		var n=arguments.length;
		if(n==0) 
			return this; 
		var f=arguments[0];
		if(n==1) 
			return this.append(f); 
		var arg=arguments[1];
		if(arg==null)
			arg=''; 
		var i,e,c,k,a_k=get_a_k[typeof(arg)];
		for (i=0 ; i < f.length;)
		{
			c=f.charAt(i);
			if (c == '{')
			{
				e=f.indexOf('}',i);
				k=f.substring(i+1,e);
				this.s.push(a_k(arguments,k));
				i=e+1;
				continue;
			}
			this.s.push(c);
			i++;
		}return this;
	}
};

function JSPanel(objDivid)
{
	this.Template=null;
	this.DataSource=null;
	var bind_dict=function(format,dict)
	{
		var sb=new StringBuilder();
		sb.appendFormat(format,dict);
		return sb.toString();
	};
	this.DataBind=function()
	{
		document.getElementById(objDivid).innerHTML=bind_dict(this.Template,this.DataSource);
	}
};

var Try={
	these : function()
	{
		var return_value=null;
		for(var i=0;i<arguments.length;i++)
		{
			try
			{
				return_value=arguments[i]();
				break;
			}
			catch(e)
			{}
		}
		return return_value;
	}
};

function Ajax(url)
{
	var m_xmlReq=false;
	var m_OnSucceed=function(){};
	var m_OnReading=function(){};
	var m_timer=null;

	this.Url=url;

	if(window.XMLHttpRequest)
	{
		m_xmlReq = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{ 
	   try {m_xmlReq = new ActiveXObject('Msxml2.XMLHTTP'); }catch(e)
	   {
		  try { m_xmlReq = new ActiveXObject('Microsoft.XMLHTTP');}catch(e){}
		}
	}

	this.OnReading=function(reading)
	{
		m_OnReading=reading;
	}

	this.OnSucceed=function(succeed)
	{
		m_OnSucceed=succeed;
	}

	this.OnTimeout=function(timeout)
	{
		m_timer=window.setTimeout(timeout,10000);
	}

	this.invokeServer=function(send_data,method)
	{
		if(!m_xmlReq)  return;
		m_xmlReq.open(method,this.Url,true);
		if(method=='POST') 
		m_xmlReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');  
		m_xmlReq.onreadystatechange=function()
		{
					if(m_xmlReq.readyState == 1)
					{
						m_OnReading();
					}
					else if(m_xmlReq.readyState == 4 && m_xmlReq.status==200)
					{
						var result=null;
					    eval("result="+m_xmlReq.responseText);
					    m_OnSucceed(result);
						
						if(m_timer!=null) window.clearTimeout(m_timer);
					}    
		}
		m_xmlReq.send(send_data.toString());
	}
}

var _UNDEFINED_="undefined";
function Hashtable() 
{ 
	this.count=0;
	this.content= new Object(); 
	this.defined=function(p)
	{
		return typeof(p)!=_UNDEFINED_;
	}
	this.add = function(key,value)
	{ 
		if(this.contains(key))	return false; 

		this.content[key]=value;
		this.count++;
		return true; 			
    } 
	this.remove= function(key)
	{
		if(!this.contains(key))	return;

		delete this.content[key];
		this.count--;
	} 
	this.items  = function(key)
	{
		if(this.contains(key))	return this.content[key];

		return null;
	} 
	this.contains= function(key)
	{ 
		return this.defined(this.content[key]);
	} 
	this.clear= function()
	{
		for(var k in this.content)	delete this.content[k];
		this.count=0;
	}
	
	this.toString=function()
	{
	    var sb=new StringBuilder();
	    var hasItem=false;
	    
	    for(var k in this.content)
	    {
	        if(hasItem)
	            sb.appendFormat("&{0}={1}",k,this.content[k]);
	        else
	        {
	            sb.appendFormat("{0}={1}",k,this.content[k]);
	            hasItem=true;
	        }
	    }
	    
	    return sb.toString();
	}
}

function getScrollTop()
{
    if (typeof(window.pageYOffset) != 'undefined') 
    { 
       return window.pageYOffset; 
    } 
    else if (typeof(document.compatMode)!= 'undefined' && document.compatMode != 'BackCompat') 
    { 
       return document.documentElement.scrollTop; 
    } 
    else if (typeof(document.body)!= 'undefined') 
    { 
       return document.body.scrollTop; 
    }
}

 function showWindowLoading(divid)
 {
    
    var locdiv = $(divid);

    locdiv.style.top=getScrollTop()+3+"px";
	locdiv.style.left=(window.screen.width-158)+"px";
	locdiv.style.display="block";

    
 }
 
 function getposOffset(what, offsettype)
{ 
    var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop; 
    var parentEl=what.offsetParent; 
    while (parentEl!=null)
    { 
        totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop; 
         parentEl=parentEl.offsetParent; 
    } 
    return totaloffset; 
} 

 
function showLocTips(obj,divId)
{
	var locdiv=$(divId);
	
    locdiv.style.top=(getposOffset(obj,"top")-72)+"px";
	locdiv.style.left=(getposOffset(obj,"left")-45)+"px";
	locdiv.style.display="block";
}

function hideLocSelect(itemName)
{	
	$(itemName).style.display="none";
}


function JSRepeater(objDivid)
{
	this.HeaderTemplate=null;
	this.ItemTemplate=null;
	this.SeparateTemplate = null;
	this.FooterTemplate=null;
	this.DataSource=null;
	this.onItemDataBind=null;
	var obj_div=null;
	this.DataBind=function()
	{
		var len=this.DataSource.length;
		var sb=new StringBuilder(this.HeaderTemplate);
		var obj_tpl=new Object();
		for(var i=0;i<len;i++)
		{
			if(i>0 && this.SeparateTemplate!=null)
				sb.append(this.SeparateTemplate);
			obj_tpl.ItemTemplate=this.ItemTemplate;
			if(this.onItemDataBind!=null)
				this.onItemDataBind(this.DataSource[i],obj_tpl);
			sb.appendFormat(obj_tpl.ItemTemplate,this.DataSource[i]);			
		}
		sb.append(this.FooterTemplate);
		obj_div=document.getElementById(objDivid);
		obj_div.innerHTML=sb.toString();
	};
	this.getElementsByTagName=function(tag_name)
	{
		return obj_div.getElementsByTagName(tag_name);
	}
};
var is_loaded=false;
var update_ajax=null;
var   locListDivTips = null;

function init_ajax()
{
    update_ajax=new Ajax("/ordercenter/ajaxurl/shopping_cart_update.aspx?rdm="+Math.random());
    //remove_ajax=new Ajax("shopping_cart_remove.aspx");
   // add_ajax = new Ajax("shopping_cart_add.aspx?reference_url=shoppingcart");
    hideLocSelect("window_loading");
    locListDivTips = $("showTips");
    is_loaded=true;
    GetCookies();
}

function Go()
{
	open("checkout.aspx", "_self");
}

function GetCookies()
{
    var RPT_CARTITEMS_HEADERTEMPLATE="<table cellpadding='0' id='tbCartItemsNormal' cellspacing='0' class='topt' align='center'>"
+"<tr class='head'>"
+"<td width='10%'>商品编号</td>"
+"<td width='30%'>商品名</td>"
+"<td width='10%'>返现</td>"
+"<td>积分</td>"
+"<td>市场价格</td>"
+"<td>会员价格</td>"
+"<td>数量</td>"
+"<td>删除</td>"
+"</tr>";
    var RPT_CARTITEMS_ITEMTEMPLATE="<tr class='comm' onmouseover='changeBg(this)' onmouseout='changeBg2(this)'>"
+"<td>{product_id}</td>"
+"<td><a class='pro'>{product_name}</a></td>"
+"<td>{paymoney}</td>"
+"<td>{jifen} </td>"
+"<td>￥{price_sc}</td>"
+"<td>￥{sale_price}</td>"
+"<td>"
+"<input type=text size='3' maxlength='4' value='{product_count}' onblur='txtProductCountBlurred(this)' onkeypress=' if((arguments[0] || window.event).keyCode==13) txtProductCountBlurred(this);'><input type='hidden' value='{product_count}' class='changNum' /></td>"
+"<td><A href='javascript:void(0)' onclick='confirmRemove({product_id})'>删除</A></td>"
+"</tr>";
    
    var RPT_CARTITEMS_ZP_ITEMTEMPLATE= "<TR class='comm' onmouseover='changeBg(this)' onmouseout='changeBg2(this)'>"
+"    <TD>{product_id}</TD>"
+"    <TD>{product_name}</TD>"
+"    <TD>赠品</TD>"
+"    <TD>&nbsp; </TD>"
+"    <TD>&nbsp; </TD>"
+"    <TD>&nbsp; </TD>"
+"    <TD>{product_count}"
+"      </TD>"
+"    <TD>&nbsp;</TD></TR>";

    var RPT_CARTITEMS_None_ITEMTEMPLATE= "<TR class='comm' onmouseover='changeBg(this)' onmouseout='changeBg2(this)'>"
+"    <TD colspan='8'>{noCookies}</TD>"
+"    </TR>";

    var RPT_CARTITEMS_FOOTERTEMPLATE="</table>"
+"<table cellpadding='0' cellspacing='0' class='botto' align='center'>"
+"<tr class='result'><td align='left'><a href='/'>继续挑选商品>></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='#' style='display:none'>放入暂存架>></a></td><td>您共节省：<strong>￥<span id='can_save'></span>元</strong> | <span style='font-weight:bold; font-size:14px;'>商品金额总计：<strong>￥<span id='bargin_total_foot'></span></strong>元</span>&nbsp;&nbsp;&nbsp;&nbsp;<input type='image' src='/images/result.gif'  onclick='Go()'/></a></td></tr>"
+"</table>";

    var getCartList_Ajax=new Ajax("/ordercenter/ajaxurl/Shopping_CartCookies_Get.aspx?rdm="+Math.random());
    getCartList_Ajax.OnSucceed(
        function (result)
        {
            var m_rpt_cart_items=new JSRepeater('cartItems');
	        m_rpt_cart_items.DataSource=result["cart_items"];
	        m_rpt_cart_items.HeaderTemplate=RPT_CARTITEMS_HEADERTEMPLATE;
	        m_rpt_cart_items.ItemTemplate=RPT_CARTITEMS_ITEMTEMPLATE;
	        m_rpt_cart_items.FooterTemplate=RPT_CARTITEMS_FOOTERTEMPLATE;
	        
	        m_rpt_cart_items.onItemDataBind=function(dataItem,obj_tpl)
            {
                if(dataItem['zpbz']==0)
                {
                    obj_tpl.ItemTemplate=RPT_CARTITEMS_ZP_ITEMTEMPLATE;
                }
                if(dataItem['zpbz']==-1)
                {
                    obj_tpl.ItemTemplate=RPT_CARTITEMS_None_ITEMTEMPLATE;             
                }
            }
	        m_rpt_cart_items.DataBind();
	        $("bargin_total_foot").innerHTML=result["bargin_total"];
	        //$("nextHref").href=result["nextUrl"];
	        if($("can_save")!=null)
	        {
	            $("can_save").innerHTML=result["can_save"]
	        }
	        if($("update_total_account")!=null)
	        {
	            $("update_total_account").innerHTML=result["bargin_total"]
	        }
        }
    );
    getCartList_Ajax.invokeServer('','POST',true);   
}	

function contains(container,control)
{
	if(container==null || control==null) return false;
	if(container==control) return true;
	if(!container.hasChildNodes()) return false;
	if(control.parentNode==container) return true;
	var child_count=container.childNodes.length;
	for(var i=0;i<child_count;i++) if(contains(container.childNodes[i],control)) return true
}

function confirmRemove(o)
{
    if(confirm('确定不购买该商品？'))
    {
        remove_ajax=new Ajax("/ordercenter/ajaxurl/Shopping_Cart_Remove.aspx?rdm="+Math.random());
	    remove_ajax.OnSucceed
	    (
		    function(result)
		    {
                if(result!=null && result["errorCode"]==0)
                {
                    alert('删除成功！');
                    init_ajax();
                }
                else
                {
                    alert("删除失败！");
                }
		    }
	    );
	    
        remove_ajax.OnTimeout
        (
            function()
            {
                alert("网络连接超时！");
                location.reload();
            }
        );
	    
	    var send_data=new Hashtable();
	    send_data.add("product_id",o);
	    remove_ajax.invokeServer(send_data,'POST');
    }
    else
    {
        //alert("确定aaaa")
    }    
}

String.prototype.trim=function() 
{ 
	return this.replace(/(\s*$)|(^\s*)/g, ''); 
}


function txtProductCountBlurred(txt_product_count)
{
	var s_product_count=txt_product_count.value.trim();
	
	var txt_o_product_count=txt_product_count.nextSibling;//old hidden product couunt
	
	var o_product_count=txt_o_product_count.value.trim();
	if(!is_loaded)
	{ 
	    txt_product_count.value=o_product_count;
	    return;
	}
	var i_product_count=parseInt(s_product_count);
	
   
	var row_index=txt_product_count.parentNode.parentNode.rowIndex;
	var product_id=$("tbCartItemsNormal").rows[row_index].cells[0].innerHTML;
	var sale_price =$("tbCartItemsNormal").rows[row_index].cells[4].innerHTML;
	
	if(s_product_count==o_product_count)
	{
		return;
	}

	//new product count is not valid integer
	if(s_product_count!=i_product_count || i_product_count<1||i_product_count>1000)
	{		
			txt_product_count.value=o_product_count;
	        setlocListDivTips("update_error1");
            var document_click=function(e)
            {
                if(locListDivTips.style.display=="block")
                {
                    var sender=null;

                    if(typeof(event)!='undefined')
                    {
	                    sender=event.srcElement;
                    }
                    else if(e)
                    {
	                    sender=e.target;
                    }                    
                }
            }
            showLocSelect(txt_product_count,null,null,document_click,96,103);
			return;
	}

	    update_ajax.OnReading
	    (
	        function()
            {
                is_loaded = false;
                showWindowLoading('window_loading');
            }
        );
	     update_ajax.OnSucceed
	    (
	        
		    function(result)
		    {
		        is_loaded = true;

			    hideLocSelect('window_loading');
			    
			    if(result!=null && result["errorCode"]==0 )
                {
                    txt_o_product_count.value=s_product_count;
                    setlocListDivTips("update_success");
                          
                    //$("update_total_account").innerHTML=$("total_account").innerHTML;
                        var document_click=function(e)
	                    {
		                    if(locListDivTips.style.display=="block")
		                    {
			                    var sender=null;

			                    if(typeof(event)!='undefined')
			                    {
				                    sender=event.srcElement;
			                    }
			                    else if(e)
			                    {
				                    sender=e.target;
			                    }
			                    
		                    }
	                    }
	               showLocSelect(txt_product_count,null,null,document_click,96,103);
                   //重新获得cookies
		           GetCookies();		       
		        }                
                else
                {
	            	txt_product_count.value=o_product_count;
	                showUpdateErrorMsg(result["errorCode"],txt_product_count,result["limit_buy_count"]);
                }
		    }
	    );
	    
     update_ajax.OnTimeout
        (
		    function()
		    {
		        hideLocSelect('window_loading');
			    alert("网络连接超时！");
			    location.reload();
		    }
        );

        var send_data=new Hashtable();
        send_data.add("product_id",product_id);
        send_data.add("proNum",parseInt(txt_product_count.value));
	    update_ajax.invokeServer(send_data,'POST');

	
	
	
	
	function showUpdateErrorMsg(errorCode,txt_product_count,limit_buy_count)
	{
	      switch (errorCode)
	      {
            case "4": 
	            setlocListDivTips("update_error4");
	            showLocSelect(txt_product_count,null,null,document_click,78,93);break;
	        case "5": 
	        {
	            setlocListDivTips("update_error5");
	            $("limit_buy_count").innerHTML=limit_buy_count;
	            showLocSelect(txt_product_count,null,null,document_click,83,45);
	            break;
	        }
	        case "6": 
	            setlocListDivTips("update_error6");
	            showLocSelect(txt_product_count,null,null,document_click,95,90);break;
	        case "7":
	            setlocListDivTips("update_error4");
	            showLocSelect(txt_product_count,null,null,document_click,78,93);break; 
	        default:
	        break;
	        
	        
	          
	      }
	}
	
	var is_first_click=true;
	var document_click=function(e)
	{
			var sender=null;

			if(typeof(event)!='undefined')
			{
				sender=event.srcElement;
			}
			else if(e)
			{
				sender=e.target;
			}

			if(!contains(locListDivTips,sender))
			{
			    if(is_first_click)
			    {
				    is_first_click=false;
				}
				else
				{
				    locListDivTips.style.display="none";
				}
			}
	}
}

function showLocSelect(sender,cfm_func,cancel_func,document_func,offsetX,offsetY)
{
if(!is_loaded) return;
	
    locListDivTips.style.top=(getposOffset(sender,"top")-offsetX)+"px";
	locListDivTips.style.left=(getposOffset(sender,"left")-offsetY)+"px";
	locListDivTips.style.display="block";
	
	document.onclick=document_func;

}


function hidelocListDivTips()
{
    locListDivTips.style.display = "none";   
}


function setlocListDivTips(div_name)
{
    switch(div_name)
    {
        case "delete_confirm":
            locListDivTips.innerHTML="<div class='content'><p>您确定要删除吗？</p><p><span class='t2'><a id='delete' onmouseover='link_hover(this)' onmouseout='link_out(this)'>确定</a></span>　　　　<span class='t2'><a id='cancel' onmouseover='link_hover(this)' onmouseout='link_out(this)'>取消</a></span></p></div><div class='c_b'></div>";
            locListDivTips.className = "box_window";
            break;  
          
        case "update_success":      
            locListDivTips.innerHTML="<div class='content_3'><p class='t_c'>商品数量修改成功！</p><p>您的商品总金额为<strong>￥<em><span id='update_total_account' style='color:#a9020a'></span></em></strong> 元</p><p class='t_c'><a href='javascript:void(0)' onclick='javascript:hidelocListDivTips();'>关闭</a></p></div><div class='c_b_3'></div>";
            locListDivTips.className = "box_window_3";
            
            break;  
        case "update_error1":
            locListDivTips.innerHTML="<div class='content_3'><p class='t_c'>您输入的数据有误！</p><p class='t_c'><a href='javascript:void(0)' onclick='javascript:hidelocListDivTips();'>关闭</a></p></div><div class='c_b_3'></div>";
            locListDivTips.className = "box_window_3";
            
            break;  
        
        default:
            break; 
        
    }
    
}

function cartCancel()
{
    return confirm("确定要取消订单吗？");
}

init_ajax()

