// --------------------------------
// Libraries
// --------------------------------

function byId(id)
{
	return document.getElementById(id);
}

function addEvent(element, eventType, lamdaFunction, useCapture)
{
	if (element.addEventListener)
	{
		element.addEventListener(eventType, lamdaFunction, useCapture);
	}
	else if (element.attachEvent)
	{
		element.attachEvent('on' + eventType, lamdaFunction);
	}
}

function stopEvent(event) {
	if (event.preventDefault) {
		event.preventDefault();
		event.stopPropagation();
	} else{
		event.returnValue = false;
		event.cancelBubble = true;
	}
}

function formColorField(idField, error)
{
		if ( error )
		{
			idField.style.border = '1px solid red';
			idField.style.background = 'no-repeat url(images/no-delete.gif) right #FFFFFF';
			return false;
		}
		else
		{
			idField.style.border = '1px solid green';
			idField.style.background = 'no-repeat url(images/yes-confim.gif) right #FFFFFF';
			return true;
		}
}

// --------------------------------
// Request
// --------------------------------

function dynamicRequest(q, arg)
{
	if ( !q ) { alert("Aucune requête saisie."); return; }
	if ( !arg ) { alert("Aucun argument saisi."); return; }
	
	if (window.XMLHttpRequest) var ajaxRequest = new XMLHttpRequest();
	else if (window.ActiveXObject) var ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
	else { alert("Pour une utilisation confortable du site, merci d'activer AJAX (XMLHttpRequest) de votre navigateur !"); return; }
	
	var date = new Date()
	ajaxRequest.open("GET", 'include/home.request.php?q='+q+'&arg='+arg+'&time='+date, true);
	ajaxRequest.send(null);
	return ajaxRequest;
}

// --------------------------------
// Dynamic register
// --------------------------------

function checkUsername()
{
	var username = byId('username');
	
	if ( !username.value || username.value.length > 30 ) 
	{
		formColorField(username, true);
	}
	
	else
	{
		var ajaxRequest = dynamicRequest('checkUsername', username.value);
		ajaxRequest.onreadystatechange = function()
		{
			if ( ajaxRequest.readyState == 4 )
			{
				if ( ajaxRequest.responseText == 0 ) formColorField(username, false);
				else { formColorField(username, true); alert("D\351sol\351, ce pseudo est d\351j\340 utilis\351."); }
			}
		}
	}
}

function checkEmail()
{
	var email = byId('email');
	var emailRegex = '^[a-zA-Z0-9\-_]+[a-zA-Z0-9\.\-_]*@[a-zA-Z0-9\-_]+\.[a-zA-Z\.\-_]{1,}[a-zA-Z\-_]+';
	
	if ( !email.value.match(emailRegex) || email.value.length > 50 ) 
	{
		formColorField(email, true);
	}
	
	else
	{
		var ajaxRequest = dynamicRequest('checkEmail', email.value);
		ajaxRequest.onreadystatechange = function()
		{
			if ( ajaxRequest.readyState == 4 )
			{
				if ( ajaxRequest.responseText == 0 ) formColorField(email, false);
				else { formColorField(email, true); alert("D\351sol\351, cette adresse est d\351j\340 utilis\351e."); }
			}
		}
	}
}

function sendFormRegister(e)
{
	stopEvent(e);

	var emailRegex		= '^[a-zA-Z0-9\-_]+[a-zA-Z0-9\.\-_]*@[a-zA-Z0-9\-_]+\.[a-zA-Z\.\-_]{1,}[a-zA-Z\-_]+';
	var siteRegex		= '^http://(.+)+';
	var form			= byId('formRegister');
	var username		= byId('username');
	var pass			= byId('pass');
	var pass2			= byId('pass2');
	var email			= byId('email');
	var site			= byId('site');
	var errors			= false;

	if ( !username.value || username.value.length > 30 ) 
	{ formColorField(username, true); errors = true; } else formColorField(username, false);
	
	if ( !email.value.match(emailRegex) || email.value.length > 50 ) 
	{ formColorField(email, true); errors = true; } else formColorField(email, false);
	
	if ( !site.value.match(siteRegex) || site.value.length < 11 || site.value.length > 100 ) 
	{ formColorField(site, true); errors = true; } else formColorField(site, false);
	
	if ( !pass.value || pass.value != pass2.value || pass.value.length > 30 )
	{
		formColorField(pass, true);
		formColorField(pass2, true);
		errors = true;
	}
	else
	{
		formColorField(pass, false);
		formColorField(pass2, false);
	}
	
	if (!errors)
	{
		form.submit();
	}
}