	function carga (page) {
		window.location.href = page+"?"+Math.random();
	}


	function traduceFecha (date) {
		var aux1 = parseInt((date - 15078.2) / 365.25);
		var aux2 = parseInt((date - 14956.1 - (parseInt(aux1 * 365.25))) / 30.6001);
		var k = 0; if ((aux2 == 14) || (aux2 == 15)) k = 1;

		var dia = date - 14956 - parseInt(aux1 * 365.25) - parseInt(aux2 * 30.6001);
		var mes = aux2 - 1 - (k * 12);	var mesletra = "";
		var ano = aux1 + k + 1900;
		var semana = modulo ((date + 2), 7); semana++; var semanaletra = "";
		
		semanaletra = eval("DAY"+semana+"_NAME");
		mesletra = eval ("MONTH"+mes+"_NAME");

		return (semanaletra+", "+dia+" "+OF_NAME+" "+mesletra+" "+OF_NAME+" "+ano);	// Fecha Larga
		//return (dia+"/"+mes+"/"+ano);												// Fecha Corta
	}

	function traduceHora (time) {						// Hora dada en segundos
		var horas = parseInt (time / 3600);
		var aux = time - (horas * 3600);
		var minutos = parseInt (aux / 60);
		var segundos = parseInt (aux - (minutos * 60));

		if (horas > 24) return ("00:00:00");
		//return (horas+" horas, "+minutos+" minutos, "+segundos+" segundos");		// Hora Larga
		return ((((""+horas).length<2)?("0"+horas):horas)+":"+(((""+minutos).length<2)?("0"+minutos):minutos)+":"+(((""+segundos).length<2)?("0"+segundos):segundos));									// Hora Corta
	}

	function traduceHoraUtc (time) {						// Hora UTC dada en milisegundos
		var now = new Date();
		var utcDate = new Date(); utcDate.setTime (time);
		var horas = utcDate.getHours();
		horas += (now.getHours() - utcDate.getHours());		// Aņadir Offset y Timezone
		var minutos = utcDate.getMinutes();
		var segundos = utcDate.getSeconds();

		if (horas > 24) return ("00:00:00");
		return ((((""+horas).length<2)?("0"+horas):horas)+":"+(((""+minutos).length<2)?("0"+minutos):minutos)+":"+(((""+segundos).length<2)?("0"+segundos):segundos));									// Hora Corta
	}

	function anadeAjuste (hora, ajuste) {
		var hr = hora + "";
		var auxHoras = parseInt(hr.substring (0,hr.indexOf(":")));
		auxHoras += ajuste;
		var auxMinutos = parseInt(hr.substring (hr.indexOf(":")+1,hr.lastIndexOf(":")));
		var auxSegundos = parseInt(hr.substring (hr.lastIndexOf(":")+1));

		if (auxHoras == "NaN" || auxMinutos == "NaN" || auxSegundos == "NaN") return ("0:00:00");
		else return (auxHoras+":"+auxMinutos+":"+auxSegundos);
	}

	function getHora() {
		var now  = new Date();
		var sec  = now.getSeconds();
		var min  = now.getMinutes();
		var hour = now.getHours();
		return ((((""+hour).length<2)?("0"+hour):hour)+":"+(((""+min).length<2)?("0"+min):min)+":"+(((""+sec).length<2)?("0"+sec):sec));
	}

	function sumaHora (t1, t2) {			// Suma hora en formato hh:mm:ss
		var time1 = t1.split (":"); for (i=0; i<time1.length; i++) time1[i] = parseInt(time1[i]);
		var time2 = t2.split (":"); for (i=0; i<time2.length; i++) time2[i] = parseInt(time2[i]);
		var time = new Array(3);

		time[2] = time1[2] + time2[2];
		while (time[2] >= 60) {time[2] -= 60; time1[1]++;}
		time[1] = time1[1] + time2[1];
		while (time[1] >= 60) {time[1] -= 60; time1[0]++;}
		time[0] = time1[0] + time2[0];
		while (time[0] >= 24) time[0] -= 24;

		return ((((""+time[0]).length<2)?("0"+time[0]):time[0])+":"+(((""+time[1]).length<2)?("0"+time[1]):time[1])+":"+(((""+time[2]).length<2)?("0"+time[2]):time[2]));
	}

	function evalTipo1 (num) {
		try {
			return (eval ("TYPE"+num+"_NAME"));
		} catch (ex) {
			return INVALID_TYPE_ALERT;
		}
	}

	function evalTipo2 (num1, num2) {
		try {
			return (eval ("TYPE"+num1+"_"+num2+"_VAL"));
		} catch (ex) {
			return INVALID_TYPE_ALERT;
		}
	}

	function evalComponent (num1, num2) {
		try {
			return (eval ("COMPONENT"+num1+"_"+num2+"_VAL"));
		} catch (ex) {
			return INVALID_TYPE_ALERT;
		}
	}

	function modulo (div, base) {
		return Math.round(div - (Math.floor(div/base)*base));
	}
