﻿var clock;
$(document).ready(
    function() {
        refreshCart();//初始化购物车信息
        
        $("#cartWrap").mouseover(function(){
            showCartPanel();
            window.clearTimeout(clock);
        });
        $("#cartWrap").mouseout(function(){
            clock = window.setTimeout(hideCartPanel,1000); 
        });
        $("#cartPanel").mouseover(function(){            
            window.clearTimeout(clock);  
            //showCartPanel();         
        });
        $("#cartPanel").mouseout(function(){
            clock = window.setTimeout(hideCartPanel,1000);           
        });
    }
);

function hideCartPanel(){
    $("#cartPanel").hide();
    //alert(clock);
}

// 函数名 writeToCookie() 
// 功能 将字符串写到Cookie中去
function writeToCookie(shopingCartCookie){
    $.cookie("JJMshopingCart",shopingCartCookie,{expires:1,path:'/'});
        
    //$.cookie("JJMshopingCart",shopingCartCookie,{expires:30,domain: "www.jiajiamai.com"});
}

// 函数名 updateGoods() 
// 功能 将二维数组的值重新连接成格式字符串并写到Cookie中去 



// 函数名 getCart() 
// 功能 从Cookie中读出购物车
function getCart(){
    if ($.cookie("JJMshopingCart")==null||$.cookie("JJMshopingCart")==""){
        writeToCookie("{\"goods\":[]}");        
        return JSON.parse("{\"goods\":[]}");
    }else{
        return JSON.parse($.cookie("JJMshopingCart"));
    }
}


// 函数名 addGoods() 
// 功能 添加商品到购物车，保存到cookie中
// 参数 
// id name price num remark
// 商品ID 商品名称 单价 数量 备注 
function addGoods(id,sn,name,price,num,remark,image){
    var jsonGoods = getCart();
    //判断是否有此商品，有则改变数量，无则增加
    var hasGoods = false;
    for (var i=0; i < jsonGoods.goods.length;i++){
        if(jsonGoods.goods[i].id==id){
            jsonGoods.goods[i].num = parseInt(num) + parseInt(jsonGoods.goods[i].num);
            hasGoods = true;
            if (remark!=""){
                jsonGoods.goods[i].remark = remark;
            }
        }
    }   
    if (!hasGoods){
        jsonGoods.goods.push({"id":id,"sn":sn,"name":name,"price":price,"num":parseInt(num),"remark":remark,"image":image});  
    }    
    writeToCookie(JSON.stringify(jsonGoods));    
    refreshCart();    
    alert("此商品成功放入购物车！");
}

// 函数名 removeCart() 
// 功能 删除购物车中的所有信息 


// 函数名 indexOfGoods() 
// 功能 从Cookie中取一个商品的纪录


// 函数名 updateGoodsQuantity() 
// 功能 修改商品定购数量


// 函数名 parseCart() 
// 功能 提交订单信息 
function parseCart(){
    //读取cookie中的数据生成json数据，并提交
}


// 函数名 removeGoodsMuti() 
// 功能 删除购物车中的多项物品 调用 removeGoods() 函数实现


