﻿

var PackageInfoCookie     = "DDY_Package_Info";   //虚拟礼包Cookie名  
var PackageCartCookieName = "DDY_Package_Cart";   //合法虚拟礼包集合Cookie名（提交生成，购物车使用）

var UsingPackageCookieName  = PackageInfoCookie;  //正在使用的Package Cookie名

//将礼包信息加入礼包集合
function addPackageInfoToCart(strPackage){
    var strPackages = getCookiePack(PackageCartCookieName); //获取DDY_Package_Info的Cookies
    if(strPackages!=null && strPackages!=""){
        strPackages += PackagesDiv + strPackage;
         //alert(strPackages);
    }
    else{
        strPackages = strPackage;
    }

    SetCookie(PackageInfoCookie,"");                //将DDY_Package_Info清空
    SetCookie(PackageCartCookieName,strPackages);   //设置DDY_Package_Cart的Cookies

}


//将礼包信息加入礼包集合
function addPackageInfoToCarts(strPackage){
    SetCookie("DDY_Package_Cart",strPackage);   //设置DDY_Package_Cart的Cookies

}

//************************************  START Package方法的定义    ********************************
//获取所有礼包字符串
function getAllPackages(){
    var strPackages     = getCookiePack(PackageInfoCookie); //获取Cookies
     //alert(getCookiePack(strPackages));
    return strPackages;
}

function getAllPackagesf(){
    var strPackages     = getCookiePack(PackageCartCookieName); //获取Cookies
     //alert(getCookiePack(PackageCartCookieName));
    return strPackages;
}

//重新设置所有礼包
function setAllPackages(strPackages){
    SetCookie(UsingPackageCookieName,strPackages);
    //SetCookie(PackageCartCookieName,strPackages);
}

////加入礼包
//function addPackage(strPackage){
//    var strPackages = getAllPackages(); //获取所有礼包字符串
//    if(strPackages!=null && strPackages!=""){
//        strPackages += PackagesDiv + strPackage;
//    }
//    else{
//        strPackages = strPackage;
//    }
//    setAllPackages(strPackages);
//}

//根据索引获取礼包字符串
function getPackageByIndex(index){
    var strPackages  = getAllPackages(); //获取所有礼包字符串
    var strPackage   = "";
    if(strPackages!=null && strPackages!=""){
        var aryPackage  = strPackages.split(PackagesDiv);
        strPackage   = aryPackage[index];

        return strPackage;      
    }
    else{
        return "";
    }
}

//获取当前礼包的索引
function getCurrentPackageIndex(){
    var strPackages  = unescape(getAllPackages()); //获取所有礼包字符串
      if(strPackages!=null && strPackages!=""
      ){
      	return (strPackages.split(PackagesDiv).length -1); //最后一个加入的礼包视为当前礼包
      	}else{
        return -1;
    }
}

//获取礼包数量
function getPackageCount(){
    return getCurrentPackageIndex() + 1;
}


//获取当前礼包字符串
function getCurrentPackage(){
    var strPackages     = getAllPackages(); //获取所有礼包字符串
    var strCurPackage   = "";
        //alert(getAllPackages());
    if(strPackages!=null && strPackages!=""){
        var aryPackage  = strPackages.split(PackagesDiv);
        strCurPackage   = aryPackage[aryPackage.length - 1];
        //alert(strCurPackage);
        return strCurPackage; //返回最后一个礼包，即当前礼包     
    }
    else{
        return "";
    }
}

//根据礼包数组生成礼包字符串
function getPackagesByArray(aryPackage){
    var strPackages = "";
    var i;
    for(i=0; i<aryPackage.length; i++){
        if(strPackages==""){
            strPackages = aryPackage[i];
        }
        else{
            strPackages = strPackages + PackagesDiv + aryPackage[i];
        }
    }
    return strPackages;
}

//设置当前礼包
function setCurrentPackage(strPackage){
    var strPackages = getAllPackages();//获取所有礼包字符串
    
    if(strPackages!=null && strPackages!=""){
        var aryPackage = strPackages.split(PackagesDiv);
        aryPackage[aryPackage.length - 1] = strPackage;
        strPackages = getPackagesByArray(aryPackage); //将数组转换为String
        //alert(strPackages);
        setAllPackages(strPackages);
    }
}

//清空所有礼包
function clearPackages(){ 
	  SetCookie(PackageCartCookieName,""); //给package一个空值
	  SetCookie(PackageInfoCookie,""); //给package一个空值
    setAllPackages("");
}

//根据索引删除礼包
function removePackageByIndex(index){
    var retPackages = "";
    var strPackages = getAllPackages();
    var aryPackages = strPackages.split(PackagesDiv);
    var i;
    for(i=0;i<aryPackages.length;i++){
        if(index!=i){
            if(retPackages!=""){
                retPackages += PackagesDiv + aryPackages[i];
            }
            else{
                retPackages = aryPackages[i];
            }
        }
    }
    setAllPackages(retPackages);
}

