var form;
var lang = 'it';

var MSG = new Array();

MSG['nome'] = new Array();
MSG['nome']['it'] = 'Nome';
MSG['nome']['en'] = 'Name';

MSG['cognome'] = new Array();
MSG['cognome']['it'] = 'Cognome';
MSG['cognome']['en'] = 'Surname';

MSG['provnascita'] = new Array();
MSG['provnascita']['it'] = 'Provincia di nascita';
MSG['provnascita']['en'] = 'Province of birth';

MSG['comunenascita'] = new Array();
MSG['comunenascita']['it'] = 'Comune di nascita';
MSG['comunenascita']['en'] = 'Place of birth';


MSG['datanascita'] = new Array();
MSG['datanascita']['it'] = 'Data di nascita';
MSG['datanascita']['en'] = 'Date of birth';

MSG['statocivile'] = new Array();
MSG['statocivile']['it'] = 'Stato civile';
MSG['statocivile']['en'] = 'Status';

MSG['sesso'] = new Array();
MSG['sesso']['it'] = 'Sesso';
MSG['sesso']['en'] = 'Sex';

MSG['nazionalita'] = new Array();
MSG['nazionalita']['it'] = 'Nazionalità';
MSG['nazionalita']['en'] = 'Nationality';

MSG['capresidenza'] = new Array();
MSG['capresidenza']['it'] = 'Cap residenza';
MSG['capresidenza']['en'] = 'Post code normal address';

MSG['capdomicilio'] = new Array();
MSG['capdomicilio']['it'] = 'Cap domicilio';
MSG['capdomicilio']['en'] = 'Post code current address';

MSG['provinciadomicilio'] = new Array();
MSG['provinciadomicilio']['it'] = 'Provincia residenza';
MSG['provinciadomicilio']['en'] = 'Province current address';

MSG['comunedomicilio'] = new Array();
MSG['comunedomicilio']['it'] = 'Comune residenza';
MSG['comunedomicilio']['en'] = 'Place current address';

MSG['indirizzodomicilio'] = new Array();
MSG['indirizzodomicilio']['it'] = 'Indirizzo residenza';
MSG['indirizzodomicilio']['en'] = 'Current address';

MSG['regionedomicilio'] = new Array();
MSG['regionedomicilio']['it'] = 'Regione residenza';
MSG['regionedomicilio']['en'] = 'Region current address';


MSG['email'] = new Array();
MSG['email']['it'] = 'e-mail';
MSG['email']['en'] = 'e-mail';

MSG['allegato'] = new Array();
MSG['allegato']['it'] = 'Allegato';
MSG['allegato']['en'] = 'Enclosed';

MSG['adesione'] = new Array();
MSG['adesione']['it'] = 'Adesione';
MSG['adesione']['en'] = 'Acceptance';

MSG['inglese'] = new Array();
MSG['inglese']['it'] = 'Inglese';
MSG['inglese']['en'] = 'English';

MSG['stage'] = new Array();
MSG['stage']['it'] = 'Stage';
MSG['stage']['en'] = 'Stage';

function check_field(fid, fdesc, ftype, freq, fdefault) {
	var check = false;
	switch (ftype)	{
		case 'testo'	:
						check = check_field_text(fid, fdesc, freq, fdefault);
						break;
		case 'testo2'	:
						check = check_field_text2(fid, fdesc, freq, fdefault);
						break;
		case 'numerico'	:
						check = check_field_numeric(fid, fdesc, freq, fdefault);
						break;
		case 'data'	:
						check = check_field_date(fid, fdesc, freq, fdefault);
						break;		
		case 'email'	:
						check = check_field_email(fid, fdesc, freq, fdefault);
						break;
		case 'textarea'	:
						check = check_field_textarea(fid, fdesc, freq, fdefault);
						break;		
		case 'combobox'	:	
						check = check_field_combobox(fid, fdesc, freq, fdefault);
						break;
		case 'checkbox'	:
						check = check_field_checkbox(fid, fdesc, freq, fdefault);
						break;		
		case 'radiobutton'	:
						check = check_field_radiobutton(fid, fdesc, freq, fdefault);
						break;		
		case 'file'	:
						check = check_field_file(fid, fdesc, freq, fdefault);
						break;
	}
	return 	check;
}

