// JavaScript: Validacao e formatacao dos formularios
// Autora: Andressa K. Pires (Cinte)

// -------------------------------- Funcoes para os campos -------------------------------- //
// Separadores
function separadorTexto(item) {
	var texto = item.value;
	var tam = texto.length;
	var temp = '';
	var x = 0;
	for(x=0; x<tam; x++) {
	  if (isNaN(texto.charAt(x)) || (texto.charAt(x) == " "))
		temp = temp + texto.charAt(x);
	}

	return temp;
}

function separadorNumero(item) {
	var textonum = "";
	var texto = item.value;
	var tam = texto.length;
	var x = 0;
	for(x=0; x<tam; x++) {
		if ((!isNaN(texto.charAt(x))) && (texto.charAt(x) != " "))
			textonum = textonum + texto.charAt(x);
	}
	return textonum;
}

function separadorPreco(texto) {
	var textonum = "";
	var tam = texto.length;
	var x;
	for(x = 0; x < tam; x++) {
		if (!isNaN(texto.charAt(x)) || texto.charAt(x) == ",")
		   textonum = textonum + texto.charAt(x);
	}
	return textonum;
}

function separadorPonto(item) {
	var textonum = "";
	var texto = item.value;
	var tam = texto.length;
	var x = 0;
	for(x=0; x<tam; x++) {
		if ((!isNaN(texto.charAt(x))) || (texto.charAt(x) == "."))
			textonum = textonum + texto.charAt(x);
	}
	return textonum;
}

function separadorDigito(texto) {
	var textonum = "";
	var tam = texto.length;
	var x = 0;
	for(x=0; x<tam; x++) {
		if (!isNaN(texto.charAt(x)))
			textonum = textonum + texto.charAt(x);
	}
	return textonum;
}

// Numero
function formataNumero(item) {
	var num = separadorNumero(item);
   	item.value = num;
	return true;
}

// Numero com ponto
function formataNumeroPonto(item) {
	var num = separadorPonto(item);
   	item.value = num;
	return true;
}

// Preco
function formataPreco(item) {
	var cmp = item.value;
	item.value = separadorPreco(cmp);
	return true;
}

// Texto
function formataTexto(item) {
	var num = separadorTexto(item);
   	item.value = num;
	return true;
}

// E-mail
function verificaEmail(item) {
	var email = item.value;
	var erro = "Indirizzo e-mail invalido!";

	if (email != '') {
		//Expressao Regular utilizada para validar o endereço de email
		var expressaoRegular = /^[a-zA-Z0-9_\.-]{2,}@([A-Za-z0-9_-]{2,}\.)+[A-Za-z]{2,4}$/;
		if ( !expressaoRegular.test(email) ) {
			alert(erro);
			item.value = "";
			return false;
		}
		return true;
	}
}

// Data
function formataData(item) {
	var data = "";
	var datasemsep = separadorDigito(item.value);
	var x = 0;
	for (x = 0; x < datasemsep.length; x++){
		switch(x) {
			case 2 :
			case 4 :
				data = data + "/" + datasemsep.charAt(x);
				break;
			default :
				data = data + datasemsep.charAt(x);
		}
	}

	item.value = data;
	return true;
}

