// JavaScript Document
/*
	BUSCADOR  -  _bsc
	PAGINADOR -  _pag
	CONTENIDO -  _cnt
	STATU BAR -  _sb

*/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//  0. - Declaracion de variables
//  1. - Objeto Listado ( Privada ) Objeto Privado
//  2. - Listar - Funcion Principal
//  3. - Consulta el tamaño del SQL (Privada)
//  4. - Retorno del SR de Consulta (Privada)
//  5. - Muestra las partes del componente
//  6. - Oculta las partes del componente
//  7. - Inicializa el objeto
//  8. - Actualiza la consulta del objeto (Publica)
//  9. - Respuesta de la consulta (Privada)
// 10. - Cambia el texto de la barra de estado (Privada)
// 11. - _Paginador_Listar
// 12. - Localiza el Objeto Listar en el Array de Listados (Privada)
// 13. - Genera los titulos HTML (Privada)
// 14. - Cambia el orden del Objeto Listado (Privada)
// 15. - Selecciona o deseelcciona el campo para buscar (Privada)
// 16. - Lanza la busqueda (Privada)
// 17. - Genera la cadena comodin que se sumara a la cadena a buscar
// 18. - Genera la cadena SQL (Privada)
// 19. - Coge la informacion de un regsztro marcado y la envia a la funcion Edicion()
// 20. - Escoge un registro, guardandolo para despues enviarlo
// 21. - Coge la informacion de un registro marcado y lo Borra
// 22. - Escoge un registro, guardandolo para despues enviarlo a Borrado
// 23. - Marca uno o varios registros, guardandolo para despues enviarlo a Borrado
// 24. - Marca Columnas para afectar la busqueda
// 25. - Hace que el componente tipo Selector aparezca ubicado en el lugar correspondiende segun la posicion del scroll
// 26. - Genera un archivo XML
// 27. - Enmarca el componente en una ventana
// 28. - Oculta totalmente la lista (Publica)
// 29. - Retorna el valor seleccionado (Privado)
// 30. - Confirmacion para generar el XML (Privado)
// 31. - objeto para retroalimentar (Privado)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 0. - Declaracion de variables
var _aListados = new Array();
var dirLibsPHP = (dirLibsPHP)?dirLibsPHP:new String("/axys/beta/libs");

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 1. - Objeto Listado ( Privada ) Objeto Privado
 * \ingroup fPrivada
 * \author EG - (egonpin@gmail.com) - 27/05/2005
*/
function _oListado()
{
	// Publico Variables
	this.tabla 			= new String("");      // esquema.tabla
	this.campos 		= new String("");      // Lista de campos, puede recibir * separados por ',' (coma)
	this.pk        	= new String("");      // Nombre del Primary Key
	this.titulos 		= new String("");      // Lista de titulos opcionales separados por ',' (coma)
	this.pagACT    	= new Number(1);    	  // Pagina Actual
	this.clase     	= new String("LISTA"); // 'LISTA' - 'EDICION' - 'SELECCION' - 'MULTISELECCION' - 'SELECCIONREG'
	this.orden     	= new String("");      // Nombre del campo que ordena
	this.TipoOrd   	= new String("ASC");   // Tipo de orden 'ASC' o 'DESC'
	this.SQL       	= new String("");      // SQL adicional modificable desde afuera
	this.SQLmanual   	= new String("");      // SQL adicional modificable desde afuera
	this.typeEDIT  	= new Number(0);       // Define el tipo de lista de Edicion 0 - Radio button, 1 - Boton
	this.enable    	= new Boolean(true);   // Activa o desactiva la opcion de refrescar
	this.enVentana 	= new Boolean(true);  // si True aplica un estilo de ventana flotante al div contenedor del Listado
	this.idRetorno  	= new String("");     // ID del objeto input en el que se debe retornar
	this.colRetorno 	= new Number(0);      // Numero de la columna a retornar se da por la ubicacion de la columna en el arreglo que se muestra
	this.idRetorno_Maq  	= new String(""); // ID del objeto input en el que se debe retornar
	this.colRetorno_Maq 	= new Number(0); // Numero de la columna a retornar se da por la ubicacion de la columna en el arreglo que se muestra
	this.datosInicio 		= new Boolean(true);   // Activa o desactiva la opcion de cargar registros al momento de la carga de la pagina
	this.version      = new Number(1);       // Version 1 ventana estatica, version 2 Ventana Movible
	this.cantMaxReg 	= new String("");     // esquema.tabla
	this.tipoPag 	   = new Number(0);      // 1 Real (Cuenta de .tabla) - 3 Maximo (Limitado pot .cantMaxReg)
	this.camposXP 		= new String(""); 		// Listado de Campos a exportar separados por ',' (coma)
	this.camposXP_Maq = new String(""); 		// Listado de titulos de los Campos a exportar separados por ',' (coma)

	// Privado Variables
	this.idWIN		= new String("");   		// Barra de Ventana
	this.titWIN		= new String("Ventana de Datos");   		// Titulo de la Ventana
	this.visWIN   	= new Number(0);
	this.heightWin = new Number(300);
	this.widthWin  = new Number(450);
	this.xWin      = new Number(200);
	this.yWin      = new Number(80);
	this.icoWin    = new String("");
	this.oWIN 		= null;							    // objeto HTML que contiene toda la lista y sus componentes
	this.otitWin   = null;
	this.idDES		= new String("");   		// ID del objeto HTML que contiene todo el control
	this.id        = new String("");   		// ID del objeto HTML que contiene todo el control
	this.visDES   	= new Number(0);
	this.oDES 		= null; 							  // objeto HTML que contiene toda la lista y sus componentes
	this.idBUS    	= new String("");   		// Nombre del Buscador
	this.visBUS 	= new Number(1);    		// 1 o 0 controla visibilidad del Buscador
	this.campoBUS 	= new Array();  				// Arreglo donde se guardan los campos por los cuales buscar
	this.sFiltro   = new String("");       // Condicion de Filtro que debe ejecutar el query sSQL en el WHERE
	this.sBUS     	= new String("");       // Cadena a BUSCAR
	this.sBUS2     = new String("1");      // Cadena adicional usada para los comodines se le suma a sBUS
	this.oBUS     	= null; 							  // objeto HTML que contiene el buscador
	this.idPAG    	= new String("");   			// Variables del Paginador
	this.visPAG   	= new Number(1);
//
   this.idXML     = new String(""); 		// objeto HTML que contiene el link para exporta a XML
   this.oXML     	= null; 						// objeto HTML que contiene el link para exporta a XML
	this.visXML    = new Number(1);    		// 1 o 0 controla visibilidad del objeto XML
   this.idCSV     = new String(""); 		// objeto HTML que contiene el link para exporta a CSV
   this.oCSV     	= null; 						// objeto HTML que contiene el link para exporta a CSV
	this.visCSV    = new Number(1);    		// 1 o 0 controla visibilidad del objeto CSV
//
   this.oPAG     	= null;
	this.idCON    	= new String("");   			// Variables del Contenido
	this.visCON   	= new Number(1);
	this.oCON     	= null;
	this.oCON2    	= null;
	this.idSB     	= new String("");   			// Variables de la Barra de Estado
	this.visSB    	= new Number(1);
	this.oSB 		= null;
	this.sSQL     	= new String("");   			// Guarda el SQL generado (read only)
	this.nOFFSET  	= new Number(0);
	this.nLIMIT   	= new Number(0);
	this.camposMostrar 	= new Number(0);     // almacena la cantidad de campos que se mostraran de la lista de campos
	this.paraEditar     	= new String("");    // Almacena la cadena de registros para Editar
	this.paraBorrar     	= new Array(); 		// Almacena la cadena de registros para Borrar
	this.oriSQL      		= new String("");    // copia de SQL adicional
	this.genSQL         = new String("");    // Guarda el sql generado por un indice o un filtrado adicional
	this.numRegs        = -1;
	this.winTit    	  = _listar_db_winTit;    // Titulo de la Ventana
	this.aRetorno       = new Array();       // Array que contiene los valores devueltos en una SELECCION MULTIPLE
	this.oOTRO          = null;              // Objeto que almacena el listar para confirmar columnas XML
	this.oOTRO2         = null;              // Objeto que almacena el listar para confirmar columnas CSV
	this.xRetorno       = new _oX();
	this.idAD           = new String("");
	this.oAD            = null;
	this.idOPCBORRAR    = new String("");
	this.oOPCBORRAR     = null;
	this.visOPCBORRAR   = new Number(1);
	this.nodeName  	  = new String("LISTARDB");
// EG 16/04/2007
   this.visPRN         = new Number(0);
   this.prnFunc        = new Array();
   this.prnTxt         = new Array();
// EG 11/04/2008
	this.orisFiltro     = new String("");

	this.sSelecBusque    = new String("");
//
// EG 24/04/2007
// fila, columna, class Titulo, class Par, class Impar
// si se especifica fila y columna entonces class Titulo y class impar son ignoradas
// si se especifica solo columna, se le aplica cada una de las class a esa columna
// si se especific solo fila, se le aplica class Par a toda la fila y las demas son ignoradas
   this.cRC        = new Array();
   this.plantillaI = new String(""); // Cadena HTML con comodines %n% donde n es el numero de columna a traer
//
	// Publico Metodos
	this.Inicio   = _inicio_Listar;   		// Metodo para Inicializar el Objeto Listado
	this.refresca = _tam_consulta_Listar;
	this.muestra  = _muestra_Listar;   				// Metodo para mostrar las partes del componente
	this.oculta   = _oculta_Listar;    				// Metodo para ocultar las partes del componente
	this.filtrar  = _fSQL_Listar_db;           // Metodo para hacer que el selector dependa de otro campo
	this.filtrarcol = _Sel_Col_Busq;           // Para seleccionar las columnas de la busqueda por medio de un array
  // Privado Metodos
	this.selBusqueda= _selBusqueda_Listar      // Metodo para seleccionar las columnas de busqueda
	this.ventana  = _Ventana_Listar;
	this.consulta = _consulta_Listar; 				// actualiza el contenido de la consulta
	this.tamano   = _tam_consulta_Listar; 			// Metodo para calcular el tamao de la consulta y  generar el paginador
	this.mensaje  = _mensaje_Listar; 					// Modifica la Barra de Estado
	this.construyeSQL = _construyeSQL;
	this.xmlFile      = _xmlFile;
	this.csvFile      = _xmlFile;
	// Funciones personalizables que afectaran al control de acuerdo al ID
	// _cambiaInput se ejecuta desde ctrlRET

	// 16/07/2007
	// Listar Vertical
	this.isVertical  = new Boolean(false);
	this.nRegxFila   = new Number(5);
	this.campoLink   = new Number(-1);
	this.campoImg    = new Number(0);
	this.widthCampoImg = new String(""); // tamaño de la imagen ej 50px
	this.verCampos   = new Boolean(true);

	// 11/09/2007 EG
	this.cargaInicial = new Boolean(false);
	this.dataBasico = _data_basico_Listar;

	// 03/10/2007 EG
	this.regConsulta = new Number(0);  // R - Devuelve el numero de registros encontrados en una consulta
	this.eventos = new _omanEventos_Listar();

	// 19/10/2007 EG
	this.colRetornoMul = new String("");  // Nombre de Columnas a traer
	this.idRetornoMul = new String("");   // ID de los elementos html donde escribir los valores traidos con colretorno mul
	this.returnMul = _returnMultiple_Listar;
	this.fObliga   = new Boolean(true);  // Dependencia de otros Campos Obligatoria
	// 02/11/2007 EG
	this.aData = new Array(); // contiene los datos de la consulta en forma matriz
	// 11/04/2008 EG
	this.vaciar = _vaciar_Listar;

	// 08/09/2008 EG
	this.tipo = _tipo_Listar;

}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 2. - Listar - Funcion Principal, crea el objeto Listar y su respectivo controlador

 * \param sDest 		- ( STRING ) nombre del Objeto destino, parte de un HTML
 * \param sTabla 		- ( STRING ) nombre de la tabla a consultar
 * \param sPK 			- ( STRING ) nombre de la Primary KEY usada para devolver un dato
 * \param sCampos 	- ( STRING ) cadena de los campos a mostrar, separados por comas
 * \param nCamposMostrar - ( INTEGER ) Numero de campos que se mostraran de sCampos
 * \param sTitulos 	- ( STRING ) cadena con los titulos de los campos, separados por comas
 *                    es importante deben estar en el mismo orden de los nombres de los campos
 * \param sSQL 		- ( STRING ) Cadena SQL adicional.
 * \param sTipo 		- ( STRING ) tipo de control a generar 'LISTA' 'EDICION' 'SELECCION' 'MULTISELECCION'
 * 							son los valores validos
 * \param nNumRegMostrar - ( INTEGER ) Numero de registros a mostrar en le componente x pagina
 * \param vVersion   - ( INTEGER ) Numero de Version del Control 1 o 2 por defecto es 1

 * \return oLista - ( Objeto ) devuelve un objeto Listado, el cual permite controlar la lista
 * \author EG - (egonpin@gmail.com) - 27/05/2005
 */
