/**
 * @author Francesco, Cristiano
 */

function Register() {}

Register.prototype = new AjaxModule();
Register.prototype.constructor = Register;

Register.prototype.server_page = "../include_user/php/subscribe.php";
Register.prototype.check_page = "../include_user/php/check_username.php";

Register.prototype.fields = [];
Register.prototype.fields.push({id:"username", pattern:/^[\w\W\d\s_-]{3,}$/, message:"Username non valido\n(min. 3 caratteri)."});
Register.prototype.fields.push({id:"userpass", pattern:/^.{5,}$/, message:"Password non valida\n(min. 5 caratteri)."});
Register.prototype.fields.push({id:"email", pattern:/^([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})){1}$/, message:"Indirizzo e-mail non valido."});

Register.prototype.submit = function()
{
	this.check_username();
}

Register.prototype.check_username = function()
{
	this.clearParams();
	
	var username = document.getElementById("username");
	var email = document.getElementById("email");
	
	if (username.value.length < 3)
	{
		document.getElementById("username_response").style.backgroundColor = "red";
		document.getElementById("username_response").style.color = "white";
		document.getElementById("username_response").innerHTML = "Username non valido (min. 3 caratteri)";
		return;
	}
	if (email.value.length < 1)
	{
		document.getElementById("email_response").style.backgroundColor = "red";
		document.getElementById("email_response").style.color = "white";
		document.getElementById("email_response").innerHTML = "Indirizzo e-mail non valido";
		return;
	}	
	
	this.params["username"] = username.value;
	this.params["email"] = email.value;
	
	this.setLoadingTarget(document.getElementById("submitting"));
	this.setTarget(this.handle_response);
	this.makeRequest(Register.prototype.check_page);
}

Register.prototype.handle_response = function(risposta)
{
	document.getElementById("submitting").innerHTML = '';
	risposta = new String(risposta);
	var userbox = document.getElementById("username");
	var mailbox = document.getElementById("email");

	if (risposta == "NO_USER") 
	{
		userbox.style.backgroundColor = "red";
		userbox.style.color = "white";
		document.getElementById("username_response").style.backgroundColor = "red";
		document.getElementById("username_response").style.color = "white";
		document.getElementById("username_response").innerHTML = "Username non disponibile";
		document.getElementById("email_response").innerHTML = "";
		return;
	}
	else if (risposta == "NO_EMAIL") 
	{
		mailbox.style.backgroundColor = "red";
		mailbox.style.color = "white";
		document.getElementById("email_response").style.backgroundColor = "red";
		document.getElementById("email_response").style.color = "white";
		document.getElementById("email_response").innerHTML = "Indirizzo e-mail gi&agrave; presente";
		
		userbox.style.backgroundColor = "green";
		userbox.style.color = "white";
		document.getElementById("username_response").style.backgroundColor = "green";
		document.getElementById("username_response").style.color = "white";
		document.getElementById("username_response").innerHTML = "";
		return;
	}
	else if (risposta == "OK") 
	{
		mailbox.style.backgroundColor = "green";
		mailbox.style.color = "white";
		document.getElementById("email_response").innerHTML = "";
		
		userbox.style.backgroundColor = "green";
		userbox.style.color = "white";
		document.getElementById("username_response").style.backgroundColor = "green";
		document.getElementById("username_response").style.color = "white";
	}
	
	this.clearParams();
	
	for (var i = 0; i < Register.prototype.fields.length; i++)
	{
		var check = new String(document.getElementById(Register.prototype.fields[i].id).value);
		
		if (!check.match(Register.prototype.fields[i].pattern)) 
		{
			document.getElementById(Register.prototype.fields[i].id).style.backgroundColor = "red";
			document.getElementById(Register.prototype.fields[i].id).style.color = "white";
			document.getElementById(Register.prototype.fields[i].id + "_response").style.backgroundColor = "red";
			document.getElementById(Register.prototype.fields[i].id + "_response").style.color = "white"
			document.getElementById(Register.prototype.fields[i].id + "_response").innerHTML = Register.prototype.fields[i].message;
			return;
		}
		else 
		{
			document.getElementById(Register.prototype.fields[i].id).style.backgroundColor = "green";
			document.getElementById(Register.prototype.fields[i].id).style.color = "white";
			document.getElementById(Register.prototype.fields[i].id + "_response").innerHTML = "";
			this.params[Register.prototype.fields[i].id] = check;
		}
	}

	this.params["profilo"] = document.getElementById("profilo").value;
	//document.getElementById("submitting").innerHTML = '<img src="/immagini/loading2.gif" />';

	this.setLoadingTarget(document.getElementById("submitting"));
	this.setTarget(document.getElementById("php_response"));
	this.makeRequest(Register.prototype.server_page);
}

var regobj = new Register();