var usernameok = false;
var passwordok = false;
var emailok = false;

function getUsernameAvailability() {
	
	try{
		var callback =
			{
				success: function(o)
				{	
					var availablility = YAHOO.lang.JSON.parse(o.responseText); 
					if( !availablility.available )
					{
						setIcon(document.getElementById("username"), false);
						usernameok = false;
					}
					else
					{
						setIcon(document.getElementById("username"), true);
						usernameok = true;
					}
				}
			};
		
		sUrl = baseUrl + "/account/checkuser";
		if( document.getElementById("username").value.length >= 4 )
		{
			postData = "username=" + document.getElementById("username").value;
			var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData); 
		}
		else
		{
			setIcon(document.getElementById("username"), false);
		}
	} catch(e) { usernameok = true; };
	
}

function checkPasswordConfirm() {

	try{
		if( typeof(document.getElementById("password_confirm").value) != "undefined" )
		{
			if( document.getElementById("password_confirm").value != "" )
				if( document.getElementById("password_confirm").value == document.getElementById("password").value )
				{
					setIcon(document.getElementById("password_confirm"), true);
					passwordok = true;
				}
				else
				{
					setIcon(document.getElementById("password_confirm"), false);
					passwordok = false;
				}
		}
	} catch(e) { passwordok = true; };
}

function checkEmail() {
	
	try{
		if( typeof(document.getElementById("email").value) != "undefined" )
		{
			var email = document.getElementById("email");
			var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			if (!filter.test(email.value)) {
				setIcon(document.getElementById("email"), false);
				emailok = false;
			}
			else
			{
				setIcon(document.getElementById("email"), true);
				emailok = true;
			}
		}
	} catch(e) { emailok = true; };
}

function setIcon(element, status) {
	
	imgId = element.id.toString() + "_icon";
	
	if( !document.getElementById(imgId) )
	{
		img = document.createElement("img");
		img.id = imgId;
		img.alt = status;
		img.src = "http://www.zezena.com/images/ko.gif";
		insertAfter( element, img );
	}
	else
	{
		img = document.getElementById(imgId);
	}

	if( !status )
	{
		img.src = "http://www.zezena.com/images/ko.gif";
	}
	else
	{
		img.src = "http://www.zezena.com/images/ok.gif";
	}
	
}

function insertAfter( referenceNode, newNode )
{
    referenceNode.parentNode.insertBefore( newNode, referenceNode.nextSibling );
}

function submitForm()
{
	getUsernameAvailability();
	checkPasswordConfirm();
	checkEmail();
	/*
	 * todo : something to improve here, need 2 click when data not yet validated
	 */
	if( usernameok && passwordok && emailok )
		return true;
	else
		return false;

}


var init = function() {
	
	try{
		document.getElementById("username").onkeypress  = function() {  setTimeout("getUsernameAvailability()",100); };
	} catch (e) {};
	
	try{
		document.getElementById("password_confirm").onkeypress  = function() {  setTimeout("checkPasswordConfirm()",100); };
	} catch (e) {};
	
	try{
		document.getElementById("password").onkeypress  = function() {  setTimeout("checkPasswordConfirm()",100); };
	} catch (e) {};
	
	try{
		document.getElementById("email").onblur  = checkEmail;
	} catch (e) {};
	
	document.getElementById("user").onsubmit = submitForm;
}

YAHOO.util.Event.onDOMReady(init);
