//Utils.DOM.addLoadEvent(init);

NS.createNS("Site");
		
//Site.loginDialog = null;
//Site.signupDialog = null;
//Site.picDialog = null;
		
//var picDialog = null; var loginDialog = null; var signupDialog = null;
						
//function init() { picDialog = new UI.Dialog(document.getElementById('picdialog')); loginDialog = new UI.BasicDialog(document.getElementById('loginDialog')); signupDialog = new UI.BasicDialog(document.getElementById('signupDialog')); }

Site._doLogin = function(obj)
{
	/*var messageObj = Utils.DOM.getElementsByClassName(Site.loginDialog.obj,"message")[0];
	messageObj.style.display = ""; messageObj.innerHTML = '';
	Utils.DOM.disableForm(obj);*/

	/*if (!Site.LoginManager)
	{
		NS.importFile("LoginManager.js",new Callback(null,function(file,fetchRequired){Site.doLogin(obj)}));
		return false;
	}*/
		
	var lm = new Site.LoginManager();
	lm.login(obj.username.value,obj.password.value,new Callback(Site,Site.onLoginXML));			
	return false;
}

Site.onLoginXML = function(res)
{
	if (res.code == 0) { location.reload(true); }
	else
	{
		var messageObj = Utils.DOM.getElementsByClassName(Site.loginDialog.obj,"message")[0];
		messageObj.style.display = "block"; 
		//messageObj.innerHTML = 'Error, try again!';
		messageObj.innerHTML = res.text;
		Utils.DOM.enableForm(g('loginForm'));
	}
}
		
Site._doSignup = function(obj)
{
	var sm = new Site.SignupManager(); 
	sm.signup(obj.username.value,obj.email.value,obj.password.value,new Callback(Site,Site.onSignupXML));	return false; 
}

Site.onSignupXML = function(res)
{
	var eType = null;
	var eText = null;
	var obj = null;
			
	if (res.errors.length == 0)
	{
		urchinTracker('/signup.php?success=1');
		window.location = '/editprofile.php?fromjoin=1';
		return;
	}
			
	Utils.DOM.enableForm(g("signupForm"));
			
	for(var i = 0; i < Site.SignupManager.signupErrorTypes.length; i++)
	{
		obj = document.getElementById(Site.SignupManager.signupErrorTypes[i]+"-message");
		if (obj)
		{
			obj.style.display = "none";
			//obj.style.visibility = "hidden";	
		}
	}
		
	urchinTracker('/signup.php?success=0');
 	
	for(var i = 0; i < res.errors.length; i++)
	{
		eType = res.errors[i].type;
		eText = res.errors[i].text;
		obj = document.getElementById(eType+"-message");
		obj.innerHTML = eText;
		obj.style.display = "inline";
		//obj.style.visibility = "visible";
	}
}

Site.SignupResult = function() { this.success = null; this.errors = new Array(); }

Site.SignupManager = function()
{
	var callback = null;
}

Site.SignupManager.signupErrorTypes = ['username','email','password'];

Site.SignupManager.prototype =
{
	signup:function(username,email,password,callback)
	{
		this.callback = callback;
		username = encodeURIComponent(username);
		email = encodeURIComponent(email);
		password = encodeURIComponent(password);
		
		getXml("GET","join.php?username="+username+"&email="+email+"&password="+password+"&xml=1&join=1",null,true,new Callback(this,this.onXML));
	},
	
	onXML:function(xmlObj)
	{
		if (xmlObj.readyState == XML_COMPLETE)
		{
			var content = null;

			if (xmlObj.responseXML != null)
				content = xmlObj.responseXML.documentElement;

			var res = new Site.SignupResult();
			
			if (content)
			{
				var errorNodes = content.getElementsByTagName("error");

				for(var i = 0; i < errorNodes.length; i++)
					res.errors.push({type:[errorNodes[i].getAttribute("type")],text:errorNodes[i].childNodes[0].nodeValue});
			}
			else
			{
				res.success = false;
			}
			
			this.callback.call(res);
		}
	}
}

Site.LoginManager = function() 
{
	var callback = null;
}

Site.LoginManager.prototype = 
{
	login:function(username,password,callback)
	{
		this.callback = callback;
		getXml("GET","login.php?username="+username+"&password="+password+"&xml=1",null,true,new Callback(this,this.onXML));
	},
	

    onXML:function(xmlobj)
    {  
            if (xmlobj.readyState == XML_COMPLETE)
            {
					//alert(this.callback);
                    var content = xmlobj.responseXML.documentElement;

    				var res = {"code":0,"text":""};
					var resCode = 0;
    				if (content)
					{
    					resCode = content.getAttribute("res");
						var errorNode = content.getElementsByTagName("error")[0];
						if (errorNode)
							res.text = errorNode.firstChild.nodeValue;
    				}
					
					res.code = resCode;
					
    				this.callback.call(res);
			}
    }
}
