DescripcionesSolapas = {
    'infonot.pre_datosgen': 'Editar',
    'infonot.OBJETOS_DIVS': 'Cambiar objetos',
    'infonot.seleccion': 'Selección'
};

filaElemento = {};

tabuladorListado = function() {
    return $('#tabuladorListado').data('objeto');
};

/*
 * Cierra la solapa actual.
 */
cierraSolapa = function(datos) {
    var fila = filaElemento[datos.codigo];
    var tabulador = tabuladorListado();
    var id = datos.accion + '-' + fila;
    var indice = tabulador.indiceDe(id);
    tabulador.quitaSolapa(indice);
};

/*
 * Enmarca el formulario con clase formulario en la solapa de un nuevo tabulador. 
 */
formularioEnNuevoTabulador = function() {
    var listado = $("div.board");
    if(listado.parent().attr('id') != 'areaListado') {
        listado.wrap('<div id="areaListado"></div>');
        var tabulador = creaTabulador({
            id: "tabuladorListado",
            muestraEn: "#areaListado",
            solapas: [ {
                id: 'solapaListado', 
                titulo: 'Listado',
                botonCerrar: false
            } ]
        });
        $("#solapaListado .contenedorSolapa").html($('div.board'));
    }
};

/*
 * Crea un tabulador en base a la configuración recibida, tal como se describe en el ejemplo anterior.
 */
creaTabulador = function(datos) {
    var tabulador = new Tabulador({
        muestraEn: datos.muestraEn,
        ui: datos.ui,
        id: datos.id,
        eventos: {
            tabsload: function(evento, solapa) { paginaCargada(solapa.panel); }
        }
    });
    if(datos.solapas) {
        $.each(datos.solapas, function(i, solapa) {
            tabulador.nuevaSolapa(solapa);
        });
    }
    if(datos.urlListadoSolapas) {
        var listadoSolapas = new ListadoConsultas({
            url: datos.urlListadoSolapas,
            muestraEn: '#menuSolapas',
            eventos: {
                carga: function() { /*console.log('carga');*/ },
                itemClick: function(evento, datos) {
                    tabulador.abreSiNoExiste({
                        id: datos.consulta.id,
                        titulo: datos.consulta.nombre,
                        url: datos.consulta.consulta
                    });
                }
            }
        });
    }
    $.each($('.anchorIframe'), function(i, link) {
        $(link).click(solapaEditar);
    });
    
    tabulador.inicia();
    return tabulador;
};

solapaEditar = function() {
    var vec = this.rel.split('S_EPARADOR');
    var url = vec[0];
    var numeroFila = vec[1];
    var base_url = url.split('?')[0];
    var id = base_url.replace('.', '') + '-' + numeroFila;
    var tabulador = tabuladorListado();
    var solapa = {
        id: id,
        titulo: DescripcionesSolapas[base_url] + ' ' + vec[1],
        url: vec[0],
        enIframe: true
    };
    if(!tabulador.existeSolapa(solapa.id)) {
        tabulador.nuevaSolapa(solapa);
        agregaEncabezados(tabulador, id, numeroFila);
    }
    tabulador.seleccionaSolapa(solapa.id);
    return false;
};

agregaEncabezados = function(tabulador, idSolapa, numeroFila) {
    var panel = tabulador.panelDe(idSolapa);
    var contenedor = panel.find('.contenedorSolapa');
    var encabezado = $('#ihtr' + numeroFila + '_header');
    var pie = $('#ihtr' + numeroFila + '_footer');
    encabezado.clone().show().prependTo(contenedor);
    pie.clone().show().appendTo(contenedor);
};

preparaFormularios = function(panel) {
    $.each($(panel).find('form'), function(indice, frm) {
        var submitAnterior = frm.onsubmit; //$(frm).attr('onsubmit');
        $(frm).data('submitAnterior', submitAnterior);
        $(frm).attr('onsubmit', null);
        $(frm).bind('submit', ajaxFormSubmit(panel));
    });
};

ajaxFormSubmit = function(panel) {
    return function(evento) {
        $(this).ajaxSubmit({
            async: false,
            target: panel,
            beforeSubmit: function(campos, frm, target) {
                var submitAnterior = frm.data('submitAnterior');
                if(submitAnterior) {
                    //return submitAnterior();
                }
            },
            success: function() { paginaCargada(panel); }
        });
        return false;
    };
};

/*
 * 1) Evita conflicto si se incluye jQuery en la página interior.
 * 2) Prepara los formularios para que haga el submit por ajax.
 * 3) Ejecuta los document ready de la página interior.
 */ 
paginaCargada = function(panel) {
    if(!$(window).data('jqueryTabulador')) {
        ejecutaNuevosDocumentReady(panel);
        $.noConflict(true);
    }
    preparaFormularios(panel);
};


ejecutaNuevosDocumentReady = function(panel) {
    $.each($.readyList, function(){
					this.call( document, $ );
				});
};

/*
 * Esta función se invoca al seleccionar la primera solapa.
 * Crea un área de trabajo con paneles traídos del servidor. 
 */ 
VisualizadorGenerico = function(parametros) {
    return function(datos) {
        $('#menuIzquierdo').empty();
        var visualizadorIzquierdo = new Visualizador();
        visualizadorIzquierdo.inicio({
            urls: parametros.urls,
            grupo: parametros.grupo,
            muestraEn: parametros.muestraEn,
            columnaDondeSeAgrega: 1,
            menu: '#menuIzquierdo',
            tabulador: datos.objeto
        });
    };
};

/*
 * Esta función se invoca al seleccionar la segunda solapa.
 * Crea un área de trabajo con paneles traídos del servidor. 
 */ 
/*Visualizador2 = function(datos) {
    $('#menuIzquierdo').empty();
    var visualizadorDerecho = new Visualizador();
    visualizadorDerecho.inicio({
        urls: {
            grillaJson: '/web724/rap/FEDERICO_AJAX.grilla_json',
            listadoConsultas: '/web724/rap/FEDERICO_AJAX.listado_consultas_bis',
            configuracionColumnas: '/web724/rap/FEDERICO_AJAX.configuracion_columnas',
            actualizacionColumnas: '/web724/rap/FEDERICO_AJAX.actualizacion_columnas'
        },
        grupo: 'contenido-areaDerecha',
        muestraEn: '.contenido-areaDerecha',
        columnaDondeSeAgrega: 2,
        menu: '#menuIzquierdo',
        tabulador: datos.objeto
    });
};*/

