<!--
// **********************************************
// string.js
// Descripción : Funciones para el manejo de string
//
// Bitacora de Mantención
// Fecha      Desarrollador    Descripción
// 05/06/1998 Felipe Cruz      Creación

// *********************************************
// LTrim
// Descripción : eliminar espacios a la izquerda
//
// Sintaxis :
// str = LTrim(str s)
//
// Parametros Descripción
// s          String de entrada, a parsear
// 
// Retorno : El string sin espacios a la izquerda
// 
// Comentarios :
// Ejemplo LTrim(" palabra ") = "palabra "
// 
// Bitacora de Mantención
// Fecha      Desarrollador    Descripción
// 05/06/1998 Felipe Cruz      Creación
function LTrim(str)
{
  var i;
  var inicio; /* Posición desde donde no hay espacios */
  if (str == null)
     return "";
  largo = str.length;
  inicio = 0;
  for(i=0;i<largo;i++) {
     c = str.charAt(i);
     if ( c == ' ')
       inicio = i + 1;
     else
       break;
  }
  return str.substring(inicio,largo);
}

// *********************************************
// RTrim
// Descripción : eliminar espacios a la derecha
// 
// Sintaxis :
// str = RTrim(str s)
//
// Parametros Descripción
// s          String de entrada, a parsear
// 
// Retorno : El string sin espacios a la derecha
// 
// Comentarios :
// Ejemplo RTrim(" esta es una frase  ") = " esta es una frase"
// 
// Bitacora de Mantención
// Fecha      Desarrollador    Descripción
// 05/06/1998 Felipe Cruz      Creación
function RTrim(str)
{
  var i;
  var fin;  /* Posición hasta donde no hay espacios */
  if (str == null)
     return "";
  fin = str.length;
  for(i=fin - 1;i>=0;i--) {
     c = str.charAt(i);
     if ( c == ' ')
       fin = i;
     else
       break;
  }
  return str.substring(0,fin);
}

// *********************************************
// Trim
// Descripción : eliminar espacios a la izquerda y derecha
// 
// Sintaxis :
// str = Trim(str s)
//
// Parametros Descripción
// s          String de entrada, a parsear
// 
// Retorno : El string sin espacios a la izquerda y derecha
// 
// Comentarios :
// Ejemplo Trim(" esta es una frase  ") = "esta es una frase"
// 
// Bitacora de Mantención
// Fecha      Desarrollador    Descripción
// 05/06/1998 Felipe Cruz      Creación
function Trim(str)
{
  var i;
  var inicio,fin; /* posiciones entre las que no hay espacios */
  if (str == null)
     return "";
  fin = str.length;
  inicio = 0;
  for(i=0;i<fin;i++) {
     c = str.charAt(i);
     if ( c == ' ')
       inicio = i + 1;
     else
       break;
  }
  for(i=fin - 1;i>=inicio;i--) {
     c = str.charAt(i);
     if ( c == ' ')
       fin = i;
     else
       break;
  }
  return str.substring(inicio,fin);
}

// *********************************************
// Replicate
// Descripción : Construir un string a pertir de la repetión de otro
// 
// Sintaxis :
// str = Replicate(str s,int n)
//
// Parametros Descripción
// s          String de entrada
// n          Número de repeticiones
// 
// Retorno : El string repetido n veces
// 
// Comentarios :
// Ejemplo Replicate("a",4) = "aaaa"
// 
// Bitacora de Mantención
// Fecha      Desarrollador    Descripción
// 05/06/1998 Felipe Cruz      Creación

function Replicate(str,n){
  var i;
  var out;
  out = "";
  for ( i=0;i<n;i++)
    out += str;
  return out;
}

// *********************************************
// Replace
// Descripción : Remplazar las ocurrencias de un string
// 
// Sintaxis :
// str = Replace(str s,str s1,str s2)
//
// Parametros Descripción
// s          String en el cual se va a buscar
// s1         String a Buscar
// s2         String a Remplazar
// 
// Retorno : El string repetido n veces
// 
// Comentarios :
// Ejemplo Replace("Hora","r","l") = "Hola"
// 
// Bitacora de Mantención
// Fecha      Desarrollador    Descripción
// 05/06/1998 Felipe Cruz      Creación

function Replace(s,s1,s2){
  var i;
  var out;
  out = "";
  l=s1.length;
  i=0;
  for (x= s.indexOf(s1);x!=-1;x= s.indexOf(s1,i)){
    out += s.substring(i,x)+s2;
    i=x+l;
  }
  out += s.substring(i,s.length);
  return out;
}

// *********************************************
// BlankThen
// Descripción : Si el string es blanco retorna default
// 
// Sintaxis :
// str = BlankThen(str s,str default)
//
// Parametros Descripción
// s          String a validar que no sea blanco
// default    String a remplazar
// 
// Retorno : El string validado como no blanco
// 
// Comentarios :
// 
// Bitacora de Mantención
// Fecha      Desarrollador    Descripción
// 07/10/1998 Felipe Cruz      Creación

function BlankThen(s,s1){
  var out;
  out = Trim(s);
  if (out.length == 0 )
    out = s1;
  return out;
}

// *********************************************
// FillLeft y FillRigth
// Descripción : Rellenar a la izquerda y/o derecha los caracteres
//               faltantes a un string para completar cierto largo
// 
// Sintaxis :
// str = FillLeft(str s,int largo,char relleno)
// str = FillRigth(str s,int largo,char relleno)
//
// Parametros Descripción
// s          String a rellenar
// largo      Largo mínimo del strin de salida
// relleno    caracter de relleno
// 
// Retorno : El string rellenado
// 
// Comentarios :
// 
// Bitacora de Mantención
// Fecha      Desarrollador    Descripción
// 06/11/1998 Felipe Cruz      Creación

function FillLeft(s,l,c){
  var out;
  largo = l - s.length;
  if (largo > 0 )
    return Replicate(c,largo) + s ;
  else
    return s;
}

function FillRigth(s,l,c){
  var out;
  largo = l - s.length;
  if (largo > 0 )
    return s + Replicate(c,largo);
  else
    return s;
}
// -->

