/*/////////////////////////////////////////////////////////*/
// 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_richiesta_prenotazione(modulo){

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

	// Recupero alcuni elementi della pagina
	var nome = modulo.nome.value;
	var cognome = modulo.cognome.value;
	var cap = modulo.cap.value;
	var citta = modulo.citta.value;
	var telefono = modulo.telefono.value;
	var posta_e = modulo.posta_e.value;

	var tot_camere = modulo.num_camere.value;
	var num_adulti = new Array();
	for (i=1;i<=tot_camere;i++) {
		num_adulti[i] = $('#num_adulti_'+i+' option:selected').val();
	}
	
	var num_bambini = new Array();
	var eta_bambini = new Array();
	var num_eta_indicate = new Array();
	for (i=1;i<=tot_camere;i++) {
		num_bambini[i] = $('#num_bambini_'+i+' option:selected').val();
	
		eta_bambini[i] = new Array();
		num_eta_indicate[i] = 0;
		for (c=1;c<=num_bambini[i];c++) {
			eta_bambini[i][c] = $('#eta_bambini_'+i+'_'+c+' option:selected').val()
			if (eta_bambini[i][c] != 0) {
				num_eta_indicate[i]++;
			}
		}
	}

	var data_arrivo = modulo.data_arrivo.value;
	var data_partenza = modulo.data_partenza.value;
	var privacy = modulo.privacy.checked;
	
	
	// CONTROLLI SULLE CAMERE ////////////////////////////////////////////////////////////////////////////
	
	if (tot_camere == 0) {
		{i_m++; msg[i_m] = "-> It is required to select at least one room.\n";}	
	}
	
	for (i=1;i<=tot_camere;i++) {
		if (num_adulti[i]==0) {
			{i_m++; msg[i_m] = "-> It is required to select at least one adult per room.\n";}	
			break;
		}
		
		tot_unita_camera = parseInt(num_adulti[i]) + parseInt(num_bambini[i]);
		if ( tot_unita_camera > 5) {
			{i_m++; msg[i_m] = "-> In room "+i+" request is bigger than avalaibility. Please select one more room.\n";}	
		}				
		
		if (num_bambini[i] > num_eta_indicate[i]) {
			{i_m++; msg[i_m] = "-> In room "+i+" some ages are missing.\n";}	
		}
		
		if (num_bambini[i] < num_eta_indicate[i]) {
			{i_m++; msg[i_m] = "-> In room "+i+" there are more ages than children.\n";}	
		}
		
		if (num_bambini[i] == num_eta_indicate[i]) {
			for (h=3;h>=2;h--) {
				if (eta_bambini[i][h] !=0 && eta_bambini[i][h-1] == 0) {
					{i_m++; msg[i_m] = "-> In room "+i+" ages must be selected consecutively.\n";}	
					break; 
				}
			}
		}
	}
	
	// CONTROLLI SULLE CAMERE ////////////////////////////////////////////////////////////////////////////
	
	
	// DATI OBBLIGATORI ////////////////////////////////////////////////////////////////////////////
	if(!nome){
		if(lingua == 1){i_m++; msg[i_m] = "-> E' necessario inserire il Nome\n";}
		if(lingua == 2){i_m++; msg[i_m] = "-> Name is required\n";}
	}
	if(!cognome){
		if(lingua == 1){i_m++; msg[i_m] = "-> E' necessario inserire il Cognome\n";}
		if(lingua == 2){i_m++; msg[i_m] = "-> Surname is required\n";}
	}
	if(!citta){
		if(lingua == 1){i_m++; msg[i_m] = "-> E' necessario inserire la City'\n";}
		if(lingua == 2){i_m++; msg[i_m] = "-> City is required\n";}
	}
	if(!telefono){
		if(lingua == 1){i_m++; msg[i_m] = "-> E' necessario inserire il Telefono\n";}
		if(lingua == 2){i_m++; msg[i_m] = "-> Phone is required\n";}
	}

	if(!posta_e){
		if(lingua == 1){i_m++; msg[i_m] = "-> E' necessario inserire l\'E-mail\n";}
		if(lingua == 2){i_m++; msg[i_m] = "-> Email is required\n";}
	}else{	
		var reg = new RegExp("^([-_.#$&a-zA-Z0-9]+)[@][-_.a-zA-Z0-9]+(\\.[a-zA-Z]{2,4})(\\.[a-zA-Z]{2,4})?$","");
		if(!posta_e.match(reg)){
			if(lingua == 1){i_m++; msg[i_m] = "-> Email must be a valid address\n";}
			if(lingua == 2){i_m++; msg[i_m] = "-> English\n";}
		}
	}
	if(!privacy){
		if(lingua == 1){i_m++; msg[i_m] = "-> E' necessario accettare le condizioni della privacy\n";}
		if(lingua == 2){i_m++; msg[i_m] = "-> It is necessary to agree Privacy Policy\n";}
	}

	
	// 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);}
	}
	
	//if(!adulti){
//		if(lingua == 1){i_m++; msg[i_m] = "-> E' necessario indicare il numero di Adulti\n";}
//		if(lingua == 2){i_m++; msg[i_m] = "-> English\n";}
//	}


	////////////////////////////////////
	// Calcolo la differenza di giorni
	////////////////////////////////////
	
	// Separo i valori delle date ////////////////////
	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);
	
	
	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';}
	}


	// DATI OBBLIGATORI ////////////////////////////////////////////////////////////////////////////



	/////////////////////////////////////////////////////////////
	// FINE CONTROLLI
	/////////////////////////////////////////////////////////////
	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();
	}

}

