﻿/// <reference path="../k2046.js" />
/// <reference path="../Async.js" />
/// <reference path="../Func/DefaultText.js" />
K2046.Shopping = {
    Add: function(guid, quantity) {
        quantity = parseInt(quantity);
        if (!quantity || isNaN(quantity)) {
            quantity = 1;
        }
        K2046.Ajax.Post({
            url: "/Ajax/AjaxRequest.aspx?Action=AddMerchandise"
            , method: "post"
            , data: "ID=" + guid + "&Quantity=" + quantity
            , success: function(result) {
                K2046.SetHtml("header_sc_num", result.Quantity);
                K2046.SetHtml("sc_price_total", "" + K2046.Round(result.TotalPrice, 2, true));
            }
            , failed: function(result) {
                var msg = "对不起，商品添加失败。";
                if (result.msg) {
                    msg += "失败原因：\r\n" + result.msg;
                }
                msg += "\r\n请刷新页面后重试。";
            }
        });
    }

    , Remove: function(options) {
        if (!confirm("您确定要从购物车中删除这件商品吗？")) {
            return;
        }
        var guid = options.ID;
        if (!guid && options.index != undefined) {
            guid = K2046.GetValue("Merchandise" + options.index);
        }
        if (!guid) {
            return;
        }
        K2046.Ajax.Post({
            url: "/Ajax/AjaxRequest.aspx?Action=RemoveMerchandise"
            , method: "post"
            , data: "ID=" + guid
            , success: function(result) {
                K2046.SetHtml("header_sc_num", result.Quantity);
                K2046.SetHtml("sc_price_total", "" + K2046.Round(result.TotalPrice, 2, true));
                if (options.index != undefined) {
                    K2046.Dom.Remove("sc_item_" + options.index);
                }
                //K2046.SetHtml("sc_price_total", K2046.Round(result.MerchandisePrice, 2, true));
            }
            , failed: function(result) {
                var msg = "对不起，商品删除失败。";
                if (result.msg) {
                    msg += "失败原因：\r\n" + result.msg;
                }
                msg += "\r\n请刷新页面后重试。";
            }
        });
    }

    , Update: function(options) {
        var element = options.element, index = options.index;
        if (element.changed) {
            element.changed = false;
            K2046.Ajax.Post({
                url: "/Ajax/AjaxRequest.aspx?Action=UpdateMerchandise"
                , method: "post"
                , data: K2046.Collect("sc_item_" + index)
                , success: function(result) {
                    K2046.SetHtml("header_sc_num", result.Quantity);
                    K2046.SetHtml("sc_price_total", "" + K2046.Round(result.TotalPrice, 2, true));
                    K2046.SetHtml("sc_item_price_" + index, "¥" + K2046.Round(result.MerchandisePrice, 2, true));
                }
                , failed: function(result) {
                    var msg = "对不起，商品更新失败。";
                    if (result.msg) {
                        msg += "失败原因：\r\n" + result.msg;
                    }
                    msg += "\r\n请刷新页面后重试。";
                }
            });
        }
    }

    , SetChanged: function(element) {
        element.changed = true;
    }

    , Load: function() {

    }

    , Init: function() {
        var des = K2046.$Name("Description");
        if (des && des.length) {
            for (var x = 0; x < des.length; x++) {
                if (des[x].tagName.toLowerCase() == "input") {
                    K2046.DefaultText.Attach(des[x], { Default: "你对商品的特殊要求，如颜色等…" });
                }
            }
        }
    }

    , AttachEvent: function() {
        for (var x = 0; x >= 0; x++) {
            var q = K2046.$("Quantity" + x), d = K2046.$("Description" + x), r = K2046.$("Remove" + x);
            if (!q || !d || !r) {
                break;
            }
            K2046.Events.On(d, "change", K2046.Shopping.SetChanged, d);
            K2046.Events.On(d, "blur", K2046.Shopping.Update, { element: d, index: x });
            K2046.Events.On(q, "change", K2046.Shopping.SetChanged, q);
            K2046.Events.On(q, "blur", K2046.Shopping.CheckQuantity, q);
            K2046.Events.On(q, "blur", K2046.Shopping.Update, { element: q, index: x });
            K2046.Events.On(r, "click", K2046.Shopping.Remove, { index: x });
        }
    }

    , CheckQuantity: function(element) {
        var v = parseInt(element.value);
        if (isNaN(v) || v < 1) {
            element.value = 1;
        }
    }
};

K2046.Events.On(window, "load", K2046.Shopping.Init);