// Data
function verificaData(item) {
	var hoje = new Date();
	var anoAtual = hoje.getFullYear();
	var barras = item.value.split("/");
	var erro = "La data non é valida!";

	if (barras.length == 3) {
		var dia = barras[0];
		var mes = barras[1];
		var ano = barras[2];
		var resultado;
		resultado = (!isNaN(dia) && (dia > 0) && (dia < 32)) && (!isNaN(mes) && (mes > 0) && (mes < 13)) && (!isNaN(ano) && (ano.length == 4) && (ano >= anoAtual && ano < (anoAtual+2)));

		if (!resultado) {
			alert(erro);
			item.value = "";
			return false;
		}
		else {
			if (((ano % 4) == 0) && ((ano % 100) == 0) && ((ano % 400) == 0)) {
				if (mes == 2) {
					if (dia > 29) {
						alert(erro);
						item.value = "";
						return false;
					}
					else
						return true;
				}
				else
					return true;
			}
			else {
				if ((ano % 100) != 0){
					if ((ano % 4) == 0){
						if (mes == 2) {
							if (dia > 29) {
								alert(erro);
								item.value = "";
								return false;
							}
							else
								return true;
						}
						else
							return true;
					}
					else {
						if (mes == 2) {
							if (dia > 28) {
								alert(erro);
								item.value = "";
								return false;
							}
							else
								return true;
						}
						else
							return true;
					}
				}
				else {
					if (mes == 2) {
						if (dia > 28) {
							alert(erro);
							item.value = "";
							return false;
						}
						else
							return true;
					}
					else
						return true;
				}
			}
		}
	}
	else {
		if (item.value == "") {
			return true;
		} else {
			alert(erro);
			item.value = "";
			return false;
		}
	}
}

// Nascimento
function verificaNasc(item) {
	var hoje = new Date();
	var anoAtual = hoje.getFullYear();
	var barras = item.value.split("/");
	var erro = "La data non é valida!";

	if (barras.length == 3) {
		var dia = barras[0];
		var mes = barras[1];
		var ano = barras[2];
		var resultado;
		resultado = (!isNaN(dia) && (dia > 0) && (dia < 32)) && (!isNaN(mes) && (mes > 0) && (mes < 13)) && (!isNaN(ano) && (ano.length == 4) && (ano >= (anoAtual-100) && ano < (anoAtual+1)));

		if (!resultado) {
			alert(erro);
			item.value = "";
			return false;
		}
		else {
			if (((ano % 4) == 0) && ((ano % 100) == 0) && ((ano % 400) == 0)) {
				if (mes == 2) {
					if (dia > 29) {
						alert(erro);
						item.value = "";
						return false;
					}
					else
						return true;
				}
				else
					return true;
			}
			else {
				if ((ano % 100) != 0){
					if ((ano % 4) == 0){
						if (mes == 2) {
							if (dia > 29) {
								alert(erro);
								item.value = "";
								return false;
							}
							else
								return true;
						}
						else
							return true;
					}
					else {
						if (mes == 2) {
							if (dia > 28) {
								alert(erro);
								item.value = "";
								return false;
							}
							else
								return true;
						}
						else
							return true;
					}
				}
				else {
					if (mes == 2) {
						if (dia > 28) {
							alert(erro);
							item.value = "";
							return false;
						}
						else
							return true;
					}
					else
						return true;
				}
			}
		}
	}
	else {
		if (item.value == "") {
			return true;
		} else {
			alert(erro);
			item.value = "";
			return false;
		}
	}
}
// ---------------------------------------------------------------------------------------- //
// Adesao Pacote :: Ver campos de outros participantes
function verCamposAltri(item) {
	var altri = item.value;

	if (!isNaN(altri)) {
		var x, y;
	
		//remove dados antigos
		$("#camposAltri").empty();
	
		if (altri > 0) {
			document.getElementById("verAltri").style.display = "block";
	
			//colocar mais 3 campos
			for (x = 0; x < altri; x++) {
				y = x+1;
				$("#camposAltri").append("<div id='sub_titulo_maron_onze'>DATI PARTECIPANTE " + y +"</div><div id='formulario_condizioni'><div id='coluna_formulario'><div id='nome_formulario'>COGNOME E NOME (come riportato nel passaporto):&nbsp;</div><div id='lacuna_formulario'><input type='text' name='nome_ap" + x +"' id='nome_ap" + x +"' class='lacuna' onKeyUp='formataTexto(this)' style='width: 380px; *width: 384px;' maxlength='81' /></div></div><div id='coluna_formulario'><div id='nome_formulario'>DATA NASCITA:&nbsp;</div><div id='lacuna_formulario'><input type='text' name='nascita_ap" + x +"' id='nascita_ap" + x +"' class='lacuna' style='width: 66px;' maxlength='10' onKeyUp='formataData(this)' onchange='verificaNasc(this)' /></div><div id='nome_formulario'>&nbsp;INDIRIZZO:&nbsp;</div><div id='lacuna_formulario'><input type='text' name='indirizzo_ap" + x +"' id='indirizzo_ap" + x +"' class='lacuna' style='width: 261px;' maxlength='45' /></div><div id='nome_formulario'>&nbsp;CAP:&nbsp;</div><div id='lacuna_formulario'><input type='text' name='cap_ap" + x +"' id='cap_ap" + x +"' class='lacuna' style='width: 128px;' maxlength='12' onkeyup='formataNumero(this)' /></div></div><div id='coluna_formulario'><div id='nome_formulario'>COMUNE:&nbsp;</div><div id='lacuna_formulario'><input type='text' name='comune_ap" + x +"' id='comune_ap" + x +"' class='lacuna' style='width: 212px;' maxlength='25' /></div><div id='nome_formulario'>&nbsp;NAZIONALITA:&nbsp;</div><div id='lacuna_formulario'><input type='text' name='nazionalita_ap" + x +"' id='nazionalita_ap" + x +"' class='lacuna' onKeyUp='formataTexto(this)' style='width: 93px;' maxlength='25' /></div><div id='nome_formulario'>&nbsp;N&ordm; PASSAP:&nbsp;</div><div id='lacuna_formulario'><input type='text' name='n_passap_ap" + x +"' id='n_passap_ap" + x +"' class='lacuna' style='width: 128px;' maxlength='10' /></div></div><div id='coluna_formulario'><div id='nome_formulario'>TELEFONI:&nbsp;</div><div id='lacuna_formulario'><input type='text' name='telefoni_ap" + x +"' id='telefoni_ap" + x +"' class='lacuna' style='width: 267px;' maxlength='30' /></div><div id='nome_formulario'>&nbsp;E-MAIL:&nbsp;</div><div id='lacuna_formulario'><input type='text' name='email_ap" + x +"' id='email_ap" + x +"' class='lacuna' style='width: 267px; *width: 269px;' maxlength='50' onchange='verificaEmail(this)' /></div></div></div>");
				if (x != altri-1) {
					$("#camposAltri").append("<br>");
				}
			}
		} else {
			document.getElementById("verAltri").style.display = "none";
		}
	} else {
		document.getElementById("altri").value = "";
		alert('Este campo só aceita números!');
		document.getElementById("verAltri").style.display = "none";
	}
}