function check_field_text(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	if (freq && fvalue == '') {
		required_field(fdesc);
		return false;
	}
	if ((fvalue != '') && !valid_text(fvalue)) {		
		if (lang == 'it') 
			alert('Il campo "' + MSG[fdesc][lang] +'" non è valido.');
		else 
			alert('The field "' + MSG[fdesc][lang] +'" is not valid.')	;
			
		return false
	}		
 return true;	
}

function check_field_text2(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	if (freq && fvalue == '') {
		required_field(fdesc);
		return false;
	}
	if (fvalue == '') {		
		if (lang == 'it') 
			alert('Il campo "' + MSG[fdesc][lang] +'" non è valido.');
		else 
			alert('The field "' + MSG[fdesc][lang] +'" is not valid.')	;
			
		return false
	}		
 return true;	
}

function check_field_numeric(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	if (freq && fvalue == '') {
		required_field(fdesc);
		return false;
	}
	if ((fvalue != '') && !valid_number(fvalue)){
		if (lang == 'it')
			alert('Il campo "' + MSG[fdesc][lang] +'" non è valido.');
		else
			alert('The field "' + MSG[fdesc][lang] +'" is not valid.')	;
			
		return false;
	}	
	return true;
}

function check_field_date(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	if (freq && fvalue == '') { 
		required_field(fdesc);
		return false;
	}
	
	if ((fvalue != '') && !valid_date(fvalue)){
		if (lang == 'it')
			alert('Il campo "' + MSG[fdesc][lang] +'" non è valido')
		else
			alert('The field "' + MSG[fdesc][lang] +'" is not valid.')	
		return false;
	}	
	return true;
}

function check_field_email(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	if (freq && fvalue == '') {
		 required_field(fdesc);
		 return false
		}
	if ((fvalue != '') && !valid_email(fvalue)) {		
		if (lang == 'it')
			alert('Il campo "' + MSG[fdesc][lang] +'" non è valido.')
		else
			alert('The field "' + MSG[fdesc][lang] +'" is not valid.')	;
				
		return false
	}	
	return true;
}

function check_field_textarea(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	if (freq && fvalue == '') {
		required_field(fdesc);
		return false;
	}
	
	if (fvalue.length > 999){
		form.elements[fid].value = fvalue.value.substring(0,999);
		if (lang == 'it')
			alert('Testo del campo "' + MSG[fdesc][lang] +'" troppo lungo verrà troncato.');
		else
			alert('The field "' + MSG[fdesc][lang] +'" must be no more than 1000 characters long.');	
		
		return false;
	}
	
	return true;
}

function check_field_combobox(fid, fdesc, freq, fdefault) {
	var field = form.elements[fid];
	var findex = field.selectedIndex;
	if ((freq) && (findex < 0)) {
		required_field_select(fdesc);
		return false;
  } else if (findex >= 0) {
		var fvalue = field.options[findex].value;
		if (freq && fvalue == '') {
			required_field_select(fdesc);
			return false;
		}
	}
	return true;
}

function check_field_checkbox(fid, fdesc, freq, fdefault) {
	var field = form.elements[fid];	
	var fchecked	= false; 
	if (field.length) {
		for (j = 0; j < field.length; j++)
    	if (field[j].checked == true ) 
    	{    		  	
    				fchecked = true;
    				break;
    	}
		} else if (field.checked == true)
						fchecked = true;
			
	if (!fchecked && freq ){
		 required_field_check(fdesc)
		 return false;
		}
	
	return true;	
}	

function check_field_radiobutton(fid, fdesc, freq, fdefault) {
	var field = form.elements[fid];
	var fchecked	= false; 
	for (j = 0; j < field.length; j++)   	  	
    	if (field[j].checked == true) 
    	{
    		fchecked = true;
    		break;
    	}
    				
	if (!fchecked && freq ){
		 required_field_select(fdesc)
		 return false;
		}
	
	return true;	
}