//************************************  END Package方法的定义    ********************************


//************************************  START Items方法的定义    ********************************
//将礼包项目加入当前礼包
function addItemToCurrentPackage(strItem){
    var strPackage = getCurrentPackage(); //获取当前礼包
    
    if(strPackage!=null && strPackage!=""){
        var objPackage = new Package();
        objPackage.initByString(strPackage);
        
        var tmpItem = objPackage.PackageItemString;
        if(tmpItem!=null && tmpItem!=""){
            tmpItem += ItemsDiv + strItem;
        }
        else{
            tmpItem = strItem;
        }
        objPackage.PackageItemString = tmpItem; //将PackageItem数据赋值给Package
        
        strPackage = objPackage.ToString();
        setCurrentPackage(strPackage); //设置当前礼包
    }
}

//根据礼包索引获取礼包项目
function getItemsByPackageIndex(PackageIndex){
    var strPackage = getPackageByIndex(PackageIndex); //获取当前礼包
    
    if(strPackage!=null && strPackage!=""){
        var objPackage = new Package();
        objPackage.initByString(strPackage);
        
        return objPackage.PackageItemString;
    }
    else{
        return "";
    }
}


//获取当前礼包项目
function getItemsByCurrentPackage(){
    var strPackage = getCurrentPackage(); //获取当前礼包
    
    if(strPackage!=null && strPackage!=""){
        var objPackage = new Package();
        objPackage.initByString(strPackage);
        
        return objPackage.PackageItemString;
    }
    else{
        return "";
    }
}

//设置当前礼包项目
function setItemsToCurrentPackage(strItems){
    var strPackage = getCurrentPackage(); //获取当前礼包

    if(strPackage!=null && strPackage!=""){
        var objPackage = new Package();
        objPackage.initByString(strPackage);
        
        objPackage.PackageItemString = strItems;
        
        strPackage = objPackage.ToString();
         //alert(unescape(strPackage));
        //return;
        setCurrentPackage(strPackage); //设置当前礼包
    }
}

//根据礼包数组生成礼包字符串
function getItemsByArray(aryItems){
    var strItems = "";
    var i;
    for(i=0; i<aryItems.length; i++){
        if(strItems==""){
            strItems = aryItems[i];
        }
        else{
            strItems = strItems + ItemsDiv + aryItems[i];
        }
    }
    return strItems;
}


//获取当前礼包项目索引
function getItemIndex(){
    var index;
    var strPackage = getCurrentPackage();
     //alert(strPackage);
    var objPackage = new Package();
    objPackage.initByString(strPackage);
    //alert(objPackage.CurrentItemIndex);
    index = parseInt(objPackage.CurrentItemIndex);
    return index;
}

//获取当前礼包项目数量
function getItemCount(){
    var strPackage = getCurrentPackage();
    var objPackage = new Package();
    objPackage.initByString(strPackage);
    
    var strItems = objPackage.PackageItemString;
    var count    = strItems.split(ItemsDiv).length;
    
    return count;
}

//设置当前礼包项目索引
function setItemIndex(index){
    var strPackage = getCurrentPackage();
    var objPackage = new Package();
    objPackage.initByString(strPackage);
    
    var strItems = objPackage.PackageItemString;
    var maxIndex = strItems.split(ItemsDiv).length - 1;  //获取最大Index数
    
    if(index > maxIndex) index = maxIndex;
    if(index < 0) index = 0;
    
    objPackage.CurrentItemIndex = index;
    strPackage = objPackage.ToString();
    
    setCurrentPackage(strPackage);//设置当前礼包
}

//根据当前礼包项目索引，获取当前礼包项目
function getItemByIndex(index)
{
    var strItems = getItemsByCurrentPackage();
    var aryItems = strItems.split(ItemsDiv);
    if(index > aryItems.length-1) return "";
    
    return aryItems[index];
}


//根据当前礼包项目索引，设置当前礼包项目
function setItemByIndex(index,strItem)
{
    var strItems = getItemsByCurrentPackage();
    var aryItems = strItems.split(ItemsDiv);
    var i;
    //alert(aryItems.length); 
    for(i=0; i< aryItems.length ; i++){
        if(i==index){
            aryItems[i] = strItem;
            //alert(aryItems[i]&index);            
        }
    }
     
    var strItems = getItemsByArray(aryItems);
     //alert(strItems);
    //return;
    setItemsToCurrentPackage(strItems);//更新整个礼包项目
     return;
}

