﻿// JScript 文件
 //定义购物车对象
var Cart = Object();
//当前用户存储在Cookie中的商品列表
Cart.currentList = [];

//检测客户端是否允许使用Cookie
Cart.allowCookie = function(){
    if( !window.clientInformation.cookieEnabled ) {
        alert('你的浏览器不支持Cookie无法使用此 购物车 系统');
        return false;
    }
    return true;
}
//将数据存储到cookie中
Cart.setCookie = function(key, value,hours){
    if(!isNaN(parseInt(hours))){
        var expireDate = new Date();
        expireDate.setTime(expireDate.getTime() + (hours*24*3600000));
        document.cookie = escape(key) + "=" + escape(value) + ";expires=" + expireDate.toGMTString()+";path=/";
    }else{
        document.cookie = key + "=" + escape(value)+";path=/";
    }
}
//从Cookie中获取对应key的值
Cart.getCookie = function(key){
    var reg = new RegExp("(^| )"+escape(key)+"=([^;]*)(;|$)","gi");
    var ck = reg.exec(document.cookie);
    try{
        if(ck[2] == null || typeof(ck[2]) == "undefine") return "";
    }
    catch(e){
        return "";
    }
    return unescape(ck[2]);
    
}
//删除购物车的Cookie值
Cart.delCookie = function(key){
    Cart.setCookie(key,"",1);
}

Cart.createInfo = function(a,b,c,d,e){
    var pmsg = "[{";
    pmsg += ('"a":'+'"'+a+'",');//商品主键,
    pmsg += ('"b":'+'"'+b+'",');//"pid":"货号",
    pmsg +=('"c":'+'"'+c+'",');//配件
    pmsg += ('"d":'+'"'+d+'",');//"count":"商品数量
    pmsg += ('"e":'+'"'+e+'"');//"attctype":"商品类型（1表示是diy商品）"
    pmsg += "}]";
    return pmsg;
}
//将用户存储在Cookie中的商品列表连接后存入Cookie
//【内部方法，必须在购物车操作中执行。】
Cart.linkCart = function (key){
    var _i =0;
    var cookiestr = "";
    for(;_i < Cart.currentList.length ; _i++){
        if(Cart.currentList[_i]!=null&&Cart.currentList[_i]!=""&&Cart.currentList[_i].length > 0){
            cookiestr += ("|"+Cart.currentList[_i]);
        }
    }
    Cart.setCookie(key,cookiestr,1);
}

//判断某一商品id，是否存在于cookie中（返回索引或-1）
Cart.getExistIndex = function(key,id){
    var flag = -1;
    if(Cart.currentList == null || Cart.currentList.length == 0){
        var cookiestr = Cart.getCookie(key);
        if(!(cookiestr == null || cookiestr.length ==0)){
            Cart.currentList = cookiestr.split('|');
        }
    }
    if(Cart.currentList.length>0){
        var _i = 0;
        for(;_i<Cart.currentList.length;_i++){
            if(Cart.currentList[_i]!=null&&Cart.currentList[_i]!=""){
                if(Cart.currentList[_i].length > 0){
                    var _single = eval(Cart.currentList[_i]);
                    if(id == _single[0].b+"!"+_single[0].c){
                        flag = _i;break; }
                }
            }
        }
    }
    return flag;
}

//将某件商品从购物车中移除。
Cart.removeCart = function(key , id){
    var flag = Cart.getExistIndex(key,id);
    if(flag != -1){
        Cart.currentList[flag] = "";
        Cart.linkCart(key);
    }
    return true;
}
//更新购物车中某一商品的数据,如果购物车中不存在则添加新值
Cart.updateCart = function(key ,id,upstr){
    var flag = Cart.getExistIndex(key,id);
    var mark = false;
    if(flag != -1){
        Cart.currentList[flag] = upstr;
        Cart.linkCart(key);
        mark = true;
    }else{
      
        var cookiestr = Cart.getCookie(key);
        cookiestr += ("|"+upstr);
        Cart.setCookie(key,cookiestr,1);
        Cart.currentList = [];
        mark = true;
    }
    return mark;
}
//修改数量，更新购物车
Cart.updateCount = function(key,id,count){
    var flag = Cart.getExistIndex(key,id);
    if(flag != -1){
        var _single = eval(Cart.currentList[flag]);
            var _upstr = Cart.createInfo(_single[0].a,_single[0].b,_single[0].c,count,_single[0].e);
            Cart.currentList[flag]=_upstr;
            Cart.linkCart(key);

    }
    return false;
}
//获取该产品购买数量
Cart.getCount = function(key,id){
    var flag = Cart.getExistIndex(key,id);
    if(flag != -1){
        var _single = eval(Cart.currentList[flag]);
        return parseInt(_single[0].d);
    }
    return 0;
}

Cart.delAllCart = function(name,backurl){
     Cart.setCookie(name,"",-1);
     location.href=backurl;
}
//根据Cookie名获取Cookie中产品的json数据列表
Cart.GetProJson = function(key){
    var cookiestr = Cart.getCookie(key);
    if(!(cookiestr == null || cookiestr.length ==0)){
          return Cart.currentList = cookiestr.split('|');
    }
    return null;
     
}
