// <script>

var separadorDeFechas = "/";

function convierteFechaTxt(sFecha, sFormato)
{
//Esta función convierte una fecha de formato de trabajo (aaaammdd) al formato indicado
	var retorno

	sFormato = "" + sFormato
	sFecha = "" + sFecha

	if ((sFormato == "") || (sFormato == null))
		sFormato = "1";
	
	switch(sFormato){
	case "1":	// dd/mm/yyyy
		retorno=convierteInteger2FechaBarraEU(sFecha);
		break;
	case "2":	// mm/dd/yyyy
		retorno=convierteInteger2FechaBarraUS(sFecha);
		break;
	}
	return retorno;
}

function convierteFechaTrb(sFecha, sFormato)
{
//Esta función convierte una fecha en el formato indicado al formato de trabajo (aaaammdd) 
	var retorno

	sFormato = "" + sFormato
	sFecha = "" + sFecha

	if ((sFormato == "") || (sFormato == null))
		sFormato = "1";
		
	switch(sFormato){
	case "1":	// dd/mm/yyyy
		retorno=convierteFechaBarra2IntegerEU(sFecha);
		break;
	case "2":	// mm/dd/yyyy
		retorno=convierteFechaBarra2IntegerUS(sFecha);
		break;
	}
	return retorno;
}

function convierteFechaaYMD(sFecha)
{
//Esta función convierte una fecha de formato d/m/y a formato y-m-d
	var aFecha;
	
	aFecha=sFecha.split('/');
	
	if (aFecha[1].length<2)
		aFecha[1]="0" + aFecha[1];
		
	if (aFecha[0].length<2)
		aFecha[0]="0" + aFecha[0];

	return aFecha[2] + '-' + aFecha[1] + '-' + aFecha[0]; 
}

function convierteFechaaDMY(sFecha)
{
//Esta función convierte una fecha de formato y-m-d a formato d/m/y
	var aFecha;
	
	aFecha=sFecha.split('-');
	
	if (aFecha[1].length<2)
		aFecha[1]="0" + aFecha[1];
		
	if (aFecha[2].length<2)
		aFecha[2]="0" + aFecha[2];

	return aFecha[2] + '/' + aFecha[1] + '/' + aFecha[0]; 
}

function convierteFechaBarra2IntegerEU(sFecha)
{
//Esta función convierte una fecha de formato d/m/y a formato yyyymmdd
	var aFecha;
	
	aFecha=sFecha.split('/');
		
	if (aFecha[0].length<2)
		aFecha[0]="0" + aFecha[0];
	
	if (aFecha[1].length<2)
		aFecha[1]="0" + aFecha[1];

	return aFecha[2] +  aFecha[1] + aFecha[0]; 
}

function convierteFechaBarra2IntegerUS(sFecha)
{
//Esta función convierte una fecha de formato m/d/y a formato yyyymmdd
	var aFecha;
	
	aFecha=sFecha.split('/');
		
	if (aFecha[0].length<2)
		aFecha[0]="0" + aFecha[0];
	
	if (aFecha[1].length<2)
		aFecha[1]="0" + aFecha[1];

	return aFecha[2] +  aFecha[0] + aFecha[1]; 
}

function convierteFechaGuion2Integer(sFecha)
{
//Esta función convierte una fecha de formato y-m-d a formato yyyymmdd
	var aFecha;
	
	aFecha=sFecha.split('-');
	
	if (aFecha[1].length<2)
		aFecha[1]="0" + aFecha[1];
		
	if (aFecha[2].length<2)
		aFecha[2]="0" + aFecha[2];

	return aFecha[0] +  aFecha[1] + aFecha[2]; 
}

function convierteInteger2FechaBarraEU(nFecha)
{
//Esta función convierte una fecha de formato yyyymmdd a formato dd/mm/yyyy
	var fecha;
	
	fecha = nFecha.substring(6,8) + '/' + nFecha.substring(4,6)	+ '/' + nFecha.substring(0,4);
			
	return fecha;
}

function convierteInteger2FechaBarraUS(nFecha)
{
//Esta función convierte una fecha de formato yyyymmdd a formato mm/dd/yyyy
	var fecha;
	
	fecha = nFecha.substring(4,6) + '/' + nFecha.substring(6,8)	+ '/' + nFecha.substring(0,4);
			
	return fecha;
}


// Convierte una fecha a texto con un formato determinado
function convertirFechaATexto(fecha, formatoFechas)
{
     var resultado = formatoFechas;
     
     resultado = resultado.replace("dd",   lFill(fecha.getDate(),     2, "0"));
     resultado = resultado.replace("mm",   lFill(fecha.getMonth()+1,  2, "0"));
     resultado = resultado.replace("aaaa", lFill(fecha.getFullYear(), 4, "0"));

     return resultado;
}

// Convierte un texto con un formato determinado a fecha
function convertirTextoAFecha(fechaEnTexto, formatoFechas, separadorDeFechas)
{
     var fecha = new Date();
     var dia = "";
     var mes = "";
     var anyo = "";
     var errorEncontrado = false;
     
     for (var i=0; i<formatoFechas.split(separadorDeFechas).length; i++)
     {
          if (formatoFechas.split(separadorDeFechas)[i] == "dd")
          {
               dia = fechaEnTexto.split(separadorDeFechas)[i];
          }
          else if (formatoFechas.split(separadorDeFechas)[i] == "mm")
          {
               mes = fechaEnTexto.split(separadorDeFechas)[i];
          }
          else if (formatoFechas.split(separadorDeFechas)[i] == "aaaa")
          {
               anyo = fechaEnTexto.split(separadorDeFechas)[i];
          }
          else
          {
               errorEncontrado = true;
               alert("Error en convertirTextoAFecha");
          }
     }

     if (!errorEncontrado)
     {
          fecha = new Date(anyo, parseInt(mes, 10)-1, dia);
     }

     return fecha;
}

// Cambia una fecha de un formato a otro
function cambiarFechaDeFormato (fechaEnTexto, formatoOriginal, formatoFinal)
{
     return convertirFechaATexto(convertirTextoAFecha(fechaEnTexto, formatoOriginal, separadorDeFechas), formatoFinal);
}

// Rellena el caracter indicado por la izquierda
function lFill(cadena, posiciones, caracter)
{
     var resultado = "";
     resultado = cadena.toString();
     while (resultado.length < parseInt(posiciones,10))
     {
          resultado = caracter + resultado;
     }

     return resultado;
}

// Devuelve la diferencia en días entre dos fechas
function diferenciaEntreFechas (fechaAEnTexto, fechaBEnTexto, formatoFechas)
{
     var resultado = "";
     var fechaA = convertirTextoAFecha(fechaAEnTexto, formatoFechas, separadorDeFechas);
     var fechaB = convertirTextoAFecha(fechaBEnTexto, formatoFechas, separadorDeFechas);

     resultado = Math.round(( fechaB.valueOf() - fechaA.valueOf() ) / (1000*60*60*24));

     return resultado;
}

// Suma días a una fecha
function sumarDiasAFecha (fechaEnTexto, diasASumar, formatoFechas)
{
     var resultado = "";
     var fechaAuxiliar = new Date();

     var fecha = convertirTextoAFecha(fechaEnTexto, formatoFechas, separadorDeFechas);

     fechaAuxiliar = new Date(fecha.getFullYear(), fecha.getMonth(), fecha.getDate() + parseInt(diasASumar, 10))

     resultado = convertirFechaATexto(fechaAuxiliar, formatoFechas);

     return resultado;
}

