/**************************************************************************************************************************

		Funciones para el manejo de CADENAS (C) Alberto Blanco 2008

**************************************************************************************************************************/
function ltrim(s) {return s.replace(/^\s+/, "");};
function rtrim(s) {return s.replace(/\s+$/, "");};
function trim(s) {return rtrim(ltrim(s));};

// Quita a la cadena todo lo que no sea un número y la devuelve
function doNumber(s) {return s.replace(/\D/gi,"");};

// Simula la expresion string(caracter,numero) del VB
function string(car,num)
{
var t='';

	for (var i=0;i<num;i++) t+=car;
	return t;
};
/*************************************************************************
Se le pasa un numero y lo devuelve formateado con ceros por la derecha
*************************************************************************/
function FormatNumberCero(N,NumDig)
{
var i=string('0',NumDig) + N;
var l=i.length;
	
	return i.substring(l-NumDig,l);
};

/*********************************************************************
 Se le pasa un numero y lo devuelve formateado con NumDec decimales
 y la , para la coma decimal
*********************************************************************/
function FormatNumber(N,NumDec)
{
var ns=N.toFixed(NumDec);
var c=ns.replace(/\x2E/g,',');

	if (c.indexOf(',')==-1) c+=',' + string('0',NumDec);
	return c;
};

/*************************************************************************
 Se le pasa un objeto date y devuelve una cadena de la forma dd/mm/aaaa
*************************************************************************/
function FormatDate(oneDate)
{
var theDay = FormatNumberCero(oneDate.getDate(),2);
var theMonth = FormatNumberCero(oneDate.getMonth()+1,2);
var theYear = FormatNumberCero(oneDate.getFullYear(),4);
return theDay + '/' + theMonth + '/' + theYear;
};

/********************************************************************
 Devuelve la diferencua en dias entre dos fechas
********************************************************************/
function DateDiff(Fec1,Fec2)
{
var oneMinute = 60 * 1000;
var oneHour = oneMinute * 60;
var oneDay = oneHour * 24;
var diff = Fec2.getTime() - Fec1.getTime();
	return Math.floor(diff/oneDay);
};

/***************************************************************************
 Devuelve un objeto fecha que es el resultado de sumarle NM meses a FecIni
***************************************************************************/
function AddMonth(FecIni,NM)
{
var diasMes=[31,28,31,30,31,30,31,31,30,31,30,31];
var theDay = FecIni.getDate();
var theMonth = FecIni.getMonth();
var theYear = FecIni.getFullYear();
var Anos=Math.floor(NM/12);	//Años a sumar
var Meses=NM-(Anos*12);		//Meses a sumar

	theMonth+=Meses;
	if (theMonth>11)
		{
		theMonth-=12;
		theYear++;
		};
		
	theYear+=Anos;
	if (theDay>diasMes[theMonth]) theDay=diasMes[theMonth];

	return new Date(theYear,theMonth,theDay,0,0,0);
};

/*************************************************
 Se le pasa una cadena con el formato dd/mm/aaaa
 y devuelve un objeto date
*************************************************/ 
function StringToDate(Str)
{
var d=parseInt(Str.substr(0,2),10);
var m=parseInt(Str.substr(3,2),10);
var a=parseInt(Str.substr(6,4),10);

	return new Date(a,m,d);
};