function check_field_file(fid, fdesc, freq, fdefault)
{                 	
	var fvalue = form.elements[fid].value;

	if (freq && fvalue == '') {
		required_field(fdesc);
		return false;
	}		
	
	if (fvalue != '') {
		var validExt = new Array('txt','doc','pdf');
		var ext = fvalue.substring(fvalue.lastIndexOf(".")+1, fvalue.length).toLowerCase();
		for (var i = 0; i < validExt.length ; i++)
               if (ext == validExt[i])
                      return true; 
    if (lang == 'it')
			alert('Il campo "' + MSG[fdesc][lang] +'" non è valido, estensione .'+ ext +' non permessa, solo :(txt,doc,pdf)');
		else
			alert('The field "' + MSG[fdesc][lang] +'" is not valid, allowed :(txt,doc,pdf)');
				
		return false;
	}
	return true;                                                
}

function required_field(fdesc) {
	if (lang == 'it')
		alert('Il campo "' + MSG[fdesc][lang] + '" è obbligatorio.');
	else
		alert('Enter "' + MSG[fdesc][lang] + '"');	
}

function required_field_select(fdesc) {
	if (lang == 'it')
		alert('Selezionare un valore per il campo "' + MSG[fdesc][lang] + '".');		
	else
		alert('Enter "' + MSG[fdesc][lang] + '"');
}

function required_field_check(fdesc) {
	if (lang == 'it')
		alert('E\' necessario selezionare il campo "' + MSG[fdesc][lang] + '".');		
	else
		alert('Enter "' + MSG[fdesc][lang] + '"');
}

function required_field_choose(fdesc) {
	if (lang == 'it')
		alert('Selezionare uno o più valori per il campo "' + MSG[fdesc][lang] + '".');
	else
		alert('Enter "' + MSG[fdesc][lang] + '"');		
}

function valid_number(fvalue) {
	var re = /^[+-.\d]+$/
	return re.test(fvalue)
}

function valid_text(fvalue) {
	var re = /^[a-zA-Z ]+$/
	return re.test(fvalue)
}

function valid_email(fvalue) {
	var re = /^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$/
	return re.test(fvalue)		
}

function valid_date(fvalue) {
	var datePat = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
	
	if (!datePat.test(fvalue)) 
			return false		
	
	var matchArray = fvalue.match(datePat);	
	
	var day=parseInt(matchArray[1],10);
	var month=parseInt(matchArray[2],10);
	var year=parseInt(matchArray[3],10);		
		
	if (month < 1 || month > 12 || day < 1 || day > 31 )	
		return false
		
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		if (lang == 'it')
			alert('Il mese ' + month + ' ha solo 30 giorni');
		else
			alert('is not a valid date');
			
		return false	
	}
		
	if (month == 2) 
	{ 		
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {
			if (lang == 'it')
				alert('febbraio ' + year + ' non ha ' + day + ' giorni');
			else
				alert('is not a valid date');
						
			return false
			}
		}	
return true
}

function trim(valuex)
{
  reTrim=/\s+$|^\s+/g
  return valuex.replace(reTrim,'')
}

function makeGiorno(){
	var xarray = new Array();
	xarray[0] = new Option('','');
	for (i=1;i<10;i++) xarray[i] = new Option('0'+i,'0'+i);
	for (i=10;i<=31;i++) xarray[i] = new Option(i,i);
	return xarray;
}

function makeMese(){
	var xarray = new Array()
	var mesiarray = (form.elements['lang'] && form.elements['lang'].value == 'en') ? 
												new Array('','January','February','March','April','May','June','July','August','September','October','November','December'):
												new Array('','gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre');
									
	xarray[0] = new Option('','');
	for (i=1;i<10;i++) xarray[i] = new Option(mesiarray[i],'0'+i);
	for (i=10;i<=12;i++) xarray[i] = new Option(mesiarray[i],i);
	return xarray;
}

function makeAnno(){
	var xarray = new Array();
	xarray[0] = new Option('','');
	for (i=1;i<70;i++) xarray[i] = new Option(1936+i,1936+i);
	return xarray;
}