//显示折扣
function showItemDiscountByIndex(index){
    var strItem = getItemByIndex(index);
    if(strItem!=""){
        var objPackageItem = new PackageItem();
        objPackageItem.initByString(strItem);
        
        var PromotionValue  = parseFloat(objPackageItem.PromotionValue);    //促销减价
        var DiscountRate    = parseFloat(objPackageItem.DiscountRate);      //折扣率
        if(PromotionValue == 0){
            //使用折扣率    
            return (DiscountRate*10) + " 折"
        }
        else{
            //使用直接金额上减价
            return "减 " + PromotionValue
        }
    }
}

//************************************  END Items方法的定义    ************************************


//************************************  START Product方法的定义    ********************************
//验证加入数量
function IsVaidByQuantity(quantity){
    
    var intAllowQ = quantity;
    var curItemIndex = getItemIndex();          //获取当前礼包项索引
    var strItem = getItemByIndex(curItemIndex); //根据索引获取指定礼包项目
    
    var objPackageItem = new PackageItem();
    objPackageItem.initByString(strItem);       //生成PackageItem实体类
    
    var minQ    = parseInt(objPackageItem.MinQuantity);
    var maxQ    = parseInt(objPackageItem.MaxQuantity);
    if (quantity < minQ){
        intAllowQ = minQ;
    }
    if (quantity > maxQ){
        intAllowQ = maxQ;
    }
    return intAllowQ;
}

//将商品加入当前礼包项目
function addProductToItem(strProduct){
    
    var curItemIndex = getItemIndex();          //获取当前礼包项索引
    var strItem = getItemByIndex(curItemIndex); //根据索引获取指定礼包项目
    
    var objPackageItem = new PackageItem();
    objPackageItem.initByString(strItem);       //生成PackageItem实体类
    var objProduct = new Product();             
    objProduct.initByString(strProduct);        //生成Product实体类
    
    //计算折扣金额
    var amount          = parseInt(objProduct.Amount);                  //数量
    var PromotionValue  = parseFloat(objPackageItem.PromotionValue);    //促销减价
    var DiscountRate    = parseFloat(objPackageItem.DiscountRate);      //折扣率
    var ProductPrice    = parseFloat(objProduct.ProductPrice);          //商品单价
    var EveryPromo      = 0;                                            //单件商品促销金额
    
    
    if(PromotionValue == 0){
        //使用折扣率    
        EveryPromo = (1-DiscountRate) * ProductPrice;
    }
    else{
        //使用直接金额上减价
        EveryPromo = PromotionValue;
    }
    
    EveryPromo = Math.round(EveryPromo * Math.pow(10,0)) / Math.pow(10,0);
    
    objProduct.PromotionValue = EveryPromo;     //单件商品赋值给Product实体
    //alert(unescape(objProduct.PromotionValue));
    strProduct = objProduct.ToString();         //重新生成Product的字符串
    objPackageItem.ProductString = strProduct;  //将商品字符串赋值
    
    //alert(unescape(objPackageItem.ProductString));
    
    strItem = objPackageItem.ToString();        //重新生成PackageItem的字符串
        //alert(unescape(strItem));
         //return;
          //alert(curItemIndex);
           //return;
    setItemByIndex(curItemIndex,strItem);       //更新礼包项目
    
    //setItemIndex(curItemIndex + 1);             //当前礼包项目索引加1 ---放在前台控制
}


//将商品从指定礼包项目中移除
function removeProductFromItem(index){
    var strItem = getItemByIndex(index);        //根据索引获取指定礼包项目
    
    var objPackageItem = new PackageItem();
    objPackageItem.initByString(strItem);       //生成PackageItem实体类
    
    objPackageItem.ProductString = "";          //清空商品字符
    
    strItem = objPackageItem.ToString();        //重新生成类的字符串
    
    setItemByIndex(index,strItem);              //更新礼包项目
    //setItemIndex(index);                        //将该索引设置为当前礼包项目索引 ---放在前台控制
}

//所有商品移出礼包
function removeAllProduct(){
    var retItems = "";
    var strItems = getItemsByCurrentPackage();  //获取当前礼包项目集
    var aryItems = strItems.split(ItemsDiv);
    var i;
    for(i=0;i<aryItems.length;i++){
        var strItem = aryItems[i];
        var objPackageItem = new PackageItem();
        objPackageItem.initByString(strItem);
        objPackageItem.ProductString = "";
        
        if(retItems!=""){
            retItems += ItemsDiv + objPackageItem.ToString();
        }
        else{
            retItems = objPackageItem.ToString();
        }   
    }
    
    setItemsToCurrentPackage(retItems);         //更新当前礼包项目    
}

//************************************  END Product方法的定义    ********************************

//判断当前礼包是否可以提交
function isCanSubmit(){
    var blnRet = true;
    
    var strItems = getItemsByCurrentPackage(); //获取当前礼包项目集
    var aryItems = strItems.split(ItemsDiv);
    var i;
     //alert(aryItems.length);
    for(i=0;i<aryItems.length;i++){
        var strItem = aryItems[i];
        var objPackageItem = new PackageItem();
        objPackageItem.initByString(strItem);
        if(objPackageItem.ProductString == ""){
            blnRet = false;
        }   
    }
    return blnRet;
}

