﻿var subtotals=0;
var subtotals_id=0;
var productordered=null;
var s=null;
var del = null;
var global_products = new Object();
var globalElement = null;
//接下來定義一個名為DraggableProductBehavior的行為，該行為將實現Sys.Preview.UI.IDragSource接口

//先來注冊Dflying命名空間
Type.registerNamespace("Dflying");

//然後聲明該DraggableProductBehavior的實例字段
Dflying.DraggableProductBehavior = function(element) {
    // 初始化基類
    Dflying.DraggableProductBehavior.initializeBase(this, [element]);
    
     // 按下鼠標鍵時的事件處理函數
    this._mouseDownHandler = Function.createDelegate(this, this._handleMouseDown);
    
    // 該可拖動對像所表示的產品
    this._product = null;
    
   // 拖動時跟隨鼠標的半透明元素
    this._visual = null;
}

//接下來是DraggableProductBehavior的原型定義,,,需要特別留意的是IDragSource接口中各個方法的實現方式

Dflying.DraggableProductBehavior.prototype = {
     // IDragSource接口中的方法
     
     
    // 取得該可拖動對像的數據類型——"Product"
    get_dragDataType: function() {
        return "Product";
    },

    // 取得該可拖動對像的數據
    getDragData: function(context) {
        return this._product;
    },

    // 可拖動對像的拖拽模式——拷貝
    get_dragMode: function() {
        return Sys.Preview.UI.DragMode.Copy;
    },

    // 拖動開始時的處理方法
    onDragStart: function() {
    },

    // 拖動進行時的處理方法
    onDrag: function() {
    },

    // 拖動結束時的處理方法
    onDragEnd: function(canceled) {
        if (this._visual)
            // remove the transparent element
            this.get_element().parentNode.removeChild(this._visual);
    },
   
 // product屬性
    get_product: function(product) {
        return this._product;
    },
    
    set_product: function(product) {
        this._product = product;
    },
    
    // 初始化方法
    initialize: function() {
        $addHandler(this.get_element(), "mousedown", this._mouseDownHandler);
    },

     // mousedown事件處理函數
    _handleMouseDown: function(ev) {
         // DragDropManager需要該項設定
        window._event = ev; 

        // 設置拖動時跟隨鼠標的半透明元素的樣式
        this._visual = this.get_element().cloneNode(true);
        this._visual.style.opacity = "0.7";
        this._visual.style.filter = 
            "progid:DXImageTransform.Microsoft.BasicImage(opacity=0.7)";
        this._visual.style.zIndex = 99999;
        this.get_element().parentNode.appendChild(this._visual);
        var location = Sys.UI.DomElement.getLocation(this.get_element());
        //Sys.UI.DomElement.setLocation(this._visual,location.x+56,location.y);
        
        if((location.x==221)||(location.x==351)||(location.x==481)||(location.x==611))
        {
          Sys.UI.DomElement.setLocation(this._visual,location.x+26,location.y);
           //alert(location.x);
        }
        else
        {
           Sys.UI.DomElement.setLocation(this._visual,location.x+10,location.y);
        }
         // 告知DragDropManager開始拖放操作
        Sys.Preview.UI.DragDropManager.startDragDrop(this, this._visual, null);
    },


// 析構方法
    dispose: function() {
        if (this._mouseDownHandler)
            $removeHandler(this.get_element(), "mousedown", this._mouseDownHandler);
        this._mouseDownHandler = null;
        
        // dispose base class
        Dflying.DraggableProductBehavior.callBaseMethod(this, 'dispose');
    }
}

//最後在ASP.NET AJAX客戶端框架中注冊該DraggableProductBehavior行為。可以看到該行為實現了IDragSource接口
Dflying.DraggableProductBehavior.registerClass("Dflying.DraggableProductBehavior", Sys.UI.Behavior, Sys.Preview.UI.IDragSource);



//--------------------------------------------------------------------------
//我們還要定義一個名為ShoppingCartBehavior的行為，該行為將實現Sys.Preview.UI.IDropTarget接口
//編寫ShoppingCartBehavior實現可接受商品投放的購物車 
Dflying.ShoppingCartBehavior = function(element) {
     // 初始化基類
    Dflying.ShoppingCartBehavior.initializeBase(this, [element]);
    
    // 購物車中的產品列表
    this._products = new Object();
    
}

