var msg_err = {};

// Funzione che effettua il login
function effettuaLogin(){
  	var usr = $('#login-usr').val();
  	var pwd = $('#login-pwd').val();
  	$('#login-usr').disable();
    $('#login-pwd').disable();
  	// Se user e password sono settati
  	if(usr != '' && pwd != ''){
  		// Mostra l'immagine di caricamento
  		$('#login-img').show();
  		// Ottiene i dati dell'account salvato in sessione
  		$.phpGet('account',{'foward':'foward'},function(data){
  			data_get = data;
  			// Verifica che la password e il nome utente siano corretti
			$.phpLogin(usr,pwd,function(data){
				// Nasconde l'immagine di caricamento
				$('#login-img').hide();
				data = jQuery.trim(data);
				// Login effettuato con successo
				if(data == 'login'){
					// Nasconde il login
					showHideLogin(function(){
						// Aggiorna la parte relativa al login come loggato
						aggiornaLogin(function(data){
							if(data_get['foward'] && data_get['foward']!=''){
								$('#main').loadIn(data_get['foward'],{},function(){
									$.phpSet('account',{'foward':''});
								});
							}else{
								$('.ajaxLoading').loadFromHistory('');
							}
							$('#login-usr').enable();
						    $('#login-pwd').enable();
						});
					});
				// Segnala l'errore di login fallito
				}else if(data == 'blacklist'){
					$('#login-usr').enable();
				    $('#login-pwd').enable();
					showHideLogin();
					alert(msg_err['cliente_blacklist']);
				}
				else{
					$('#login-button').hide();
					$('#login-err').html(msg_err['usr_pwd_errati']);
					$('#login-err').show();		
					setTimeout("$('#login-err').hide();$('#login-button').show();$('#login-usr').enable();$('#login-pwd').enable();",2500);
				}
			});
  		});	
  	// In caso contrario genera l'errore
  	}else{
  		$('#login-button').hide();
	    $('#login-err').html(msg_err['usr_pwd_errati']);
		$('#login-err').show();
		setTimeout("$('#login-err').hide();$('#login-button').show();$('#login-usr').enable();$('#login-pwd').enable();",2500);
  	}
}

// Funzione che effettua il logout
function effettuaLogout(){
	// Rimuove i dati dell'account dalla sessione ed effetua il logout
	$.phpLogout(function(){
		// Nasconde gradualmente la parte del login che al momento risulterà con il logout
		$('#login-info').fadeOut(1000,function(){
			// Modifica l'area login segnalando l'avvenuta uscita e carica la home
			aggiornaLogin(function(){
				$('#main').loadIn('home.php');
			});
		});
	});
}

// Funzione che mostra o nasconde la parte di pagina riguardante il login/logout/recupero password
function showHideLogin(fn){
	$('#login-usr').val('');
	$('#login-pwd').val('');
	if($('#login-recupera-password').css('display')=='none' && $('#login-mail-inviata').css('display')=='none'){
		// Si tratta di login/logout nasconde/visualizza la parte del sito
		var time = 1000;
		if(!$("#login-element").data('clicked')){
			$("#login-element").data('clicked',true);
			if($("#login-element-dash").css('display') == 'none'){
				$("#login-element-dash").toggle(500,function(){
					$("#login-element").slideToggle(1000,function(){
						$("#login-element").removeData('clicked');
						if(fn!=null) fn();
					});
				});
			}else{
				$("#login-element").slideToggle(1000,function(){
					$("#login-element-dash").toggle(500,function(){
						$("#login-element").removeData('clicked');
						if(fn!=null) fn(); 
					});
				});
			}
		}
	}else{
		// In questo caso nasconde i campi riguardanti il recupero password
		$('#login-recupera-password').hide();
		$('#login-mail-inviata').hide();
		$("#login-element").show();
	}
}

// Funzione che aggiorna la parte del sito relativa al login/logout
function aggiornaLogin(fn){
	$('#login-logout-div').hide();
	$('#login-logout-div').load('../sito/login.php', function(){
		$('#login-logout-div').show();
		if(fn!=null) fn();
	});
}

// Funzione che permette di inviare all'utente una nuova password
function inviaNuovaPassword(){
	$('#login-password-button').hide();
	var logml = $('#login-email');
	var email = logml.val();
	// Se l'email è settata procede all'invio
	if(email!=''){
		// Se l'email inserita è in un formato valido prosegue
		if(verificaMailValida(email)){
			// Effettua la chiamata al file che recupera la password
			$.post('emails/recupera_password.php',{'email_new_pwd':encrypt(email)},function(data){
				data = jQuery.trim(data);
				// Esamina la risposta e restituisce la segnalazione relativa
				switch(data){
					// Nel caso di utente non trovato nel db
					case 'ERRORE_UTENTE': 
						erroreNuovaPwd('not_found');
						break;
					// Nel caso di errore nell'invio della mail
					case 'ERRORE_INVIO': 
						erroreNuovaPwd('not_sent');
						break;
					// Nel caso di invio corretto della mail
					case 'OK': 
						$("#login-password-button").show();
						showEmailInviata();
						setTimeout('hideEmailInviata();',2500);
						break;
					// Genera un errore di default
					default:
						erroreNuovaPwd('unknonw');
				}
			});
		// Se l'email non è in un formato valida segnala l'errore
		}else{
			erroreNuovaPwd('format');
		}
	// Se l'email non è settata segnala l'errore
	}else{
		erroreNuovaPwd('empty');
	}
}

// Mostra la parte riguardante il recupero della password
function showRecuperoPassword(){
	$('#login-email').val('');
	$('#login-element').hide();
	$('#login-recupera-password').show();
}

// Nasconde la parte riguardante il recupero della password
function hideRecuperoPassword(){
	$('#login-element').show();
	$('#login-recupera-password').hide();
}

// Segnala che la mail è stata inviata con successo
function showEmailInviata(){
	$('#login-recupera-password').hide();
	$('#login-mail-inviata').show();
}

// Nasconde la segnalazione che la mail è stata inviata con successo
function hideEmailInviata(){
	$('#login-mail-inviata').hide();
	$('#login-element').show();
}

// Segnala l'errore nella generazione di una nuova password
function erroreNuovaPwd(err){
	switch(err){
		case 'empty':
			setMsgErrore(msg_err['richiede_valore']);
			break;
		case 'format':
			setMsgErrore(msg_err['formato_non_valido']);
			break;
		case 'not_found':
			setMsgErrore(msg_err['email_non_trovata']);
			break;
		case 'not_sent':
			setMsgErrore(msg_err['email_non_inviata']);
			break;
		default:
			setMsgErrore('Unknown error');
			break;
	}
	toggleErroreLayer();
	setTimeout('toggleErroreLayer();$("#login-password-button").show();',2500);
}

// Setta il messaggio di errore
function setMsgErrore(msg){
	$('#login-newpwd-error').html(msg);
}

// Nasconde o visualizza l'errore
function toggleErroreLayer(){
	$('#login-newpwd-error').toggle();
}

// Funzione che verifica la validità dell'email
function verificaMailValida(email){
	var email_reg_exp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
	return email_reg_exp.test(email);	
}

// Funzione che permette di effettuare la registrazione
function effettuaRegistrazione(){
	$.phpSet('account',{foward:$.getHash()},function(){
		$('#menu').resetMenu();
		$('#main').loadIn('registrazione.php');
		showHideLogin();
	});
}