//根据礼包索引判断礼包是否合法
function isVaildForPackageByIndex(index){
    var blnRet = true;
    
    var strItems = getItemsByPackageIndex(index); //获取指定索引礼包项目集
    var aryItems = strItems.split(ItemsDiv);
    var i;
    for(i=0;i<aryItems.length;i++){
        var strItem = aryItems[i];
        var objPackageItem = new PackageItem();
        objPackageItem.initByString(strItem);
        if(objPackageItem.ProductString == ""){
            blnRet = false;
        }   
    }
    return blnRet;
}


//检查所有礼包，并且返回有效礼包字符串
function getAndCheckPackages(){
    var strPackages = "";
    var i;
    for(i=0;i<getPackageCount();i++){
        if(isVaildForPackageByIndex(i)){//是否合法
            if(strPackages=="")
            {
                strPackages = getPackageByIndex(i);          
            }
            else
            {
                strPackages = strPackages + PackagesDiv + getPackageByIndex(i);
            }
        }
    }
    return strPackages;
}

//计算所有合法礼包总金额
function getAllPackageTotalValue(){
    var sumTotalValue = 0.00;
    var i;
    for(i=0;i<getPackageCount();i++){
        if(isVaildForPackageByIndex(i)){//是否合法
            sumTotalValue += getPackageTotalValueByIndex(i);
        }
    }
    return sumTotalValue;
}

//计算指定索引的礼包总金额
function getPackageTotalValueByIndex(index){
    var retValue = 0.00;
    var strItems = getItemsByPackageIndex(index);//获取指定索引礼包项目集
    
    var aryItems = strItems.split(ItemsDiv);
    var i;
    
    for(i=0;i<aryItems.length;i++){
        var strItem         = aryItems[i];
        var objPackageItem  = new PackageItem();
        objPackageItem.initByString(strItem);
        
        var strProduct      = objPackageItem.ProductString;
        if(strProduct!="")//判断是否有商品加入
        {
            var objProduct      = new Product();
            objProduct.initByString(strProduct);
            retValue = retValue + (parseFloat(objProduct.ProductPrice)) * parseInt(objProduct.Amount);
        }
    }
    return retValue;
}


//计算商品总数
function getPackageTotalValueByNum(index){
    var retValue = 0;
    var strItems = getItemsByPackageIndex(index);//获取指定索引礼包项目集
    
    var aryItems = strItems.split(ItemsDiv);
    var i;
    
    for(i=0;i<aryItems.length;i++){
        var strItem         = aryItems[i];
        var objPackageItem  = new PackageItem();
        objPackageItem.initByString(strItem);
        
        var strProduct      = objPackageItem.ProductString;
        if(strProduct!="")//判断是否有商品加入
        {
            var objProduct      = new Product();
            objProduct.initByString(strProduct);
            retValue = parseInt(retValue) + parseInt(objProduct.Amount);
        }
    }
    return retValue;
}


//计算当前礼包总金额
function getCurPackageTotalValue(){
    
    var intCurrentIndex = getCurrentPackageIndex();         //获取当前礼包索引
    return getPackageTotalValueByIndex(intCurrentIndex);    //返回指定索引礼包总金额  
}

//编码程序： 
function codecookie(str) 
{ 
　 var strrtn=""; 

　for (var i=str.length-1;i>=0;i--) 
　 { 
　　 strrtn+=str.charCodeAt(i); 
　　 if (i){strrtn+="a"}; //用a作分隔符 
　 }
　 return strrtn; 
} 

//解码程序： 
function decodecookie(str) 
{ 
　 var strarr; 
　 var strrtn=""; 

　strarr=str.split("a"); 

　for (var i=strarr.length-1;i>=0;i--) 
　 strrtn+=String.fromCharCode(eval(strarr[i])); 
　return strrtn; 
} 

//************************************  START 常用方法的定义    *********************************
//设置Cookie
function SetCookie(name,value)//两个参数，一个是cookie的名子，一个是值
{
    var Days = 30; //此 cookie 将被保存 30 天
    var exp  = new Date();    //new Date("December 31, 9998");
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + "="+ escape (codecookie(value)) + ";expires=" + exp.toGMTString();
    //alert(unescape(decodecookie(escape(codecookie(value)))));
    //alert(unescape(decodecookie(getCookie("DDY_Package_Cart"))));
}


//获取Cookie
function getCookiePack(name)//取cookies函数        
{
    var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
     if(arr != null) return unescape(decodecookie(arr[2])); return null;;

}
//************************************  END 常用方法的定义    ***********************************