//Elimina gli spazi all'inizio ed alla fine di una stringa
function trim(stringa){
	while (stringa.substring(0,1) == ' ')
		stringa = stringa.substring(1, stringa.length);
	
	while (stringa.substring(stringa.length-1, stringa.length) == ' ')
		stringa = stringa.substring(0,stringa.length-1);
	
	return stringa;
}

//Esegue il trim del value di un tag input reinserendo come nuovo value la stringa risultante dal trim
function trimInput(input_id){
	$(input_id).set('value', trim($(input_id).value));
}

//Imposta il contenuto html della sezione degli errori con il corretto stile
function visualizzaErroreLO(testo){
	lo.set('html',testo);
	lo.setStyle('border-top','2px solid darkRed');
}

//Controlla la validità formale dell'username
function usernameValido(){
	trimInput('f1_username');
	
	var username=$('f1_username').value;
	var caratteri_accettati=new RegExp("[^a-zA-Z0-9\._]+");
	//Accettati caratteri alfanumerici e il punto, la regex individua tutti i caratteri NON (^) a-z, A-Z, 0-9 o il '.' con una o più occorrenze (il +)
	var inizio_punto=new RegExp("^[\.]");//Non accettato l'inizo con il '.'
	
	if(username.length<6){
		visualizzaErroreLO('Username troppo corto');
		return false;
	}else if(username.length>20){
		visualizzaErroreLO('Username troppo lungo');
		return false;
	}else{
		if(caratteri_accettati.test(username)){
			visualizzaErroreLO('Username contenente caratteri non ammessi');
			return false;
		}else if (inizio_punto.test(username)){
			visualizzaErroreLO('Username con "." iniziale non ammesso');
			return false;
		}
	}
	
	return true;
}

//Controlla la validità formale della passowrd
function passwordValida(){
	var primary_psw=$('f1_password').value;
	
	var caratteri_non_accettati=new RegExp("[^a-zA-Z0-9]");//La regex trova ogni corrispondenza con caratteri non alfanumerici
	
	if(primary_psw.length<8){
		visualizzaErroreLO('Password troppo corta');
		return false
	}else if(primary_psw.length>15){
		visualizzaErroreLO('Password troppo lunga');
		return false
	}if(caratteri_non_accettati.test(primary_psw)){
		visualizzaErroreLO('Password contenente caratteri non ammessi');
		return false
	}
	
	return true;
}

//Calcola l'hash della password inserita
function calcoloLoginHashPassword(){
	return hex_md5($('f1_password').value+'UserPassword');
}

//Calcola l'hash per la successiva verifica della correttenzza della richiesta
function calcoloLoginHash(){
	return hex_md5($('f1_username').value+calcoloLoginHashPassword()+'La F1 del Modellismo');
}

function loginRequestComplete(tree, elements, html, js){		
		if(html=='0')
			visualizzaErroreLO('Username o password errati');
		else if(html=='2'){//Corretto login amministratore
			location.href='./amministrazione/';
		}else if(html=='1'){//Corretto login utente
			location.href='./';
		}else
			visualizzaErroreLO('Errore invio dati'+html);
		
		lo_opacity.start(1);
		lo_slider.slideIn();
}

//Esegue le procedure di login
function logga(){
	$('accedi_pulsante').disabled=true;
	
	if(usernameValido()&&passwordValida()){
		var f1_username=$('f1_username').value, f1_hash_password=calcoloLoginHashPassword(), login_hash=calcoloLoginHash();
		
		lo.setStyle('border-top','2px solid limeGreen');
		
		var contenuto_pagina=$('contenuto_pagina');
		
		var req=new Request.HTML({
			url:'./php/login_checker.php',		
			evalScripts:true,					// gli script contenuti nel responso verranno azionati
			onRequest:function(){
				lo.set('html','Login in corso...');
			},
			onComplete:function(tree, elements, html, js){
				loginRequestComplete(tree, elements, html, js);
			},
			onFailure:function(){
				visualizzaErroreLO('Errore di caricamento');
				lo_slider.slideIn();
			}
		});
		
		req.post({'f1_username':f1_username, 'f1_hash_password':f1_hash_password, 'login_hash':login_hash});;
	}else{
		lo_opacity.start(1);
		lo_slider.slideIn();
	}
	
	$('accedi_pulsante').disabled=false;
	
	return false;
}

var lo=$('login_errors');
var lo_opacity=new Fx.Tween(lo,{property: 'opacity'});
var lo_slider=new Fx.Slide(lo);

lo_opacity.set(0);
lo_slider.hide();
