﻿
//Descripción:  Funciones de JavaScript comunes.
var m_fch, m_ini, m_fin, m_seCargoGoogleApi = false, m_idioma, m_textos, m_fuente, entidadIDG, entidadNombreG, municipioIDG, anioG, idiomaG, fuenteG, indicadorIDG, continuaG;


/*
Agrega el separador de miles (,) a un número.
@param {String} nStr Número al que se le desea agregar el separador de miles.
@return {String} El número que se pasa como parámetro con separadores de miles.
*/
function AgregarComas(nStr)
 {
    nStr += '';
    sx = nStr.split('.');
    sx1 = sx[0];
    sx2 = sx.length > 1 ? '.' + sx[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(sx1)) 
    {
        sx1 = sx1.replace(rgx, '$1' + ',' + '$2');
    }
    return sx1 + sx2;
}
/*
Agrega una opción a una lista de selección.
@param {Object} lista Etiqueta HTML SELECT (drop-down list).
@param {Number} valor Valor de la opción que se agregará a la lista.
@param {String} texto Texto de la opción que se agregará a la lista (drop-down list).
*/
function AgregarOpcionALista(lista, valor, texto) 
{
    var opcion = document.createElement('option');
    opcion.text = texto;
    opcion.value = valor;

    try {
        lista.add(opcion, null);
    }
    catch (ex)
     {
        lista.add(opcion);
    }
}
function CargarGoogleApi(seccion) 
{
    var script = document.createElement('script');
    var llaveApi;

    switch (window.location.host) 
    {
        case 'www5.inegi.org.mx':
            llaveApi = 'ABQIAAAA4MSnF4YpYg7EXouPCAvHfRScsqNXSmEwLWCTD2nyaPvEV6u72xTUdLKFShlCouRXYnZY2Y2rxvOwdw';
            break;
        case 'intranetwww.inegi.org.mx':
            llaveApi = 'ABQIAAAArekYhvVedQFyyQ3pDtPrGRR8A-J7ISkVhy-FF08McaXnhwLpeBQLpDyoFaqDrOgCvQ7UESHEZc7uTA';
            break;
        case 'www.inegi.mx':
            llaveApi = 'ABQIAAAA4MSnF4YpYg7EXouPCAvHfRTi6aFgn_Np7axbbj5cCLcod-IXdBTWY1rSbNYJPq7OpxoN0j7O4C_Tzw';
            break;
        case 'www.inegi.org.mx':
        default:
            llaveApi = 'ABQIAAAArekYhvVedQFyyQ3pDtPrGRQdiXFZQaf7vSCFYV6XKJCiEiFKnhQMKGcO4wF7tMI-iciMuHXoW-cKyw';
            break;

    }
    script.src = 'http://www.google.com/jsapi?key=' + llaveApi;

    switch (seccion) 
    {
        case 'G':
            script.src += '&callback=CargarGoogleVisualizationApi';
            break;
        case 'M':
            script.src += '&callback=CargarGoogleMapsApi';
            break;
    }
    script.type = 'text/javascript';
    document.getElementsByTagName('head')[0].appendChild(script);

    m_seCargoGoogleApi = true;
}

function CargarImagenRepresentativa(imagen, entidadID, municipioID)
 {
    var ent, mun;
    if (entidadID.length == 1) 
    {
        ent = '0' + entidadID.toString();
    }
    else 
    {
        ent = entidadID.toString();
    }

    if (municipioID.length == 1) 
    {
        mun = '00' + municipioID.toString();
    }
    else if (municipioID.length == 2) 
    {
        mun = '0' + municipioID.toString();
    }
    else {
        mun = municipioID.toString();
    }

    if (ent == '00') {
        imagen.src = 'img/rep/nacional.gif';
    }
    else
     {
         if (mun == '000') 
        {
            imagen.src = 'img/rep/' + ent + '.gif';
        }
        else {
            imagen.src = 'img/rep/' + ent + mun + '.gif';
        }
    }
}

function CargarTextosControlesFijos() {
    if (m_idioma == undefined) {
        m_idioma="";
     }
     if (m_idioma != '') 
    {
        var pagina, i, control, controles;

        pagina = window.location.pathname.split('/');
        if (pagina.length > 1)
         {
            pagina = pagina[pagina.length - 1];
        }
        if (pagina == '') 
        {
            pagina = 'default.aspx';
        }
     
        BISE.MexicoCifras.WebServiceFillAjax.EncontrarControlesPagina(pagina, m_idioma, CallBackCargarTextosControlesFijos,ErrorRegresaTextos);
        
    }
}

