	function finMes(nMes, nAno){
		var aFinMes = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
		var nMesBis = 0;
		if (nMes == 2 && (nAno % 4) == 0) nMesBis = 1;
		return eval(aFinMes[nMes - 1] + nMesBis);
	}

	function padNmb(nStr, nLen){
		var sRes = String(nStr);
		var sCeros = "0000000000";
		return sCeros.substr(0, nLen - sRes.length) + sRes;
	}

	function sumarDias(fecha, dias){
		try {
			var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
			var f = fecha;
			var arr = f.match(datePat);
			var nDia = Number(arr[1]);
			var nMes = Number(arr[3]);
			var nAno = Number(arr[5]);
			var sep = arr[2];
	
			nDia += Number(dias);
			while (nDia > finMes(nMes, nAno)){
				nDia -= finMes(nMes, nAno);
				nMes += 1;
				if (nMes == 13){
					nMes = 1;
					nAno += 1;
				}
			}
			return padNmb(nDia, 2) + sep + padNmb(nMes, 2) + sep + padNmb(nAno, 4);
		} catch(ex) {
			return null;
		}
	}
	
	function restarFechas(f0, f1) {
		try {
			var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
			var fecha0 = f0;
			var matchArray0 = fecha0.match(datePat);
			
			month0 = matchArray0[3];
			day0 = matchArray0[1];
			year0 = matchArray0[5];
			
			var fecha1 = f1;
			var matchArray1 = fecha1.match(datePat);
			month1 = matchArray1[3];
			day1 = matchArray1[1];
			year1 = matchArray1[5];
			
			var fechaIni = new Date();
			fechaIni.setFullYear(year0, month0, day0);
	
			var fechaFin = new Date();
			fechaFin.setFullYear(year1, month1, day1);
			
			var resta = fechaFin.getTime() - fechaIni.getTime();
			resta = Math.floor(resta / (1000 * 60 * 60 * 24)).toFixed(0);
			return resta;
		} catch(ex) {
			return 0;
		}
	}