function populateCombo(xcombo,xarray){	
	for (m=xcombo.options.length-1;m>0;m--)
		xcombo.options[m]=null;
	var selectedarray=eval(xarray);
	for (i=0;i<selectedarray.length;i++)
			xcombo.options[i]=new Option(selectedarray[i].text,selectedarray[i].value);
	xcombo.options[0].selected=true;
}

function check_form()
{	
	if (form.elements['lang'] && form.elements['lang'].value == 'en')
			lang = 'en';
	
	if ( !check_field('nome', 'nome', 'testo', true, '') ) {	
		form.elements['nome'].focus();
		return false;
	}
	
	if ( !check_field('cognome', 'cognome', 'testo', true, '') ) {	
		form.elements['cognome'].focus();
		return false;
	}
	if ( !check_field('provincianascita', 'provnascita', 'combobox', true, '') ) {		
		form.elements['provincianascita'].focus();
		return false;
	}
	if ( !check_field('comunenascita', 'comunenascita', 'testo', true, '') ) {			
		form.elements['comunenascita'].focus();
		return false;
	}
				
	 // set datanascita
	field_giorno = form.elements['giorno'];
	field_mese = form.elements['mese'];
	field_anno = form.elements['anno'];
	 
	form.elements['datanascita'].value = (field_giorno[field_giorno.selectedIndex].value != '' &&
                field_mese[field_mese.selectedIndex].value != '' &&
		field_anno[field_anno.selectedIndex].value != '' ) ?
		( field_giorno[field_giorno.selectedIndex].value + '/' + 
		field_mese[field_mese.selectedIndex].value + '/' +
		field_anno[field_anno.selectedIndex].value ) :
		''; 
				
	if ( !check_field('datanascita', 'datanascita', 'data', true, '') ) {	
		form.elements['giorno'].focus();
		return false;
	}
	
	if ( !check_field('statocivile', 'statocivile', 'combobox', true, '') ) {	
		form.elements['statocivile'].focus();
		return false;
	}
	
	if ( !check_field('sesso', 'sesso', 'combobox', true, '') ) {	
		form.elements['sesso'].focus();
		return false;
	}
	
	if ( !check_field('nazionalita', 'nazionalita', 'testo', true, '') ) {	
		form.elements['nazionalita'].focus();
		return false;
	}
	
	if ( !check_field('regionedomicilio', 'regionedomicilio', 'combobox', true, '') ) {	
		form.elements['regionedomicilio'].focus();
		return false;
	}
	
	if ( !check_field('provinciadomicilio', 'provinciadomicilio', 'combobox', true, '') ) {	
		form.elements['provinciadomicilio'].focus();
		return false;
	}
	
	if ( !check_field('capdomicilio', 'capdomicilio', 'numerico', true, '') ) {	
		form.elements['capdomicilio'].focus();
		return false;
	}
	
	if ( !check_field('comunedomicilio', 'comunedomicilio', 'testo', true, '') ) {	
		form.elements['comunedomicilio'].focus();
		return false;
	}
	
	if ( !check_field('indirizzodomicilio', 'indirizzodomicilio', 'testo2', true, '') ) {	
		form.elements['indirizzodomicilio'].focus();
		return false;
	}
	
	if ( !check_field('email', 'email', 'email', true, '') ) {	
		form.elements['email'].focus();
		return false;
	}

	return true;	
}

function init(thisform) {		
		form = thisform;
		
		if (form.elements['lang'] && form.elements['lang'].value == 'en')
			lang = 'en';
		
		if (form.elements['giorno']) populateCombo(form.elements['giorno'],makeGiorno());
		if (form.elements['mese']) populateCombo(form.elements['mese'],makeMese());
		if (form.elements['anno']) populateCombo(form.elements['anno'],makeAnno());			
}


var abruzzo = new Array();
abruzzo[0]=new Array('AQ','Aquila');
abruzzo[1]=new Array('CH','Chieti');
abruzzo[2]=new Array('PE','Pescara');
abruzzo[3]=new Array('TE','Teramo');

var basilicata = new Array();
basilicata[0]=new Array('MT','Matera');
basilicata[1]=new Array('PZ','Potenza');