//function EstablecerWebServiceFillAjax()
// {
//    var WebServiceFill = BISE.Mexicocifras.WebServiceFillAjax;
//    return WebServiceFill;
//}


/*
Inicializa variables y controles y muestra la sección correcta en la primera carga de la página.
@param {String} seccion La sección que se desea mostrar al cargar la página. Solo acepta los valores 'M' (Mapa), 'G' (Gráfica), 'P' (Productos), 
 (Datos)
.
@param {String} indicadorID ID del indicador que se desea mostrar en la sección Mapa.
@param {String} entidadID ID de la entidad. La ubicación geográfica seleccionada para las secciones Mapa y Datos.
@param {String} entidadNombre Nombre de la entidad. El nombre de la ubicación geográfica seleccionada en la sección Mapa.
@param {String} municipioID ID del municipio. La ubicación geográfica seleccionada para las secciones Mapa y Datos. 
@param {String} anio Año seleccionado para la sección Mapa.
@param {String} idioma El idioma en el que se presentará el contenido de la página. Es un código de dos letras basado en ISO 639-1.
*/

function InicializarPagina(seccion, indicadorID, entidadID, entidadNombre, municipioID, anio, idioma, fuente)
 {
    m_idioma = idioma;
    entidadIDG = entidadID;
    entidadNombreG = entidadNombre;
    municipioIDG = municipioID;
    anioG = anio;
    idiomaG = idioma;
    fuenteG = fuente;
    if (indicadorID == "") {
        indicadorID= document.getElementById('iu_hidIndicadorID').value;
     }
    indicadorIDG = indicadorID;
    //m_textos = EstablecerWebServiceFillAjax().EncontrarTextos(m_idioma)
    Textos(idioma);
    //BISE.MexicoCifras.WebServiceFillAjax.hola(CallBackRegresaTextos)
   
}
function Textos(idioma, continua) {
    continuaG = continua;
    BISE.MexicoCifras.WebServiceFillAjax.EncontrarTextos(idioma, CallBackRegresaTextos, ErrorRegresaTextos);
     }
 
function CallBackRegresaTextos(result, seccion, indicadorID, entidadID, entidadNombre, municipioID, anio, idioma, fuente)
 {
     m_textos = result;
     if (continuaG == undefined && continuaG == null) {
         continua2(seccion, indicadorIDG, entidadIDG, entidadNombreG, municipioIDG, anioG, idiomaG, fuenteG);
     }
}

function CallBackCargarTextosControlesFijos(result, seccion, indicadorID, entidadID, entidadNombre, municipioID, anio, idioma, fuente) {
     controles= result;
     ContinuaCargarTextosControlesFijos(controles,seccion, indicadorID, entidadIDG, entidadNombreG, municipioIDG, anioG, idiomaG, fuenteG);
}


