NS.createNS("Site");

Site.RegisterValidator = new function()
{	
	var aliasRow = g("field-alias");
	var blurred = false;

	//console.debug();

	Utils.LoadManager.addLoadCallback(new Callback(null,function(){Site.RegisterValidator.init()}));

	this.init = function()
	{
		Utils.EventManager.addListener(g("validateButton"),"click",new Callback(this,this.validateAlias),true);
		Utils.EventManager.addListener(g("alias"),"blur",new Callback(this,this.validateAlias),true);		
	}

	this.onXMLResponse = function(xmlHttp)
	{
		if (xmlHttp.readyState == XML_COMPLETE)
		{
			remClass(aliasRow,"checking");
		
			//s(g("isValid"),xmlHttp.responseText);
			if (xmlHttp.responseText == "1")
			{
				//g("aliasIndicator").className = "valid"
				remClass(aliasRow,"error");
			
				remClass(aliasRow,"invalid");
				addClass(aliasRow,"valid");
			
				this.removeErrorDiv();
			}
			else
			{
				//g("aliasIndicator").className = "invalid";	
				addClass(aliasRow,"error");

				var errorDiv = g("field-alias-error");
				if (!errorDiv)
 					errorDiv = aliasRow.appendChild(createEl("DIV","field-alias-error"));

				addClass(errorDiv,"error-desc");
				s(errorDiv,Errors.ALIAS_EXISTS);
			
				remClass(aliasRow,"valid");
				addClass(aliasRow,"invalid")
			}
		}
	}

	this.removeErrorDiv = function()
	{
		var errorDiv = g("field-alias-error");
		if (errorDiv)
			errorDiv.parentNode.removeChild(errorDiv);
	}
	
	this.validateAlias = function(e)
	{
		var wasBlurred = blurred;

		if (e.getType() == "blur")
			blurred = true;
		else
			blurred = false;
		
		if (e.getType() == "click" && wasBlurred)
		{
			//console.log("exiting");
			return;
		}			
	
		//var alias = e.getTarget().value;
	
		var alias = g("alias").value;
	
		remClass(aliasRow,"valid");
		remClass(aliasRow,"invalid");
		remClass(aliasRow,"error");
		this.removeErrorDiv();
		
		if (alias == "")
			return;

		addClass(aliasRow,"checking");
	
		var url = "/smart_search.php?q="+alias;
		getXml("POST",url,null,true,new Callback(this,this.onXMLResponse));
	}
}