//接下來是ShoppingCartBehavior的原型定義
//請注意代碼中IDropTarget接口中各個方法的實現方式，以及其中粗體部分在DragDropManager中注冊/取消注冊該投放目標對像的語法
Dflying.ShoppingCartBehavior.prototype = {
    // IDropTarget接口中的方法

    // 返回購物車元素
    get_dropTargetElement: function() {
        return this.get_element();
    },

    // 判斷某可拖動元素是否能夠投放在該投放目標對像中
    canDrop: function(dragMode, dataType, data) {
        return (dataType == "Product" && data);
    },

    set_Element: function(data)
    {
        if (this._element == null)
        {
            this._element = data;            
        }
        if (globalElement == null)
        {
            globalElement = data;
        }
    },
    //(1)------------------------------------------------------------------------------------------------------
    // 將某可拖動元素投放在該投放目標對像中
    drop: function(dragMode, dataType, data) {
        if (dataType == "Product" && data) {


            //=================================
            if (document.getElementById("ctl00_ContentPlaceHolder1_hf_totalorder1").innerHTML == "-1") {
                //刷新頁面後，判斷cookie裡訂購了多少個產品
                calutetotal();
            }
            else {
                //不刷新頁面，判斷數組裡訂購了多少個產品
                subtotals = document.getElementById("ctl00_ContentPlaceHolder1_hf_totalorder1").innerHTML;
                //alert("tuo fang check="+subtotals);
            }
            //===================================


            if (this._products == null) {
                this._products = global_products;
            }

            if (this.get_element() == null) {
                this._element = globalElement;
            }
            // calutetotal();
            // alert("cookie-have="+subtotals);

            if (subtotals < 3) {
                // 購物車中尚無本產品，設置數量為1
                if (this._products[data.Id] == null) {
                    //============================沒有刪除到產品,或者已經刷新過頁面
                    if (del != "yes") {
                        //============================
                        for (var id in this._products) { subtotals_id++; }
                        if (subtotals_id <= 3) {
                            this._products[data.Id] = { Product: data, Quantity: 1 };
                            //獲取cookie        
                            //投放--用於刷新頁面後，判斷cookie是否存在，若存在繼續在cookie內添加,若不存在就把放置的產品保存到cookie中
                            SetOrderForm(this._products[data.Id].Product.Id);
                            // alert('dd');
                        }

                        // 刷新購物車的UI
                        if (productordered != "ordered") {
                            this._refreshShoppingCart();
                        }
                        else {
                            alert("已經添加了該產品!"); // 已經添加了該產品
                            productordered = null;
                        }
                        //============================已經刪除了產品
                    }
                    else {
                        this._products[data.Id] = { Product: data, Quantity: 1 };
                        SetOrderForm(this._products[data.Id].Product.Id);
                        this._refreshShoppingCart();
                    }
                    //============================

                }
                // 購物車中已經有本產品，將其數量加1
                else {
                    //======================
                    if (del != "yes") {
                        //======================                      
                        this._products[data.Id].Quantity++;
                        alert("已經添加了該產品!");
                    }
                    //===============
                    else {
                        var deled;
                        var hf_delid1 = document.getElementById("ctl00_ContentPlaceHolder1_hf_delid1").innerHTML;
                        var hf_delid1_array = hf_delid1.split("|");
                        for (i = 1; i < hf_delid1_array.length; i++) {
                            if (hf_delid1_array[i] == this._products[data.Id].Product.Id) {
                                deled = "yes"
                            }
                        }

                        if (deled != "yes") {
                            SetOrderForm(this._products[data.Id].Product.Id);
                            this._refreshShoppingCart();
                        }
                        else {
                            this._products[data.Id].Quantity++;
                            alert("已經添加了該產品!");
                        }
                    }
                    //===============
                }
            }
            else {
                alert("最多只能添加3個!"); // 最多只能添加3個
            }


            global_products = this._products;
            globalElement = this._element;


            // 將購物車背景顏色設置回白色
            //  this.get_element().style.backgroundColor = "#fff";

        }
    },
    //------------------------------------------------------------------------------------------------------
    // 某可拖動元素位於該投放目標對像中時的處理方法
    onDragEnterTarget: function(dragMode, dataType, data) {
        if (dataType == "Product" && data) {
            // 設置購物車的背景顏色為灰色
            //this.get_element().style.backgroundColor = "#E0E0E0";
        }
    },

    // 某可拖動元素離開該投放目標對像時的處理方法
    onDragLeaveTarget: function(dragMode, dataType, data) {
        if (dataType == "Product" && data) {
            // 將購物車背景顏色設置回白色
            //  this.get_element().style.backgroundColor = "#fff";
        }
    },

    // 某可拖動元素在該投放目標對像中拖動時的處理方法
    onDragInTarget: function(dragMode, dataType, data) {
    },

    //(2)------------------------------------------------------------------------------------------------------
    // 根據當前購物車中的產品列表刷新購物車的UI
    _refreshShoppingCart: function() {
        var cartBuilder = new Sys.StringBuilder();
        var id_total = 0;
        for (var id in this._products) {

            //===================================
            if (del == "yes") {
                var hf_delid1 = document.getElementById("ctl00_ContentPlaceHolder1_hf_delid1").innerHTML;
                var hf_delid1_array = hf_delid1.split("|");
                for (i = 1; i < hf_delid1_array.length; i++) {
                    if (hf_delid1_array[i] == id) {
                        cartBuilder.append("<div id=" + id + ">");
                        cartBuilder.append("<img border='0' width='76' height='76' src='product_images/" + this._products[id].Product.URL + "'/>");
                        //cartBuilder.append(" * ");
                        //cartBuilder.append(this._products[id].Quantity);
                        //Modify by Wilson Cokmm 2010-12-01
                        cartBuilder.append("<table border='0' cellpadding='0' cellspacing='0' width='75'><tr><td align='center' style='padding-bottom:15px;'><a href='#' onclick=\"deleteproduct(" + this._products[id].Product.Id + ",'" + this._products[id].Product.URL + "')\">移除</a></td></tr></table>");
                        //End of Modify by Wilson Cokmm 2010-12-01
                        cartBuilder.append("</div>");
                        id_total++;
                    }
                }
            }
            else {
                //===================================
                cartBuilder.append("<div id=" + id + ">");
                cartBuilder.append("<img border='0' width='76' height='76' src='product_images/" + this._products[id].Product.URL + "'/>");
                //cartBuilder.append(" * ");
                //cartBuilder.append(this._products[id].Quantity);
                //Modify by Wilson Cokmm 2010-12-01
                cartBuilder.append("<table border='0' cellpadding='0' cellspacing='0' width='75'><tr><td align='center' style='padding-bottom:15px;'><a href='#' onclick=\"deleteproduct(" + this._products[id].Product.Id + ",'" + this._products[id].Product.URL + "')\">移除</a></td></tr></table>");
                //End of Modify by Wilson Cokmm 2010-12-01
                cartBuilder.append("</div>");
                id_total++;
            }
        }
        //alert(cartBuilder);

        //用於刷新頁面後，判斷cookie是否存在，若存在繼續在cookie內添加,若不存在新建cookie
        var name = "cookie_products";
        var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));

        if (id_total == 1) //刷新頁面後
        {
            if (arr != null) {
                var car_table = unescape(arr[2]);
                //用新添加的加上原來cookie中的
                cartBuilder.append(car_table);
            }
        }
        else if (id_total == 2) {
            if (subtotals == 2) {
                var car_table1 = unescape(arr[2]);
                var car_table1string = car_table1.split("</div>");
                if (car_table1string.length >= 1) {
                    cartBuilder.append(car_table1string[1]);
                    cartBuilder.append("</div>");
                }
            }
        }

        this.get_element().innerHTML = cartBuilder.toString();


        //eddie--把購物車放入cookie_products裡面---------------------------------
        var Days = 1;
        var exp = new Date();
        exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
        document.cookie = "cookie_products=" + escape(cartBuilder.toString()) + ";expires=" + exp.toGMTString();
    },

    //------------------------------------------------------------------------------------------------------
    // 返回表示當前購物車中的產品Id以及數量的對像
    getProductsToBeOrdered: function() {
        var productsToBeOrdered = new Object();

        for (var id in this._products) {
            productsToBeOrdered[id] = this._products[id].Quantity;
        }

        return productsToBeOrdered;
    },


    // 初始化方法
    initialize: function() {
        // 初始化基類
        Dflying.ShoppingCartBehavior.callBaseMethod(this, "initialize");

        // 在DragDropManager中注冊該投放目標對像
        Sys.Preview.UI.DragDropManager.registerDropTarget(this);
    },

    // 析構方法
    dispose: function() {
        // 在DragDropManager中取消注冊該投放目標對像
        Sys.Preview.UI.DragDropManager.unregisterDropTarget(this);

        // disponse base class
        Dflying.ShoppingCartBehavior.callBaseMethod(this, "dispose");
    }
}

