function init(){
	hide_all_forms();
	load_data_filters();
	load_data();
	show('statusbar');
	show('loginform');
	reset_fields();
	setHTML('statusbar', 'Login non effettuato.');
}

function ricarica_dati(){
	load_data();
}

function load_data_filters(){
	// primo filtro
	ajaxGetRand("carica_dati_filtro.php?field=professione", load_data_filter1_handler);
	function load_data_filter1_handler(content){
		eval(content);
		var s = '';
		s+='<select onchange="ricarica_dati()" id="combo_professione"><option value="Qualsiasi...">Qualsiasi...</option>';
		for(var i=0;i<dati.length;i++){
			s+='<option value="'+ dati[i][0] +'">'+ dati[i][0] +'</option>';
		}
		s+='</select>';
		setHTML('filtro_professione', s);
	}
	
	// secondo filtro
	ajaxGetRand("carica_dati_filtro.php?field=citta", load_data_filter2_handler);
	function load_data_filter2_handler(content){
		eval(content);
		var s = '';
		s+='<select onchange="ricarica_dati()" id="combo_citta"><option value="Qualsiasi...">Qualsiasi...</option>';
		for(var i=0;i<dati.length;i++){
			s+='<option value="'+ dati[i][0] +'">'+ dati[i][0] +'</option>';
		}
		s+='</select>';
		setHTML('filtro_citta', s);
	}
	
	// terzo filtro
	ajaxGetRand("carica_dati_filtro.php?field=stato", load_data_filter3_handler);
	function load_data_filter3_handler(content){
		eval(content);
		var s = '';
		s+='<select onchange="ricarica_dati()" id="combo_stato"><option value="Qualsiasi...">Qualsiasi...</option>';
		for(var i=0;i<dati.length;i++){
			s+='<option value="'+ dati[i][0] +'">'+ dati[i][0] +'</option>';
		}
		s+='</select>';
		setHTML('filtro_stato', s);
	}
	
	// quarto filtro
	ajaxGetRand("carica_dati_filtro.php?field=contatto", load_data_filter4_handler);
	function load_data_filter4_handler(content){
		eval(content);
		var s = '';
		s+='<select onchange="ricarica_dati()" id="combo_contatto"><option value="Qualsiasi...">Qualsiasi...</option>';
		for(var i=0;i<dati.length;i++){
			s+='<option value="'+ dati[i][0] +'">'+ dati[i][0] +'</option>';
		}
		s+='</select>';
		setHTML('filtro_contatto', s);
	}
}

function visualizza_scheda(i){
	setHTML('currentrecord', i-1);
	setHTML('currentrecordPlus1', i);
	refresh_mask();
	show('mascheradb');
	hide('elencodb');
}

function confermaElimina(idNota){
	if(confirm('Sei sicuro di voler eliminare la nota?')){
		ajaxGetRand("elimina_nota.php?id=" + idNota, elimina_nota_handler);
	}
	
	function elimina_nota_handler(content){
		alert(content);
		refresh_mask();
	}
}

function render_comunicazioni(){
	// recupera le comunicazioni
	ajaxGetRand("recupera_comunicazioni.php", recupera_comunicazioni_handler);
	function recupera_comunicazioni_handler(content){
		var s = '';
		if(content == -1){
			s = 'Nessuna nota inserita.';
		} else {
			eval(content);
			var n_comunicazioni = dati.length;

			for(var i=0;i<n_comunicazioni;i++){
				s+='<div class="comunicazione">';
				s+='<div class="comunicazionehead"><b>#'+dati[i][0]+'</b>&nbsp;<small>-</small>&nbsp;'+dati[i][1]+'</div>';
				s+='<div class="comunicazionebody">'+dati[i][2]+'</div>';
				s+='<div class="comunicazioneallegato"><a href="../controlpanel/uploads/'+dati[i][3]+'">'+dati[i][3]+'</a></div>';
				s+='</div>';
			}

		}
		setHTML('comunicazioni', s);
	}	
}