function objListar()
{
	var sDest				= arguments[0];
	var sTabla			   = arguments[1];
	var sPK				   = arguments[2];
	var sCampos			   = arguments[3];
	var nCamposMostrar	= arguments[4];
	var sTitulos			= arguments[5];
	var sSQL					= arguments[6];
	var sTipo				= arguments[7];
	var nNumRegMostrar	= arguments[8]? arguments[8] : -1;
	var nVersion			= arguments[9]? arguments[9] : 2;

	var oLista      		= new _oListado();
	oLista.tabla 			= trim(sTabla);
	oLista.campos 			= trim(sCampos);
	oLista.camposMostrar = eval(nCamposMostrar);
	oLista.pk       		= trim(sPK);
	oLista.titulos			= trim(sTitulos);
	oLista.clase    		= trim(sTipo);
	oLista.SQL      		= trim(sSQL);
//	oLista.sFiltro   		= trim(sSQL); // Added by xButil para arreglar la busqueda cuando se trae un filtro predeterminado
	oLista.oriSQL        = trim(sSQL);
	oLista.numRegs       = eval(nNumRegMostrar);
	oLista.version       = nVersion;
	oLista.idDES         = sDest;

	if(oLista.version < 3 )
	{
		oLista.Inicio(sDest);
	}

	_aListados.push(oLista);
  return oLista;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 3. - Consulta el tamaño del SQL (Privada)
 *
 * \ingroup fPrivada
 * \sa _ret_tam_consulta_Listar
 * \author EG - (egonpin@gmail.com) - 27/05/2005
 */
function _tam_consulta_Listar()
{
	var parametros;
	var _select = null;

// EG - 01/03/2007 => agregada la siguiente linea para asegurar que filtre
 if( trim(this.sFiltro) != "")
 {
	this.filtrar();
 }
 else
 {
  // EG - 28/02/2008 => Agregada apra que reinicie el filtro de una consulta
	this.SQL = this.oriSQL;
 }

// 01/03/2007
	_select = this.construyeSQL(false);
	this.sSQL = _select;

	if(this.enable)
	{
		if(this.cargaInicial == true)
		{
//			jsrsExecute(dirLibsPHP+"listar_db.php?"+sid, _ret_tam_consulta_Listar, "tam_Consulta", parametros, false);

		var sidname = sid.split('=');

		if( ( (StringtoArray(this.campos,",").length) != (StringtoArray(this.titulos,",").length) ) || (this.titulos == "") )
		{
			parametros = { "sidname":sidname[1], "funcion":"tam_Consulta", "sql":_select, "id":this.idDES, "tabla":this.tabla , "campos":this.campos };
//			parametros = (_select, this.idDES, this.tabla, this.campos);
		}
		else
		{
			parametros = { "sidname":sidname[1], "funcion":"tam_Consulta", "sql":_select, "id":this.idDES, "tabla":0, "campos":this.campos };
//			parametros.push(_select, this.idDES, 0, this.campos);
		}

		Anuncio("Consultando Datos...");
//alert("listar\n" +parametros + "\n\n" +axHTMLCharSet);
		jsrsE = new Ajax.Request(dirLibsPHP+"listar_db.php",
			{
				method: 'post',
				encoding: axHTMLCharSet,
				onSuccess: _ret_tam_consulta_Listar,
				parameters: parametros
			}
			);

			this.cargaInicial = false;
		}
   }
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 4. - Retorno del SR de Consulta (Privada)
 * \ingroup fPrivada
 * \param _str - (STRING)
 *
 * \sa _tam_consulta_Listar
 * \author EG - (egonpin@gmail.com) - 27/05/2005
 */
function _ret_tam_consulta_Listar()
{
	var transport = arguments[0];
	var resp = ( transport.responseText.evalJSON() );
//alert(transport.responseText);
	var _error 	= resp._error?resp._error:" ";
	var _cols 	= resp._cols?resp._cols:"0";
	var _filas 	= resp._filas?resp._filas:"0";
	var _id 	= resp._id?resp._id:"";
	var _titulos = resp._titulos?resp._titulos:"";
	var _campos  = resp._campos?resp._campos:"";

	var _obj 	= null;
	var _titulos_html = "";
	var _tit_col = null;
	var _ori_tit = null;
	var n = 0;
	var m = 0;

	_obj = _localiza_Listar(_id);

	_obj.regConsulta = eval(_filas);

	// Generacion de Titulos dentro del objeto
/* comentado este bloque el 21/11/2007
	if(_titulos != "")
	{
	 	var _tmpTits = StringtoArray(_obj.titulos, ",");
	 	_obj.titulos = "";
		if(_obj.campos.indexOf("*") != -1)  // si encuentra * en la cadena
		{
			_obj.campos = _campos;
			if(_obj.camposMostrar == 0)
				_obj.camposMostrar = _cols;
		}
		_tit_col = StringtoArray(_obj.campos,",");
		_titulos = StringtoArray(_titulos,separador_reg);
	  _ori_tit = StringtoArray(_obj.titulos,",").length;
	  if(_obj.titulos == '')
			_ori_tit = 0;

    for(n=0; n<_titulos.length; n++)
    {
			_titulos[n] = StringtoArray(_titulos[n],separador_col);
	 }

		for(m=0; m<_tit_col.length; m++)
		{
			for(n=0; n<_titulos.length; n++)
			{
				if (_tit_col[m].match("."))
				{
					_tit_col[m] = _tit_col[m].substr(_tit_col[m].indexOf(".")+1);
				}

				if( trim(_titulos[n][0]) == trim(_tit_col[m]) )
				{
					//if(n >= _ori_tit)
					{
						if ( (typeof(_titulos[n][1]) != "undefined") && (_titulos[n][1] != "") )
						{
							if( _obj.titulos != "")
								_obj.titulos += "," + _titulos[n][1];
							else
								_obj.titulos = _titulos[n][1];
						}
						else
						{
							if (_obj.titulos != "")
								_obj.titulos += "," + _titulos[n][0];
							else
								_obj.titulos = _titulos[n][0];
						}
						n = _titulos.length;
					}
				}
			}
		}
	}
*/
	// El paginador ejecuta la consulta
	if(trim(_error) != "")
  		msg_error(_error);
	else
	{
		//if (_obj.datosInicio)
		_Paginador_Listar(_filas, _id, 1, 1, _obj.numRegs);
	}

	// Corrige el nombre de los campos agregandole el nombre o alias de la tabla del select
	//_obj.campos   = StringtoArray(_campos,",");
	// Se llena el array que contiene los campos en los cuales se puede buscar con el listar
	if (_obj.campoBUS.length <= 0)
	{
		_obj.campoBUS = _campos.slice(0,_obj.camposMostrar);
		for(n=0; n<_obj.campoBUS.length; n++)
		{
		  _obj.campoBUS[n] = _obj.campoBUS[n].replace(/DISTINCT/ig, "");
    }
  }
Anuncio("");
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 5. - Muestra las partes del componente
 *      Recibe 1 parametro, nombre de la parte
 * \param _parte - (STRING)
 *       'BUS' - Buscador,  'PAG' - Paginador,  'CON' - Contenido,  'SB' - Barra de Estado
 *
 * \sa _oculta_Listar
 * \author EG - (egonpin@gmail.com) - 27/05/2005
 */
function _muestra_Listar()
{
	var _parte = arguments[0];

	switch(_parte)
	{
		case 'BUS':
		//alert('muestra - ' + this.idBUS);
		//alert("1 " + this.oBUS);
		  obj_show(this.oBUS);
		  this.visBUS = 1;
		break;
		case 'PAG':
		  obj_show(this.oPAG);
		  this.visPAG = 1;
		break;
		case 'CON':
		  obj_show(this.oCON);
		  this.visCON = 1;
		break;
		case 'CON2':
		  obj_show(this.oCON2);
		  this.visCON = 1;
		break;
		case 'SB':
		  obj_show(this.oSB);
		  this.visSB = 1;
		break;
		case 'WIN':
		  obj_show(this.oWIN);
		  this.visWIN = 1;
		break;
		case 'CTRL':
			if(this.version == 1)
			{
			  obj_show(this.oDES);
			}
			if(this.version >= 2)
			{
        ctrlSH(this.idDES, true);
			}
		  this.visWIN = 1;
		break;
		case 'OPCBORRAR':
		  obj_show(this.oOPCBORRAR);
		  this.visOPCBORRAR = 1;
		break;
		case 'XML':
		  obj_show(this.oXML);
		  this.visXML = 1;
		break;
		case 'CSV':
		  obj_show(this.oCSV);
		  this.visCSV = 1;
		break;
		case 'PRN':
		  this.visPRN = 1;
		break;
	}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 6. - Oculta las partes del componente
 *      Recibe 1 parametro, nombre de la parte
 * \param _parte - (STRING)
 *       'BUS' - Buscador,  'PAG' - Paginador,  'CON' - Contenido,  'SB' - Barra de Estado
 *
 * \sa _muestra_Listar
 * \author EG - (egonpin@gmail.com) - 27/05/2005
 */
function _oculta_Listar()
{
	var _parte = arguments[0];
	switch(_parte)
	{
		case 'BUS':
			//alert('oculta - ' + this.idBUS);
		  $(this.idBUS).hide();
		  //obj_hide(this.oBUS);
		  this.visBUS = 0;
		break;
		case 'XML':
		  obj_hide(this.oXML);
		  this.visXML = 0;
		break;
		case 'CSV':
		  obj_hide(this.oCSV);
		  this.visCSV = 0;
		break;
		case 'PAG':
		  obj_hide(this.oPAG);
		  this.visPAG = 0;
		break;
		case 'CON':
		  obj_hide(this.oCON);
		  this.visCON = 0;
		break;
		case 'CON2':
		  obj_hide(this.oCON2);
		this.oCON2.className = "";
		  this.visCON = 0;
		break;
		case 'SB':
		  obj_hide(this.oSB);
		  this.visSB = 0;
		break;
		case 'WIN':
			if(this.version == 1)
			{
		  		obj_hide(this.oWIN);
			}
			if(this.version >= 2)
			{
            ctrlSH(this.idWIN, false);
			}
		  this.visWIN = 0;
		break;
		case 'CTRL':
			if(this.version == 1)
			{
			  obj_hide(this.oDES);
			}
			if(this.version >= 2)
			{
            ctrlSH(this.idDES, false);
			}
			this.visWIN = 0;
		break;
		case 'OPCBORRAR':
		  obj_hide(this.oOPCBORRAR);
		  this.visOPCBORRAR = 0;
		break;
	}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 7. - Inicializa el objeto
 * \param _idDES - (STRING) Nombre del objeto HTML que contendra el control
 * \author EG - (egonpin@gmail.com) - 27/05/2005
 */
function _inicio_Listar()
{
	var _idDES = arguments[0]?arguments[0]:this.idDES ;
	var _sHTML = null;

  	if(this.version >= 2)
	{
		this.idWIN  = 	buscarForm(_idDES,6);
	}

  	this.idDES     	= _idDES;
	this.id      		= _idDES;
	this.idBUS        = "_oBus_" + this.idDES;
	this.idXML        = "_oXml_" + this.idDES;
	this.idCSV        = "_oCsv_" + this.idDES;
	this.idPAG        = "_oPag_" + this.idDES;
	this.idCON        = "_oCon_" + this.idDES;
	this.idSB         = "_oSb_" + this.idDES;
	this.idAD         = "_oAD_" + this.idDES;
	this.idOPCBORRAR  = "_oOPCBORRAR_" + this.idDES;
	this.sBUS2        = "1";

// Add. mrEd - 20060421

	if(this.version >= 2)
	{
      if(this.enVentana == true)
	   {
			_sHTML = "<div id='" + this.idDES + "' >Cargando Datos...</div>";
			if(!this.oWin){
				this.oWin = new Ventana( this.idWIN , this.titWIN );
				this.oWin.cont(_sHTML);
				this.oWin.autoSize();
			   this.oWin.hide();
				}
		}

/*		if(this.enVentana == true)
		{
			// New Window
			var win_options = {
				left: this.xWin,
				top: this.yWin,
				//zIndex:150,
				width:this.widthWin,
				height:this.heightWin,
				shadow: false,
				//close: 'hide',
				theme: 'leopard',
				id: this.idWIN
      		//show: function(el) { el.appear({ duration: 0.2 }) },
      		//hide: function(el) { el.fade({ duration: 0.2 }) }
    		}
//			this.oWin = new UI.Window(win_options).setHeader(this.titWIN).setContent(_sHTML).show().hide();
			this.oWin = new UI.Window(win_options).setHeader(this.titWIN).setContent("casa").show().hide();
		}
		*/
	}

	if(this.version >= 2)
	{
	 _sHTML  = "<div><table border='0' cellpadding='2' cellspacing='1' style='width: 100%;' class='listarWINtit' summary=''><tr><td style='width: 100%;' id='tit" + this.idDES + "'>&nbsp;Selector de Datos</td><td><a href=\"javascript:ctrlSH('"+ this.idDES +"', false)\"><img border='0' src='"+ dirLibImages +"bCerrar.gif'></a></td></tr></table></div>";
    _sHTML = "";
	}
//		_sHTML += "<div id='" + this.idBUS + "' class='listarBUS'><table class='listarBUS' summary=''><tr><td align='center' >BUSCAR&nbsp;<input type='text' class='listarBUStxt' id='txt_"+_idDES+"' name='txt_"+_idDES+"' onkeypress=\"if (_onKeyPress(event) == 13) _Buscar_Listar('"+ this.idDES +"',this)\" autocomplete='on'>&nbsp;<a href='javascript:;'><img src='"+dirLibImages+"bBusca.gif' onClick=\"_Buscar_Listar('"+ this.idDES +"',this)\"></a>&nbsp;&nbsp;&nbsp;<input type='checkbox' onchange=\"_comodinBuscar_Listar('"+ this.idDES +"',this)\">Buscar contenido exacto</td></tr>"+
// Diseño Objeto BUSCAR == INICIO
		_sHTML += "<div id='" + this.idBUS + "' class='listarBUS'><table class='listarBUS' summary=''><tr><td align='center' >BUSCAR&nbsp;<input type='text' class='listarBUStxt' id='txt_"+_idDES+"' name='txt_"+_idDES+"' onkeypress=\"if (_onKeyPress(event) == 13) _Buscar_Listar('"+ this.idDES +"',this)\" autocomplete='on'>&nbsp;<select onchange=\"_comodinBuscar_Listar('"+ this.idDES +"',this)\"><option value =1>Algunas de las palabras</option><option value =2>Todas las palabras</option><option value =3>Frase exacta</option><option value =4>Contenido exacto</option></select>&nbsp;<a href='javascript:;'><img src='"+dirLibImages+"bBusca.gif' onClick=\"_Buscar_Listar('"+ this.idDES +"',this)\"></a>&nbsp;&nbsp;&nbsp;</td></tr>"+
			          "<tr><td align='center' colspan='3'><a class=\"opcMarcar\" href=\"javascript:_MarcarColumnas_Listar('" + _idDES + "','MARCAR')\">Buscar Todos</a> - <a class=\"opcMarcar\" href=\"javascript:_MarcarColumnas_Listar('" + _idDES + "','DESMARCAR')\">Desmarcar Todos</a> - <a class=\"opcMarcar\" href=\"javascript:_MarcarColumnas_Listar('" + _idDES + "','INVERTIR')\">Invertir Seleccion</a></td>";
		// added by xButil -- Para formato XML
		_sHTML += "<td><div id='" + this.idXML + "' align='center' class='listarXML'><a href=\"javascript:_oEjecutaXML('" + _idDES + "');\"><img border='0' src='"+ dirLibImages +"xml_exp_file.gif' alt='XML' onmouseover=\"Javascript:overlib('Exportar archivo <br>a formato XML para EXCEL')\" onmouseout=\"Javascript:nd()\"></a></div>" +
                    "<div id='" + this.idCSV + "' align='center' class='listarXML'><a href=\"javascript:_oEjecutaCSV('" + _idDES + "');\"><img border='0' src='"+ dirLibImages +"csv_exp_file.gif' alt='CSV' onmouseover=\"Javascript:overlib('Exportar archivo <br>a formato CSV para EXCEL')\" onmouseout=\"Javascript:nd()\"></a></div></td>";
		//
	   _sHTML += "</tr></table></div>";
//alert (_sHTML);
// Diseño Objeto BUSCAR == FIN
		_sHTML += "<div id='" + this.idPAG + "' align='center'><table><tr><td class='listarPAG'></td></tr></table>";
	  _sHTML += "</div>";
		// Listado de los Datos de la Consulta
		_sHTML += "<div align='center'><span id='" + this.idCON + "' class='listarCON'><table id='" + this.idCON + "2' summary=''></table></span></div>";
		_sHTML += "<div id='" + this.idOPCBORRAR + "' align='center' class='listarOPCBORRAR'></div>";
		_sHTML += "<div id='" + this.idAD + "' align='center' class='listarAD'></div>";
		// Barra de Estado
		_sHTML += "<div id='" + this.idSB + "' align='center' class='listarSB'></div>";

		if( typeof($(this.idDES)) == "object" && ($(this.idDES) != null) )
			{ this.oDES = $(this.idDES); }
		else
			{ msg_error(" LdbJS\n Destino [ "+this.idDES+" ] no Encontrado!"); }

//		obj_writeHTML(this.oDES, _sHTML);
		this.oDES.update(_sHTML);

	this.oBUS       = $(this.idBUS);
	this.oPAG       = $(this.idPAG);
	this.oCON       = $(this.idCON);
	this.oCON2      = $(this.idCON+"2");
	this.oOPCBORRAR = $(this.idOPCBORRAR);
	this.oAD        = $(this.idAD);7
	this.oSB        = $(this.idSB);
	this.nLIMIT     = num_registros_x_pagina;
	this.oXML       = $(this.idXML);
	this.oCSV       = $(this.idCSV);

	if (this.idRetorno != "")
		this.idRetorno_Maq = "ibxMsg_" + this.idRetorno;

   this.oculta("BUS");
	this.oculta("CSV");
	this.oculta("XML");

	this.eventos.inicio(this);
	if(this.cargaInicial == true)
		this.mensaje("<b>CONSULTANDO ...</b>");
	else
		this.mensaje("");

	this.orisFiltro = this.sFiltro;
	this.dataBasico();

}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 /**
  * 8. - Actualiza la consulta del objeto (Publica)
  * \sa _ret_consulta_Listar
  * \author EG - (egonpin@gmail.com) - 27/05/2005
  */
  function _consulta_Listar()
  {
	var parametros;
	var _cadSQL = this.construyeSQL(true);

//   _cadSQL= _cadSQL.replace(/\"/g,'\\"');
// OJO Comentado por xButil 03/04/2008 11:30:13 p.m.
// -- Errores en el filtro
// 1. Doble '%'  en la consulta  '%%xxx%%'
// 2. No busca por los campos marcados, sino por todos los campos
// 3. La opcion 'Busca contenido exacto' NO funciona no cambia el LIKE por =
// 4. Revisar la opcion de buscar por varias palabras con OR o AND con las particulas Y o +
		var sidname = sid.split('=');
		parametros = { "sidname":sidname[1], "funcion":"Consulta", "sql":_cadSQL, "id":this.idDES, "ruta":dirInstall  };
/*
alert("sid " +  parametros.sidname +
		"\nFuncion " + parametros.funcion +
		"\nsql " + parametros.sql +
		"\nid " + parametros.id +
		"\nruta " + parametros.ruta );
*/
			jsrsE = new Ajax.Request(dirLibsPHP+"listar_db.php",
			{
				method: 'post',
				encoding: axHTMLCharSet,
				onSuccess: _ret_consulta_Listar,
				parameters: parametros
			}
			);

  }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 9. - Respuesta de la consulta (Privada)
 * \ingroup fPrivada
 * \sa _consulta_Listar
 * \author EG - (egonpin@gmail.com) - 27/05/2005
 */
function _ret_consulta_Listar()
{
	var transport = arguments[0];
// alert(transport.status + " - " + transport.statusText + " - " + transport.readyState +  "\n\n" + transport.getAllHeaders() + "\n\n" + transport.getAllResponseHeaders() );
//alert(transport.responseText);
	xo = transport.responseXML;

 var _obj 		= null;
 var _data = null;
 var n = 0;
 var m = 0;
 var _m = 0;
 var _l = 0;
 var x = 0;
 var _titulos_html = null;
 var _cantCols = 0;
 var _css = null;
 var _classAd = null;
 var _fila = null;
 var _html = null;
 var _html0 = null;
 var _html1 = null;
 var _html2 = null;
 var _html3 = null;
 var _html4 = null;
 var _html5 = null;
 var _html6 = null;
 var _html6a = null;
 var _tmp = null;
 var _tmp2 = null;
 var _tmpTit = null;
 var _tmpx0 = null;
 var _valor = null;
 var _data_dev_Maq = null;
 var _check = null;
 var nPrn = 0;
 var _campos = new String("");

	if(xo.getElementsByTagName('error')[0].childNodes.length !=0)
	{
		var _error = _extractXML(xo.getElementsByTagName('error')[0].childNodes[0]);
	}
	else { var _error = ""; }

	if(xo.getElementsByTagName('ncolumnas')[0].childNodes.length !=0)
	{
		var _columnas = _extractXML(xo.getElementsByTagName('ncolumnas')[0].childNodes[0]);
	}
	else { var _columnas = "0"; }
	if(xo.getElementsByTagName('ncols')[0].childNodes.length !=0)
	{
		var _cols = _extractXML(xo.getElementsByTagName('ncols')[0].childNodes[0]);
	}
	else { var _cols = "0"; }
	if(xo.getElementsByTagName('id')[0].childNodes.length !=0)
	{
		var _id = _extractXML(xo.getElementsByTagName('id')[0].childNodes[0]);
	}
	else { var _id = ""; }
	if(xo.getElementsByTagName('nfilas')[0].childNodes.length !=0)
	{
		var _nFilas = _extractXML(xo.getElementsByTagName('nfilas')[0].childNodes[0]);
	}
	else { var _nFilas = "0"; }
	if(xo.getElementsByTagName('inicial')[0].childNodes.length !=0)
	{
		var _inicial = _extractXML(xo.getElementsByTagName('inicial')[0].childNodes[0]);
	}
	else { var _inicial = ""; }
	if(xo.getElementsByTagName('reg').length !=0)
	{
		var _result = xo.getElementsByTagName('reg');
	}
	else { var _result = ""; }

	Anuncio("Generando...");
	_obj = _localiza_Listar(_id);
	_data = new Array();

	// recorriendo registros
	for(var n=0; n<_result.length; n++ )
	{
		_data[n] = _result[n].getElementsByTagName('col').length==0?"":_result[n].getElementsByTagName('col');
		// recorriendo columnas
		var tcol = new Array();
		for(var m=0; m<_data[n].length; m++)
		{
			tcol[m] = _extractXML(_data[n][m].childNodes[0]);
		}
		_data[n] = tcol;
	}

	if(_obj.camposMostrar != 0)
	{ _columnas = _obj.camposMostrar; }
	else
	{
		if(_campos.length > 0)
			_columnas = _campos.length;
	}

	_obj.aData = _data;

	if(_error != "")  { msg_error(_error); }
	else
	{
		_titulos_html = _titulos_HTML_Listar(_id);
		switch(_obj.clase)
		{
         case "LISTAG":
         {
				_html = "<table id='" + _obj.idCON +"2' class='tListar' summary='' border='0' cellpadding='0' cellspacing='0' >";
            _nFilas = Math.round(_data.length / _obj.nRegxFila);
            var _nOpc = 1;
				for(n=0; n<_data.length; n++) // Recorre todos los Registros de la Busqueda
				{
					if((n % 2) == 0) _css = "Impar"; else _css="Par";
               _cantCols = 0;
               if(_nOpc > _obj.nRegxFila)
               {
   					_html += "<tr>";
   					_nOpc = 1;
               }

               if((_obj.campoLink >= 0) && (trim(_data[n][_obj.campoLink]) != ""))
               {
     					_html += "<td id='"+_id+"Row"+n+"'><table border='0' cellpadding='0' cellspacing='0'><tr><td><a href='" +_data[n][_obj.campoLink] + "'><img src='" +_data[n][_obj.campoImg] + "' width='"+ _obj.widthCampoImg + "' /></a></td>";
               }
               else
               {
                  if(_obj.campoImg != -1)
                  {
	  						 if(_obj.widthCampoImg != "")
							 {
								_html += "<td id='"+_id+"Row"+n+"'><table border='0' cellpadding='0' cellspacing='0'><tr><td><img src='" +_data[n][_obj.campoImg] + "' width='"+ _obj.widthCampoImg + "' /></td>";
							 }
	     					else
	     					{
								_html += "<td id='"+_id+"Row"+n+"'><table border='0' cellpadding='0' cellspacing='0'><tr><td><img src='" +_data[n][_obj.campoImg] + "' /></td>";
						   }
						}
						else
						{
							_html += "<td></td>";
						}
               }

					if(_obj.isVertical == true)
					{
					 _html += "</tr><tr>";
					}

               if(_obj.verCampos == true)
               {
						_html2 = new String("");
   					for(m=0; m<_data[n].length; m++)  // Campos
   					{
							if(_obj.plantillaI.trim() == "")
							{
		     				    _classAd = "";
		     					 for(_m=0; _m<_obj.cRC.length; _m++)
		     					 {
		                     _fila = StringtoArray(_obj.cRC[_m],",");
		     					   if(_fila[1] == m)
		     				      {
		     				        if(_css == "Par")  _classAd = " " + _fila[3];

		     				        if(_css == "Impar")  _classAd = " " + _fila[4];
		                     }
		                   }

		   					 if((_cantCols < _columnas) && (m != _obj.campoImg) && (m != _obj.campoLink))
		   					 {
				   				_html2 += "<td class='tListar"+_css+ _classAd +"' id='"+_id+"Row"+n+"Col"+m+"'>" + _data[n][m].replace(/(\\n)|(\\r\\n)/ig,'<br />') + "</td></tr>";
		   						_cantCols += 1;
		   					 }
		   					 if(_cantCols >= _columnas) { m = _data[n].length; }
							}
							else
							{
								if(_html2 == "")
								{
								  _html2 = "<td>" + _obj.plantillaI.trim() + "</td></tr>";
								}
								_tmps = _data[n][m].replace(/(\\n)|(\\r\\n)/ig,'<br />');
							  _html2 = _html2.replace( eval("/%" + m + "%/ig") , _tmps );
                    }
               }
						if(_obj.plantillaI.trim() == "")
						{
                  _html += "" + _html2 + "";
               }
						else
						{
   	               _html += "<tr><td>" + _html2 + "</td></tr>";
						}
               }

					_html += "</table></td>";
               if(_nOpc > _obj.nRegxFila)
               {
   					_html += "</tr>\n";
               }
               _nOpc += 1;

				}
				_html += "</table>";
				obj_writeHTML(_obj.oCON, _html);
				this.oCON2 = $(this.idCON+"2");
            break;
         }
			case "LISTA":
			{
				_html = "<table id='" + _obj.idCON +"2' class='tListar' summary='' cellpadding='0' cellspacing='0'>" + _titulos_html +"";

				for(n=0; n<_data.length; n++)
				{
					_cantCols = 0;
					_html += "<tr id='"+_id+"Row"+n+"'>";
					if((n % 2) == 0) _css = "Impar"; else _css="Par";

					// EG - 16/04/2007
  		      if(_obj.visPRN == 1)
  		      {
               for(nPrn=0; nPrn<_obj.prnFunc.length; nPrn++)
               {
        					if( typeof(eval(_obj.prnFunc[nPrn])) == "function" )
        					{
      		  				 m = _data[n].length -1;
      			          _html6 = _obj.pk + separador_col + _data[n][m] ;
      					    _html6a = "";
                         for(_l=0; _l<_data[n].length; _l++)
                         {
      					         _html6a += _l + separador_col + _data[n][_l] ;
      					         if(_l < _data[n].length - 1)
      					         { _html6a += separador_reg; }
                         }

                         if(trim( _obj.prnTxt[nPrn]) != "" )
                         {
           	     			   _html += "<td style='cursor: pointer;' id='"+_id+"Row"+n+"Col0"+nPrn+"' onClick=\"" + _obj.prnFunc[nPrn] + "('" + _id+"Row"+n + "', '"+ _html6a+ "', '"+_id+"Row"+n+"');\">"+ _obj.prnTxt[nPrn] +"</td>";
                         }
                         else
                         {
           	     			   _html += "<td style='cursor: pointer;' id='"+_id+"Row"+n+"Col0' onClick=\"" + _obj.prnFunc[nPrn] + "('" + _id+"Row"+n + "', '"+ _html6a+ "', '"+_id+"Row"+n+"');\"><img src='" + dirLibImages + "bImprimir.gif' alt='Imprimir'></td>";
                         }
                    }
                    else
                    {
                      _html += "<td></td>";
                    }
               }
            }
					//

					for(m=0; m<_data[n].length; m++)
					{
  				   // EG 24/04/2007
  				   _classAd = "";
  					 for(_m=0; _m<_obj.cRC.length; _m++)
  					 {
  						 _fila = StringtoArray(_obj.cRC[_m],",");
  						 if(_fila[1] == m)
  				     {
  				        if(_css == "Par")  _classAd = " " + _fila[3];

  				        if(_css == "Impar")  _classAd = " " + _fila[4];
               }
             }
						if(_cantCols < _columnas)
						{
							//		            if((m % 2) == 0) _css = "Par"; else _css="Impar";  // colorea por columnas
							_html += "<td class='tListar"+_css+ _classAd +"' id='"+_id+"Row"+n+"Col"+m+"'>" + _data[n][m].replace(/(\\n)|(\\r\\n)/ig,'<br />') + "</td>";
							_cantCols += 1;
						}
						if(_cantCols >= _columnas) { m = _data[n].length; }
					}
					_html += "</tr>\n";
				}
				_html += "</table>";
				obj_writeHTML(_obj.oCON, _html);
				this.oCON2 = $(this.idCON+"2");
			}
			break;
			case "EDICION":
				//_obj.muestra("BUS");
				_html0 = "<table id='" + _obj.idCON +"2' class='tListar' summary=''>" + _titulos_html + "";
				_html1 = "";
				_tmpTit = StringtoArray(_obj.campos,",");

				// Registros
				for(n=0; n<_data.length; n++)
				{
					//_tmpTit = StringtoArray(_obj.campos,",");
					_cantCols = 0;
					_html1 += "<tr id='"+_id+"Row"+n+"'>";
					_html3 = "";
					_html5 = "";
					if((n % 2) == 0) _css = "Impar"; else _css="Par";
					// Columnas
					for(m=0; m<(_data[n].length -1); m++)
					{
  				   // EG 24/04/2007
  				   _classAd = "";
  					 for(_m=0; _m<_obj.cRC.length; _m++)
  					 {
  						 _fila = StringtoArray(_obj.cRC[_m],",");
  						 if(_fila[1] == m)
  				     {
  				        if(_css == "Par")  _classAd = " " + _fila[3];

  				        if(_css == "Impar")  _classAd = " " + _fila[4];
                 }
             	 }
						if ( _tmpTit[m] && _tmpTit[m].match("."))
							_tmpTit[m] = _tmpTit[m].substr(_tmpTit[m].indexOf(".")+1);

// Carajos antes enviabamos todo el objeto ahora no se puede enviar asi solo debemos enviar el apuntador
//						_html5 += _tmpTit[m] + separador_col + _data[n][m] + separador_reg;

						if(_cantCols < _columnas)
						{
							_tmpx0 = _data[n][m].replace(/(\\n)|(\\r\\n)/ig,'<br />');
							_tmpx0 = _tmpx0.replace(/(\\')/ig, "&#39;");
							_html3 += "<td class='tListar"+_css+ _classAd +"' id='"+_id+"Col"+m+"'>" + _tmpx0 + "</td>";
							_cantCols += 1;
						}
						//					if(_cantCols >= _columnas) { m = _data[n].length; }
					}

					m = _data[n].length -1;

					_html5 = "" + n + ", " + m + ", "  + _data[n][m] + "";

					_html4 = "";
					switch(eval(""+ _obj.typeEDIT))
					{
						case 0:  // boton IMG de edicion y de borrado
							_html4 = "<td align='center'><input type='radio' id='radio_" + _id + "' name='radio_" + _id + "' onclick=\"_Selec_Editar_Listar('" + _id + "','" + _html5 + "')\"></td>";
						break;
						case 1: // Boton Texto de edicion y borrado check
						  _html4 = "<td align='center'><input type='button' id='radio_" + _id + "' name='radio_" + _id + "' value='Editar' onclick=\"_Editar_Listar('" +_id + "','" + _html5 + "')\"></td>";
						break;
						default:
						  _html4 = "<td align='center'><a style='cursor: pointer;' id='radio_" + _id + "' name='radio_" + _id + "' value='Editar' onclick=\"_Editar_Listar('" +_id + "','" + _html5 + "')\"><img border='0' src='"+ dirLibImages +"bEditar.gif' alt=\"Editar\" /></a></td>";
						break;
					}
// 					_html2 = "";
					switch(eval(""+ _obj.typeEDIT))
					{
						case 0:
						{
							_html2 = "<td align='center'><input type='checkbox' id='chkB_" + _id + "' name='chkB_" + _id + "' onChange=\"_Select_Borrar_Listar('" + _id + "','" + _obj.pk + separador_col + _data[n][m] + "',this)\" value=\"'" + _obj.pk + separador_col + _data[n][m] + "'\"></td>";
						}
						break;
						case 1:
						{
							_html2 = "<td align='center'><input type='checkbox' id='chkB_" + _id + "' name='chkB_" + _id + "' onChange=\"_Select_Borrar_Listar('" + _id + "','" + _obj.pk + separador_col + _data[n][m] + "',this)\" value=\"'" + _obj.pk + separador_col + _data[n][m] + "'\"></td>";
						}
						break;
						case 2:
						{
							_html2 = "<td align='center'><input type='checkbox' id='chkB_" + _id + "' name='chkB_" + _id + "' onChange=\"_Select_Borrar_Listar('" + _id + "','" + _obj.pk + separador_col + _data[n][m] + "',this)\" value=\"'" + _obj.pk + separador_col + _data[n][m] + "'\"></td>";
						}
						break;
						case 3:
						{
							_html2 = "";
						}
						break;
					}
					_html1 += _html4 + _html2 + _html3 + "</tr>";
				}
				_html = _html0 + _html1 + "</table>";

				_obj.paraBorrar = new Array();
				obj_writeHTML(_obj.oCON, _html);

				// (OPCBORRAR) Marcar, desmarcar, invertir Opciones de Borrado
				_html = "<table><tr><td><div class='opcMarcar'><a class=\"opcMarcar\" href=\"javascript:_chk_Borrar_Listar('" + _id + "','MARCAR')\">Borrar Todos</a> - <a class=\"opcMarcar\" href=\"javascript:_chk_Borrar_Listar('" + _id + "','DESMARCAR')\">Desmarcar Todos</a> - <a class=\"opcMarcar\" href=\"javascript:_chk_Borrar_Listar('" + _id + "','INVERTIR')\">Invertir Selecci&oacute;n</a></div></td></tr></table>";
				obj_writeHTML(_obj.oOPCBORRAR, _html);
				this.oCON2 = $(this.idCON+"2");
	  break;
	  case "SELECCION":
	  {
	         if(_obj.idRetorno == "oOTRO")
	         {_tmp = _obj.xRetorno;}
	         else
	         {
					_tmp = $(_obj.idRetorno); }
	         	_tmp2 = $("txt_" + _obj.idDES);
	         	_tmp = null;
	         	_tmp2= null;

					_html0 = "<table id='" + _obj.idCON +"2' class='tListar' summary=''>" + _titulos_html + "";
					_html1 = "";
					_campos = StringtoArray(_obj.campos, ",");

				for(var n=0; n<_data.length; n++)
				{
					_cantCols = 0;
					_valor = (typeof(_data[n][_obj.colRetorno]) == "undefined") ? "" : _data[n][_obj.colRetorno];
					_html3 = "";
					_tmpTit = StringtoArray(_obj.titulos,",");
					_html5 = "";
					_data_dev_Maq = "";
					if((n % 2) == 0) _css = "Impar"; else _css="Par";
					for(var m=0; m<(_data[n].length -1); m++)
					{
 				   // EG 24/04/2007
  				   _classAd = "";
  					 for(var _m=0; _m<_obj.cRC.length; _m++)
  					 {
  						 _fila = StringtoArray(_obj.cRC[_m],",");
  						 if(_fila[1] == m)
  				     {
  				        if(_css == "Par")  _classAd = " " + _fila[3];

  				        if(_css == "Impar")  _classAd = " " + _fila[4];
                 }
             	 }

						if(_obj.colRetorno_Maq == m)
						{
       					_data_dev_Maq = _data[n][m];
						}

						_html5 += _tmpTit[m] + separador_col + _data[n][m] + separador_col + _campos[m];
						if(m< (_data[n].length - 2) )  _html5+= separador_reg;

						if(_cantCols < _columnas)
						{
							_tmpx0 = _data[n][m];
/*
							_tmpx0 = _data[n][m].replace(/(\\n)|(\\r\\n)/ig,'<br />');
                    	_tmpx0 = _tmpx0.replace(/&gt;/ig, ">");
                    	_tmpx0 = _tmpx0.replace(/\\'/ig, "'");
*/
							_html3 += "<td class='tListar"+_css+_classAd+"' id='"+_id+"Col"+m+"'>" + _tmpx0 + "</td>";
							_cantCols += 1;
						}
					}
					m = _data[n].length -1;
					//_html5 += _obj.pk + separador_col + _data[n][m] + separador_reg;

					_html4 = "";
					_html2 = "";
					_html1 += "<tr style='cursor: pointer;' id='"+_id+"Row"+n+"' onclick=\"ctrlRET('"+_id+"','"+_valor+"',null,'"+_html5+"','"+ _data_dev_Maq +"')\">";
					_html1 += _html4 + _html2 + _html3 + "</tr>";
				}
				_html = _html0 + _html1 + "</table>";
				// Marcar, desmarcar, invertir
				//_html += "<div class='opcMarcar'><a class=\"opcMarcar\" href=\"javascript:_chk_Borrar_Listar('" + _id + "','MARCAR')\">Borrar Todos</a> - <a class=\"opcMarcar\" href=\"javascript:_chk_Borrar_Listar('" + _id + "','DESMARCAR')\">Desmarcar Todos</a> - <a class=\"opcMarcar\" href=\"javascript:_chk_Borrar_Listar('" + _id + "','INVERTIR')\">Invertir Selecci&oacute;n</a></div>";
				obj_writeHTML(_obj.oCON, _html);
				this.oCON2 = $(this.idCON+"2");
		}
	  break;
	  case "MULTISELECCION":
				_html0 = "<table id='" + _obj.idCON +"2' class='tListar' summary=''>" + _titulos_html + "";
				_html1 = "";

				for(n=0; n<_data.length; n++)
				{
					if((n % 2) == 0) _css = "Impar"; else _css="Par";
					_cantCols = 0;
					_valor = (typeof(_data[n][_obj.colRetorno]) == "undefined") ? "" : _data[n][_obj.colRetorno];
					_html1 += "<tr style='cursor: pointer;' id='"+_id+"Row"+n+"' onclick=\"ctrlRET('"+_id+"','"+n+"','MULTI', '" +_valor+ "',"+_data.length+", 'tListar"+_css+"');\" class='tListar"+_css+"' >";
					_html3 = "";
					_tmpTit = StringtoArray(_obj.campos,",");
					_html5 = "";
					for(m=0; m<(_data[n].length -1); m++)
					{
  				   // EG 24/04/2007
  				   _classAd = "";
  					 for(_m=0; _m<_obj.cRC.length; _m++)
  					 {
  						 _fila = StringtoArray(_obj.cRC[_m],",");
  						 if(_fila[1] == m)
  				     {
  				        if(_css == "Par")  _classAd = " " + _fila[3];

  				        if(_css == "Impar")  _classAd = " " + _fila[4];
               }
             }
						_html5 += _tmpTit[m] + separador_col + _data[n][m] + separador_reg;

						if(_cantCols < _columnas)
						{
							_html3 += "<td class='tListar"+_css+_classAd+"' id='"+_id+"Col"+m+"' onmouseover=\"axf_classfila(this, 'multis_over');\" onmouseout=\"axf_classfila(this, 'tListar"+_css+_classAd+"');\" >" + _data[n][m].replace(/(\\n)|(\\r\\n)/ig,'<br />') + "</td>";
							_cantCols += 1;
						}
					}
					m = _data[n].length -1;
					_html5 += _obj.pk + separador_col + _data[n][m] + separador_reg;

					_html4 = "";
					_check = "";
					for(x=0; x<_obj.aRetorno.length; x++)
					{
					   if( (_valor == _obj.aRetorno[x]) && (_valor != "") )
					   {
					      _check = "checked";
					      x = _obj.aRetorno.length;
						}
					}
					_html2 = "<td align='center'><input type='checkbox' id='chkB_" + _id + n + "' name='chkB_" + _id + n + "' value=\"'" + _valor + "'\" disabled "+_check+"></td>";

					_html1 += _html4 + _html2 + _html3 + "</tr>";
				}
				_html = _html0 + _html1 + "</table>";
				// Marcar, desmarcar, invertir
				//_html += "<div class='opcMarcar'><a class=\"opcMarcar\" href=\"javascript:_chk_Borrar_Listar('" + _id + "','MARCAR')\">Marcar Todos</a> - <a class=\"opcMarcar\" href=\"javascript:_chk_Borrar_Listar('" + _id + "','DESMARCAR')\">Desmarcar Todos</a> - <a class=\"opcMarcar\" href=\"javascript:_chk_Borrar_Listar('" + _id + "','INVERTIR')\">Invertir Selecci&oacute;n</a></div>";
				obj_writeHTML(_obj.oCON, _html);
				this.oCON2 = $(this.idCON+"2");
		break;
	 }
	}
	_MarcarColumnas_Listar(_id ,'MARCAR');

// aca va la validacion y lanzado del evento dConsulta 04/10/2007 EG
		if( trim(_obj.eventos.dConsulta) != "")  { eval(_obj.eventos.dConsulta + "(_obj)" ); }
Anuncio("");
 }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 10. - Cambia el texto de la barra de estado (Privada)
 * \author EG - (egonpin@gmail.com) - 27/05/2005
 */
 function _mensaje_Listar()
 {
  var _msg = arguments[0];
  obj_writeHTML(this.oSB, _msg);
 }
////////////////////////////////////////////////////////////////////////////////
/** 11. - _Paginador_Listar
 * \ingroup fPrivada
 * \param _regs - Integer, numero de registros de la Consulta
 * \param _apunta - String
 * \param _cmd - String o Integer
 * \param _pag - Integer
 * \author EG - (egonpin@gmail.com) - 27/05/2005
 */
function _Paginador_Listar()
{
  var _regs 	= arguments[0];
  var _apunta = arguments[1];
  var _cmd 		= arguments[2];
  var _pag 		= arguments[3];
  var _num_registros_x_pagina = arguments[4];
  var _oPag = null;
  var _oDES = null;
  var _cad_tit = "";
  var _num_paginas_x_linea = null;
  var _num_datos = null;
  var _paginas = null;
  var _paginas_x_lineas = null;
  var _pagina_actual = null;
  var _val_fin = null;
  var _val_ini = null;
  var n = null;
  var txt = null;
	///   paginador inicio
	var _num_datos = eval(_regs);
			  // calculamos numero de paginas
			  if(_num_registros_x_pagina == -1 )
			  	{_num_registros_x_pagina = eval(num_registros_x_pagina);}

			  _num_paginas_x_linea = eval(num_paginas_x_linea);
			  _oPag = _localiza_Listar(_apunta).oPAG;
				_oDES = _localiza_Listar(_apunta);
			////
			  if ( _num_datos > _num_registros_x_pagina ) { _paginas = Math.ceil(_num_datos / _num_registros_x_pagina); }
			  else  { _paginas = 1; }
			  // calculamos numero de paginas x linea
			  if ( _paginas > _num_paginas_x_linea )  { _paginas_x_lineas = Math.ceil(_paginas / _num_paginas_x_linea); }
			  else  { _paginas_x_lineas = 1; }
			///
			///  comandos
			   if(typeof(_cmd) == "number")
				 { _pagina_actual = eval(_cmd);
				   _oDES.pagACT = _pagina_actual;
				 }
			   else
				{ if(_cmd == "retroceder") { if( _pag > 1 ) { _pag -= 1; } }
			  	  else
			 	  {
			       if(_cmd == "avanzar") { if( (_pag + 1) <= _paginas ) { _pag += 1; } }
				  }
				}
			  // generamos paginador
			/////
			  _val_fin = _pag * _num_paginas_x_linea ;
			  _val_ini = _val_fin - _num_paginas_x_linea + 1;
			///
			  if( _val_fin > _paginas)  { _val_fin = _paginas; }
			///
			  _cad_tit = "<table class='cPaginador' summary=''><tr>";
			///
			  if( _pag <= 1 )  { _cad_tit += ""; } // { _cad_tit += "<td><\/td>"; } anterior
			  else
			  {
			  	_cad_tit += "<td><a class=\"listarPAG\" title='Primera Pagina' href=\"javascript:_Paginador_Listar( "+ _regs + ", '" + _apunta + "', " +"1, 1, " + _num_registros_x_pagina + " )\">&brvbar;&lt;<\/a><\/td>";
			  	_cad_tit += "<td><a class=\"listarPAG\" title='Pagina Anterior' href=\"javascript:_Paginador_Listar( "+ _regs + ", '" + _apunta + "', " +"'retroceder', " + _pag + ", " + _num_registros_x_pagina + " )\">&lt;&lt;<\/a><\/td>";
			  }
        _oDES.pagActual = _pagina_actual;
			///
			  for(n=_val_ini; n<=_val_fin; n++)
			  {
			  	if( _pagina_actual == n )  { _cad_tit += "<td>"+ n +"<\/td>"; }
			  	else  { _cad_tit += "<td><a class=\"listarPAG\" href=\"javascript:_Paginador_Listar("+ _regs + ", '" + _apunta + "', " + n + ", " + _pag + ", " + _num_registros_x_pagina + ")\">"+ n +"<\/a><\/td>"; }
			  }
			  // avance de paginas
			  if( _pag >= _paginas_x_lineas )
			  { _cad_tit += "<\/tr><\/table>"; }
			  else
			  { _cad_tit += "<td><a class=\"listarPAG\" title='Siguiente Pagina' href=\"javascript:_Paginador_Listar(" + _regs + ", '" + _apunta + "', 'avanzar', " + _pag + ", " + _num_registros_x_pagina + ")\">&gt;&gt;<\/a><\/td>";
				 _cad_tit += "<td><a class=\"listarPAG\" title='Ultima Pagina' href=\"javascript:_Paginador_Listar(" + _regs + ", '" + _apunta + "', "+ _paginas + ", " + _paginas_x_lineas + ", " + _num_registros_x_pagina + ")\">&gt;&brvbar;<\/a><\/td><\/tr><\/table>";
			  }
			///
			obj_writeHTML(_oPag, _cad_tit);

			if (_oDES.datosInicio)
			{
			  	_oDES.nOFFSET = (_pagina_actual * _num_registros_x_pagina) - _num_registros_x_pagina ;
			  	_oDES.nLIMIT = _num_registros_x_pagina;
        }
        else
        {
			  	_oDES.nOFFSET = 0;
			  	_oDES.nLIMIT = 0;
				}

		   if(typeof(_cmd) == "number")  { _oDES.consulta(); }
 			txt = ("Halladas " + _regs +  " coincidencias, Pagina " + _pagina_actual + " de " + _paginas);
			_oDES.mensaje(txt);
}
////////////////////////////////////////////////////////////////////////////////
/** 12. - Localiza el Objeto Listar en el Array de Listados
 * \param _sID - (STRING) Nombre del objeto
 * \author EG - (egonpin@gmail.com) - 27/05/2005
 */
function _localiza_Listar()
{
	var _sID = arguments[0];
	var _objx = null;
	var x=0;
 	for(x=0; x<_aListados.length; x++)
	{
		if(trim(_aListados[x].id) == trim(_sID) )
		{
			_objx = _aListados[x]; x=_aListados.length;
		}
	}
	return _objx;
}
function buscaListar(_sID) { return _localiza_Listar(_sID); }
////////////////////////////////////////////////////////////////////////////////
/** 13. - Genera los titulos HTML
 * \param _sID - (STRING) Nombre del objeto
 * \author EG - (egonpin@gmail.com) - 01/06/2005
 */
function _titulos_HTML_Listar()
{
	var _sID = arguments[0];
	var _obj = _localiza_Listar(_sID);
	var _titulos_html = "";
	var _columnas = null;
	var n = 0;
	var m = 0;
	var _classAd = null;
	var _classAdT = null;
	var _fila = null;
	var nPrn = 0;
	// Generando Titulos HTML
	var _titulos = StringtoArray(_obj.titulos,",");
	var _campos = StringtoArray(_obj.campos,",");

	if(_obj.camposMostrar != 0)
	{ _columnas = _obj.camposMostrar; }
	else
	{ _columnas = _campos.length; }

	_titulos_html = "<thead class='thTitulo'><tr class='trTitulo'>";

	 switch(_obj.clase)
	 {
	    case "LISTAG":
	    {
         _titulos_html = new Array(_columnas);
			for(n=0; n<_titulos.length; n++)
			{
			   _classAd = "";
			   _classAdT = "";
				for(_m=0; _m<_obj.cRC.length; _m++)
				{
				  _fila = StringtoArray(_obj.cRC[_m],",");
				  if((_fila[1] == n) && (trim(_fila[2]) != ""))
				  {
				     _classAd = " " + _fila[2];
				     _classAdT = " " + _fila[2] + "Text";
              }
            }

        	   if(_columnas > n)
        	   {
			 	  if( trim(_obj.orden) == trim(_campos[n].replace(/DISTINCT/ig,"")) )
				  {
				     _titulos_html[n] = "<td class='tdTitulo"+ _classAd +"'><table width='100%' summary=''><tr>" +
											"<td class='tdTituloText"+ _classAdT +"' onresize=\"\"><a onclick=\"javascript:_ordenar_Listar('" + _sID +
											"', '" + _campos[n] + "', this);\">" + _titulos[n] +
											"&nbsp;&nbsp;<img src='"+dirLibImages+"plus_" + _obj.TipoOrd + ".gif' alt='" + _obj.TipoOrd + "' class='imgTitulo'></a></td>" +
											((_obj.visBUS==1)?("<td align='right'><input type='checkbox' class='chBuscar' onchange=\"_selBusqueda_Listar('" + _sID + "', '" + _campos[n] + "', this.checked)\" id=\"_col_"+ _sID + n +"\" name=\"_col_"+ _sID + n +"\" value='" + _campos[n] + "' > </td>"):"") +
											"</tr></table></td>";
				  }
				  else
				  {
				     _titulos_html[n] = "<td class='tdTitulo"+ _classAd +"'><table width='100%' summary=''><tr>" +
											"<td class='tdTituloText"+ _classAdT +"'><a onclick=\"javascript:_ordenar_Listar('" + _sID +
											"', '" + _campos[n] + "', this);\">" + _titulos[n] +
											"&nbsp;&nbsp;<img src='"+dirLibImages+"blank.gif' border='0' alt='DESC' class='imgTitulo' width='1px'></a></td>" +
											((_obj.visBUS == 1)?("<td align='right'><input type='checkbox' class='chBuscar' onchange=\"_selBusqueda_Listar('" + _sID + "', '" +	_campos[n] + "', this.checked)\" id=\"_col_"+ _sID + n +"\" name=\"_col_"+ _sID + n +"\" value='" + _campos[n] + "'> </td>"):"") +
											"</tr></table></td>";
				  }
			   }
			   else { n = _titulos.length; }
   	   }
       }
		 break;
	    case "LISTA":
	      if(_obj.visPRN == 1)
	      {
               for(nPrn = 0; nPrn < _obj.prnFunc.length; nPrn++)
               {
                  _titulos_html += "<td class='tdTitulo'><img src='"+dirLibImages+"bImprimir.gif' alt='Imprimir'></td>";
               }
         }

			 	for(n=0; n<_titulos.length; n++)
			 	{
				   _classAd = "";
				   _classAdT = "";
					 for(_m=0; _m<_obj.cRC.length; _m++)
					 {
						 _fila = StringtoArray(_obj.cRC[_m],",");
						 if((_fila[1] == n) && (trim(_fila[2]) != ""))
				     {
				      _classAd = " " + _fila[2];
				      _classAdT = " " + _fila[2] + "Text";
             }
           }

        	 if(_columnas > n)
        	 {
				 	  if( trim(_obj.orden) == trim(_campos[n].replace(/DISTINCT/ig,"")) )
				 	  {
							_titulos_html += "<td class='tdTitulo"+ _classAd +"'><table width='100%' summary=''><tr>" +
																"<td class='tdTituloText"+ _classAdT +"' onresize=\"\"><a onclick=\"javascript:_ordenar_Listar('" + _sID +
																"', '" + _campos[n] + "', this);\">" + _titulos[n] +
																"&nbsp;&nbsp;<img src='"+dirLibImages+"plus_" + _obj.TipoOrd + ".gif' alt='" + _obj.TipoOrd + "' class='imgTitulo'></a></td>" +
																((_obj.visBUS==1)?("<td align='right'><input type='checkbox' class='chBuscar' onchange=\"_selBusqueda_Listar('" + _sID + "', '" + _campos[n] + "', this.checked)\" id=\"_col_"+ _sID + n +"\" name=\"_col_"+ _sID + n +"\" value='" + _campos[n] + "' > </td>"):"") +
																"</tr></table></td>";
						}
						else
						{
							_titulos_html += "<td class='tdTitulo"+ _classAd +"'><table width='100%' summary=''><tr>" +
																"<td class='tdTituloText"+ _classAdT +"'><a onclick=\"javascript:_ordenar_Listar('" + _sID +
																"', '" + _campos[n] + "', this);\">" + _titulos[n] +
																"&nbsp;&nbsp;<img src='"+dirLibImages+"blank.gif' border='0' alt='DESC' class='imgTitulo' width='1px'></a></td>" +
																((_obj.visBUS == 1)?("<td align='right'><input type='checkbox' class='chBuscar' onchange=\"_selBusqueda_Listar('" + _sID + "', '" +	_campos[n] + "', this.checked)\" id=\"_col_"+ _sID + n +"\" name=\"_col_"+ _sID + n +"\" value='" + _campos[n] + "'> </td>"):"") +
																"</tr></table></td>";
						}
					}
					else { n = _titulos.length; }
				}
			break;
		  case "EDICION":
				//{ _titulos_html += "<td class='tdTitulo'><a href=\"javascript:_Editar_Listar('" +_sID + "','')\">Editar</a></td><td class='tdTitulo'><a href=\"javascript:_Borrar_Listar('" +_sID + "','')\">Borrar</a></td>"; }
		    switch(eval(""+_obj.typeEDIT))
			 {
				case 0:
					{ _titulos_html += "<td class='tdTitulo'><a href=\"javascript:_Editar_Listar('" +_sID + "','')\"><img src='"+dirLibImages+"bEditar.gif' border=0 alt='Editar' class='imgTitulo'></a></td><td class='tdTitulo'><a href=\"javascript:_Borrar_Listar('" +_sID + "','')\"><img src='"+dirLibImages+"bBorrar.gif' border=0 alt='Borrar' class='imgTitulo'></a></td>"; }
				break;
				case 1:
					{ _titulos_html += "<td class='tdTitulo'></td><td class='tdTitulo'><a href=\"javascript:_Borrar_Listar('" +_sID + "','')\"><img src='"+dirLibImages+"bBorrar.gif' border=0 alt='Borrar' class='imgTitulo'></a></td>"; }
				break;
				case 2:
					{ _titulos_html += "<td class='tdTitulo'></td><td class='tdTitulo'><a href=\"javascript:_Borrar_Listar('" +_sID + "','')\"><img src='"+dirLibImages+"bBorrar.gif' border=0 alt='Borrar' class='imgTitulo'></a></td>"; }
				break;
				case 3:
					{ _titulos_html += "<td class='tdTitulo'></td>"; }
				break;
			 }

			 	for(n=0; n<_titulos.length; n++)
			 	{
				   _classAd = "";
				   _classAdT = "";
					 for(_m=0; _m<_obj.cRC.length; _m++)
					 {
						 _fila = StringtoArray(_obj.cRC[_m],",");
						 if(_fila[1] == n)
				     {
				      _classAd = " " + _fila[2];
				      _classAdT = " " + _fila[2] + "Text";
             }
           }

        			if(_columnas > n)
        			{
				 	  if( trim(_obj.orden) == trim(_campos[n].replace(/DISTINCT/ig,"")) )
				 	  {
							_titulos_html += "<td class='tdTitulo"+ _classAd +"'><table width='100%' summary=''><tr>" +
																"<td class='tdTituloText"+ _classAdT +"'><a onclick=\"javascript:_ordenar_Listar('" + _sID +
																"', '" + _campos[n] + "', this);\">" + _titulos[n] +
																"&nbsp;&nbsp;<img src='"+dirLibImages+"plus_" + _obj.TipoOrd + ".gif' alt='" + _obj.TipoOrd + "' class='imgTitulo'></a></td>" +
																((_obj.visBUS==1)?("<td align='right'><input type='checkbox' class='chBuscar' onclick=\"_selBusqueda_Listar('" + _sID + "', '" +	_campos[n] + "', this.checked)\" id=\"_col_"+ _sID + n +"\" name=\"_col_"+ _sID + n +"\" value='" +	_campos[n] + "'></td>"):"") +
																"<td class='resize' id='tdResize"+n+"'></td></tr></table></td>";
						}
						else
						{
							_titulos_html += "<td class='tdTitulo"+ _classAd +"'><table width='100%' summary=''><tr>" +
																"<td class='tdTituloText"+ _classAdT +"'><a onclick=\"javascript:_ordenar_Listar('" + _sID +
																"', '" + _campos[n] + "', this);\">" + _titulos[n] +
																"&nbsp;&nbsp;<img src='"+dirLibImages+"blank.gif' border='0' alt='DESC' class='imgTitulo' width='1px'></a></td>" +
																((_obj.visBUS == 1)?("<td width='1%' align='right'><input type='checkbox' class='chBuscar' onclick=\"_selBusqueda_Listar('" + _sID + "', '" +	_campos[n] + "', this.checked)\" id=\"_col_"+ _sID + n +"\" name=\"_col_"+ _sID + n +"\" value='" +	_campos[n] + "'></td>"):"") +
																"<td class='resize' id='tdResize"+n+"'></td></tr></table></td>";
						}
					}
					else { n = _titulos.length; }
				}
		  break;
		  case "SELECCION":
				 _titulos_html += "";
			 	for(n=0; n<_titulos.length; n++)
			 	{
 				   _classAd = "";
 				   _classAdT = "";
					 for(_m=0; _m<_obj.cRC.length; _m++)
					 {
						 _fila = StringtoArray(_obj.cRC[_m],",");
						 if((_fila[1] == n) && (trim(_fila[2]) != ""))
				     {
				      _classAd = " " + _fila[2];
				      _classAdT = " " + _fila[2] + "Text";
             }
           }

       			if(_columnas > n)
        			{
				 	  if( trim(_obj.orden) == trim(_campos[n].replace(/DISTINCT/ig,"")) )
				 	  {
							_titulos_html += "<td class='tdTitulo"+ _classAd +"'><table width='100%' summary=''><tr>" +
																"<td class='tdTituloText"+ _classAdT +"'><a onclick=\"javascript:_ordenar_Listar('" + _sID +
																"', '" + _campos[n] + "', this);\">" + _titulos[n] +
																"&nbsp;&nbsp;<img src='"+dirLibImages+"plus_" + _obj.TipoOrd + ".gif' alt='" + _obj.TipoOrd + "' class='imgTitulo'></a></td>" +
																((_obj.visBUS==1)?("<td align='right'><input type='checkbox' class='chBuscar' onclick=\"_selBusqueda_Listar('" + _sID + "', '" +	_campos[n] + "', this.checked)\" id=\"_col_"+ _sID + n +"\" name=\"_col_"+ _sID + n +"\" value='" +	_campos[n] + "'></td>"):"") +
																"<td class='resize' id='tdResize"+n+"'></td></tr></table></td>";
						}
						else
						{
							if(trim(_titulos[n]) == "" )
							{
							   _titulos[n] = _campos[n];
							}

							_titulos_html += "<td class='tdTitulo"+ _classAd +"'><table width='100%' summary=''><tr>" +
																"<td class='tdTituloText"+ _classAdT +"'><a onclick=\"javascript:_ordenar_Listar('" + _sID +
																"', '" + _campos[n] + "', this);\">" + _titulos[n] +
																"&nbsp;&nbsp;<img src='"+dirLibImages+"blank.gif' border='0' alt='DESC' class='imgTitulo' width='1px'></a></td>" +
																((_obj.visBUS == 1)?("<td width='1%' align='right'><input type='checkbox' class='chBuscar' onclick=\"_selBusqueda_Listar('" + _sID + "', '" +	_campos[n] + "', this.checked)\" id=\"_col_"+ _sID + n +"\" name=\"_col_"+ _sID + n +"\" value='" +	_campos[n] + "'></td>"):"") +
																"<td class='resize' id='tdResize"+n+"'></td></tr></table></td>";
						}
					}
					else { n = _titulos.length; }
				}
		  break;
		  case "MULTISELECCION":
				{
				_titulos_html += "<td class='tdTitulo'><a onclick=\"_MarcaTodas_Listar('" + _obj.id + "')\" class='TitMulti'>Sel.<br/>Inv.</a></td>"; }

			 	for(n=0; n<_titulos.length; n++)
			 	{
				   _classAd = "";
				   _classAdT = "";
					 for(_m=0; _m<_obj.cRC.length; _m++)
					 {
						 _fila = StringtoArray(_obj.cRC[_m],",");
						 if((_fila[1] == n) && (trim(_fila[2]) != ""))
				     {
				      _classAd = " " + _fila[2];
				      _classAd = " " + _fila[2] + "Text";
             }
           }

        			if(_columnas > n)
        			{
				 	  if( trim(_obj.orden) == trim(_campos[n].replace(/DISTINCT/ig,"")) )
				 	  {
							_titulos_html += "<td class='tdTitulo"+ _classAd +"'><table width='100%' summary=''><tr>" +
																"<td class='tdTituloText"+ _classAdT +"'><a onclick=\"javascript:_ordenar_Listar('" + _sID +
																"', '" + _campos[n] + "', this);\">" + _titulos[n] +
																"&nbsp;&nbsp;<img src='"+dirLibImages+"plus_" + _obj.TipoOrd + ".gif' alt='" + _obj.TipoOrd + "' class='imgTitulo'></a></td>" +
																((_obj.visBUS==1)?("<td align='right'><input type='checkbox' class='chBuscar' onclick=\"_selBusqueda_Listar('" + _sID + "', '" +	_campos[n] + "', this.checked)\" id=\"_col_"+ _sID + n +"\" name=\"_col_"+ _sID + n +"\" value='" +	_campos[n] + "'></td>"):"") +
																"<td class='resize' id='tdResize"+n+"'></td></tr></table></td>";
						}
						else
						{
							_titulos_html += "<td class='tdTitulo"+ _classAd +"'><table width='100%' summary=''><tr>" +
																"<td class='tdTituloText"+ _classAdT +"'><a onclick=\"javascript:_ordenar_Listar('" + _sID +
																"', '" + _campos[n] + "', this);\">" + _titulos[n] +
																"&nbsp;&nbsp;<img src='"+dirLibImages+"blank.gif' border='0' alt='DESC' class='imgTitulo' width='1px'></a></td>" +
																((_obj.visBUS == 1)?("<td width='1%' align='right'><input type='checkbox' class='chBuscar' onclick=\"_selBusqueda_Listar('" + _sID + "', '" +	_campos[n] + "', this.checked)\" id=\"_col_"+ _sID + n +"\" name=\"_col_"+ _sID + n +"\" value='" +	_campos[n] + "'></td>"):"") +
																"<td class='resize' id='tdResize"+n+"'></td></tr></table></td>";
						}
					}
					else { n = _titulos.length; }
				}
		  break;

   }
   if(_obj.clase != "LISTAG" )
	{
	  _titulos_html += "</tr></thead>";
	}
return _titulos_html;
}
////////////////////////////////////////////////////////////////////////////////
/** 14. - Cambia el orden del Objeto Listado
 * \param _sID - (STRING) Nombre del objeto
 * \param _sCampo - (STRING) Nombre del campo a ordenar
 * \param _oA - (OBJETO HTML) Objeto  texto que lanza el evento
 * \author EG - (egonpin@gmail.com) - 01/06/2005
 */
function _ordenar_Listar()
{
	var _sID 	= arguments[0];
	var _sCampo = trim(arguments[1].replace(/DISTINCT/ig, ""));
	var _oA 	= arguments[2];

	var _obj 	= _localiza_Listar(_sID);
	var _oIMG 	= _oA.lastChild;

	if(_oIMG)
	{
		if ( _oIMG.alt == "DESC" )
		{
			_oIMG.alt = "ASC";
			_oIMG.src = "/"+dirLibImages+"plus_ASC.gif";
			_obj.TipoOrd = "ASC";
		}
		else
		{
			_oIMG.alt = "DESC";
			_oIMG.src = "/"+dirLibImages+"plus_DESC.gif";
			_obj.TipoOrd = "DESC";
		}
	}
	_obj.orden = _sCampo;
	_obj.consulta();
}
////////////////////////////////////////////////////////////////////////////////
/** 15. - Selecciona o deseelcciona el campo para buscar
 * \param _sID - (STRING) Nombre del objeto
 * \param _sCampo - (STRING) Nombre del campo en el que se va a buscar
 * \param _oINPUT - (OBJETO HTML) Objeto Input que lanza el evento
 * \author EG - (egonpin@gmail.com) - 02/06/2005
 */
function _selBusqueda_Listar()
{
	var _sID 	= arguments[0];
	var _sCampo = arguments[1];
	var _oINPUT = arguments[2];
	var _obj    = _localiza_Listar(_sID);
	var _bBusCampo = false;
	var n = 0;

  var tsCampo = _sCampo.replace(/DISTINCT/i, "");

	for(n=0; n<_obj.campoBUS.length; n++)
	{
		if(trim(_obj.campoBUS[n]) == trim(tsCampo))
		{
    	_obj.campoBUS.splice(n,1);
    }
      if(_obj.campoBUS[n])
	   _obj.campoBUS[n] = trim(_obj.campoBUS[n].replace(/DISTINCT/i, ""));
	}
	if(_oINPUT)
	{
	   _bBusCampo = false;
	   for(n=0; n<_obj.campoBUS.length; n++ )
	   {
        if(trim(_obj.campoBUS[n]) == trim(tsCampo))   _bBusCampo = true;
     }
     if(!_bBusCampo)   _obj.campoBUS.push(tsCampo);
  }
}
////////////////////////////////////////////////////////////////////////////////
/** 16. - Lanza la busqueda
 * \param _sID - (STRING) Nombre del objeto
 * \param _oINPUT - (OBJETO HTML) Objeto Input que lanza el evento
 * \author EG - (egonpin@gmail.com) - 02/06/2005
 */
function _Buscar_Listar()
{
	var _sID 		= arguments[0];
	var _oINPUT	= arguments[1];

	var _obj = _localiza_Listar(_sID);
	var _txt = $("txt_"+_sID);
	var _cadBUSCAR = (_txt)? _txt.value: "";

 	_obj.cargaInicial = true;

  if (trim(_cadBUSCAR).length > 0)
  {
	_obj.sBUS = trim(_cadBUSCAR);
	}
	else
	{
    _obj.sBUS = "";
	}

	//_obj.datosInicio = true;
	_obj.tamano();
	//if(_obj.campoBUS.length > 0)  { _obj.tamano(); }
	//else  { msg_error("Mensaje: Seleccione al menos una columna para buscar"); }
}
////////////////////////////////////////////////////////////////////////////////
/** 17. - Genera la cadena comodin que se sumara a la cadena a buscar
 * \param _sID - (STRING) Nombre del objeto
 * \param _oINPUT - (OBJETO HTML) Objeto Input que lanza el evento
 * \author EG - (egonpin@gmail.com) - 10/06/2005
 */
function _comodinBuscar_Listar()
{
	var _sID 	= arguments[0];
	var _oINPUT	= arguments[1];
	var _obj = _localiza_Listar(_sID);

	//1 para OR, 2 para AND, 3 para LIKE, 4 para "="
	switch(arguments[1].value)
	{
		case "1":
		_obj.sBUS2 = "1";
	break;

	case "2":
		_obj.sBUS2 = "2";
	break;

	case "3":
		_obj.sBUS2 = "3";
	break;

	case "4":
		_obj.sBUS2 = "4";
	break;
	}

}
////////////////////////////////////////////////////////////////////////////////
/** 18. - Genera la cadena SQL
 * \param _bConsulta - (BOOLEAN) Si es verdadero genera SQL con LIMITE y ORDEN
 * \param _scampos - (STRING) Recibe un listado de campos
 * \param _iCamp$r - (BOOLEAN) Si es Verdadero ignora el campo buscar de un componente listar
 * \author EG - (egonpin@gmail.com) - 17/09/2007
 */
function _construyeSQL()
{
  var _bConsulta	= arguments[0]?true:false;
  var _scampos = arguments[1]?arguments[1]:"";
  var _iCamp$r = arguments[1]?true:false;

  var _orden = new String("");
  var _where = new String("");
  var	_wPart2 = new String("");
  var	_buscado = new String("");

  var _cadSQL = new String("");
	// construyendo el SELECT

// EG 10/10/2006
// cuando tengo un filtro me borra los campos por eso lo agregue
  if(this.campos.trim() == "") this.campos = _scampos;
  if(this.campos.trim() == "") this.campos = "*";

	if (trim(this.SQLmanual).length > 0)
	{
		this.sSQL = trim(this.SQLmanual);
 //     this.SQL  = "";
	}
	else
	{
		if(_bConsulta == true)
		{
			if(trim(this.pk) != "")
			{
//				this.sSQL = "SELECT " + this.campos.trim() + "," + this.pk.trim() + " FROM " + this.tabla.trim() + ( this.SQL != "" ? " WHERE " + this.SQL : ""  );
				this.sSQL = "SELECT " + this.campos.trim() + "," + this.pk.trim() + " FROM " + this.tabla.trim() ;
			}
			else
				this.sSQL = "SELECT " + this.campos.trim() + " FROM " + this.tabla.trim();
		}
		else
		{
			this.sSQL = "SELECT * FROM " + this.tabla.trim();
			//				if(trim(this.pk) != "")
			//				{ this.sSQL = "SELECT *, " + this.pk + " FROM " + this.tabla; }
		}
   }
	if((_bConsulta == "CBbd"))
	{
		this.sSQL = "SELECT " + this.campos.trim() + " FROM " + this.tabla.trim();
		if(trim(this.pk) != "")
			this.sSQL = "SELECT " + this.campos.trim() + "," + this.pk.trim() + " FROM " + this.tabla.trim();

		if(trim(this.titulos) != "")
			this.sSQL = "SELECT " + this.campos.trim() + "," + this.pk.trim() + " FROM " + this.tabla.trim();

		if((trim(this.pk) != "") && (trim(this.titulos) != ""))
			this.sSQL = "SELECT " + this.campos.trim()+ ","+ this.titulos.trim() + "," + this.pk.trim() + " FROM " + this.tabla.trim();
	}

	//construye LIMIT OFFSET
	this.nOFFSET = (this.nLIMIT * this.pagACT) - this.nLIMIT;
	//construye ORDER BY
	if (this.orden == "")
		_orden = "";
	else
		_orden = " ORDER BY " + this.orden + " " + this.TipoOrd;

	//BEGIN - construyendo el WHERE
	_where = trim(this.SQL);

	if ((_where.length >0) || (this.campoBUS.length>0))
	{

		_wPart2 = "";
		_buscado = "" + trim(this.sBUS);

		if(_iCamp$r == false)
		{
		if (_buscado.length > 0 && this.campoBUS.length > 0 )
		{
			for(m=0; m<this.campoBUS.length; m++)
			{
				if(_wPart2 != "" ) { _wPart2 += " OR "}

        switch (this.sBUS2){
        case "1":

          	// PARTIMOS LA CADENA BUSCADA y enlazamos cada palabra con una OR
   			  	var _aT = _buscado.split(' ');
   			  	for(var n=0; n<_aT.length; n++)
   			  	{
//       			  	_wPart2 += "UPPER(" + this.campoBUS[m] + "::TEXT) LIKE UPPER('" + this.sBUS2 + _aT[n] + this.sBUS2 + "')" ;
      			  	_wPart2 += "UPPER(" + this.campoBUS[m] + "::TEXT) LIKE UPPER('%" + _aT[n] + "%')" ;
                  if( n<(_aT.length - 1) )
                  {
                     _wPart2 += " OR ";
                  }
               }

        break;

        case "2":
            // PARTIMOS LA CADENA BUSCADA y enlazamos cada palabra con una AND
            var _aT = _buscado.split(' ');
   			  	for(var n=0; n<_aT.length; n++)
   			  	{
      			  	_wPart2 += "UPPER(" + this.campoBUS[m] + "::text) LIKE UPPER('%" + _aT[n] + "%')" ;
                  if( n<(_aT.length - 1) )
                  {
                     _wPart2 += " AND ";
                  }
               }
        break;
            // buscamos la cadena entre los campos
        case "3":
         _wPart2 += "UPPER(" + this.campoBUS[m] + "::TEXT) LIKE UPPER('%" + _buscado + "%')" ;
        break;
           // buscamos la cadena exacta entre los campos
        case "4":
        	_wPart2 += this.campoBUS[m] + "::text = '"+ _buscado +"'";
        break;
        }

   			if(this.sBUS2 == "%")
            {
  			  	// PARTIMOS LA CADENA BUSCADA y enlazamos cada palabra con una OR
   			  	var _aT = _buscado.split(' ');
   			  	for(var n=0; n<_aT.length; n++)
   			  	{
//       			  	_wPart2 += "UPPER(" + this.campoBUS[m] + "::TEXT) LIKE UPPER('" + this.sBUS2 + _aT[n] + this.sBUS2 + "')" ;
      			  	_wPart2 += "UPPER(" + this.campoBUS[m] + "::TEXT) LIKE UPPER('" + _aT[n] + "')" ;
                  if( n<(_aT.length - 1) )
                  {
                     _wPart2 += " OR ";
                  }
               }
            }
   //         else
   //			{
   //			  	_wPart2 += "UPPER(" + this.campoBUS[m] + "::TEXT) LIKE UPPER('" + _buscado + "')" ;
    //        }
			}
			_wPart2 = "( " + _wPart2 + " )";
   	}
   	}
   	else
   	{
			_wPart2 = "";
		}

		if(_where.length > 0)
		{
			if(_wPart2.length > 0)
				_where += " AND " + _wPart2;
			else
				_where += "";
		}
		else
		{
			if(_wPart2.length > 0)
				_where = _wPart2;
			else
				_where = "";
		}
	}
	else
		_where = "";

	if (_where.trim()!="")
	{
		if (((this.sSQL.indexOf("WHERE"))<0))
			_where = " WHERE " + _where;
		else
			_where = " AND " + _where;
   }
	//END construyendo el WHERE

	if(_bConsulta == true)
	{
		_cadSQL = this.sSQL + " "+ _where + " "+ _orden;
	   if(this.nLIMIT > 0 )
	   {
			switch (trim(vg_db.toUpperCase()))
			{
				case "POSTGRES":
					_cadSQL += " LIMIT " + this.nLIMIT + " OFFSET " + this.nOFFSET;
				break;
				case "MYSQL":
					_cadSQL += " LIMIT " + this.nOFFSET + ", " + this.nLIMIT;
				break;
			}
		}
	}
	else
	{
		_cadSQL = this.sSQL + " "+ _where;
	}
	if(_bConsulta == "XML")
	{
	   _XMLcampos = arguments[1];
		this.sSQL = "SELECT " + _XMLcampos + " FROM " + this.tabla.trim();
		_cadSQL = ( this.sSQL + " "+ _where );
	}

	this.genSQL = trim(_cadSQL);

	return _cadSQL;
}
////////////////////////////////////////////////////////////////////////////////
/** 19. - Coge la informacion de un registro marcado y la envia a la funcion Edicion()
 * \param _sID - (STRING) Nombre del objeto
 * \param _sREG - (STRING) cadena que identifica el campo y su contenido, de todo el registro
 * \author EG - (egonpin@gmail.com) - 02/06/2005
 */
function _Editar_Listar()
{
	var _sID 	= arguments[0];
	var _sREG 	= arguments[1];
//alert("Evento\n" + _sID + "\n\n" + _sREG);
	var _obj = _localiza_Listar(_sID);

		var paD = _sREG.split(",");
		var x = eval(paD[0]);
 		var campos = ( _obj.campos + "," + _obj.pk ).split(",");
 		var nD = new Array();

 		for(var n=0; n<_obj.aData[x].length; n++ )
 		{
 			nD[n] =  new Array();
			nD[n][0] = campos[n];
			nD[n][1] = _obj.aData[x][n];
		}
//alert("2045\n" + nD);
	if((typeof(Edicion_listar) == "function") && (_sREG != "") )
	{
		_obj.oculta('CTRL');
  		EstadoSistema("Editando");
		Edicion_listar(nD);
	}
	else
	{
		if((typeof(Edicion_listar) == "function") && (_obj.paraEditar != ""))
		{
	  		EstadoSistema("Editando");
			Edicion_listar(_obj.paraEditar);
    	}
	}
//alert("2059");
// EG - 24-10-2006
	if((typeof(_Edicion_Listar_Especial) == "function") && (_sREG != "") )
	{
  		EstadoSistema("Editando");
		_Edicion_Listar_Especial(_sREG, _sID, nD);
	}
	else
	{
		if((typeof(_Edicion_Listar_Especial) == "function") && (_obj.paraEditar != ""))
		{
	  		EstadoSistema("Editando");
			_Edicion_Listar_Especial(_obj.paraEditar, _sID);
    	}
	}
}
////////////////////////////////////////////////////////////////////////////////
/** 20. - Escoge un registro, guardandolo para despues enviarlo a Edicion
 * \param _sID - (STRING) Nombre del objeto
 * \param _sREG - (STRING) cadena que identifica el campo y su contenido, de todo el registro
 * \author EG - (egonpin@gmail.com) - 10/06/2005
 */
function _Selec_Editar_Listar()
{
	var _sID 	= arguments[0];
	var _sREG 	= arguments[1];

	var _objse = _localiza_Listar(_sID);
	_objse.paraEditar = trim(_sREG);
}
////////////////////////////////////////////////////////////////////////////////
/** 21. - Coge la informacion de un registro marcado y lo Borra
 * \param _sID - (STRING) Nombre del objeto
 * \param _sREG - (STRING) cadena que identifica el campo y su contenido, de todo el registro
 * \author EG - (egonpin@gmail.com) - 02/06/2005
 */
function _Borrar_Listar()
{
	var _sID 	= arguments[0];
	var _sREG 	= arguments[1];

//	alert("sid: " + _sID + "\nReg: " + _sREG);
	var _objb = _localiza_Listar(_sID);
	if( Borrar_listar && (_sREG != "") )
	{
		Borrar_listar(_sREG,_sID);
	}
	else
	{
//alert(typeof(Borrar_listar));
		if((typeof(Borrar_listar) == "function") && (_objb.paraBorrar != ""))
		{
//alert( "cols: " + _objb.paraBorrar + "\nId: "+ _sID);
			Borrar_listar(_objb.paraBorrar,_sID);
		}
	}
}
////////////////////////////////////////////////////////////////////////////////
/** 22. - Escoge un registro, guardandolo para despues enviarlo a Borrado
 * \param _sID - (STRING) Nombre del objeto
 * \param _sREG - (STRING) cadena que identifica el campo y su contenido, de todo el registro
 * \param _oINPUT - (OBJETO HTML) Objeto Input que lanza el evento
 * \author EG - (egonpin@gmail.com) - 02/06/2005
 */
function _Select_Borrar_Listar()
{
  var _sID 	  = arguments[0];
  var _sREG   = arguments[1];
  var _oINPUT = arguments[2];
//alert("sid: " + _sID + "\nsReg: " + _sREG + "\noI: " + _oINPUT);

  var _obj = _localiza_Listar(_sID);

	for(n=0; n<_obj.paraBorrar.length; n++)
	{
	  if(_obj.paraBorrar[n] == _sREG)  { _obj.paraBorrar.splice(n,1); }
	}

	if(_oINPUT.checked)  { _obj.paraBorrar.push(_sREG); }
}
////////////////////////////////////////////////////////////////////////////////
/** 23. - Marca uno o varios registros, guardandolo para despues enviarlo a Borrado
 * \param _sID - (STRING) Nombre del CheckBox
 * \param _sCMD - (STRING) cadena comando los valores validos son:
 *                          'MARCAR' - 'DESMARCAR' - 'INVERTIR'
 * \author EG - (egonpin@gmail.com) - 10/06/2005
 */
function _chk_Borrar_Listar()
{
  var _sID 	= arguments[0];
  var _sCMD 	= arguments[1];

  var _oDES = _localiza_Listar(_sID);

  var _obj = new Array();
  var _o2  = document.getElementsByTagName("input");
  var n = 0;
  var m = 0;

	 for(n=0; n<_o2.length; n++)
	 {
	  if(_o2[n].id == ("chkB_" + _sID))  { _obj.push(_o2[n]); }
	 }

	 switch(_sCMD)
	 {
	    case "MARCAR":
	      	for(n=0; n<_obj.length; n++) {_obj[n].checked = true;}
	    break;
	    case "DESMARCAR":
	      	for(n=0; n<_obj.length; n++) {_obj[n].checked = false;}
	    break;
	    case "INVERTIR":
	      	for(n=0; n<_obj.length; n++) { if(_obj[n].checked) { _obj[n].checked = false; } else{ _obj[n].checked = true; } }
	    break;
	 }

	for(n=0; n<_obj.length; n++)
	{
		for(m=0; m<_oDES.paraBorrar.length; m++)
		{
		  if(_oDES.paraBorrar[m] == _obj[n].value)  { _oDES.paraBorrar.splice(m,1); }
		}
		if(_obj[n].checked)  { _oDES.paraBorrar.push(_obj[n].value); }
	}
}
////////////////////////////////////////////////////////////////////////////////
/** 24. - Marca Columnas para afectar la busqueda
 * \param _sID  - (STRING) Nombre del objeto
 * \param _sCMD - (STRING) cadena comando los valores validos son:
 *                          'MARCAR' - 'DESMARCAR' - 'INVERTIR'
 * \author EG - (egonpin@gmail.com) - 15/06/2005
 */
function _MarcarColumnas_Listar()
{
	var _sID 	= arguments[0];
	var _sCMD 	= arguments[1];

	var _obj = _localiza_Listar(_sID);
	var _columnas = _obj.camposMostrar;
	var _tmp = null;
	var m = 0;

	 switch(_sCMD)
	 {
	    case "MARCAR":
	      	for(m=0; m<_columnas; m++)
					{
					  _tmp = "_col_" + _sID + m;
					  _tmp = $(_tmp);
					  if((typeof(_tmp) == 'object') && _tmp != null )
					  {
							_tmp.checked = true;
					  	_selBusqueda_Listar(_sID, _tmp.value, _tmp.checked);
						}
					}
	    break;
	    case "DESMARCAR":
	      	for(m=0; m<_columnas; m++)
					{
					  _tmp = "_col_" + _sID + m;
					  _tmp = $(_tmp);
					  if((typeof(_tmp) == 'object') && _tmp != null)
					  {  _tmp.checked = false;
 					  	_selBusqueda_Listar(_sID, _tmp.value, _tmp.checked);
						}
					}
	    break;
	    case "INVERTIR":
	      	for(m=0; m<_columnas; m++)
					{
					  _tmp = "_col_" + _sID + m;
					  _tmp = $(_tmp);
					  if((typeof(_tmp) == 'object') && _tmp != null)
						{ if(_tmp.checked) { _tmp.checked = false; } else{ _tmp.checked = true; }
					  	_selBusqueda_Listar(_sID, _tmp.value, _tmp.checked);
						}
					}
	    break;
	 }
}
////////////////////////////////////////////////////////////////////////////////
/** 25. - Hace que el componente tipo Selector aparezca ubicado en el lugar
 * correspondiende segun la posicion del scroll
 * \param _pix  - (Integer) Pixeles del ScrollBarTop
 * \author XBT - (xbutil@gmail.com) - 14/07/2005
 */
function scrollSelector(_pix)
{
  var i = 0;

	if(typeof(document.forms[0]) != "undefined" )
	{
		for (i=0; i<document.forms[0].length; i++)
		{
		  if (document.forms[0][i].id.match("txtBusca"))
		  {
				$(document.forms[0][i].id.replace("txtBusca","Selector")).style.top = _pix+100;
				$(document.forms[0][i].id.replace("txtBusca['","img_").replace("']","")).style.top = _pix-50;
			}
		}
	}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 26. - Genera un archivo XML (Privada)
 *
 * \ingroup fPrivada
 * \sa _ret_fileXML
 * \author EG - (egonpin@gmail.com) - 29/08/2005
 */
function _xmlFile(format)
{
     var formato = format ? format :"XML";
	  var _tmp1 = StringtoArray(this.tabla,".");
	  var _esquema = null;
	  var _tabla = null;
	  var _titulos = new String("");
	  var _html = new String("");

// 2008/08/15 EG - Bloque para las nuevas Columnas del reporte a traer
		var taCampos = StringtoArray(this.camposXP,",");
		var tmpCampos = "";
		for(var m=0; m<taCampos.length; m++ )
		{
			tmpCampos += "'" +  trim(taCampos[m]) + "'";
			if(m < (taCampos.length -1)  )
			{
				tmpCampos += ", ";
			}
		}

	  if(_tmp1.length == 2)
	  {
	    _esquema = _tmp1[0];
	    _tabla = _tmp1[1];
			switch (vg_db.toUpperCase())
			{
				case "POSTGRES":
				 	_titulos = "SELECT nom_columna, nom_campo_" + vg_idioma + ", desc_campo_" + vg_idioma +
									" FROM xcm_campos_db WHERE nom_esquema = '" + _esquema + "' AND nom_tabla = '" + _tabla + "'" ;
				break;
				case "MYSQL":
				 	_titulos = "SELECT nom_columna, nom_campo_" + vg_idioma + ", desc_campo_" + vg_idioma +
									" FROM xcm_campos_db WHERE nom_esquema = '" + _esquema + "' AND nom_tabla = '" + _tabla + "'" ;
				break;
			}
		}
	  else
	  {
	    _esquema = "";
	    _tabla = _tmp1[0];
		 _titulos = "SELECT nom_columna, nom_campo_" + vg_idioma + ", desc_campo_" + vg_idioma +
								" FROM xcm_campos_db WHERE nom_tabla = '" + _tabla + "'" ;
		}

 if(formato == "XML")
 {
 	if(this.oOTRO == null)
	{
// 2008/08/15 EG
		var xmlFiltro = "nom_tabla = '" + _tabla + "'";
		if(tmpCampos != "")
		{
			xmlFiltro += " AND nom_columna IN ("+ tmpCampos +")";
		}

	 	this.oOTRO = objListar("xmlFILE_" + this.idDES,
									"public.xcm_campos_db",
									"nom_columna",
									"nom_columna, nom_campo_" + vg_idioma + ", desc_campo_" + vg_idioma,
			 						3,
									"Columna, Campo, Descripci&oacute;n", //nombre de los campos
									xmlFiltro,
									"MULTISELECCION",
									10, 2);
									//this.version);
		this.oOTRO.idRetorno = "oOTRO";
		this.oOTRO.oculta("BUS");
		this.oOTRO.oculta("XML");
		this.oOTRO.enable = true;
		this.oOTRO.ventana(true,"Selecci&oacute;n de Campos para el Archivo " + formato);
//alert(this.oOTRO.sSQL);
		_html = "<button onClick=\"ctrlCONF('"+ this.idDES +"','"+formato+"')\">Aceptar</button><button onClick=\"ctrlSH('xmlFILE_"+ this.idDES +"', false)\">Cancelar</button>";

		obj_writeHTML(this.oOTRO.oAD, _html);
		this.oOTRO.orden = "nom_campo_" + vg_idioma;
		this.oOTRO.cargaInicial = true;
		this.oOTRO.refresca();
		this.oOTRO.muestra("CTRL");
	}
	else
	{
		this.oOTRO.muestra("CTRL");
	}
 }

 if(formato == "CSV")
 {
	if(this.oOTRO2 == null)
	{
// 2008/08/15 EG
		var xmlFiltro = "nom_tabla = '" + _tabla + "'";
		if(tmpCampos != "")
		{
			xmlFiltro += " AND nom_columna IN ("+ tmpCampos +")";
		}

	 	this.oOTRO2 = objListar("csvFILE_" + this.idDES,
									"xcm_campos_db",
									"nom_columna",
									"nom_columna, nom_campo_" + vg_idioma + ", desc_campo_" + vg_idioma,
			 						3,
									"Columna, Campo, Descripci&oacute;n", //nombre de los campos
									xmlFiltro,
									"MULTISELECCION",
									10, 2);
									//this.version);
		this.oOTRO2.idRetorno = "oCSV";
		this.oOTRO2.oculta("BUS");
		this.oOTRO2.oculta("XML");
		this.oOTRO2.enable = true;
		this.oOTRO2.ventana(true,"Selecci&oacute;n de Campos para el Archivo " + formato);

		_html = "<button onClick=\"ctrlCONF('"+ this.idDES +"','"+formato+"')\">Aceptar</button><button onClick=\"ctrlSH('csvFILE_"+ this.idDES +"', false)\">Cancelar</button>";

		obj_writeHTML(this.oOTRO2.oAD, _html);
		this.oOTRO2.orden = "nom_campo_" + vg_idioma;
		this.oOTRO2.cargaInicial = true;
		this.oOTRO2.refresca();
		this.oOTRO2.muestra("CTRL");
	}
	else
	{
		this.oOTRO2.muestra("CTRL");
	}
 }

}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 26. - Retorna de la generacion de un archivo XML (Privada)
 *
 * \ingroup fPrivada
 * \sa _xmlFile
 * \author EG - (egonpin@gmail.com) - 29/08/2005
 */
function _ret_fileXML()
{
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 27. - Encaja en Ventana (Privada)
 *
 * \ingroup fPrivada
 * \sa
 * \author EG - (egonpin@gmail.com) - 29/08/2005
 */
function _Ventana_Listar()
{
	this.enVentana = arguments[0];
	this.titWIN 	= (typeof(arguments[1])!= "undefined")? arguments[1] : this.titWIN ;
  if(this.enVentana == true)
	{
	 this.oWin.titulo(this.titWIN);
    this.oDES.className="listarWIN";
//    this.muestra("CTRL");
    this.oCON.className="listarSubWIN";
	}
	else
	{
    this.oDES.className="";
	 this.oculta("CTRL");
	 this.oCON.className="listarCON";
	}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 28. - Oculta totalmente la lista (Publica)
 * @param _controlsh - STRING Nombre del Objeto Listar a Mostrar
 * \sa
 * \author EG - (egonpin@gmail.com) - 29/08/2005
 */
function ctrlSH()
{
	var _controlsh = arguments[0];
	var _estadosh  = arguments[1];
	var _objsh = null;
	var _otxtBusca = null;
	var _oidRetorno = null;

  _objsh = _localiza_Listar(_controlsh);
// alert("Obj: " + _objsh + "\nId: " + _controlsh);
	if (_objsh.idRetorno_Maq.match("ibxMsg_") == "ibxMsg_")
		_objsh.idRetorno_Maq = "";

	if(_objsh.sFiltro.trim() != "")
		_objsh.filtrar();

// Add. mrEd - 20060421
	if(_objsh.version >= "2")
	{
 		if(_objsh.enVentana == true)
		{
			if(_estadosh == true)
			{
				// New Window
				_objsh.oWin.show();  // le quite focus por que genera error en IE6
				if (_objsh.cargaInicial == true)
				{
				_Buscar_Listar(_controlsh ,_objsh);
				}
//				_objsh.oWin.adapt.bind(_objsh.oWin).delay().focus();
//				_objsh.oWin.bind(_objsh.oWin).delay();
			}
			else
			{
				// New Window
				_objsh.oWin.hide();
				_objsh.cargaInicial = false;
			}
      }
	}

//REVISAR estas 2 lineas se deberian de dejan si se presiona la tecla ENTER
//	if(_objsh.sFiltro.trim() != "")
//		_objsh.filtrar();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 29. - Retorna el valor seleccionado (Privado)
 *
 * \sa
 * \author EG - (egonpin@gmail.com) - 29/08/2005
 * Actualizacion de Estilo            19/03/2008
 */
function ctrlRET()
{
  var _controlret = arguments[0];
  var _valor 	= arguments[1];
  var _tipo 	= arguments[2];
  var _dev		= arguments[3];
  var _tam 		= arguments[4];
  var _estilo  = arguments[5];
  var _obj = _localiza_Listar(_controlret);
  var _obj2 = null;
  var _obj3 = null;
  var _val2 = null;
  var _obj4 = null;
  var _tmp03 = null;
  var _tmp04 = null;
  var n = 0;
  var m = 0;

   if(_obj.idRetorno == "oOTRO")
		_obj2 = _obj.xRetorno;
   else
   	_obj2 = $(_obj.idRetorno);

	if(typeof(_dev)!="undefined" && _dev != null)
	{
		_tmp04	= StringtoArray(_dev,separador_reg);
		for(n=0; n<_tmp04.length; n++)
		{
			_tmp04[n] = StringtoArray(_tmp04[n],separador_col);
			_tmp04[n][0] = _tmp04[n][0].replace(/\"/g, '&#34;');
			_tmp04[n][0] = _tmp04[n][0].replace(/\'/g, '&#39;');
			if(_tmp04[n][1])
			{
				_tmp04[n][1] = _tmp04[n][1].replace(/\"/g, '&#34;');
				_tmp04[n][1] = _tmp04[n][1].replace(/\'/g, '&#39;');
			}
		}
	}

	if(typeof(_tipo)=="undefined" || _tipo == null)
	{
 		if(_obj.enVentana)
 		{
			_obj.oculta("CTRL");
		}
		_val2 = _valor;

		if(typeof(_dev)!="undefined" && _dev != null)
		{
			if(_obj.idRetorno_Maq == "")
			 	_obj.idRetorno_Maq = "ibxMsg_" + _obj.idRetorno;
			_obj4		= $(_obj.idRetorno_Maq);
			_tmp03	= "Javascript:overlib('<table border=0><tr><td colspan=2 class=titToolTip><b>Datos Adicionales</b></td></tr>";
			_tmp04	= StringtoArray(_dev,separador_reg);
			for(n=0; n<_tmp04.length; n++)
				_tmp04[n] = StringtoArray(_tmp04[n],separador_col);

			for(n=0; n<_tmp04.length-1; n++)
			{
			   if(trim(_tmp04[n][1]) != "")
			   {
              _tmp04[n][0] = _tmp04[n][0].replace(/\"/g, '&#34;');
              _tmp04[n][0] = _tmp04[n][0].replace(/\'/g, '&#39;');
              _tmp04[n][1] = _tmp04[n][1].replace(/\"/g, '&#34;');
              _tmp04[n][1] = _tmp04[n][1].replace(/\'/g, '&#39;');
				  _tmp03	+= "<tr><td class=OpcToolTip>"+ _tmp04[n][0] +"</td><td class=ValToolTip>"+ _tmp04[n][1] +"</td></tr>";
            }
			}
			_tmp03	+= "</table>')";

			obj_writeHTML(_obj4,"<span onmouseout='Javascript:nd();' onmouseover=\""+_tmp03+"\">" + _tam + "</span>");

			//_obj.colRetorno_Maq
		}
	}
	else
	{
		switch(_tipo)
		{
			case "MULTI":
	   		_obj3 = $("chkB_" + _controlret + _valor);
				var _padre = _obj3.parentNode;

				for(n=0; n<_obj.aRetorno.length; n++)
				{
				   if(_obj.aRetorno[n] == _dev)
				   {
				      _obj.aRetorno.splice(n,1);
				      n = _obj.aRetorno.length;
					}
				}
				if(_obj3.checked == true)
				{
					_obj3.checked = false;
					axf_classfila(_padre, _estilo, true);
				}
				else
				{
					_obj3.checked = true;
			      _obj.aRetorno.push(_dev);
					axf_classfila(_padre, 'multis_click', true);
				}
				_val2 = ArraytoString(_obj.aRetorno,",");
			break;

			DEFAULT:

			break;
		}
	}

	switch(_obj2.tagName)
	{
		case "INPUT":
		{
			_obj2.value = _val2;
			if(_cambiaInput)  _cambiaInput(_obj2);
		}
		break;
		DEFAULT:
			_obj2.value = _val2;
		break;
	}

  _obj.returnMul(_dev);

  if(typeof(_ListarRet) == "function" )
  { _ListarRet(_obj.id);
  }
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 30. - Confirmacion para generar el XML (Privado)
 *
 * \sa
 * \author EG - (egonpin@gmail.com) - 14/09/2005
 */
function ctrlCONF()
{
	var _tmp  = arguments[0];
	var _formato = arguments[1] ? arguments[1] : "XML" ;
	var _obj4 = _localiza_Listar(_tmp);
	var parametros = new Array();

	var _tmp1 = null;
	var _esquema = null;
	var _tabla = null;
	var _titulos = null;
	var _campos_new = null;
	var _select = null;

   if(_formato == "XML")
	  ctrlSH('xmlFILE_'+ _tmp , false);
   if(_formato == "CSV")
	  ctrlSH('csvFILE_'+ _tmp , false);

// 	if( ( (StringtoArray(_obj4.campos,",").length) != (StringtoArray(_obj4.titulos,",").length) ) || (_obj4.titulos == "") )
	{
	  _tmp1 = StringtoArray(_obj4.tabla,".");
	  if(_tmp1.length == 2)
	  {
	    _esquema = _tmp1[0];
	    _tabla = _tmp1[1];
		 _titulos = "SELECT nom_columna, nom_campo_" + vg_idioma + ", desc_campo_" + vg_idioma +
								" FROM xcm_campos_db WHERE nom_esquema = '" + _esquema + "' AND nom_tabla = '" + _tabla + "'" ;
		}
	  else
	  {
	    _esquema = "";
	    _tabla = _tmp1[0];
		 _titulos = "SELECT nom_columna, nom_campo_" + vg_idioma + ", desc_campo_" + vg_idioma +
								" FROM xcm_campos_db WHERE nom_tabla = '" + _tabla + "'" ;
		}
	}
// 	else
// 	{  _titulos = "nulo";  }

   if(_formato == "XML")
	if(_obj4.oOTRO.aRetorno.length >0)
	{
		_campos_new = ArraytoString(_obj4.oOTRO.aRetorno, ",");
		_select = _obj4.construyeSQL("XML", _campos_new);
		parametros.push(_select, _obj4.idDES, _titulos, _campos_new, dirInstall);
		jsrsExecute(dirLibsPHP+"fileXML.php?"+sid, _ret_fileXML, "fileXML", parametros, false, "");

/*
		var sidname = sid.split('=');
		parametros = { "sidname":sidname[1], "funcion":"fileXML", "sql":_cadSQL, "id":this.idDES, "ruta":dirInstall  };
			jsrsE = new Ajax.Request(dirLibsPHP+"listar_db.php",
			{
				method: 'post',
				encoding: axHTMLCharSet,
				onSuccess: _ret_consulta_Listar,
				parameters: parametros
			}
			);
*/
	}

   if(_formato == "CSV")
	if(_obj4.oOTRO2.aRetorno.length >0)
	{
		_campos_new = ArraytoString(_obj4.oOTRO2.aRetorno, ",");
		_select = _obj4.construyeSQL("XML", _campos_new);
		parametros.push(_select, _obj4.idDES, _titulos, _campos_new, dirInstall);
		jsrsExecute(dirLibsPHP+"fileXML.php?"+sid, _ret_fileXML, "fileCSV", parametros, false, "");
	}

}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 31. - objeto para retroalimentar (Privado)
 *
 * \sa
 * \author EG - (egonpin@gmail.com) - 13/09/2005
 */
function _oX()
{
   this.value = new String();
   this.tagName = new String("INPUT");
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 32. - objeto para retroalimentar (Privado)
 *
 * \sa
 * \author EG - (egonpin@gmail.com) - 13/09/2005
 */

function _oEjecutaXML()
{
	var _sID = arguments[0];
	var _objx = null;

   _objx = _localiza_Listar(_sID);
   _objx.xmlFile();
}

function _oEjecutaCSV()
{
	var _sID = arguments[0];
	var _objx = null;

   _objx = _localiza_Listar(_sID);
   _objx.xmlFile("CSV");
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 33. - Filtra la lista por otro cObjeto HTML (Privado)
 *
 * \sa
 * \author EG - (egonpin@gmail.com) - 28/06/2005
 */

function _fSQL_Listar_db() // Filtra
{
	// fSQL( "(,id_via,=,formatNumero);(AND,id_via,>=,);(,id_via,id_via,)" );
  var cTxt = this.sFiltro;
  var aTxt = StringtoArray(trim(cTxt), ';');
  var aArr = new Array(aTxt.length);

  var tam = null;
  var cad = "";
  var aT = null;
  var conector = "";
  var objeto = "";
  var oT = false;
  var oT2 = false;
  var operador = "";
  var _oT2VAL = null;
  var n = 0;
  var m = 0;

	for(n=0; n<aTxt.length; n++)
	{
		aTxt[n] = aTxt[n].trim();
		tam = aTxt[n].length;
		if((aTxt[n].substr(0,1) == '(') && (aTxt[n].substr(tam-1,1) == ')') )
			aTxt[n] = aTxt[n].substr(1,tam-2);
		aArr[n] = StringtoArray(aTxt[n].trim(), ',');
	}
	// contar los argumentos, cada argumento sera un array de 4
	/*
	conector booleanos - sale de un array
	id del campo
	operandos booleanos - sale de un array - si no esta en la lista busquelo como id de campo
	funcion JS para maquillar el valor antes de enviarlo
	*/
	var operadores = new Array();
	var conectores = new Array();

	conectores[0] = "OR";
	conectores[1] = "AND";

	operadores[0] = ">";
	operadores[1] = "<";
	operadores[2] = ">=";
	operadores[3] = "=";
	operadores[4] = "<=";
	operadores[5] = "LIKE";
	operadores[6] = "IN";
	operadores[7] = "IS";
	operadores[8] = "ISNULL";
	operadores[9] = "PARENTESISABRIR";
	operadores[10] = "PARENTESISCERRAR";

	//  verificando que todos los parametros sean array de tamano 4
	for(n=0; n<aArr.length; n++)
	{
		if((typeof(aArr[n]) != "object") || (aArr[n].length != 4))
		{
			if( trim(cTxt) != "" )
			{
				msg_error("LDBJS\nTodos los parametros deben ser ARRAY de tamano 4");
			}
			return(false);
		}
	}

	for( var n=0; n<aArr.length; n++)
	{
		aT = aArr[n];
		conector = "";
		objeto = "";
		oT = false;
		oT2 = false;
		operador = "";
		var valor = "";
		for(var m=0; m<conectores.length; m++) { if(trim(conectores[m]) == trim(aT[0])) {conector = conectores[m];} }
		// se puede implementar para que verifique si es una variable de JS
		oT = $(aT[1]);
 		if(!oT)
		{
		   valor = "";
// 			msg_error("LdbJS \n No se encontro el campo " + aT[1]);
// 			return(false);
		}
		else
		{
			valor = oT.value;
		}

// 29/11/2007 EG
/*
//alert( "aT[3] :" + aT[3]
  + "\naT[2] :" + aT[2]
  + "\naT[1] :" + aT[1]
  + "\naT[0] :" + aT[0]
);
*/
if( (trim(aT[3])!= "NULL") && (trim(aT[3]) != "") && ( typeof( eval( "" + aT[3] ) ) == "function") )
{
 valor =  eval( "" + aT[3] + "(" + valor + ")" );
}

		for(var m=0; m<operadores.length; m++) { if(trim(operadores[m]) == trim(aT[2])) {operador = operadores[m];} }
		if(n == 0) {conector = "";} else {conector = " " + conector;}
		// no se encontro el operador puede ser un Between

		if(operador == "")
		{
			oT2 = $(aT[2]);

			if(oT2)
			{
				_oT2VAL = eval( "" + aT[3] + "(" + oT2.value + ")" );
				operador = " BETWEEN '" + valor + "' AND '" + _oT2VAL + "'";
				cad += conector + " " +  aT[1] + operador;
			}
			else
			{ return(false); }
		}
		else
		{
			if(operador == "ISNULL")
			{
			   cad += conector + " " + aT[1] + " IS NULL ";
			}
			else if(operador == "IS")
			{
			   cad += conector + " " + aT[1] + " " + operador + " " + aT[3];
			}
			else if(operador == "IN")
			{
				_oT2VAL = eval( "" + aT[3] + "(\"" + valor + "\")" );   //				_oT2VAL = eval( "" + aT[3] + "(" + valor + ")" );
				cad += conector + " " +  aT[1] + " " + operador + " " + "("+ _oT2VAL + ")";
			}
			else if(operador == "PARENTESISABRIR")
			{
				cad += " ( ";
			}
			else if(operador == "PARENTESISCERRAR")
			{
				cad += " ) ";
			}
			else
			{
				if (valor != "")
				{
						if( (trim(aT[3])!= "NULL") && (trim(aT[3]) != "") && ( typeof( eval( "" + aT[3] ) ) == "function") )
						{
							_oT2VAL = eval( "" + aT[3] + "(" + valor + ")" ); //_oT2VAL = eval( "" + aT[3] + "('" + valor + "')" );
						}
						else
						{
							_oT2VAL = valor;
						}
						if( typeof(_oT2VAL) == "boolean" )
						{
							if(_oT2VAL == true)
							{
								cad += conector + " " +  aT[1] + " " + operador + " " + "TRUE";
							}
							else
							{
								cad += conector + " " +  aT[1] + " " + operador + " " + "FALSE";
							}
						}
						else if( typeof(_oT2VAL) == "string" )
						{
						cad += conector + " " +  aT[1] + " " + operador + " " + "'"+ _oT2VAL + "'";
	         }
						else if( typeof(_oT2VAL) == "number" )
						{
							cad += conector + " " +  aT[1] + " " + operador + " " + ""+ _oT2VAL + "";
						}
	         }
				else
				{
	            if(this.fObliga)
	            {
						cad += conector + " " +  aT[1] + " " + operador + " " + "' 0 '";
						if(this.cargaInicial)
						msg_error("LdbJS \n El campo Requerido esta Vacio");
				}
			}
		}
	}
	}
	if(this.SQL.trim() == "")
		this.SQL = cad;
	else
	{
		if(this.oriSQL != "")
			this.SQL = this.oriSQL + " AND " + cad;
		else
			this.SQL = cad;
	}
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 34. -
 *
 * \sa
 * \author EG - (egonpin@gmail.com) - 28/06/2005
 */
function _listar_db_winTit()
{
	var _txt = arguments[0];
	this.oWin.setHeader(_txt);
}

////////////////////////////////////////////////////////////////////////////////
/**
 * 35. - Selecciona el valor de la tabla o vista sin abrir el Listar (Privado)
 *
 * \author egonpin - (egonpin@gmail.com) - 17/09/2007
 */
function veriDato(_this, LaFuncion, emptyOK, nomSelector)
{
	var prefijo_campo = "ibx";
	if (checkCampo(_this, LaFuncion, emptyOK) == 0)
	{
		if(trim(_this.value) != "")
		{
			if (nomSelector == "")
				_oL = buscaListar('oSel_'+_this.name); // .name x .id
			else
				_oL = buscaListar(nomSelector); // .name x .id
			_tmp201 = "";
			// el "0" debe ser tipo texto o sino JODE como un berraco
			// OJO: Revisar el valor _oL.pk.replace ... es temporal mientras se finaliza la funcion
			//_oL.pk.replace('id_','nom_') debe ser numerico indicando el numero de la columna
			if (_oL.SQLmanual == "")
			{
				_oL.filtrar();
				if(_oL.SQL != "")
				{
            	_sSQL = _oL.construyeSQL(true, _oL.campos, true);  /* EG 20070917 - 3er parametro para ignorar el campo a buscar */
				}
				else
            	_sSQL = "";
			}
			else
            _sSQL = _oL.SQLmanual;
			if(_oL != null)
			{
				valor_listar(_oL.pk, _oL.tabla, _oL.campos, _oL.colRetorno_Maq, _tmp201 , _this.value, "0", _this.id, _sSQL);
			}
		}
		else if(trim(_this.value) == "")
		{
			if (_this.className.indexOf("igx") != -1)
         	prefijo_campo = "igx";

			obj = $(prefijo_campo+"Msg_" + _this.id);
			obj_writeHTML(obj, "");
		}
		if(eval("window." + _this.id + "_onblur"))
		{
			eval("window." + _this.id + "_onblur(_this)");
		}
	}
}

////////////////////////////////////////////////////////////////////////////////
/** 36.  valor_Listar
 * \ingroup fPrivada
 * \param apunta - String
 * \param tabla - String
 * \param campos - String
 * \param maquilla - String
 * \param titulos - String
 * \param _where - String
 * \param valor - String
 * \param campo_dest - String
 * \sa ret_valorSelector, ret_cuentaSelector, reg_Selector
 * \author EG - (egonpin@gmail.com) - 02/02/2005
 */
function valor_listar(apunta, tabla, campos, maquilla, _where, valor, columnas, campo_dest, SQLmanual)
	{
		if(arguments[5] == "")
		{
			_obj = $("txtBusca['" + apunta + "']");
			arguments[5] = _obj.value;
		}

		var sidname = sid.split('=');
		parametros = { "sidname":sidname[1], "funcion":"valor_Listar",
						"id": arguments[0],
						"tabla": arguments[1],
						"campos": arguments[2],
						"col_maquilla": arguments[3],
						"where":arguments[4],
						"valor": arguments[5],
						"columnas": arguments[6],
						"ruta": dirInstall,
						"campo_dest": arguments[7],
						"listarSQL": arguments[8]
						};

//alert(Object.toJSON(parametros));
			jsrsE = new Ajax.Request(dirLibsPHP+"listar_db.php",
			{
				method: 'post',
				encoding: axHTMLCharSet,
				onSuccess: ret_valorListar,
				parameters: parametros
			}
			);
	}

////////////////////////////////////////////////////////////////////////////////
/** 37. ret_valorSelector
 * \ingroup fPrivada
 * \param str - String, Cadena devuelta por el SR
 * \sa valor_selector
 * \author EG - (egonpin@gmail.com) - 02/02/2005
 */
function ret_valorListar()
{
	var transport = arguments[0];
// alert(transport.status + " - " + transport.statusText + " - " + transport.readyState +  "\n\n" + transport.getAllHeaders() + "\n\n" + transport.getAllResponseHeaders() );
//alert(transport.responseText);
	xo = transport.responseXML;

	if(xo.getElementsByTagName('error')[0].childNodes.length !=0)
	{
		var _error = trim(_extractXML(xo.getElementsByTagName('error')[0].childNodes[0]));
	}
	else { var _error = ""; }
	if(xo.getElementsByTagName('apunta')[0].childNodes.length !=0)
	{
		var _apunta = _extractXML(xo.getElementsByTagName('apunta')[0].childNodes[0]);
	}
	else { var _apunta = ""; }
	if(xo.getElementsByTagName('str')[0].childNodes.length !=0)
	{
		var _str = _extractXML(xo.getElementsByTagName('str')[0].childNodes[0]);
	}
	else { var _str = ""; }
	if(xo.getElementsByTagName('data')[0].childNodes.length !=0)
	{
		var _data = _extractXML(xo.getElementsByTagName('data')[0].childNodes[0]);
	}
	else { var _data = ""; }
//alert(_error + "\n\n" + _apunta + "\n\n" + _str + "\n\n" + _data);


	if(trim(_error) != "")
	{
		estado(error);
		obj = $(_apunta);
  		obj.className = "ibxInputErr";
  		obj = $("ibxMsg_" + _apunta);
  		obj.className = "ibxMsgErr";
  		obj_writeHTML(obj, _str);
  }
  else
  {
		obj = $("ibxMsg_" + _apunta);
  		obj.update(_str);
	}

	_oL = buscaListar('oSel_'+_apunta)?buscaListar('oSel_'+_apunta):null; // .name x .id
	if(_oL) _oL.returnMul(_data);
	Anuncio("");
}

////////////////////////////////////////////////////////////////////////////////
/**
 * 38. _data_basico_Listar()
 * \ingroup fPrivada
 * \author EG - (egonpin@gmail.com) - 18/09/2007
**/
function _data_basico_Listar()
{
	var parametros;
	var _select = null;

// EG - 01-03-2007 => agregada la siguiente linea para asegurar que filtre
 if( trim(this.sFiltro) != "") this.filtrar();
// 01-03-2007
	_select = this.construyeSQL(false);
	this.sSQL = _select;

	if(this.enable)
	{
		var sidname = sid.split('=');
		parametros = { "sidname":sidname[1], "funcion":"data_basico", "sql":_select, "id":this.idDES, "tabla":this.tabla , "campos":this.campos };
//		parametros[0]= parametros[0].replace(/\"/g,'\\"');
/*
alert(
"sid " + parametros.sidname +
"\nfuncion " + parametros.funcion +
"\nsql " + parametros.sql +
"\nid " + parametros.id +
"\ntabla " + parametros.tabla +
"\ncampos " + parametros.campos
);
*/
		jsrsE = new Ajax.Request(dirLibsPHP+"listar_db.php",
			{
				method: 'post',
				encoding: axHTMLCharSet,
				onSuccess: _ret_data_basico_Listar,
				parameters: parametros
			}
			);
   }
}

////////////////////////////////////////////////////////////////////////////////
/**
 * 39. _ret_data_basico_Listar()
 * \ingroup fPrivada
 * \author EG - (egonpin@gmail.com) - 18/09/2007
**/
function _ret_data_basico_Listar()
{
	var transport = arguments[0];
	var resp = ( transport.responseText.evalJSON() );
//alert(transport.responseText);

	var _error 	= resp._error?resp._error:" ";
	var _cols 	= resp._cols?resp._cols:"0";
	var _id 	= resp._id?resp._id:"";
	var _titulos = resp._titulos?resp._titulos:"";
	var _campos  = resp._campos?resp._campos:"";

	var _obj 	= null;
	var _titulos_html = "";
	var _tit_col = null;
	var _ori_tit = null;
	var n = 0;
	var m = 0;

	_obj = _localiza_Listar(_id);

	// Generacion de Titulos dentro del objeto
	if(_titulos != "")
	{
		if(_obj.campos.indexOf("*") != -1)  // si encuentra * en la cadena
		{
			_obj.campos = _campos.join(',');
			if(_obj.camposMostrar == 0)
				_obj.camposMostrar = _cols;
		}

		_tempCampos = _obj.campos.replace(/DISTINCT/ig,"");
		_tit_col = StringtoArray(_tempCampos,",");

		_titulos = (typeof(_titulos) == "string" )? StringtoArray(_titulos,",") : _titulos ;
//	   _ori_tit = StringtoArray(_obj.titulos,",").length;
	   _titulos_desde_codigo = StringtoArray(_obj.titulos,",");
	   _ori_tit = _titulos_desde_codigo.length;

	   _new_tit = new Array(_titulos.length);

	  if(_obj.titulos == '')
			_ori_tit = 0;

/*    for(n=0; n<_titulos.length; n++)
    {
			_titulos[n] = StringtoArray(_titulos[n], separador_col);
	 }
*/
		for(m=0; m<_tit_col.length; m++)
		{
			for(n=0; n<_titulos.length; n++)
			{
				if (_tit_col[m].match("."))
					_tit_col[m] = _tit_col[m].substr(_tit_col[m].indexOf(".")+1);

				if( trim(_titulos[n][0]) == trim(_tit_col[m]) )
				{
					//if(n >= _ori_tit)
					{
						if ( (typeof(_titulos[n][1]) != "undefined") && (_titulos[n][1] != "") && (_titulos[n][1] != "undefined") )
						{
							_new_tit[m] = _titulos[n][1];
						}
						else
						{
							_new_tit[m] = _tit_col[m];
						}
/*
						if(_titulos_desde_codigo[m] != null)
						{
							_new_tit[m] = _titulos_desde_codigo[m];
						}
*/
						n = _titulos.length;
					}
				}
				else
				{
					_new_tit[m] = _tit_col[m];
				}
				if(_titulos_desde_codigo[m] != null)
				{
					_new_tit[m] = _titulos_desde_codigo[m];
				}
			}
		}

		_obj.titulos = "";
		for(m=0; m<_new_tit.length; m++)
		{
		   if(typeof( _new_tit[m]) != "undefined")
		   {
				if(_obj.titulos == "")
					_obj.titulos += _new_tit[m];
				else
					_obj.titulos += ", " + _new_tit[m];
			}
		}
	}

	// Corrige el nombre de los campos agregandole el nombre o alias de la tabla del select
	//_obj.campos   = StringtoArray(_campos,",");
	// Se llena el array que contiene los campos en los cuales se puede buscar con el listar
	if (_obj.campoBUS.length <= 0)
	{
		_obj.campoBUS = StringtoArray(_campos,",").slice(0,_obj.camposMostrar);
		for(n=0; n<_obj.campoBUS.length; n++)
		{
		  _obj.campoBUS[n] = _obj.campoBUS[n].replace(/DISTINCT/ig, "");
    }
  }
//  alert(_obj.titulos + "\n\n" + _obj.campos);
Anuncio("");
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 /**
  * 40. - Ejecuta una Consulta X (Publica), no es parte del componente
  * \param _cadSQL - String, Cadena SQL a ejecutar
  * \param _fsRepuesta - String, Nombre de la funcion que recibira y procesara los datos
  * \sa _ret_consultaX
  * \author EG - (egonpin@gmail.com) - 09/10/2007
  */
function consultaX()
{
	var _cadSQL = arguments[0];
	var _fsRepuesta = arguments[1];
	var _sParam = arguments[2];
	var _sFormato = arguments[3];

//	_cadSQL= trim(_cadSQL.replace( /\"/g,'\\"' ));
//	_sParam= trim(_sParam.replace( /\"/g,'\\"' ));

		var sidname = sid.split('=');

	if(_cadSQL != "")
	{
		var parametros = { "sidname":sidname[1], "funcion":"ConsultaX",
						"sql": _cadSQL,
						"fsRespuesta": _fsRepuesta,
						"sParam": _sParam,
						"sFormato": _sFormato
						};

			jsrsE = new Ajax.Request(dirLibsPHP+"listar_db.php",
			{
				method: 'post',
				encoding: axHTMLCharSet,
				onSuccess: _ret_consultaX,
				parameters: parametros
			});

	}
//	jsrsExecute(dirLibsPHP+"listar_db.php?"+sid, _ret_consultaX, "ConsultaX", parametros, false);
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 41. - Respuesta de la consulta X (Privada), no es parte del componente
 * \ingroup fPrivada
 * \sa consultaX
 * \author EG - (egonpin@gmail.com) - 09/10/2007
 */
function _ret_consultaX()
{
	var transport = arguments[0];
// alert(transport.status + " - " + transport.statusText + " - " + transport.readyState +  "\n\n" + transport.getAllHeaders() + "\n\n" + transport.getAllResponseHeaders() );
//alert(transport.responseText);
	if( transport.responseText.indexOf("{") == 0 ) // JSON
	{
		var _ret = transport.responseText.evalJSON(false);
/*
		alert("Err: " + _ret.error +
				"\nCols: " + _ret.ncolumnas +
				"\nRegs: " + _ret.nfilas +
				"\nFunc: " + _ret.fsRepuesta +
				"\nParam: " + _ret.sParam +
				"\nDatos: " + _ret.data  );
*/
		if(_ret.error != "")  { msg_error(_ret.error); }
		else
		{
//alert(_ret.fsRepuesta + "(\"" + _ret.data + "\"," + _ret.ncolumnas + "," + _ret.nfilas + ", \"" + _ret.sParam + "\")" );
			eval(_ret.fsRepuesta + "(_ret.data," + _ret.ncolumnas + "," + _ret.nfilas + ", _ret.sParam )" );
		}

	}
	else
	if( transport.responseText.indexOf("<") == 0 ) // XML
	{
	xo = transport.responseXML;

	if(xo.getElementsByTagName('error')[0].childNodes.length !=0)
	{
		var _error = trim(_extractXML(xo.getElementsByTagName('error')[0].childNodes[0]));
	}
	else { var _error = ""; }
	if(xo.getElementsByTagName('fsRepuesta')[0].childNodes.length !=0)
	{
		var _fr = _extractXML(xo.getElementsByTagName('fsRepuesta')[0].childNodes[0]);
	}
	else { var _fr = ""; }
	if(xo.getElementsByTagName('ncolumnas')[0].childNodes.length !=0)
	{
		var _columnas = _extractXML(xo.getElementsByTagName('ncolumnas')[0].childNodes[0]);
	}
	else { var _columnas = 0; }
	if(xo.getElementsByTagName('nfilas')[0].childNodes.length !=0)
	{
		var _filas = _extractXML(xo.getElementsByTagName('nfilas')[0].childNodes[0]);
	}
	else { var _filas = 0; }

		if(xo.getElementsByTagName('result')[0].childNodes.length !=0)
	{
			var _Dresult = xo.getElementsByTagName('result')[0].childNodes; // Coleecion de Regs
	//alert("# regs: " + _Dresult.length + "\n col regs:" + _Dresult[0].childNodes + "\n# cols: " + _Dresult[0].childNodes.length + "\nTipo Col: "+ _Dresult[0].childNodes[0].nodeType  );
			for( var nReg=0; nReg<_Dresult.length; nReg++ )
			{
//	alert("reg: " + nReg + " Cols: " + _Dresult[nReg].childNodes.length);
				for( var nCol=0; nCol<_Dresult[nReg].childNodes.length; nCol++ )
				{
					var tmpX = _Dresult[nReg].childNodes[nCol];
//	       	  alert( nReg + " - " + nCol + "<" +_Dresult[nReg].childNodes.length + "\n" +	_extractXML( tmpX ) );
				}
			}

			var _data = _extractXML( _Dresult.getElementsByTagName('reg') );
	}
	else { var _data = ""; }
	if(xo.getElementsByTagName('sParam')[0].childNodes.length !=0)
	{
		var _params = _extractXML(xo.getElementsByTagName('sParam')[0].childNodes[0]);
	}
	else { var _params = ""; }
//alert(_error + "\n\n" + _apunta + "\n\n" + _str + "\n\n" + _data);

	if(_error != "")  { msg_error(_error); }
	else
		{
//			alert(_fr + "(\"" + _data + "\"," + _columnas + "," + _filas + ", \"" + _params + "\")" );
			eval(_fr + "(\"" + _data + "\"," + _columnas + "," + _filas + ", \"" + _params + "\")" );
		}
}

}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 42. _omanEventos_Listar()  --  Objeto Manejador de Eventos
 * \ingroup fPrivada
 * \author EG - (egonpin@gmail.com) - 03/10/2007
**/
function _omanEventos_Listar()
{
 this.parent = null; // Refencia al Padre
 this.inicio = _finit_omanEventos_Listar;
 this.nodeName = new String("EVENTOSLISTARDB");  // R informa el tipo de objeto

 this.dConsulta = new String(""); // Nombre de la Función despues de ejecutar una Consulta
}

function _finit_omanEventos_Listar()
{
 this.parent = arguments[0];
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 43. _returnMultiple_Listar
 * \param _dev - STRING con DATOS
 * \ingroup fPrivada
 * \author EG - (egonpin@gmail.com) - 19/10/2007
**/
function _returnMultiple_Listar(_dev)
{
 var _tmp04 = null;
 var _obj2 = null;
 var n = 0;
 var m = 0;

	if(typeof(_dev)!="undefined" && _dev != null)
	{
		_tmp04	= StringtoArray(_dev,separador_reg);
		for(n=0; n<_tmp04.length; n++)
		{
			if( trim(_tmp04[n]) == "" )
			{
			 	_tmp04.splice(n,1);
			}
			else
			{
				_tmp04[n] = StringtoArray(_tmp04[n],separador_col);
				_tmp04[n][0] = _tmp04[n][0].replace(/\"/g, '&#34;');
				_tmp04[n][0] = _tmp04[n][0].replace(/\'/g, '&#39;');
				if(_tmp04[n][1])
				{
				_tmp04[n][1] = _tmp04[n][1].replace(/\"/g, '&#34;');
				_tmp04[n][1] = _tmp04[n][1].replace(/\'/g, '&#39;');
			}
		}
	}
	}

 if((trim(this.idRetornoMul) != "") && (trim(this.colRetornoMul) != ""))
 {
	var _aHTML = StringtoArray(this.idRetornoMul,",");
	var _aCOL = StringtoArray(this.colRetornoMul,",");

	if( _aHTML.length != _aCOL.length)
	{
	  msg_error("LDJ: las variables iRM y cRM son de diferente Tamaño");
	}

	for(m=0; m<_aCOL.length; m++)
	{
		for(n=0; n<_tmp04.length; n++)
		{
		   if(trim(_tmp04[n][2]) == trim(_aCOL[m]))
		   {
		      _obj2 = $(trim(_aHTML[m]));
		      if(_obj2)
		      {
					switch(_obj2.tagName)
					{
						case "INPUT":
							_obj2.value = _tmp04[n][1];
							if(_cambiaInput)  _cambiaInput(_obj2);
						break;
						DEFAULT:
							obj_writeHTML(_obj2, _tmp04[n][1] );
						break;
					}
				}
		      n = _tmp04.length;
			}
		}
	}
 }

}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 44. _MarcaTodas_Listar
 * \param
 * \ingroup fPrivada
 * \author EG - (egonpin@gmail.com) -
**/
// Funcion usada para tipo MultiSeleccion
function _MarcaTodas_Listar(idO, opc)
{
	var _obj = _localiza_Listar(idO);
	var n =0;
	var m =0;
	var _obj2 = null;
	var _val2 = null;
	var _obj3 = null;
	// opc true marca false desmarca
_obj.aRetorno = new Array();

	switch(_obj.clase)
	{
	  case "MULTISELECCION":
		{
			for(m=0; m<_obj.aData.length; m++)
			{
   			_valor = (typeof(_obj.aData[m][_obj.colRetorno]) == "undefined") ? "" : _obj.aData[m][_obj.colRetorno];
	   		_obj3 = $("chkB_" + idO + m);
	   		var _padre = _obj3.parentNode;

				for(n=0; n<_obj.aRetorno.length; n++)
				{
				   if(_obj.aRetorno[n] == _valor)
				   {
				      _obj.aRetorno.splice(n,1);
				      n = _obj.aRetorno.length;
					}
				}

				if(_obj3.checked == true)
				{
					var cadn = "";
					cadn = _padre.parentNode.childNodes[1].attributes.getNamedItem('onmouseout').nodeValue;
					cadn = cadn.replace(/this/i,'_padre');
					cadn = cadn.replace(/\);/i,', true);');
					_obj3.checked = false;
					eval(cadn);
				}
				else
				{
					_obj3.checked = true;
			      _obj.aRetorno.push(_valor);
					axf_classfila(_padre, 'multis_click', true);
				}
				_val2 = ArraytoString(_obj.aRetorno,",");

			}
		}
	  break;
	}

   if(_obj.idRetorno == "oOTRO")
		_obj2 = _obj.xRetorno;
   else
   	_obj2 = $(_obj.idRetorno);

	switch(_obj2.tagName)
	{
		case "INPUT":
			_obj2.value = _val2;
			if(_cambiaInput)  _cambiaInput(_obj2);
		break;
		DEFAULT:
			_obj2.value = _val2;
		break;
	}

}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 45. axf_classfila
 * \param
 * \ingroup fPrivada
 * \author EG - (egonpin@gmail.com) -
**/
function axf_classfila()
{
  var _obj = arguments[0];
  var _classNue = arguments[1];
  var _obliga = arguments[2]?arguments[2]:false;

// alert( typeof(_obj) +"\n"+ _obj.tagName );
  if( typeof(_obj) == "object" && _obj.tagName == "TD")
  {
		var _padre = _obj.parentNode;
		for(var _n = 0 ; _n < _padre.childNodes.length; _n++ )
		{
		   if( (_padre.childNodes[_n].className != 'multis_click') || _obliga == true )
		   {
				_padre.childNodes[_n].className = _classNue;
			}
		}
  }
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 46. _vaciar_Listar
 * \param
 * \ingroup fPrivada
 * \author EG - (egonpin@gmail.com) -
**/
function _vaciar_Listar()
{
	// Limpieza de Filtros
	this.sFiltro = this.orisFiltro;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 47. _Sel_Col_Busq
 * \param
 * \ingroup fPrivada
 * \author EG - (egonpin@gmail.com) -
**/
//acho 20-08-08 para inyector los campos para filtrar la busqueda
function _Sel_Col_Busq()
{

  if( trim(sSelecBusque)!= "" )
  {
    var _selArray = new Array();
    var _sID = this.idDES;
    _selArray = StringtoArray(this.sSelecBusque,",");

        for(var n = 0; n < _selArray.length; n++)
        {
        _selBusqueda_Listar(_sID,_selArray[n].valueOf(),true);
        }
  }
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * 48. _tipo_Listar
 * Devuelve el tipo de Componente
 * \ingroup fPrivada
 * \author EG - (egonpin@gmail.com) - 08/09/2008
**/
function _tipo_Listar(){ return "Listar"; }