var calabria = new Array();
calabria[0]=new Array('CZ','Catanzaro');
calabria[1]=new Array('CS','Cosenza');
calabria[2]=new Array('KR','Crotone');
calabria[3]=new Array('RC','Reggio Calabria');
calabria[4]=new Array('VV','Vibo Valentia');

var campania = new Array();
campania[0]=new Array('AV','Avellino');
campania[1]=new Array('BN','Benevento');
campania[2]=new Array('CE','Caserta');
campania[3]=new Array('NA','Napoli');
campania[4]=new Array('SA','Salerno');

var emilia = new Array();
emilia[0]=new Array('BO','Bologna');
emilia[1]=new Array('FE','Ferrara');
emilia[2]=new Array('FC','Forli Cesena');
emilia[3]=new Array('MO','Modena');
emilia[4]=new Array('PR','Parma');
emilia[5]=new Array('PC','Piacenza');
emilia[6]=new Array('RA','Ravenna');
emilia[7]=new Array('RE','Reggio Emilia');
emilia[8]=new Array('RN','Rimini');

var friuli = new Array();
friuli[0]=new Array('GO','Gorizia');
friuli[1]=new Array('PN','Pordenone');
friuli[2]=new Array('TS','Trieste');
friuli[3]=new Array('UD','Udine');

var lazio = new Array();
lazio[0]=new Array('FR','Frosinone');
lazio[1]=new Array('LT','Latina');
lazio[2]=new Array('RI','Rieti');
lazio[3]=new Array('Roma','Roma');
lazio[4]=new Array('VT','Viterbo');

var liguria = new Array();
liguria[0]=new Array('GE','Genova');
liguria[1]=new Array('IM','Imperia');
liguria[2]=new Array('SP','La Spezia');
liguria[3]=new Array('SV','Savona');

var lombardia = new Array();
lombardia[0]=new Array('CO','Como');
lombardia[1]=new Array('CR','Cremona');
lombardia[2]=new Array('BG','Bergamo');
lombardia[3]=new Array('BS','Brescia');
lombardia[4]=new Array('MN','Mantova');
lombardia[5]=new Array('MI','Milano');
lombardia[6]=new Array('MB','Monza e Brianza');
lombardia[7]=new Array('LC','Lecco');
lombardia[8]=new Array('LO','Lodi');
lombardia[9]=new Array('PV','Pavia');
lombardia[10]=new Array('SO','Sondrio');
lombardia[11]=new Array('VA','Varese');

var marche = new Array();
marche[0]=new Array('AN','Ancona');
marche[1]=new Array('AP','Ascoli Piceno');
marche[2]=new Array('FM','Fermo');
marche[3]=new Array('MC','Macerata');
marche[4]=new Array('PU','Pesaro Urbino');

var molise = new Array();
molise[0]=new Array('CB','Campobasso');
molise[1]=new Array('IS','Isernia');

var piemonte = new Array();
piemonte[0]=new Array('AL','Alessandria');
piemonte[1]=new Array('AT','Asti');
piemonte[2]=new Array('BI','Biella');
piemonte[3]=new Array('CN','Cuneo');
piemonte[4]=new Array('NO','Novara');
piemonte[5]=new Array('TO','Torino');
piemonte[6]=new Array('VB','Verbania');
piemonte[7]=new Array('VC','Vercelli');

var puglia = new Array();
puglia[0]=new Array('BA','Bari');
puglia[1]=new Array('BT','Barletta Andria Trani');
puglia[2]=new Array('BR','Brindisi');
puglia[3]=new Array('FG','Foggia');
puglia[4]=new Array('LE','Lecce');
puglia[5]=new Array('TA','Taranto');

var sardegna = new Array();
sardegna[0]=new Array('CA','Cagliari');
sardegna[1]=new Array('CI','Carbonia Iglesias');
sardegna[2]=new Array('VS','Medio Campidano');
sardegna[3]=new Array('NU','Nuoro');
sardegna[4]=new Array('OG','Ogliastra');
sardegna[5]=new Array('OT','Olbia Tempio');
sardegna[6]=new Array('OR','Oristano');
sardegna[7]=new Array('SS','Sassari');