function render_contatti_elenco(){
	// Imposta il contenuto di "elencodb" sulla base delle impostazioni dei filtri
	eval(getHTML('dati'));
	
	if(dati[0].length>0){
		var s = '';
		
		s += '<center><br><br><table>';
		s += '<td class="tdscuro">ID</td><td class="tdscuro">Nome</td><td class="tdscuro">Azienda</td><td class="tdscuro">Professione</td><td class="tdscuro">Cittą</td><td class="tdscuro">Stato</td><td class="tdscuro">Contatto</td><td class="tdscuro">Azioni</td>';
		for(var i=0;i<dati.length;i++){
			var tdclass = 'bggrigio';
			if( (i%2)==0){
				tdclass = 'bgbianco';
			}
			s += '<tr>';
			s += '<td class="tdscuro">' + (i+1) + '</td><td class="'+tdclass+'">' + dati[i][1] + '</td><td class="'+tdclass+'">' + dati[i][2] + '</td>' + '</td><td class="'+tdclass+'">' + dati[i][3] + '</td>' + '</td><td class="'+tdclass+'">' + dati[i][4] + '</td>' + '</td><td class="'+tdclass+'">' + dati[i][5] + '</td><td class="'+tdclass+'">' + dati[i][9] + '</td>';
			s += '<td><input type="button" value="scheda" onclick="visualizza_scheda('+ (i+1) +')"></td>';
			s += '</tr>';
		}
		s += '</table></center>';
	} else {
		s = '<center><br>Nessun risultato trovato.</center>';
	}
	
	setHTML('elencodb', s);
}

function visualizza_contatti_elenco(){
	hide('mascheradb');
	show('elencodb');
	hide('comunicazioni');
	
	show('filtri');
	render_contatti_elenco();
}

function visualizza_contatti_scheda(){
	show('mascheradb');
	hide('elencodb');
	hide('comunicazioni');
	
	show('filtri');
}

function visualizza_area_comunicazioni(){
	hide('mascheradb');
	hide('elencodb');
	show('comunicazioni');
	
	hide('filtri');
	render_comunicazioni();
}

function reset_fields(){
	document.getElementById('f_username').value = '';
	document.getElementById('f_password').value = '';
	document.getElementById('f_nota').value = '';
}

function nuova_nota(){
	var dati = buildDataString(
		Array(
			Array('campo', 'f_nota'),
			Array('div', 'f_userID', 'g_userID'),
			Array('my', 'f_data', dataMYSQL()),
			Array('div', 'f_IDcontatto', 'IDcontatto')
		)
	);
	ajaxGetRand("inserisci_nota.php?"+dati, nuova_nota_handler);
	function nuova_nota_handler(content){
		hide('notaform');
		refresh_mask();
		reset_fields();
	}
}

function login(){
	var dati = buildDataString(
		Array(
			Array('campo', 'f_username'),
			Array('campo', 'f_password')
		)
	);
	ajaxGetRand("login.php?"+dati, login_handler);
	function login_handler(content){
		if(content==-1){
			set_statusbar('Errore di login.');
		} else {
			eval(content);
			var g_userID = user[0][0];
			var g_username = user[0][1];
			setHTML('g_userID', g_userID);
			setHTML('g_username', g_username);
			set_statusbar('Benvenuto, ' + g_username + '! <input type="button" value="Logout" onclick="logout()">');
			hide('loginform');
			show('mainmenu');
			//show('mascheradb');
			refresh_mask();
			reset_fields();
		}
	}
}

function load_data(){
	setHTML('currentrecord', 0);
	setHTML('currentrecordPlus1', 1);
	
	// CARICA TUTTI I DATI IN UN ARRAY
	var dati = buildDataString(
		Array(
			Array('campo', 'combo_professione'),
			Array('campo', 'combo_citta'),
			Array('campo', 'combo_stato'),
			Array('campo', 'combo_contatto')
		)
	);
	//alert(dati);
	ajaxGetRand("load_data.php?"+dati, load_data_handler);
	function load_data_handler(content){
		setHTML("dati", content);
		refresh_mask();
		render_contatti_elenco();
	}
}

function visualizza_record(i){
	// valuta l'array dati
	eval(getHTML('dati'));
	
	if( (dati[0].length>0) ){
		show('contenutomaschera');
		hide('mascheravuota');
		
		setHTML('nrecords', dati.length);
		setHTML('IDcontatto', dati[i][0]);
		
		setHTML('mask_nome', dati[i][1]);
		setHTML('mask_azienda', dati[i][2]);
		setHTML('mask_professione', dati[i][3]);
		setHTML('mask_citta', dati[i][4]);
		setHTML('mask_stato', dati[i][5]);
		setHTML('mask_email', dati[i][6]);
		setHTML('mask_tel', dati[i][7]);
		setHTML('mask_fax', dati[i][8]);
		setHTML('mask_contatto', dati[i][9]);
		
		// recupera le note associate al record corrente
		
		setHTML('debug', dati[i][0]);
		ajaxGetRand("recupera_note.php?id=" + dati[i][0], visualizza_note_handler);

	} else {
		hide('contenutomaschera');
		show('mascheravuota');		
	}
	
	function visualizza_note_handler(content){
		var s = '';
		if(content == -1){
			s = 'Nessuna nota inserita.';
		} else {
			eval(content);

			var n_note = dati.length;
					
			for(var i=0;i<n_note;i++){
				var delete_button = '';
				//alert(getHTML('g_userID'));
				if(getHTML('g_userID') == dati[i][3]){
					delete_button = '<input type="button" value="elimina" onclick="confermaElimina('+ dati[i][4] +')">';
				}
				s+='<div class="nota">';
				s+='<div class="notahead"><b>'+dati[i][2]+'</b>&nbsp;<small>-</small>&nbsp;'+dati[i][1]+' - '+delete_button+'</div>';
				s+='<div class="notabody">'+dati[i][0]+'</div>';
				s+='</div>';
			}

		}
		setHTML('note', s);
	}
}

