// import Divmod
// import Nevow.Athena
// import Methanal.View
// import FlyingCircus.Util
// import FlyingCircus.Validators


/**
 * Quote search view.
 */
FlyingCircus.Search.QuoteSearch = Methanal.View.LiveForm.subclass('FlyingCircus.Search.QuoteSearch');
FlyingCircus.Search.QuoteSearch.methods(
    function nodeInserted(self) {
        self.resultNode = self.nodeById('results');
        self.previousResultWidget = null;
    },

    /**
     * Change the result view.
     */
    function setResultWidget(self, widgetInfo, count) {
        var d = self.addChildWidgetFromWidgetInfo(widgetInfo);
        d.addCallback(function (widget) {
            if (self.previousResultWidget)
                self.previousResultWidget.detach();
            self.previousResultWidget = widget;
            Methanal.Util.replaceNodeContent(self.resultNode, [widget.node]);
            Methanal.Util.nodeInserted(widget);

            if (count > 0) {
                var D = FlyingCircus.Util.DOMBuilder(self.node.ownerDocument);
                var node = D('h2', {}, [
                    'Showing ',
                    count.toString(),
                    ' results']);
                self.resultNode.insertBefore(node, widget.node);
            }
        });
    })


/**
 * Quote search form.
 *
 * Perform a quote search on form submission and display the results.
 */
FlyingCircus.Search.QuoteSearchForm = Methanal.View.LiveForm.subclass('FlyingCircus.Search.QuoteSearchForm');
FlyingCircus.Search.QuoteSearchForm.methods(
    function __init__(self, node, viewOnly, controlNames) {
        FlyingCircus.Search.QuoteSearchForm.upcall(self, '__init__', node, viewOnly, controlNames);

        var V = FlyingCircus.Validators;
        self.addValidators([
            [['term'], [V.hasLength]]]);
    },

    function submitSuccess(self, info) {
        self.widgetParent.setResultWidget(info[0], info[1]);
        return false;
    });