var sicilia = new Array();
sicilia[0]=new Array('AG','Agrigento');
sicilia[1]=new Array('CL','Caltanissetta');
sicilia[2]=new Array('CT','Catania');
sicilia[3]=new Array('EN','Enna');
sicilia[4]=new Array('ME','Messina');
sicilia[5]=new Array('PA','Palermo');
sicilia[6]=new Array('RG','Ragusa');
sicilia[7]=new Array('SR','Siracusa');
sicilia[8]=new Array('TP','Trapani');

var toscana = new Array();
toscana[0]=new Array('AR','Arezzo');
toscana[1]=new Array('FI','Firenze');
toscana[2]=new Array('GR','Grosseto');
toscana[3]=new Array('MS','Massa Carrara');
toscana[4]=new Array('LI','Livorno');
toscana[5]=new Array('LU','Lucca');
toscana[6]=new Array('PI','Pisa');
toscana[7]=new Array('PT','Pistoia');
toscana[8]=new Array('PO','Prato');
toscana[9]=new Array('SI','Siena');

var trentino = new Array();
trentino[0]=new Array('BZ','Bolzano');
trentino[1]=new Array('TN','Trento');

var umbria = new Array();
umbria[0]=new Array('PG','Perugia');
umbria[1]=new Array('TR','Terni');

var vaosta = new Array();
vaosta[0]=new Array('AO','Aosta');

var veneto = new Array();
veneto[0]=new Array('BL','Belluno');
veneto[1]=new Array('PD','Padova');
veneto[2]=new Array('RO','Rovigo');
veneto[3]=new Array('TV','Treviso');
veneto[4]=new Array('VE','Venezia');
veneto[5]=new Array('VR','Verona');
veneto[6]=new Array('VI','Vicenza');

var altro = new Array();
altro[0]=new Array('XX','Altro');

var other = new Array();
other[0]=new Array('XX','Other');

function provinceOption(obj, regArr){

	for (m=obj.options.length-1;m>0;m--){
		obj.options[m]=null;
	}
	
	obj.options[0]=new Option('','');
	for(var x=0;x<regArr.length;x++){
		obj.options[x+1]=new Option(regArr[x][1],regArr[x][0]);
	}
}

function doRegione(reg, obj){
	if(reg=='Abruzzo'){
		provinceOption(obj,abruzzo);
	}else if(reg=='Basisilicata'){
		provinceOption(obj,basilicata);
	}else if(reg=='Calabria'){
		provinceOption(obj,calabria);
	}else if(reg=='Campania'){
		provinceOption(obj,campania);
	}else if(reg=='Emilia-Romagna'){
		provinceOption(obj,emilia);
	}else if(reg=='Friuli-Venezia Giulia'){
		provinceOption(obj,friuli);
	}else if(reg=='Lazio'){
		provinceOption(obj,lazio);
	}else if(reg=='Liguria'){
		provinceOption(obj,liguria);
	}else if(reg=='Lombardia'){
		provinceOption(obj,lombardia);
	}else if(reg=='Marche'){
		provinceOption(obj,marche);
	}else if(reg=='Molise'){
		provinceOption(obj,molise);
	}else if(reg=='Piemonte'){
		provinceOption(obj,piemonte);
	}else if(reg=='Puglia'){
		provinceOption(obj,puglia);
	}else if(reg=='Sardegna'){
		provinceOption(obj,sardegna);
	}else if(reg=='Sicilia'){
		provinceOption(obj,sicilia);
	}else if(reg=='Toscana'){
		provinceOption(obj,toscana);
	}else if(reg=='Trentino-Alto Adige'){
		provinceOption(obj,trentino);
	}else if(reg=='Umbria'){
		provinceOption(obj,umbria);
	}else if(reg=='Valle d\'Aosta'){
		provinceOption(obj,vaosta);
	}else if(reg=='Veneto'){
		provinceOption(obj,veneto);
	}else if(reg=='XX'){
		if (lang == 'it') 
			provinceOption(obj,altro);
		else
			provinceOption(obj,other);
	}
}