// Adesao Pacote :: Ver compagnia
function verCompagnia(item) {
	var opc = item.value;

	if (opc == 'Si') {
		document.getElementById("verCompagnia").style.display = "block";
	} else {
		document.getElementById("compagnia").value = "";
		document.getElementById("verCompagnia").style.display = "none";
	}
}

// Adesao Pacote
function verifAdesao() {
	//dados do contratante
	var nom = $('input[@id=nome]').val();
	var nas = $('input[@id=nascita]').val();
	var ind = $('input[@id=indirizzo]').val();
	var cap = $('input[@id=cap]').val();
	var com = $('input[@id=comune]').val();
	var naz = $('input[@id=nazionalita]').val();
	var pas = $('input[@id=n_passap]').val();
	var tel = $('input[@id=telefoni]').val();
	var ema = $('input[@id=email]').val();

	//dados do participante
	var nom_dp = $('input[@id=nome_dp]').val();
	var nas_dp = $('input[@id=nascita_dp]').val();
	var ind_dp = $('input[@id=indirizzo_dp]').val();
	var cap_dp = $('input[@id=cap_dp]').val();
	var com_dp = $('input[@id=comune_dp]').val();
	var naz_dp = $('input[@id=nazionalita_dp]').val();
	var pas_dp = $('input[@id=n_passap_dp]').val();
	var tel_dp = $('input[@id=telefoni_dp]').val();
	var ema_dp = $('input[@id=email_dp]').val();

	//outros participantes
	//var alt = $('input[@id=altri]').val();

	//dados pacote
	var pro = $('input[@id=programma]').val();
	var dur = $('input[@id=durata]').val();
	var des = document.getElementById("descrizione").checked;
	var par = $('input[@id=partenza]').val();
	var datD = $('input[@id=dataD]').val();
	var arr = $('input[@id=arrivo]').val();
	var datA = $('input[@id=dataA]').val();
	var cpgS = document.getElementById("opcao_compagniaS").checked;
	var cpgN = document.getElementById("opcao_compagniaN").checked;

	if (cpgS == true)
		var cpg = $('textarea[@id=compagnia]').val();
	else
		var cpg = 'nao';

	var ric = $('textarea[@id=richieste]').val();
	var val = $('input[@id=valute]').val();
	var cPro = $('input[@id=costo_pro]').val();
	var cPas = $('input[@id=costo_pas]').val();
	var cam = $('input[@id=camere]').val();
	
	var lug = $('input[@id=luogo]').val();
	var datL = $('input[@id=dataL]').val();

	var itD = document.getElementById("itinerarioDefinitivo").checked;
	var coG = document.getElementById("condizioniGenerali").checked;
	var scA = document.getElementById("schedaAdesione").checked;
	var leP = document.getElementById("leggePrivacy").checked;

	if (nom == "")
		alert('Informare il nome completo del contraente!');
	else if (nas == "")
		alert("Informare la data di nascita del contraente!");
	else if (ind == "")
		alert("Informare l'indirizzo del contraente!");
	else if (cap == "")
		alert('Informare il CAP del contraente!');
	else if (com == "")
		alert('Informare il comune di residenza del contraente!');
	else if (naz == "")
		alert('Informare la nazionalitá del contraente!');
	else if (pas == "")
		alert('Informare il numero di passaporto del contraente!');
	else if (tel == "")
		alert('Informare il numero di telefono del contraente!');
	else if (ema == "")
		alert("Informare l'indirizzo e-mail del contraente!");
	else if (nom_dp == "")
		alert('Informare il nome completo del partecipante!');
	else if (nas_dp == "")
		alert("Informare la data di nascita del partecipante!");
	else if (ind_dp == "")
		alert("Informare l'indirizzo del partecipante!");
	else if (cap_dp == "")
		alert('Informare il CAP del partecipante!');
	else if (com_dp == "")
		alert('Informare il comune di residenza del partecipante!');
	else if (naz_dp == "")
		alert('Informare la nazionalitá del partecipante!');
	else if (pas_dp == "")
		alert('Informare il numero di passaporto del partecipante!');
	else if (tel_dp == "")
		alert('Informare il numero di telefono del partecipante!');
	else if (ema_dp == "")
		alert("Informare l'indirizzo e-mail del partecipante!");
	else if (pro == "")
		alert("Informare il codice e nome del programma!");
	else if (dur == "")
		alert("Informare la durata del programma!");
	else if (des == false)
		alert("Selezionare l'accettazione della proposta definitiva dell'itinerario!");
	else if (par == "")
		alert("Informare la localitá di partenza dell'itinerario!");
	else if (datD == "")
		alert("Informare il giorno di partenza!");
	else if (arr == "")
		alert("Informare la localitá di ritorno dell'itinerario!");
	else if (datA == "")
		alert("Informare la data di ritorno!");
	else if (cpgS == false && cpgN == false)
		alert("Indicare si o no relativo alla compagnia assicurativa e coperture!");
	else if (cpg == "")
		alert("Informare il nome della compagnia assicurativa e le relative coperture!");
	else if (val == "")
		alert("Indicare il tipo di moneta utilizzata nel programma di viaggio!");
	else if (cPro == "")
		alert("Informare il costo concordato nel programma viaggio!");
	else if (cPas == "")
		alert("Informare il costo dei passagi aerei!");
	else if (cam == "")
		alert("Informare la quantítá di camere singole!");
	else if (lug == "")
		alert("Informare il luogo di sottoscrizione del presente contratto!");
	else if (datL == "")
		alert("Informare la data attuale!");
	else if (itD == false)
		alert("Selezionare l'accettazione della proposta definitiva dell'itinerario!");
	else if (coG == false)
		alert("Selezionare l'accettazione delle condizioni generali!");
	else if (scA == false)
		alert("Selezionare l'accettazione della scheda adesione di programma!");
	else if (leP == false)
		alert("Selezionare l'accettazione sulla privacy!");
	else {
		n = document.getElementById("nascita");
		e = document.getElementById("email");
		nDP = document.getElementById("nascita_dp");
		eDP = document.getElementById("email_dp");
		dD = document.getElementById("dataD");
		dA = document.getElementById("dataA");
		dL = document.getElementById("dataL");

		if ((verificaNasc(n) != false) && (verificaEmail(e) != false) && (verificaNasc(nDP) != false) && (verificaEmail(eDP) != false) && (verificaData(dD) != false) && (verificaData(dA) != false) && (verificaData(dL) != false)) {
			$('#formAdesaoPacote').submit();
		}
	}
}

