# Source: pede_net.js

    /**
     * Éste módulo es el encargado de la gestión de los componentes de comunidad ecológica.
     *
     * @namespace module_net
     */
    var module_net = (function() {

        var _AMBIENTE = 1,
                _TEST = false;
        var _VERBOSE = true;

        var _map_module_net,
                _variable_module_net,
                _language_module_net,
                _res_display_module_net;

        var _url_front, _url_api, _url_comunidad;

        var _url_geoserver = "http://geoportal.conabio.gob.mx:80/geoserver/cnb/wms?",
                _workspace = "cnb";

        var _toastr = toastr;
        var _iTrans;
        var _tipo_modulo;

        var _componente_fuente;
        var _componente_sumidero;

        var TIPO_FUENTE = 0,
                TIPO_SUMIDERO = 1;

        /**
         * Enlaza la funcionalidad de los componentes visuales de las secciones de comunidad ecológica.
         *
         * @function _initializeComponents
         * @private
         * @memberof! module_net
         */
        function _initializeComponents() {

            _VERBOSE ? console.log("_initializeComponents") : _VERBOSE;

            _toastr.options = {
                "debug": false,
                "onclick": null,
                "fadeIn": 300,
                "fadeOut": 1000,
                "timeOut": 2000,
                "extendedTimeOut": 2000,
                "positionClass": "toast-bottom-center",
                "preventDuplicates": true,
                "progressBar": true
            };

            $("#generaRed").click(function(e) {

                _VERBOSE ? console.log("generaRed") : _VERBOSE;
                _VERBOSE ? console.log(_componente_fuente.getVarSelArray()) : _VERBOSE;
                _VERBOSE ? console.log(_componente_sumidero.getVarSelArray()) : _VERBOSE;

                tipo_fuente = 0;

                var min_occ = parseInt($("#occ_number").val());

                _res_display_module_net.cleanLegendGroups();

                s_filters = _res_display_module_net.getFilters(_componente_fuente.getVarSelArray(), TIPO_FUENTE);
                t_filters = _res_display_module_net.getFilters(_componente_sumidero.getVarSelArray(), TIPO_SUMIDERO);

                _res_display_module_net.createLinkNodes(s_filters, t_filters, min_occ);

            });

            $("#net_link").click(function() {
                window.location.replace(_url_front + "/geoportal_v0.1.html");
            });

            document.getElementById("tbl_hist_comunidad").style.display = "none";

            document.getElementById("map_panel").style.display = "none";

            // document.getElementById("graph_map_comunidad").style.display = "none";

            document.getElementById("hist_map_comunidad").style.display = "none";

        }

        /**
         * Inicializa las variables globales del modulo comunidad e inicializa el modulo de internacionalización.
         *
         * @function startModule
         * @public
         * @memberof! module_net
         *
         * @param {string} tipo_modulo - Identificador del módulo 0 para nicho y 1 para comunidad
         * @param {string} verbose - Bandera para desplegar modo verbose
         */
        function startModule(tipo_modulo, verbose) {

            _VERBOSE ? console.log("startModule") : _VERBOSE;

            _VERBOSE = verbose;

            _tipo_modulo = tipo_modulo;

            // Se cargan los archivos de idiomas y depsues son cargados los modulos subsecuentes
            _language_module_net = language_module(_VERBOSE);

            _language_module_net.startLanguageModule(this, _tipo_modulo);

        }

        /**
         * Método llamado después de que el módulo de internacionalización es configurado correctamente. Se inicializa el controlador y el módulo de variable.
         *
         * @function loadModules
         * @public
         * @memberof! module_net
         */
        function loadModules() {

            _VERBOSE ? console.log("loadModules") : _VERBOSE;

            _iTrans = _language_module_net.getI18();

            _map_module_net = map_module(_url_geoserver, _workspace, _VERBOSE, _url_api);

            // un id es enviado para diferenciar el componente del grupo de variables en caso de que sea mas de uno (caso comunidad)
            _variable_module_net = variable_module(_VERBOSE, _url_api);
            _variable_module_net.startVar(0, _language_module_net, _tipo_modulo);

            // creación dinámica de selector de variables
            var ids_comp_variables = ['fuente', 'sumidero'];
            _componente_fuente = _variable_module_net.createSelectorComponent("div_seleccion_variables_fuente", ids_comp_variables[0], "lb_fuente");
            _componente_sumidero = _variable_module_net.createSelectorComponent("div_seleccion_variables_sumidero", ids_comp_variables[1], "lb_sumidero");

            _res_display_module_net = res_display_net_module(_VERBOSE, _url_api);
            _res_display_module_net.startResNetDisplay(_variable_module_net, _language_module_net, _map_module_net, ids_comp_variables, _tipo_modulo, _TEST);

            _language_module_net.addModuleForLanguage(_res_display_module_net, null, _map_module_net, _variable_module_net);

            _initializeComponents();

        }

        /**
         * Método setter para la variable que almacena la URL del servidor.
         *
         * @function setUrlApi
         * @public
         * @memberof! module_net
         *
         * @param {string} url_api - URL del servidor
         */
        function setUrlApi(url_api) {
            _url_api = url_api
        }

        /**
         * Método setter para la variable que almacena la URL del cliente.
         *
         * @function setUrlFront
         * @public
         * @memberof! module_net
         *
         * @param {string} url_front - URL del cliente
         */
        function setUrlFront(url_front) {
            _url_front = url_front
        }

        /**
         * Método setter para la variable que almacena la URL de comunidad ecológica.
         *
         * @function setUrlComunidad
         * @public
         * @memberof! module_net
         *
         * @param {string} url_comunidad - URL del cliente en comunidad ecológica
         */
        function setUrlComunidad(url_comunidad) {
            _url_comunidad = url_comunidad
        }

        // retorna solamente un objeto con los miembros que son públicos.
        return {
            startModule: startModule,
            loadModules: loadModules,
            setUrlFront: setUrlFront,
            setUrlApi: setUrlApi,
            setUrlComunidad: setUrlComunidad
        };

    })();

    $(document).ready(function() {

        // verbose por default es true
        var verbose = false;

        // 0 local, 1 producción
        var ambiente = 1;
        // 0 nicho, 1 comunidad
        var modulo = 1;

        if ($.cookie("url_front")) {

            module_net.setUrlFront($.cookie("url_front"))
            module_net.setUrlApi($.cookie("url_api"))
            module_net.setUrlComunidad($.cookie("url_comunidad"));

        }
        else {
            if (ambiente === 0) {
                module_net.setUrlFront("http://localhost/species-front");
                module_net.setUrlApi("http://species.conabio.gob.mx/niche3");
                module_net.setUrlComunidad("http://localhost/species-front/comunidad_v0.1.html");
            }
            else {
    //            module_net.setUrlFront("http://species.conabio.gob.mx/c3/charlie_dev");
    //            module_net.setUrlApi("http://species.conabio.gob.mx/niche3")
    //            module_net.setUrlComunidad("http://species.conabio.gob.mx/c3/charlie_dev/species-front/comunidad_v0.1.html");

                module_nicho.setUrlFront("http://species.conabio.gob.mx");
                module_nicho.setUrlApi("http://species.conabio.gob.mx/niche3");
                module_nicho.setUrlNicho("http://species.conabio.gob.mx/comunidad_v0.1.html");

            }
        }

        module_net.startModule(modulo, verbose);

    });