//最後在ASP.NET AJAX客戶端框架中注冊該ShoppingCartBehavior行為。可以看到該行為實現了IDropTarget接口： 
Dflying.ShoppingCartBehavior.registerClass("Dflying.ShoppingCartBehavior", Sys.UI.Behavior, Sys.Preview.UI.IDropTarget);
 
//調用Application對像的notifyScriptLoaded()方法，通知ASP.NET AJAX客戶端框架該腳本文件已經順利加載    
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();





//<--Start--從cookie中讀出訂單數據的函數
function ReadOrderForm(name)
{
    var cookieString=document.cookie;
    if (cookieString=="")
    {
        return false;
    }
    else
    {
        var firstChar,lastChar;
        firstChar=cookieString.indexOf(name);
        if(firstChar!=-1)
        {
            firstChar+=name.length+1;
            lastChar = cookieString.indexOf(";", firstChar);
            if(lastChar == -1) lastChar=cookieString.length;
            return cookieString.substring(firstChar,lastChar);
        }
        else
        {
            return false;
        }
    } 
}
//-->End 


//<--Start--添加商品至購物車的函數
function SetOrderForm(item_no)
{
    
    var cookieString=document.cookie;
    var mer_list=unescape(ReadOrderForm("cookie_products_id"));
    var Then = new Date();
    Then.setTime(Then.getTime()+30*60*1000);
    var item_detail="|"+item_no;
    
    if(mer_list==false)
    {
        document.cookie="cookie_products_id="+escape(item_detail)+";expires=" + Then.toGMTString();
        //alert("“"+item_name+"”\n"+"已經加入您的訂單(首次添加)！");
    }
    else
    {
        var mer = mer_list.split("|"); 
	    for(i=1;i<mer.length;i++)
	    {
	      //alert(mer[i]);
	       if(item_no==mer[i])
	       {
	           productordered="yes";
	          // alert("此商品您已添加\n請進入訂單修改數量！");
	       }
	    }   
        if(productordered=="yes")
        {
            productordered="ordered";
        }
        else
        {
            document.cookie="cookie_products_id=" + mer_list +escape(item_detail) +";expires=" + Then.toGMTString();
            //alert("“"+item_name+"”\n"+"已經加入您的訂單(重復添加)！");

            //===================
            //購物車總數
            var hf_totalorder1=document.getElementById("ctl00_ContentPlaceHolder1_hf_totalorder1").innerHTML;
            hf_totalorder1=parseInt(hf_totalorder1)+1;
            document.getElementById("ctl00_ContentPlaceHolder1_hf_totalorder1").innerHTML=hf_totalorder1;
            
            //修改購物車id數組           
            var hf_delid1=document.getElementById("ctl00_ContentPlaceHolder1_hf_delid1").innerHTML;
            hf_delid1= hf_delid1 + item_detail;
            document.getElementById("ctl00_ContentPlaceHolder1_hf_delid1").innerHTML=hf_delid1;
            
            
            //=====================
        }
    }
}
//-->End