function avanti(){
	hide('notaform');
	var nr = parseInt(getHTML('currentrecord'))+1;
	if(nr>parseInt(getHTML('nrecords'))-1){
		nr = nr-1;
	}
	setHTML('currentrecord', nr);
	setHTML('currentrecordPlus1', nr+1);
	refresh_mask();
}

function indietro(){
	hide('notaform');
	var nr = parseInt(getHTML('currentrecord'))-1;
	if(nr<0){
		nr = 0;
	}
	setHTML('currentrecord', nr);
	setHTML('currentrecordPlus1', nr+1);
	refresh_mask();
}

function refresh_mask(){
	visualizza_record(getHTML('currentrecord'));
}

function logout(){
	//alert(getHTML('dati'));
	init();
}

function changeColumnColor(idElement) {
	document.getElementById(idElement).style.background = '#ddeeff';
}

function restoreColumnColor(idElement) {
	document.getElementById(idElement).style.background = '#eeeeee';
}

// FUNZIONI DI UTILITA'

	function set_statusbar(s){
		var e = document.getElementById("statusbar");
		e.innerHTML = s;
	}
	
	function hide(elementname){
		var e = document.getElementById(elementname);
		e.style.visibility = 'hidden';
		e.style.display = 'none';
	}
	
	function show(elementname){
		var e = document.getElementById(elementname);
		e.style.visibility = 'visible';
		e.style.display = 'block';
	}
	
	function getHTML(elementname){
		var e = document.getElementById(elementname);
		return e.innerHTML;
	}
	
	function setHTML(elementname, value){
		var e = document.getElementById(elementname);
		e.innerHTML = value;
	}
	
	function setfocus(elementname){
		var e = document.getElementById(elementname);
		e.focus();
	}
	function hide_all_forms() {
		hide('loginform');
		hide('statusbar');
		hide('mainmenu');
		hide('mascheradb');
		hide('notaform');
		hide('filtri');
		hide('comunicazioni');
		hide('elencodb');
		hide('mascheravuota');
	}
	
	function toggle(elementname){
	    var e = document.getElementById(elementname);
	    if (e.style.visibility == 'hidden') {
	        e.style.visibility = 'visible';
	        e.style.display = 'block';
			setfocus('f_nota');
	    } else {
	        e.style.visibility = 'hidden';
	        e.style.display = 'none';
	    }
	}

	function captureEnter(e, f){
		if(window.event){ // IE
			keynum = e.keyCode;
		}
		else if(e.which){ // Netscape/Firefox/Opera
			keynum = e.which;
		}
		if(keynum == 13){
			eval(f);
		}
	}
	
	// ritorna la data odierna in formato DATETIME MYSQL
	function dataMYSQL(){
		var today = new Date();

		// il metodo getYear() ritornava 109; si usa invece getFullYear (millennium bug)
		return today.getFullYear() + '-' + (today.getMonth()+1) + '-' + today.getDate();
	}
	
	function buildDataString(ds){
		/* esempio
			var dati = buildDataString(
				Array(
					Array('campo', 'f_nota'),
					Array('div', 'f_userID', 'g_userid'),
					Array('my', 'f_data', dataMYSQL())
				)
			);
		*/
		s = '';
		for(var i=0; i<ds.length; i++){
			if(i>0){
				s += '&';
			}
			if(ds[i][0]=='campo'){
				s += ds[i][1] + '=' + encodeURIComponent(document.getElementById(ds[i][1]).value);
			}else if(ds[i][0]=='div'){
				s += ds[i][1] + '=' + getHTML(ds[i][2]);
			}else if(ds[i][0]=='my'){
				s += ds[i][1] + '=' + ds[i][2];
			}
		}
		return s;
	}