// Contato :: Ver qtd quarto
function verQtd(item) {
	var qtd = item.checked;

	if (qtd) {
		document.getElementById("verQtd").style.visibility = "hidden";
		document.getElementById("qtd_quarto").value = "";
	} else
		document.getElementById("verQtd").style.visibility = "visible";
}

// Contato
function verifContato() {
	var nom = $('input[@id=nome]').val();
	var ema = $('input[@id=email]').val();
	var pro = $('input[@id=provincia]').val();
	var num = $('input[@id=participante]').val();

	var meS = document.getElementById("menorS").checked;
	var meN = document.getElementById("menorN").checked;

	var peD = $('input[@id=periodoDe]').val();
	var peA = $('input[@id=periodoAte]').val();

	var catS = document.getElementById("categoriaS").checked;
	var catM = document.getElementById("categoriaM").checked;
	var catSu = document.getElementById("categoriaSu").checked;

	var qua = document.getElementById("quarto").checked;
	var qtdQ = $('input[@id=qtd_quarto]').val();

	var pac = $('input[@id=pacote_oc]').val();
	if (pac == '')
		pac = $('select[@id=pacote]').val();

	var ext = $('select[@id=extensao]').val();
	var not = $('textarea[@id=nota]').val();

	var con = document.getElementById("condicoes").checked;
	var pri = document.getElementById("privacidade").checked;

	if (nom == "")
		alert('Informare il nome completo!');
	else if (ema == "")
		alert("Informare l'indirizzo e-mail!");
	else if (pro == "")
		alert('Informare la provincia di residenza!');
	else if (num == "")
		alert('Informare il numero di partecipanti!');
	else if (meS == false && meN == false)
		alert('Selezionare la presenza di minori!');
	else if (peD == "" || peA == "")
		alert('Informare il periodo richiesto per il viaggio!');
	else if (catS == false && catM == false && catSu == false)
		alert('Selezionare la categoria della struttura alberghiera di preferenza!');
	else if (qua == false && qtdQ == "")
		alert('Informare la quantítá di camere singole!');
	else if (pac == "")
		alert('Scegliere il programma!');
	else if (ext == "")
		alert("Scegliere l'estensione del programma!");
	else if (not == "")
		alert('Scrivere un testo libero!');
	else if (con == false)
		alert('Selezionare il campo delle condizioni generali!');
	else if (pri == false)
		alert('Selezionare il campo sulla privacy!');
	else {
		e = document.getElementById("email");
		pD = document.getElementById("periodoDe");
		pA = document.getElementById("periodoAte");

		if ((verificaEmail(e) != false) && (verificaData(pD) != false) && (verificaData(pA) != false)) {
			$('#formContato').submit();
		}
	}
}
