var contractStructure_ACTION = function() {
    var DATA, GUI, INTERFACE;

    return {
        "init":init,
        "search":search
    };

    function initEvents() {
        var $parent = $(DATA.guiParentSelector).first();
        addSearchEvent($parent);
    }

    function addSearchEvent($events) {
        $events.off("click", ".search");
        $events.on("click", ".search", function() {
            search();
        });
    }

    function search() {
        var loadOk = true;
        var guiFilter = GUI.getFilter();
        var currentFilter = DATA.filter;

        GUI.clearResultStatus();
        GUI.setWaitStatus();

        DATA.filter = GUI.getFilter();

        if (!currentFilter || currentFilter.tenderId != guiFilter.tenderId) {
            INTERFACE.clearData();
            loadOk = INTERFACE.loadTender();
        }

        if (loadOk) {
            if (!currentFilter || currentFilter.organizationId != guiFilter.organizationId) {
                INTERFACE.clearDataContractBase();
                loadOk = INTERFACE.loadContract();
            }
        }

        if (loadOk) {
            GUI.viewTenderHeader();
            GUI.viewForms();

            return;
        }

        GUI.clearWaitStatus();
    }

    function init(contractStructure) {
        GUI = contractStructure.GUI;
        INTERFACE = contractStructure.INTERFACE;
        DATA = contractStructure.DATA;
        initEvents();
    }

}
