﻿///<reference path='global.js' />
///<reference path='effects.js' />
///<reference path='utils.js' />
$doorbuy = {
    init: function () {
    },
    show: function (id) {
        $FX.Time(300).Interval(10).Page.FadeIn("#000000", 80, null, 10);
        $utils.Interact({ action: "GetDoorParams", id: id, cache: true }, function (req) {
            var div = $doorbuy.opened = $G.Append(document.body, $G.Tag("div", "doorselector"));
            div.params = req;
//            var ss = res.sizes.replace(/ /gi, "").split(",");
//            var sa = [];
//            for (var i = 0; i < ss.length; i++) {
//                if (ss[i].indexOf("600x") > -1) {
//                    sa.push(ss[i] + " мм.");
//                }
//            }
//            div.params.doublesizes = sa.join(",");
            div.params.rtype = ""; // распашной

            div.cnt = $G.Append(div, $G.Tag("div", "inner"));
            //Закрыть
            div.closeBtn = $G.Append(div.cnt, $G.Tag("a", "win-close db fr", { href: "javascript://Закрыть окно;", title: "Закрыть окно" }));
            $G.Event.Add(div.closeBtn, "click", $doorbuy.close);

            div.wtitle = $G.Append(div.cnt, $G.Tag("h2", "mt0", null, "Выбор комплектации двери"));
            $G.Append(div.cnt, $G.Tag("div", "cb"));
            //Картинка
            div.img = $G.Append(div.cnt, $G.Tag("img", "db fl img", { src: $doorbuy.imgUrl + req.image }));
            //Белая область
            div.bcont = $G.Append(div.cnt, $G.Tag("div", "white fr"));
            div.white = $G.Append($G.Append(div.bcont, $G.Tag("div", "white")), $G.Tag("div", "cont"));
            //Название
            div.doorTitle = $G.Append(div.white, $G.Tag("h3", "mt0", null, req.title));
            //Размер и кол-во дверей
            div.amount = $G.Append(div.white, $G.Tag("div", "fr"));
            div.amount.innerHTML = "Количество комплектов:";
            $G.Append(div.amount, $G.Tag("div", "ctrl fr stepper ml10", { name: "amount", compound: "doorbuy", limitUp: "100", limitDown: "1", step: "1", value: "1" }));
            //--
            $G.Append(div.white, $G.Tag("div", "fl mr10", null, "Размер:"));
            $G.Append(div.white, $G.Tag("div", "fl select ctrl", { compound: "doorbuy", name: "sizes", options: req.sizes.replace(/ /gi, "").replace(/,/gi, " мм.,") }, req.sizes.split(', ')[0] + " мм.:" + req.sizes.split(', ')[0] + " мм."));
            $G.Append(div.white, $G.Tag("div", "cb"));
            //--
            $G.Append(div.white, $G.Tag("div", "hr mt10 mb10"));
            $G.Append(div.white, $G.Tag("h4", "fr mt0 pb15 mb0", null, "Цена"));
            $G.Append(div.white, $G.Tag("h4", "fl mt0 pb15 mb0", null, "Комплектация"));
            $G.Append(div.white, $G.Tag("div", "cb"));
            //--Параметры
            $G.Append(div.white, $G.Tag("a", "check ctrl check-des fl mb10", { name: "isdouble", compound: "doorbuy", css: "check-sel,check-des" }, "Полотно распашное"));
            $G.Append(div.white, $G.Tag("div", "cb"));
            div.framePrice = $G.Append(div.white, $G.Tag("span", "fr", null, (req.framePrice || "0") + " руб."));
            $G.Append(div.white, $G.Tag("a", "check ctrl check-des fl mb10", { name: "isframe", compound: "doorbuy", css: "check-sel,check-des" }, "Коробка"));
            $G.Append(div.white, $G.Tag("div", "cb"));
            div.addPrice = $G.Append(div.white, $G.Tag("span", "fr", null, (req.priceAdd12CM || "0") + " руб."));
            $G.Append(div.white, $G.Tag("a", "check ctrl check-des fl mb10 mr10", { name: "isadd", compound: "doorbuy", css: "check-sel,check-des" }, "Добор"));
            //            $G.Append(div.white, $G.Tag("div", "fl select ctrl", { style: { width: "200px" }, compound: "doorbuy", name: "addtype", options: "Ламинированный 12 см.:" + req.priceAdd12CM + ",Шпонированный 14 см.:" + req.priceAdd14CM }, "Ламинированный 12 см.:" + req.priceAdd12CM)).style.visibility = "hidden";
            $G.Append(div.white, $G.Tag("div", "cb"));
            div.borderPrice = $G.Append(div.white, $G.Tag("span", "fr", null, (req.borderPrice || "0") + " руб."));
            $G.Append(div.white, $G.Tag("a", "check ctrl check-des fl mb10 mr10", { name: "isborder", compound: "doorbuy", css: "check-sel,check-des" }, "Наличник"));
            $G.Append(div.white, $G.Tag("div", "fl select ctrl", { compound: "doorbuy", name: "borders", options: "на 1 сторону:1,на 2 стороны:2" }, "на 1 сторону:1")).style.visibility = "hidden";
            $G.Append(div.white, $G.Tag("div", "cb"));
            div.furniture = $G.Append(div.white, $G.Tag("div"));
            $G.Append(div.furniture, $G.Tag("h4", "fr mt10 pb15 mr-p mb0", null, "Цена"));
            $G.Append(div.furniture, $G.Tag("h4", "fr mt10 pb15 mr-am mb0", null, "Кол-во."));
            div.furniture.ctitle = $G.Append(div.furniture, $G.Tag("h4", "fl mt10 pb15 mb0", null, "Фурнитура"));
            $G.Append(div.furniture, $G.Tag("div", "cb"));
            $G.Append(div.furniture, $G.Tag("div", "hr mt0 mb0"));
            div.furniture.scroll = $G.Append(div.furniture, $G.Tag("div", "f-scroll"));
            div.addAccessories = $G.Append(div.furniture.ctitle, $G.Tag("a", "link ml15", { href: "javascript://Добавить фурнитуру к заказу;", title: "Добавить к заказу фурнитуру" }, "Выбрать фурнитуру"));
            $G.Event.Add(div.addAccessories, "click", $doorbuy.showAccs);
            //--
            $G.Append(div.white, $G.Tag("div", "hr mt0 mb10"));
            div.fullPrice = $G.Append(div.white, $G.Tag("strong", "db fr", null, "Итого: 0 руб."));
            div.addToBasket = $G.Append(div.white, $G.Tag("a", "fl link", { href: "javascript://;" }, "Добавить в корзину"));
            $G.Event.Add(div.addToBasket, "click", $doorbuy.addToCart);
            $G.Append(div.cnt, $G.Tag("div", "cb"));
            $CS.init(div);
            $G.ShowInPageCenter(div);
            //Назначаем ончендж
            var sizes = $CS.get("doorbuy.sizes");
            if (sizes) {
                sizes.addOnChange(function () {
                    if (this.getValue().indexOf("600x") > -1) {
                        $CS.get("doorbuy.isdouble").enable();
                    }
                    else {
                        $CS.get("doorbuy.isdouble").disable();
                        $CS.get("doorbuy.isdouble").unCheck();
                    }
                    $CS.get("doorbuy.isdouble").change();

                } .bind(sizes));
            }

            var rasp = $CS.get("doorbuy.isdouble"); //Распашной
            if (rasp) {
                if (req.sizes.indexOf("600x") == -1) {
                    rasp.disable();
                } else {
                    var opts = $G.Get.ByTag($CS.get("doorbuy.sizes").down, "a");

                    for (var i = 0; i < opts.length; i++) {

                        var val = opts[i].innerHTML.toString().trim();
                        if (val.indexOf("600x") > -1) {
                                $CS.get("doorbuy.sizes").set(val, val);
                                set = true;
                                break;
                            
                        }
                    }
                    rasp.addOnChange(function () {
                        var opts = $G.Get.ByTag($CS.get("doorbuy.sizes").down, "a");
                        var set = false;
                        var checked = this.checked();
                        for (var i = 0; i < opts.length; i++) {
                            if (checked) {
                                var val = opts[i].innerHTML.toString().trim();
                                if (val.indexOf("600x") > -1) {
                                    if (!set) {
                                        $CS.get("doorbuy.sizes").set(val, val);
                                        set = true;
                                    }
                                }
                                else {
                                    opts[i].style.display = "none";
                                }
                            }
                            else {
                                opts[i].style.display = "";
                            }
                        }
                        $doorbuy.opened.params.rtype = this.checked() ? "2" : "";
                        var accp = $CS.get("doorbuy.accprices");
                        if (accp) {
                            for (var i = 0; i < accp.options.length; i++) {
                                if (accp.options[i].params.isHinge) {
                                    var nv = (+$CS.get("doorbuy.amount").getValue()) * 2 * (this.checked() ? 2 : 1);
                                    accp.options[i].setValue(nv > 1 ? nv : 1);
                                }
                            }
                        }
                        $doorbuy.calc();
                    } .bind(rasp));
                }
            }
            var am = $CS.get("doorbuy.amount");
            if (am) {
                am.addOnChange(function () {
                    var accp = $CS.get("doorbuy.accprices");
                    if (accp) {
                        var ov = +(this.oldv || 1);
                        var id = $CS.get("doorbuy.isdouble").checked() ? 2 : 1;
                        for (var i = 0; i < accp.options.length; i++) {
                            if (accp.options[i].params.isHinge) {
                                var v = +accp.options[i].getValue();
                                var d = v - ov * 2 * id;
                                var nv = +this.getValue() * 2 * id + d;
                                accp.options[i].setValue(nv > 1 ? nv : 1);
                            }
                            else {
                                var v = +accp.options[i].getValue();

                                var nv = +this.getValue() + v - ov;
                                accp.options[i].setValue(nv);
                            }
                        }
                    }
                    $doorbuy.calc();
                    this.oldv = this.getValue();
                } .bind(am));
            }
            var cs = ["ismaster", "isframe", "borders", "deliveryKm", "isadd"]; // конечные контролы
            for (var i = 0; i < cs.length; i++) {
                var c = $CS.get("doorbuy").get(cs[i]);
                if (c) { c.addOnChange($doorbuy.calc); }
            }
            var c = $CS.get("doorbuy.isborder");
            if (c) {
                c.addOnChange(function () {
                    var c = $CS.get("doorbuy.borders"); // наличники
                    c.obj.style.visibility = this.checked() ? "" : "hidden";
                    c.setValue("1", false);
                    $doorbuy.calc();
                } .bind(c));
            }
            //            c = $CS.get("doorbuy.isadd");
            //            if (c) {
            //                c.addOnChange(function () {
            //                    var c = $CS.get("doorbuy.addtype"); // наличники
            //                    c.obj.style.visibility = this.checked() ? "" : "hidden";
            //                    c.setValue($doorbuy.opened.params.priceAdd12CM, false);

            //                    $doorbuy.calc();
            //                } .bind(c));
            //            }
            //            c = $CS.get("doorbuy.addtype");
            //            if (c) {
            //                c.addOnChange(function () {
            //                    $doorbuy.calc();
            //                } .bind(c));
            //            }
            $doorbuy.calc();

            //---------------------------------------Теперь немного окна с фурнитурой--------------------------------

            div.accessories = $G.Append($G.Append(div.bcont, $G.Tag("div", "white")), $G.Tag("div", "cont"));

            $G.Append(div.accessories, $G.Tag("h3", "mt0 mb0", null, "Выберите фурнитуру"));
            div.accessories.cats = $G.Append(div.accessories, $G.Tag("div", "sub-cats mb5 mt0"));
            $G.Append(div.accessories, $G.Tag("div", "hr"));
            div.accessories.pre = $G.Append(div.accessories, $G.Tag("img", "accs-pre", { src: "/res/img/im_loader.gif", alt: "Подождите..." }));
            div.accessories.pre.style.display = "none";
            div.accscroll = $G.Append(div.accessories, $G.Tag("div", "scroll"));
            $G.Append(div.accessories, $G.Tag("div", "hr"));
            div.addToDoor = $G.Append(div.accessories, $G.Tag("a", "fl link", { href: "javascript://;" }, "Вернуться к параметрам двери"));
            $G.Event.Add(div.addToDoor, "click", $doorbuy.backToDoor);
            $G.Append(div.cnt, $G.Tag("div", "cb"));

            //-------------------------------------Немного карточки ручки-------------------------------------------------
            div.card = $G.Append($G.Append(div.bcont, $G.Tag("div", "white")), $G.Tag("div", "cont"));
            //div.card.img = $G.Append(div.card, $G.Tag("div", "img"));
            div.card.ctitle = $G.Append(div.card, $G.Tag("h3", "mt0 fl", null, ""));
            $G.Append(div.card, $G.Tag("div", "cb"));
            $G.Append(div.card, $G.Tag("div", "hr mb10"));
            $G.Append(div.card, $G.Tag("h4", "fr mt10 pb15", null, "Цена"));
            $G.Append(div.card, $G.Tag("h4", "fl mt10 pb15", null, "Модификация"));
            $G.Append(div.card, $G.Tag("div", "cb"));
            div.card.radios = $G.Append(div.card, $G.Tag("div")); //Контейнет для радио-контролов выбора модификации ручки
            $G.Append(div.card, $G.Tag("div", "hr mt10 mb10"));
            div.addToDoor = $G.Append(div.card, $G.Tag("a", "fl link", { href: "javascript://;" }, "Добавить ручку к комплекту"));
            $G.Event.Add(div.addToDoor, "click", $doorbuy.select);
            div.backToAccs = $G.Append(div.card, $G.Tag("a", "fr link", { href: "javascript://;" }, "Вернуться к списку"));
            $G.Event.Add(div.backToAccs, "click", $doorbuy.backToAccs);
            $G.Append(div.cnt, $G.Tag("div", "cb"));

        }, $doorbuy.preloader, "/Handlers/utils.ashx");
    },
    accsLoader: {
        Show: function () {
            $doorbuy.opened.accessories.pre.style.display = "";
        },
        Hide: function () {
            $doorbuy.opened.accessories.pre.style.display = "none";
        }
    },
    //    getAddType: function () {
    //        var div = $doorbuy.opened;
    //        if (div) {
    //            if ($CS.get("doorbuy.addtype").getValue().toString() == div.params.priceAdd12CM.toString())
    //                return "PriceAdd12CM";
    //            else
    //                return "PriceAdd14CM";
    //        }
    //        return "";
    //    },
    addToCart: function () {
        var div = $doorbuy.opened;
        div.addToBasket.disabled = true;
        var params = { action: "AddDoorToCart", id: div.params.id };
        params.isDouble = $CS.get("doorbuy.isdouble").checked() ? "True" : "False";
        params.isFrame = $CS.get("doorbuy.isframe").checked() ? "True" : "False";
        params.isBorder = $CS.get("doorbuy.isborder").checked() ? "True" : "False";
        params.isAdd = $CS.get("doorbuy.isadd").checked() ? "True" : "False";
        //        params.addType = $doorbuy.getAddType();
        params.isDoubleBorder = $CS.get("doorbuy.borders").getValue() == "2" ? "True" : "False";
        params.size = $CS.get("doorbuy.sizes").getValue().replace(" мм.", "");
        params.amount = $CS.get("doorbuy.amount").getValue();
        params.accessories = [];
        var accs = $CS.get("doorbuy.accprices");
        if (accs) {
            for (var i = 0; i < accs.options.length; i++) {
                params.accessories.push("{id:" + (+accs.options[i].params.id) + ",type:'" + accs.options[i].params.alias + "',amount:" + (+accs.options[i].getValue()) + "}");
            }
        }
        params.accessories = "[" + params.accessories.join(",") + "]";
        $utils.Interact(params, function (req) {
            div.addToBasket.disabled = false;
            //$shop.endAddToBasket.bind({ basketDom: $G.GET("#shopBasket") })(req.cartHTML);
            if ($G.GET("#shopBasket"))
                $G.GET("#shopBasket").innerHTML = req.cartHTML;
            window.scrollTo(0, 0);
            $doorbuy.close();
        }, null, "/Handlers/utils.ashx");
    },
    select: function () {
        var div = $doorbuy.opened;
        div.furniture.style.display = "";
        var rows = $G.Get.ByClass(div.furniture, "row");
        var inRows = false;
        var radios = $CS.get("doorbuy.radios");
        var price = { title: "", price: 0, alias: "Cena" };
        if (radios) {
            for (var i = 0; i < radios.options.length; i++) {
                if (radios.options[i].checked()) {
                    price = div.card.params.price[radios.options[i].name];
                    price.alias = radios.options[i].name;
                    price.acctitle = div.card.params.topGroup.title /*+ (div.card.params.group.title == div.card.params.topGroup.title ? "" : ", " + div.card.params.group.title) */ + ", " + div.card.params.title + ", " + price.title;
                    break;
                }
            }
        }
        else {
            price.title = "Цена";
            price.price = +div.card.params.price;
            price.acctitle = div.card.params.topGroup.title /*+ (div.card.params.group.title == div.card.params.topGroup.title ? "" : ", " + div.card.params.group.title) */ + ", " + div.card.params.title;
        }
        if (!price.title) {
            return;
        }
        for (var i = 0; i < rows.length; i++) {
            if (rows[i].params.id == div.card.params.id && rows[i].params.alias == price.alias) {
                var p = $CS.get("doorbuy.accprices").get("p" + rows[i].params.id + rows[i].params.alias);
                if (p) {
                    p.setValue((+p.getValue()) + 1);
                }
                inRows = true;
                break;
            }
        }
        if (!inRows) {
            var row = $G.Append(div.furniture.scroll, $G.Tag("div", "row pr10 pt5 pb5 pl0"));
            row.params = price;
            row.params.id = div.card.params.id;
            row.params.isHinge = div.card.params.topGroup.id == 23;
            row.price = $G.Append(row, $G.Tag("div", "fr row-price", null, row.params.price + " руб."));
            $G.Append(row, $G.Tag("div", "ctrl fr stepper ml10", { name: "p" + row.params.id + row.params.alias, compound: "doorbuy.accprices", limitUp: "100", limitDown: "1", step: "1", value: row.params.isHinge ? (+$CS.get("doorbuy.amount").getValue() * 2 * ($CS.get("doorbuy.isdouble").checked() ? 2 : 1)) : $CS.get("doorbuy.amount").getValue() }));
            $G.Event.Add($G.Append(row, $G.Tag("a", "removeBtn fl db", { href: "javascript://;", title: "Удалить фурнитуру" })), "click", function () {
                var r = $CS.get("doorbuy.accprices.p" + this.params.id + this.params.alias);
                if (r) {
                    r.dispose();
                }
                this.parentNode.removeChild(this);
                var div = $doorbuy.opened;
                //                var rows = $G.Get.ByClass(div.furniture, "row");
                //                if (rows.length == 0) {
                //                    div.furniture.style.display = "none";
                //                }
            } .bind(row));
            row.ctitle = $G.Append(row, $G.Tag("span", null, null, row.params.acctitle));
            $G.Append(row, $G.Tag("div", "cb"));
            $CS.init(row);
            var s = $CS.get("doorbuy.accprices.p" + row.params.id + row.params.alias);
            if (s) {
                s.addOnChange($doorbuy.calc);
                s.params = row.params;
            }
        }
        $doorbuy.calc();
        $doorbuy.backToDoor();
    },
    backToAccs: function () {
        var radios = $CS.get("doorbuy.radios");
        if (radios)
            radios.dispose();
        var div = $doorbuy.opened;
        div.card.radios.innerHTML = "";
        div.accessories.parentNode.style.display = "";
        $FX.Time(500).Interval(10).AnimateStyle(div.accessories.parentNode, "height", 500, 500, function () {
            this.card.parentNode.style.display = "none";
            this.white.parentNode.style.display = "none";
        } .bind(div));
    },
    backToDoor: function () {
        var div = $doorbuy.opened;
        div.white.parentNode.style.display = "";
        $FX.Time(500).Interval(10).AnimateStyle(div.white.parentNode, "height", 500, 500, function () {
            this.accessories.parentNode.style.display = "none";
            this.card.parentNode.style.display = "none";
        } .bind(div));
    },
    selectAcc: function (o) {
        var radios = $CS.get("doorbuy.radios");
        if (radios)
            radios.dispose();
        var div = $doorbuy.opened;
        div.card.radios.innerHTML = "";
        div.card.params = o.params;
        if (!$G.IsString(o.params.price)) {
            //div.card.img.style.backgroundImage = "url(" + $doorbuy.imgUrl + o.params.image + ")";
            div.card.ctitle.innerHTML = "Ручки, " + o.params.group.title + ", модель: " + o.params.title;
            for (var i in o.params.price) {
                if (o.params.price[i] && o.params.price[i].title) {
                    $G.Append(div.card.radios, $G.Tag("span", "fr", null, (o.params.price[i].price || "0") + " руб."));
                    $G.Append(div.card.radios, $G.Tag("a", "check ctrl check-des fl mb10", { name: i, compound: "doorbuy.radios", css: "check-sel,check-des" }, o.params.price[i].title));
                    $G.Append(div.card.radios, $G.Tag("div", "cb"));
                }
            }
            $CS.init(div.card.radios);
            var rads = $CS.get("doorbuy.radios");
            if (rads) {
                for (var i = 0; i < rads.options.length; i++) {
                    rads.options[i].value = o.params.price[rads.options[i].name];
                    //rads.options[i].valueOf.price = o.params.price[rads.options[i].name];
                    rads.options[i].addOnChange(function () {
                        if (this.checked()) {
                            var rads = $CS.get("doorbuy.radios");
                            if (rads) {
                                for (var i = 0; i < rads.options.length; i++) {
                                    if (rads.options[i] != this) {
                                        rads.options[i].unCheck();
                                    }
                                }
                            }
                        }
                    } .bind(rads.options[i]));
                }
            }
            div.card.parentNode.style.display = "";
            $FX.Time(500).Interval(10).AnimateStyle(div.accessories.parentNode, "height", -500, 0, function () {
                this.accessories.parentNode.style.display = "none";
            } .bind(div));
        }
        else {
            $doorbuy.select();
        }
    },
    accsCat: function (cat) {
        var div = $doorbuy.opened;
        var as = $G.Get.ByTag(div.accessories.cats, "a");
        for (var i = 0; i < as.length; i++) {
            $G.ClassName.Replace(as[i], "selected", "");
        }
        if (cat == "all") {
            var divs = $G.Get.ByTag(div.accscroll, "div");
            for (var i = 0; i < divs.length; i++) {
                divs[i].style.display = "";
            }
            $G.ClassName.Replace(as[0], "selected", "selected");
            return;
        }
        for (var i = 0; i < as.length; i++) {
            if (as[i].cat.id == cat.id) {
                $G.ClassName.Replace(as[i], "selected", "selected");
            }
        }
        var hrows = $G.Get.ByClass(div.accscroll, "hrow");
        for (var i = 0; i < hrows.length; i++) {
            if (hrows[i].cat.id != cat.id) {
                var next = $G.GET(hrows[i], "next:1");
                while (next && !$G.ClassName.Has(next, "hrow")) {
                    next.style.display = "none";
                    next = $G.GET(next, "next:1");
                }
                hrows[i].style.display = "none";
            }
            else {
                var next = $G.GET(hrows[i], "next:1");
                while (next && !$G.ClassName.Has(next, "hrow")) {
                    next.style.display = "";
                    next = $G.GET(next, "next:1");
                }
                hrows[i].style.display = "";
            }
        }
    },
    showAccs: function () {
        var div = $doorbuy.opened;
        div.accessories.parentNode.style.display = "";
        div.accessories.parentNode.style.height = "";
        $FX.Time(500).Interval(10).AnimateStyle(div.white.parentNode, "height", -500, 0, function () {
            this.white.parentNode.style.display = "none";
            this.card.parentNode.style.display = "none";
        } .bind(div));
        div.accscroll.innerHTML = "";
        $utils.Interact({ action: "GetAccessories", cache: true }, function (req) {
            $doorbuy.currentAccs = req;
            div.accessories.cats.innerHTML = "";
            var a = $G.Append(div.accessories.cats, $G.Tag("a", "cat mr10 selected", null, "Вся фурнитура"));
            $G.Event.Add(a, "click", $doorbuy.accsCat.bind(a, "all"));
            a.cat = { id: -1 };
            for (var i = 0; i < req.length; i++) {
                a = $G.Append(div.accessories.cats, $G.Tag("a", "cat mr10", null, req[i].title));
                $G.Event.Add(a, "click", $doorbuy.accsCat.bind(a, req[i]));
                a.cat = req[i];
                for (var j = 0; j < req[i].sub.length; j++) {
                    $G.Append(div.accscroll, $G.Tag("div", "hrow p10 pt5 pb5 mb10", null, (req[i].title == req[i].sub[j].title ? req[i].title : [req[i].title, req[i].sub[j].title].join(" ")))).cat = req[i];
                    var g = req[i].sub[j];
                    for (var k = 0; k < g.sub.length; k++) {
                        var o = $G.Append(div.accscroll, $G.Tag("div", "cell fl mb25" + ((k + 1) % 4 == 0 ? "" : " mr25") + (k % 4 == 0 ? " ml15" : "")));
                        o.style.backgroundImage = "url(" + $doorbuy.imgUrl + g.sub[k].image + ")";
                        o.params = g.sub[k];
                        o.params.group = g;
                        o.params.topGroup = req[i];
                        $G.Event.Add(o, "click", $doorbuy.selectAcc.bind($doorbuy, o));
                    }
                    $G.Append(div.accscroll, $G.Tag("div", "cb"));
                }
            }
        }, $doorbuy.accsLoader, "/Handlers/utils.ashx");
    },
    preloader: { Show: function () { }, Hide: function () { } },
    calc: function () {
        var div = $doorbuy.opened;
        var a = div.params.rtype;
        var amount = +$CS.get("doorbuy.amount").getValue();
        var sum = div.params.doorPrice * (a ? +a : 1) * amount;
        div.framePrice.innerHTML = div.params["framePrice" + a] + " руб.";
        if ($CS.get("doorbuy.isframe").checked())
            sum += +div.params["framePrice" + a] * amount;
        div.addPrice.innerHTML = div.params["addPrice" + a] + " руб.";
        if ($CS.get("doorbuy.isadd").checked()) {
            //div.addPrice.innerHTML = $CS.get("doorbuy.addtype").getValue() + " руб.";
            sum += +div.params["addPrice" + a] * amount;
        }
        div.borderPrice.innerHTML = ((+div.params["borderPrice" + a]) * (+$CS.get("doorbuy.borders").getValue())) + " руб.";
        if ($CS.get("doorbuy.isborder").checked())
            sum += (+div.params["borderPrice" + a]) * (+$CS.get("doorbuy.borders").getValue()) * amount;
        var ams = $CS.get("doorbuy.accprices");
        if (ams) {
            for (var i = 0; i < ams.options.length; i++) {
                sum += (+ams.options[i].getValue()) * (+ams.options[i].params.price);
            }
        }
        div.fullPrice.innerHTML = "Итого: " + sum + " руб.";
    },
    close: function () {
        var db = $CS.get("doorbuy");
        if (db) {
            db.dispose();
        }
        if ($doorbuy.opened) {
            $doorbuy.opened.parentNode.removeChild($doorbuy.opened);
            $doorbuy.opened = null;
            $FX.Time(300).Interval(10).Page.FadeOut("#000000");
        }
    }
}
