/***********************************************/
/* Utilitats per treballar amb dates i números */
/***********************************************/

/*************************/
function anyTraspas (any) {
/************************/
	// Si l'any és divisible per 4 i per 100 i divisible per 400 -> és de traspàs si no, no
	//if ((any % 4 == 0) &&  (any % 100 == 0) && (any % 400 == 0)) return true;
	if (any % 4 == 0) return true;
	else return false;
}

/*******************************/
function validarNumero (numero) {
/*******************************/
	var caractersValids = "0123456789.()-";
	var esNumero = true;
	var caracter;
	
	if (numero == "") return false;
	for (i = 0; i < numero.length && esNumero == true; i++) {
		caracter = numero.charAt(i);
		if (caractersValids.indexOf(caracter) == -1) esNumero = false;
	}
	
	return esNumero;
}

/***************************/
function validarData (data) {
/***************************/
	var dia, mes, any, febrer;
	
	dia = data.split("/")[0];
	mes = data.split("/")[1];
	any = data.split("/")[2];

	// Comprovem si es tracta de números
    if (isNaN(dia) || isNaN(mes) || isNaN(any)) {
		alert("El format de la data és incorrecte. Si us plau, introdueixi una data correcte.");
		return false;
	}

	if (anyTraspas(any)) febrer = 29;
    else febrer = 28;

	// Comprovem que el mes sigui correcte
	if ((mes < 1) || (mes > 12)) {
		alert("El mes introduït és incorrecte. Si us plau, introdueixi un mes correcte.");
		return false;
	}

	// Comprovem que el dia sigui correcte
	if ((mes == 2) && ((dia < 1) || (dia > febrer))) {
		alert("El dia introduït és incorrecte. Si us plau, introdueixi un dia correcte.");
        return false;
	}

	if (((mes == 1) || (mes == 3) || (mes == 5) || (mes == 7) || (mes == 8) || (mes == 10) || (mes == 12)) && ((dia < 1) || (dia > 31))) {
		alert("El dia introduït és incorrecte. Si us plau, introdueixi un dia correcte.");
		return false;
	}

	if (((mes == 4) || (mes == 6) || (mes == 9) || (mes == 11)) && ((dia < 1) || (dia > 30))) {
		alert("El dia introduït és incorrecte. Si us plau, introdueixi un dia correcte.");
		return false;
	}

	// Comprovem que l'any sigui correcte
	if (any < 2000) {
		alert("L'any introduït és incorrecte. Si us plau, introdueixi un any correcte.");
		return false;
	}

	// Data correcte
	return true;
}

/**************************/
function diaSetmana (data) {
/**************************/
	// Calcula el dia de la setmana (diumenge = 0) d'una data en format mm/dd/aaaa
	var mesos = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	var dia = data.split("/")[0];
	var mes = data.split("/")[1];
	var any = data.split("/")[2];
	var dataString = mesos[mes-1]+" "+dia+", "+any;
	var d = new Date(Date.parse(dataString));

	return (d.getDay());
}

/**************************/
function validarHora(hora) {
/**************************/
	var h, m;
	
	h = hora.split(":")[0];
	m = hora.split(":")[1];

	// Comprovem si es tracta de números
    if (isNaN(h) || isNaN(m)) {
		alert("El format de l'hora és incorrecte. Si us plau, introdueixi una hora correcte.");
		return false;
	}

	// Comprovem que l'hora sigui correcte
	if ((h < 0) || (h > 23)) {
		alert("L'hora introduïda és incorrecte. Si us plau, introdueixi una hora correcte.");
		return false;
	}

	// Comprovem que els minuts sigui correctes
	if ((m < 0) || (m > 59)) {
		alert("Els minuts introduïts són incorrectes. Si us plau, introdueixi els minuts correctes.");
		return false;
	}

	// Hora correcte
	return true;
}