function Column(
szName,
nColWidthGrid)
{
   var m_szName = szName;
   var m_szTitle = "";
   var m_szSubTableToShow = "";
   var m_nColSpan = 1;
   var m_nWidth;
   var m_nColWidthGrid = nColWidthGrid;
   var m_szClass = "";
   var m_szClassCell = "";
   var m_szAlign = "";
   var m_szStyle = "";
   var m_szStyleCell = "";

   this.getName = function()
   {
      return m_szName;
   }

   this.setTitle = function(szTitle)
   {
      m_szTitle = szTitle;
   }

   this.getTitle = function()
   {
      return m_szTitle;
   }

   this.setSubTableToShow = function(szSubTableToShow)
   {
      m_szSubTableToShow = szSubTableToShow;
   }

   this.getSubTableToShow = function()
   {
      return m_szSubTableToShow;
   }

   this.getColSpan = function()
   {
      return m_nColSpan;
   }

   this.setWidth = function(nWidth)
   {
      m_nWidth = nWidth;

      /* Si el ancho es 0, se prepara para ocultar la columna */
      if ( m_nWidth <= 0 )
      {
         m_nColSpan = 0;
         return;
      }

      if ( m_nWidth % m_nColWidthGrid != 0 )
      {
         /* Se quita el resto */
         m_nWidth = m_nWidth - (m_nWidth % m_nColWidthGrid);

         /* Se suma una columna más */
         m_nWidth += m_nColWidthGrid;
      }

      /* Se columna el número de columnas */
      m_nColSpan = m_nWidth / m_nColWidthGrid;
   }

   this.getWidth = function()
   {
      return m_nWidth;
   }

   this.setClass = function(szClass)
   {
      m_szClass = szClass;
   }

   this.getClass = function()
   {
      return m_szClass;
   }

   this.setClassCell = function(szClassCell)
   {
      m_szClassCell = szClassCell;
   }

   this.getClassCell = function()
   {
      return m_szClassCell;
   }

   this.setAlign = function(szAlign)
   {
      m_szAlign = szAlign;
   }

   this.getAlign = function()
   {
      return m_szAlign;
   }

   this.setStyle = function(szStyle)
   {
      m_szStyle = szStyle;
   }

   this.getStyle = function()
   {
      return m_szStyle;
   }

   this.setStyleCell = function(szStyleCell)
   {
      m_szStyleCell = szStyleCell;
   }

   this.getStyleCell = function()
   {
      return m_szStyleCell;
   }

   this.htmlGetHeaderTD = function()
   {
      var szID = "";
      var szName = "";
      var szColSpan = "";
      var szClass = "";
      var szAlign = "";
      var szStyle = "";

      /* Si el ancho es 0, se prepara para ocultar la columna */
      if ( m_nWidth <= 0 )
      {
         m_nColSpan = 0;
         return "";
      }

      /* Nombre de la columna */
      if ( m_szName.length > 1 )
      {
         szID = " ID='" + m_szName + "'";
         szName = " NAME='" + m_szName + "'";
      }

      /* Ocupación de la columna */
      if ( m_nColSpan > 1 )
      {
         szColSpan = " COLSPAN=" + m_nColSpan;
      }

      /* Alinación de la columna */
      if ( m_szAlign.length > 0 )
      {
         szAlign = " ALIGN='" + m_szAlign + "'";
      }

      /* Clase de la columna */
      if ( m_szClass.length > 0 )
      {
         szClass = " CLASS='" + m_szClass + "'";
      }

      /* Estilo de la columna */
      if ( m_szStyle.length > 0 )
      {
         szStyle = " STYLE='" + m_szStyle + "'";
      }

      return "<TD " +
                  szID + 
                  szName + 
                  szAlign + 
                  szClass + 
                  szColSpan + 
                  szStyle + ">" + m_szTitle + "</TD>\n";


   }

   this.htmlGetCellTD = function(
   szMainTable,
   szTitle,
   nRow,
   fCollapsed)
   {
      var szID = "";
      var szName = "";
      var szColSpan = "";
      var szClass = "";
      var szSubTableToShow = "";
      var szAlign = "";
      var szStyle = "";
      var nPos = -1;
      var nPosIni = -1;
      var nPosEnd = -1;
      var szImage = "";
      var szJS = "";

      /* Si no se quiere mostrar se sale */
      if (m_nWidth <=0)
      {
         return "";
      }

      /* Nombre de la columna */
      if ( m_szName.length > 1 )
      {
         szID = " ID='" + m_szName + nRow + "'";
         szName = " NAME='" + m_szName + nRow + "'";
      }

      /* Ocupación de la columna */
      if ( m_nColSpan > 1 )
      {
         szColSpan = " COLSPAN=" + m_nColSpan;
      }

      /* Evento de la columna que mostrará la subtabla indicada */
      if ( m_szSubTableToShow.length > 0 )
      {
         /* Si es una SubTabla */
         nPos = m_szSubTableToShow.indexOf("javascript:");
         if ( nPos == -1 )
         {
            szSubTableToShow = " onclick='" + szMainTable + ".ShowSubRows(\"" + m_szSubTableToShow + "\", " + nRow + ");'";
         }
         else
         {
            szJS = m_szSubTableToShow.substring("javascript:".length);
            szSubTableToShow = " onclick='" + szJS + "'";
         }         
      }

      /* Alinación de la columna */
      if ( m_szAlign.length > 0 )
      {
         szAlign = " ALIGN='" + m_szAlign + "'";
      }

      /* Clase de la columna */
      if ( m_szClassCell.length > 0 )
      {
         szClass = " CLASS='" + m_szClassCell + "'";
      }

      /* Estilo de la columna */
      if ( m_szStyleCell.length > 0 )
      {
         szStyle = " STYLE='" + m_szStyleCell + "'";
      }

      /* Si lleva 2 imagenes, se pone la 1ª si está cerrado el registro y la 2ª si está abierto */
      nPos = szTitle.indexOf("|");
      if ( nPos > -1 )
      {
         /* Se buscan las imágenes */
         nPosIni = szTitle.indexOf("[");
         nPosEnd = szTitle.indexOf("]");

         /* Si hay imágenes */
         if ( nPosIni > -1 &&
              nPosEnd > -1)
         {

            /* Imagen colapsada */
            if ( fCollapsed )
            {
               szImage = szTitle.substring(nPosIni + 1, nPos);
            }

            /* Imagen expandida */
            else
            {
               szImage = szTitle.substring(nPos + 1, nPosEnd);
            }

            /* Se pone la imagen apropiada */
            szTitle = szTitle.substring(0, nPosIni) + szImage + szTitle.substring(nPosEnd + 1);
         }
      }

      return "<TD " +
                  szID + 
                  szName + 
                  szSubTableToShow +
                  szAlign + 
                  szClass + 
                  szColSpan + 
                  szStyle + ">" + szTitle + "</TD>\n";
   }
}