//    function CallBackCargarTextosControlesFijos(result, seccion, indicadorID, entidadID, entidadNombre, municipioID, anio, idioma, fuente)
//     {
//    m_textos = result;
//    ContinuaCargarTextosControlesFijos();
//}

    function continua2(seccion, indicadorID, entidadID, entidadNombre, municipioID, anio, idioma, fuente)
    {
    m_fuente = fuente;
    CargarTextosControlesFijos();
    document.getElementById('iu_hidEntidadID').value = entidadID;
    document.getElementById('iu_hidIndicadorID').value = indicadorID;
    //document.getElementById('iu_hidFuenteID').value = m_fuente;
    document.getElementById('iu_tdBotonDatos').style.display = 'none';
    document.getElementById('iu_hidYaSeGeneroMapa').value = 'N';
    document.getElementById('iu_hidYaSeGeneroDatos').value = 'N';
    document.getElementById('iu_hidYaSeGeneroGrafica').value = 'N';
    switch (seccion)
     {
        case 'M':
            if (indicadorID != '') {
                document.getElementById('iu_hidIndicadorID').value = indicadorID;
            }
            document.getElementById('iu_hidEntidadID').value = entidadID;
            //alre_15062011 se agrega una condición para agregar el texto por default para las entidades
            if (entidadNombre == "") {
                document.getElementById('iu_tdEtiquetaEntidad').innerHTML = m_textos[17];
            }
            else {
                document.getElementById('iu_tdEtiquetaEntidad').innerHTML = entidadNombre;
            }
            document.getElementById('iu_aTituloMapa').innerHTML = entidadNombre;
            document.getElementById('iu_hidMunicipioID').value = municipioID;
            document.getElementById('iu_hidAnio').value = anio;
            MostrarSeccion('iu_divSeccionMapa');
            OcultarBotonSeccion('iu_tdBotonMapa');
            MostrarSeccionMapa(entidadID);
            break;
        case 'G':
            MostrarSeccion('iu_divSeccionGrafica');
            OcultarBotonSeccion('iu_tdBotonGrafica');
            MostrarSeccionGrafica();
            break;
        case 'P':
            MostrarSeccion('iu_divSeccionProductos');
            OcultarBotonSeccion('iu_tdBotonProductos');
            MostrarSeccionProductos(entidadID);
            break;
        case 'D1':
            MostrarSeccion('iu_divSeccionDatos');
            OcultarBotonSeccion('iu_tdBotonDatos');
            MostrarSeccionDatosFija(entidadID);
            break;
        case 'D':
        default:
            MostrarSeccion('iu_divSeccionDatos');
            OcultarBotonSeccion('iu_tdBotonDatos');
            MostrarSeccionDatos(entidadID, municipioID, fuente);
            break;
    }
}

function IniciarAnimacionEntradaDatos()
 {

    MostrarSeccion('iu_divSeccionDatos');
    OcultarBotonSeccion('iu_tdBotonDatos');
    var onclick = $find('entradaDatos').get_OnClickBehavior().get_animation();
    onclick.play();

}
/*
Inicia la animación que sirve como transición a la sección Gráfica.
*/
function IniciarAnimacionEntradaGrafica() 
{
    MostrarSeccion('iu_divSeccionGrafica');
    OcultarBotonSeccion('iu_tdBotonGrafica');
    var onclick = $find('entradaGrafica').get_OnClickBehavior().get_animation();
    onclick.play();
}
/*
Inicia la animación que sirve como transición a la sección Mapa.
@param {Boolean} desdeDatos True si la transición a Mapa se hace al dar clic sobre uno de los renglones de la tabla de indicadores más recientes de la sección Datos.
*/
function IniciarAnimacionEntradaMapa(desdeDatos) 
{
    MostrarSeccion('iu_divSeccionMapa');
    OcultarBotonSeccion('iu_tdBotonMapa');
    var onclick;
    if (desdeDatos) {
        onclick = $find('entradaMapaD').get_OnClickBehavior().get_animation();
    }
    else {
        onclick = $find('entradaMapa').get_OnClickBehavior().get_animation();
    }
    onclick.play();
}
/*
Inicia la animación que sirve como transición a la sección Productos.
*/
function IniciarAnimacionEntradaProductos() {
    var entidadID;
    if (document.getElementById('iu_divSeccionMapa').style.display == '') {
        entidadID = document.getElementById('iu_hidEntidadID').value;
    }
    else if (document.getElementById('iu_divSeccionDatos').style.display == '') {
        entidadID = document.getElementById('iu_selEntidades').options[document.getElementById('iu_selEntidades').selectedIndex].value;
    }
    else {
        entidadID = '0';
    }

    MostrarSeccion('iu_divSeccionProductos');
    OcultarBotonSeccion('iu_tdBotonProductos');
    MostrarSeccionProductos(entidadID);
}
/*
Redirecciona a la página MexicoCifras.aspx desde la página Default.aspx.
@param {String} seccion La sección que se desea mostrar al cargar la página MexicoCifras.aspx. Solo acepta los valores 'M' (Mapa), 'G' (Gráfica), 'P' (Productos).
*/
function IrAMexicoCifras(seccion)
 {
    var entidadID, municipioID = '0', miUrl;

    entidadID = document.getElementById('iu_selEntidades').options[document.getElementById('iu_selEntidades').selectedIndex].value;
    if (document.getElementById('iu_selMunicipios').options.length > 0) {
        municipioID = document.getElementById('iu_selMunicipios').options[document.getElementById('iu_selMunicipios').selectedIndex].value;
    }
    
    miUrl = 'MexicoCifras2.aspx?ent=' + entidadID + '&mun=' + municipioID + '&sec=' + seccion;

    if (seccion == 'P') {
        //alre_06062011 se cambia el valor de la varible que se concatena para productos de "ent"  a "e"
        miUrl += ('&e=' + entidadID);
    }

    if (m_idioma != '') {
        //miUrl += ('&lang=' + m_idioma);
        miUrl += ('&i=' + m_idioma);
    }

    if (m_fuente != 0 && m_fuente != '') {
        miUrl += ('&src=' + m_fuente);
    }

    location.href = miUrl;
}
/*
Envia por correo el mensaje de error que se presentó en la ejecución de la aplicación y redirecciona a la página de mantenimiento.
@param {String} mensajeError
*/
function LanzarExcepcionWebServiceFillAjax(mensajeError) {
    //var WebServiceFillAjax = EstablecerWebServiceFillAjax();

    BISE.MexicoCifras.EnviarCorreoExcepcion(mensajeError,callBackLanzarExcepcionWebServiceFillAjax);
    }


    function continuaLanzarExcepcionWebServiceFillAjax(mensajeError)
    {
        switch (window.location.host)
     {
        case 'intranetwww.inegi.org.mx':
            location.href = 'http://intranetwww.inegi.org.mx/lib/error.aspx';
            break;
        case 'www.inegi.org.mx':
        default:
            location.href = 'http://www.inegi.org.mx/lib/error.aspx';
            break;
    }
}