//函数名 refreshCart() 
//刷新购物车信息显示
function refreshCart(){
    var jsonGoods = getCart();   
    var goodsNumber = 0;  
    var cartPanelText = "";  
    var totalPrice = 0.00;
    if (jsonGoods.goods.length==0){
        $("#goodsNum").text(goodsNumber);
        $("#cartPanel").empty();
        $("#cartPanel").append("您的购物车中暂无商品，赶快选择心爱的商品吧！");        
    }else{
        for (var i=0; i < jsonGoods.goods.length;i++){
            goodsNumber = parseInt(jsonGoods.goods[i].num) + parseInt(goodsNumber);
            cartPanelText += "<img src='" + jsonGoods.goods[i].image + "' width='50' height='50' align='left' style='border:1px solid #DBECB6;padding:1px;margin:2px;'><div style='float:left;width:140px;padding-top:2px;'>" +jsonGoods.goods[i].name + "</div><div style='float:left;color:red;font-weight:bold;text-align:right;width:100px;'>￥" + jsonGoods.goods[i].price  + "×" + jsonGoods.goods[i].num + "<br/><span style='font-weight:normal;color:#aaaaaa'><a href='#' onclick='deleteGoods(" + i + ");return false;'>删除</a></span></div><br/><br/>" ;
            cartPanelText +="<hr/><br/>";
            totalPrice = addTwoFloat(totalPrice,accMul(parseFloat(jsonGoods.goods[i].price),parseFloat(jsonGoods.goods[i].num)));
            //totalPrice += parseFloat(jsonGoods.goods[i].price)*parseInt(jsonGoods.goods[i].num);
        }    
        totalPrice = totalPrice.toFixed(2);
        cartPanelText += "<div width='100%' style='background-color:#eaeaea;text-align:right;padding-right:5px;'>&nbsp;&nbsp;&nbsp;&nbsp;共 <strong>" +goodsNumber + "</strong> 件商品 金额总计：<font color='red'><strong>￥" + totalPrice + "</strong></font></div>";
        cartPanelText += "<div style='width:100%; text-align:right;padding-right:10px;padding-top:5px;'><a href='/Shoppingcart.aspx'><img src='/images/shopingCart/gotoShopingCart.gif' border='0'></a></div>";
        $("#goodsNum").text(goodsNumber);
        $("#cartPanel").empty();
        $("#cartPanel").append(cartPanelText);        
    }    
}

//显示购物车信息面板
function showCartPanel(){
    var cartWrapX = $("#cartWrap").offset();
    if (cartWrapX.left + $("#cartPanel").width()<screen.width){
        $("#cartPanel").css("left",cartWrapX.left-3);
    }else{
        $("#cartPanel").css("left",cartWrapX.left+$("#cartWrap").width()-$("#cartPanel").width()-3);
    }		    
    $("#cartPanel").css("top",cartWrapX.top+$("#cartWrap").height()+3);    
    
    $("#cartPanel").fadeTo("slow", 0.9);
    $("#cartPanel").show();    
}

// 函数名 deleteGoods() 
// 功能 删除购物车中的某项物品 
function deleteGoods(i){
    var jsonGoods = getCart();    
    jsonGoods.goods.splice(i,1);
    writeToCookie(JSON.stringify(jsonGoods));
    refreshCart();   
}
//乘法函数，用来得到精确的乘法结果 
//说明：javascript的乘法结果会有误差，在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。 
//调用：accMul(arg1,arg2) 
//返回值：arg1乘以arg2的精确结果 
function accMul(arg1,arg2) 
{ 
     var m=0,s1=arg1.toString(),s2=arg2.toString(); 
     try{
        m+=s1.split(".")[1].length
     }catch(e){} 
     try{
        m+=s2.split(".")[1].length
     }catch(e){} 
     return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m) 
}

//相加两个float类型的数值
function addTwoFloat(val1,val2)
{
    var TotalNum;
    val1 = val1 + '' ; 
    val2 = val2 + '' ;
    var sp_val1 = val1.split(".") ; 
    var sp_val2 = val2.split(".") ;
    if ((sp_val1.length==2) && (sp_val2.length==2)) { 
        //整数部分相加
        var total1 = parseInt(sp_val1[0]) + parseInt(sp_val2[0]);
        //小数部分相加
        if (sp_val1[1].length==1){
            sp_val1[1] = sp_val1[1]+"0";
        }
        if (sp_val2[1].length==1){
            sp_val2[1] = sp_val2[1]+"0";
        }
        var total2 = parseInt(sp_val1[1]) + parseInt(sp_val2[1]);
        total2 = total2+"";
        if (total2.length==1){
            total2 = "0"+total2;
        }else if(total2.length>2)
        {
            total1 +=parseInt(total2.substr(0,total2.length-2));
            total2 = total2.substring(total2.length-2,total2.length);
        }
        TotalNum = parseFloat(total1+"."+total2);
    }else{     
        TotalNum = parseFloat(val1) + parseFloat(val2) ;     
    }
    return TotalNum;
    
}