﻿/// <reference path="../jquery.common.js" />
/// <reference path="../jquery.js" />
/// <reference path="../zw_Runtime.js" />
/// <reference path="../UC/zw_AjaxHelpers.js" />
/// <reference path="../UC/zw_History.js" />

var zw_ordersbase =
    {
        initialized: false,
        expandedDocParameterName: "expdoc",
        init: function() {

            if (zw_ordersbase.initialized)
                return;
            zw_ordersbase.initialized = true;

            $('a[href*="/' + MvcActions.OrdersController.Name + '/' + MvcActions.OrdersController.Actions.Details + '/"]').live('click', function(event) {
                zw_ordersbase.get_toggle(this);
                return false;
            });
            $('a[href*="/' + MvcActions.CartController.Name + '/' + MvcActions.CartController.Actions.Copy + '/"]').live('click', function(event) {
                cart_v2.set_copy(this);
                return false;
            });
            $('a[href*="/' + MvcActions.OrdersController.Name + '/' + MvcActions.OrdersController.Actions.Payment + '/"]').live('click', function(event) {
                zw_ordersbase.get_printform(this);
                return false;
            });

            $('#' + Constants.zw_OrdersBase_T.filterButtonID).live('click', function(event) {
                zw_ordersbase.get_orders(this);
                return false;
            });
            $('#' + Constants.zw_OrdersBase_T.clearfilterButtonID).live('click', function(event) {
                zw_ordersbase.set_clearfilter(this);
                return false;
            });

            zw_ordersbase.registerHandlers();
        },

        initExpandedDocs: function() {
            zw_ordersbase.initExpandedDocForControl(Constants.zw_OrdersByOrders.ID);
            zw_ordersbase.initExpandedDocForControl(Constants.zw_OrdersBySales.ID);
            zw_ordersbase.initExpandedDocForControl(Constants.zw_OrdersByOrdersLines.ID);
        },
        registerHandlers: function() {
            zw_ordersbase.registerHandlerFor(Constants.zw_OrdersByOrders.ID);
            zw_ordersbase.registerHandlerFor(Constants.zw_OrdersBySales.ID);
            zw_ordersbase.registerHandlerFor(Constants.zw_OrdersByOrdersLines.ID);
        },

        registerHandlerFor: function(controlId) {
            $(controlId).each(function(i, element) {
                ZetaHistory.registerHandler(controls.uniqueKey(element) + zw_ordersbase.expandedDocParameterName, zw_ordersbase.expandedDocumentChanged);
            });
        },
        initExpandedDocForControl: function(controlId) {
            $(controlId).each(function(i, element) {
                zw_ordersbase.expandedDocumentChanged(controls.uniqueKey(element) + zw_ordersbase.expandedDocParameterName, ZetaHistory.getCurrentParameters());
            });
        },
        expandedDocumentChanged: function(parameterName, parameters) {
            var expandedDocs = parameters[parameterName];
            if (expandedDocs == undefined) {
                expandedDocs = [];
            } else {
                expandedDocs = expandedDocs.split(",");
            }


            var controlName = parameterName.replace(zw_ordersbase.expandedDocParameterName, "");
            var control = controls.findByUniqueKey(controlName);


            control.find('a[href*="/' + MvcActions.OrdersController.Name + '/' + MvcActions.OrdersController.Actions.Details + '/"]')
                .each(function(i, element) {
                    element = $(element);
                    var docId = element.attr("href").split("/").pop().split("?")[0];

                    var needExpanded = $.inArray(docId, expandedDocs) != -1;
                    var currentExpanded = controls.isExpanded(element);
                    if (needExpanded != currentExpanded) {
                        zw_ordersbase.toggleElement(control, element, docId);
                    }
                });

        },

        get_container: function(element) {
            var control = element.parents(Constants.zw_OrdersByOrders.ID);
            if (!control.length)
                control = element.parents(Constants.zw_OrdersBySales.ID);
            if (!control.length)
                control = element.parents(Constants.zw_OrdersByOrdersLines.ID);
            return control;
        },

        set_clearfilter: function(element) {
            element = $(element);
            var control = zw_ordersbase.get_container(element);
            controls.set_clearFilter(control);

            control.find("#" + Constants.zw_OrdersBase_T.submittedManuallyFieldID).val("False");
            var queryBefore = ZetaHistory.getQuery();
            zw_ordersbase.get_orders(element);
            var queryAfter = ZetaHistory.getQuery();

            if (queryBefore == queryAfter) {
                //refresh manually
                ZetaControlRefresher.Refresh(controls.uniqueKey(control));
            }

            return false;
        },

        get_orders: function(element) {
            element = $(element);
            var control = zw_ordersbase.get_container(element);

            ZetaControlRefresher.SubmitControl(control);
        },
        toggleElement: function(container, element, documentID) {
            var contentContainer = container.comments(true,
                "CONTENT/JournalLines/" + Constants.zw_OrdersBase_T.documentID + "=" + documentID);


            var url = MvcActions.OrdersController.Details(true, documentID);
            url = url + "&" + AjaxHelper.parseControlPropertiesToUrl(container);

            controls.get_expandcollapse(element, contentContainer, url);
        },

        get_toggle: function(element) {

            element = $(element);

            var control = zw_ordersbase.get_container(element);

            var filter = element[0].href.split("/").pop();
            filter = filter.split("?")[0];

            var currentExpanded = controls.isExpanded(element);

            var parameterName = controls.uniqueKey(control) + zw_ordersbase.expandedDocParameterName;
            if (currentExpanded) {
                ZetaHistory.removeParameterFromGroup(parameterName, filter);
            } else {
                ZetaHistory.addParameterToGroup(parameterName, filter);
            }
        },

        get_printform: function(element) {

            element = $(element);

            var filter = element[0].href.split("/").pop();
            var url = MvcActions.OrdersController.Payment(filter);

            $.post(url, null, function(responseText) {
                var paymentDivID = ("PaymentDiv-" + (new Date()).getTime());

                var PaymentDiv = "<div id='" + paymentDivID + "' style='width: 672px; padding:0'>" + "<div id='PaymentText' style='max-height: 400px; overflow: auto'>" + responseText + "</div>" +
                    "<div id='hide' style='width: 672px; padding-top: 10px;'>" +
                        "<table cellpadding='0' cellspacing='0' style='width: 100%'>" +
                            "<tr>" + "<td style='white-space: nowrap; text-align: right; vertical-align: middle;'>" + "<input type='button' id='btnPrint' value='Распечатать' />" + "</td>" + "</tr>" + "</table>" + "</div>" + "</div>";

                $.fn.messageBox("Cчет на оплату", PaymentDiv, { width: 732 });

                $("#" + paymentDivID).find("#btnPrint").click(function() {
                    $("#" + paymentDivID).find(".printable").print();
                });
            }, "html");
        }
    };