function callbackLanzarExcepcionWebServiceFillAjax(mensajeError, result)
{
valores1=result;
continuaLanzarExcepcionWebServiceFillAjax(mensajeError);
}


/*


Asigna la imagen img/no_disponible.png objeto IMG indicado.
@param {Object} imagen Etiqueta HTML IMG.
*/
function MostrarImagenNoDisponible(imagen) {
    imagen.src = 'img/no_disponible.png';
}
/*
Muestra la sección indicada y oculta las demás.
@param {String} seccionID Identificador del elemento HTML que sirve como contenedor para la sección que se desea mostrar.
*/
function MostrarSeccion(seccionID) {
    var elementos = document.getElementById('iu_tdSecciones').getElementsByTagName('div');

    for (var i = 0; i < elementos.length; i++) {
        if (elementos[i].id.indexOf('iu_divSeccion') >= 0) {
            if (elementos[i].id == seccionID) {
                elementos[i].style.display = '';
                document.getElementById(elementos[i].id + 'Enc').style.display = '';
            }
            else {
                elementos[i].style.display = 'none';
                document.getElementById(elementos[i].id + 'Enc').style.display = 'none';
            }
        }
    }
}
function ContinuaCargarTextosControlesFijos(controles) {
    if (controles.length > 0) {
        for (i = 0; i < controles.length - 1; i += 2) {
            control = document.getElementById(controles[i]);
            if (control != null) {
                switch (control.tagName) {
                    case 'A':
                    case 'TD':
                    case 'SPAN':
                        control.innerHTML = controles[i + 1];
                        //alre_23032011 se agrega esta condición para agregar el texto en ingles para productos
                        if (controles[i + 1] == "Products") {
                            control.innerHTML += "<br><font style='font:bold 11px Arial;'>(Spanish only)</font>";
                        }
                        break;
                    case 'INPUT':
                        control.value = controles[i + 1];
                        break;
                }
            }
        }
    }
}

function ErrorRegresaTextos(error) {
    alert(error._message);
    loadingPopup = $find('B2');
    if (loadingPopup != null) {
        loadingPopup.hide();
    }
}


/*
Oculta el botón que muestra la sección seleccionada.
@param {String} botonID Identificador del elemento HTML que sirve como botón para mostrar la sección seleccionada.
*/
function OcultarBotonSeccion(botonID) {
    var elementos = document.getElementById('iu_tableMenu').getElementsByTagName('td');

    for (var i = 0; i < elementos.length; i++) {
        if (elementos[i].id.indexOf('iu_tdBoton') >= 0) {
            if (elementos[i].id == botonID) {
                elementos[i].style.display = 'none';
            }
            else {
                elementos[i].style.display = '';
            }
        }
    }
}


function VerHtml() {
    var a = document.getElementById('iu_divIndicadoresRecientes').innerHTML;
}