//計算cookie定購了多少個產品
function calutetotal()
{
    var the_list =unescape(ReadOrderForm("cookie_products_id"));
    if (the_list=="false"||the_list.indexOf("|")==-1)
    {
        subtotals=0;
        //document.write("您還沒有選購任何商品！");
    }
    else
    {
        var broken_list = the_list.split("|");
         subtotals=broken_list.length-1;
    }
    //===================
    document.getElementById("ctl00_ContentPlaceHolder1_hf_totalorder1").innerHTML=subtotals;
   // alert("first tuo ="+subtotals);
    //=====================
    
}

//刪除已選產品
  function deleteproduct(id,producturl)
  {
  
      //=====================不刷新刪除
        var hf_totalorder1=document.getElementById("ctl00_ContentPlaceHolder1_hf_totalorder1").innerHTML;
        hf_totalorder1=parseInt(hf_totalorder1)-1;
        if(parseInt(hf_totalorder1)<=-1)
        {
           hf_totalorder1=-1;
        }
        document.getElementById("ctl00_ContentPlaceHolder1_hf_totalorder1").innerHTML=hf_totalorder1;
        
        
        var hf_delid1=document.getElementById("ctl00_ContentPlaceHolder1_hf_delid1").innerHTML;
        var hf_delid1_array=hf_delid1.split("|");
        for(i=1;i<hf_delid1_array.length;i++)
        {
           if(hf_delid1_array[i]==id)
           {
              var m_id="|"+id;
              hf_delid1=hf_delid1.replace(m_id,"");
           }
         }
        document.getElementById("ctl00_ContentPlaceHolder1_hf_delid1").innerHTML=hf_delid1;
        
        del="yes";
    //========================
    
    
    
     //========================================removeChild car 

      var shoppingCart=document.getElementById('shoppingCart');
    // alert(shoppingCart.innerHTML);
    var cardiv=document.getElementById(""+id+"");
    if(hf_totalorder1="-1")
    {
       //cardiv.removeNode(true);
	   cardiv.parentNode.removeChild(cardiv);
    }
    else
    {
       shoppingCart.removeChild(cardiv);
    }
     //alert(cardiv.innerHTML);
     //===========================================    
  

  
   //用於刪除cookie--cookie_products和cookie_products_id裡面的值
   
        var product_pic="cookie_products";
        var arr = document.cookie.match(new RegExp("(^| )"+product_pic+"=([^;]*)(;|$)"));       
        if(arr != null) 
        {
           var car_table=unescape(arr[2]);
           var car_tablestring = car_table.split("</div>");
           for(i=0;i<car_tablestring.length-1;i++)
           {   
              var strcompare="<div id="+id+"><img border='0' width='76' height='76' src='product_images/"+producturl+"'/><table border='0' cellpadding='0' cellspacing='0' width='75'><tr><td align='center' style='padding-bottom:15px;'><a href='#' onclick=\"deleteproduct("+id+",'"+producturl+"')\">移除</a></td></tr></table>";             
              if(car_tablestring[i]==strcompare)
              { 
                strcompare=strcompare+"</div>";
                car_table=car_table.replace(strcompare,"");
                var name="cookie_products";
                var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
                var Days = 30;
                var exp  = new Date();
                exp.setTime(exp.getTime() + Days*24*60*60*1000);
                document.cookie = "cookie_products="+ escape(car_table) + ";expires=" + exp.toGMTString(); 
              }
           }
        }   
        
        var cookieString=document.cookie;
        var mer_list=unescape(ReadOrderForm("cookie_products_id"));
        var mer = mer_list.split("|"); 
        for(i=1;i<mer.length;i++)
        {
           if(id==mer[i])
           {    
            id="|"+id;
            var idlist=mer_list.replace(id,"");
            var name="cookie_products_id";
            var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
            var Days = 30;
            var exp  = new Date();
            exp.setTime(exp.getTime() + Days*24*60*60*1000);
            document.cookie = "cookie_products_id="+ escape(idlist) + ";expires=" + exp.toGMTString();
           }
       } 
        
        try{
            DefaultCheck();
        } catch (ex)
        {
        } 
  }
  //-->End
