/*/////////////////////////////////////////////////////////*/
// CONTROLLO FORM
/*/////////////////////////////////////////////////////////*/


// Definisco "oggi"
var data_oggi = new Date();
data_oggi_lock = data_oggi.getDate()+'/'+data_oggi.getMonth()+'/'+data_oggi.getYear();


// IMPOSTO LA LINGUA
var lingua = 2;

////////////////////////
// Controllo data
////////////////////////
function control_data(data){
	
	var msg = '';
	var reg = new RegExp("[0-3][0-9]\/[0-3][0-9]\/[1-2][0-9]{3}","");
	// Recupero i valori singoli
	var giorno = data.substring(0,2);
	var mese = data.substring(3,5);
	var anno = data.substring(6,10);
	
	// Controllo il formato data
	var formato_data = false;
	if(data.match(reg) && giorno <= 31 && mese <= 12 && anno <= 2035){
		formato_data = true;
	}

// Definisco i mesi e anni da controllare
	var mesi_31 = ['01','03','05','07','08','10','12'];
	var mesi_30 = ['04','06','09','11'];
	var anni_29 = [1996,2000,2004,2008,2012,2016,2020,2024,2028];
	
	// Controllo formato data
	if(!formato_data){
		if(lingua == 1){msg = '-> La data '+data+' non è corretta\nInserirla in questo formato "gg/mm/aaaa".\n';}
		if(lingua == 2){msg = '-> Date '+data+' is not correct\nPlease write it in this format: "gg/mm/aaaa".\n';}
	}
	
	// Controllo giorni a 31
	var cnt = 0;
	while(cnt <= mesi_30.length){
		if(giorno > 30 && mesi_30[cnt] == mese){
			if(lingua == 1){msg = '-> '+giorno+'/'+mese+', questo mese ha solo 30 giorni.\n';}
			if(lingua == 2){msg = '-> '+giorno+'/'+mese+', this month has got only 30 days.\n';}
		}
		cnt++;
	}
	// Controllo anni bissentili
	cnt = 0;
	while(cnt <= anni_29.length){
		if(anno != anni_29[cnt] && mese == '02' && giorno > 28){
			if(lingua == 1){msg = '-> Il mese di Febbraio del '+anno+' non ha 29 giorni.\n';}
			if(lingua == 2){msg = '-> The month of February in '+anno+' has got not 29 days.\n';}
		}
		cnt++;
	}
	if(giorno > 29 && mese == '02'){
		if(lingua == 1){msg = "-> Febbraio non avrà mai "+giorno+" giorni.\n";}
		if(lingua == 2){msg = '-> February will never have '+giorno+' days.\n';}
	}
	
	return msg;
	////////////////////////
}



////////////////////////
// Controllo dati form
////////////////////////
function controllo_data_prenotazione(modulo){
		
	// Recupero alcuni elementi della pagina
	var data_arrivo = modulo.data_arrivo.value;
	var data_partenza = modulo.data_partenza.value;
	
	// Separo i valori
	var giorno_arr = data_arrivo.substring(0,2);
	var mese_arr = data_arrivo.substring(3,5);
	var anno_arr = data_arrivo.substring(6,10);
	
	var giorno_par = data_partenza.substring(0,2);
	var mese_par = data_partenza.substring(3,5);
	var anno_par = data_partenza.substring(6,10);

	
	// Messaggio vuoto
	var avv = '';
	var msg = new Array();
	var i_m = -1;
	
	///////////////////////////////////////
	// Dati obbligatori
	///////////////////////////////////////

	// Data arrivo
	if(!data_arrivo){
		if(lingua == 1){i_m++; msg[i_m] = '-> E\' necessario indicare la data di arrivo\n';}
		if(lingua == 2){i_m++; msg[i_m] = '-> Arrival date is required\n';}
	}else{
		if(control_data(data_arrivo)){i_m++; msg[i_m] = control_data(data_arrivo);}
	}
	if(!data_partenza){
		if(lingua == 1){i_m++; msg[i_m] = '-> E\' necessario indicare la data di partenza\n';}
		if(lingua == 2){i_m++; msg[i_m] = '-> Departure date is required\n';}
	}else{
		if(control_data(data_partenza)){i_m++; msg[i_m] = control_data(data_partenza);}
	}

	// Calcolo la differenza di giorni
	var data1 = new Date(anno_arr, mese_arr - 1, giorno_arr);
	var data2 = new Date(anno_par, mese_par - 1, giorno_par);
	var diff = data2 - data1; /* differenza in millisecondi */
	var diff2 = data1 - data_oggi; /* differenza in millisecondi */
	var diff3 = data2 - data_oggi; /* differenza in millisecondi */
	diff = Math.floor(diff / (1000*60*60*24));
	diff2 = Math.floor(diff2 / (1000*60*60*24)) + 1;
	diff3 = Math.floor(diff3 / (1000*60*60*24)) + 1;
	
	// Controllo che la partenza sia almeno 1 giono dopo l'arrivo
	if(diff < 1 && (data_arrivo && data_partenza)){
		if(lingua == 1){i_m++; msg[i_m] = '-> La data di partenza deve essere posteriore (almeno di un giorno) a quella di arrivo\n';}
		if(lingua == 2){i_m++; msg[i_m] = '-> The date of departure must be later (by at least one day) than the arrival date.\n';}
	}

	// Controllo che le date non siano prima di oggi
	if((diff2 < 1 || diff3 < 1) && (data_arrivo && data_partenza)){
		if(lingua == 1){i_m++; msg[i_m] = '-> Le date devono partire almeno dalla data di domani\n';}
		if(lingua == 2){i_m++; msg[i_m] = '-> Dates must start at the earliest from  tomorrow\'s date\n';}
	}

	// Se ci sono messaggi
	if(msg.length > 0){
		if(msg.length){
			if(lingua == 1){avv = 'Alcune informazioni non sono corrette...\n\n';}
			if(lingua == 2){avv = 'Some informations are incorrect or missing...\n\n';}
		}
		
		var i = 0;
		while(i <= (msg.length-1)){
			avv += msg[i];
			i++;
		}
		alert(avv);
	}else{
		// Altrimenti invio il form
		modulo.submit();
	}

}

