sorry.registration = {
	// TODO: failure handlers
	
	login: function(o) {
		try {
			var response = YAHOO.lang.JSON.parse(o.responseText).response;			
			window.location.reload();
		}
		catch(e){
			// TODO
		}
	},
	
	logout: function(o) {
		try {
			var response = YAHOO.lang.JSON.parse(o.responseText).response;
			window.location.href = 'http://' + sorry.host + '/';
		}
		catch(e){
			// TODO
		}
	},
	
	checkToken: function(o) {
		try {
			var response = YAHOO.lang.JSON.parse(o.responseText);
			if(!response.response.result)
			{
				document.getElementById('TokenIndicator').style.visibility = 'visible';
			}
			else
			{
				hideRegisterForm('check');
				document.getElementById('TokenIndicator').style.visibility = 'hidden';
				window.location.href = window.location.href;
			}
		}
		catch(e){
			// TODO
		}
	},
	
	registration: function(o) {
		try {
			var response = YAHOO.lang.JSON.parse(o.responseText);
			if(response.response.result) showCheckForm();
		}
		catch(e){
			// TODO
		}
	},
	
	resetPassword: function(o) {
		try {
			var response = YAHOO.lang.JSON.parse(o.responseText);
			//hideRegisterForm('remember');
			//ifd(response.response.result);
		}
		catch(e){
			// TODO
		}
	},

	confidence: function(o) {
		try {
			var response = YAHOO.lang.JSON.parse(o.responseText);
		}
		catch(e){
			// TODO
		}
	},
	
	checkLogin: function(o) {
		try {
			var response = YAHOO.lang.JSON.parse(o.responseText);
			document.getElementById('LoginIndicator').style.visibility = 'visible';
			document.getElementById('LoginIndicator').className = response.response.result ? 'i7' : 'i15';
			document.getElementById('LoginIndicator').nextSibling.style.visibility = response.response.result ? 'hidden' : 'visible';
		}
		catch(e){
			// TODO
		}
	},
	
	checkEmail: function(o) {
		try {
			var response = YAHOO.lang.JSON.parse(o.responseText);
			document.getElementById('EmailIndicator').style.visibility = 'visible';
			document.getElementById('EmailIndicator').className = response.response.result ? 'i7' : 'i15';
			document.getElementById('EmailIndicator').nextSibling.style.visibility = response.response.result ? 'hidden' : 'visible';
		}
		catch(e){
			// TODO
		}
	},

	checkPassword: function(o) {
		try {
			document.getElementById('PasswordIndicator').style.visibility = 'visible';
			document.getElementById('PasswordIndicator').className = o ? 'i7' : 'i15';
			document.getElementById('PasswordIndicator').nextSibling.style.visibility = o ? 'hidden' : 'visible';
		}
		catch(e){
			// TODO
		}
	},

	request: function (form, callback) {
		YAHOO.util.Connect.setForm(form);
		YAHOO.util.Connect.asyncRequest(
			'POST',
			form.getAttribute('action'),
			{
				success: callback,
				failure: callback
				// TODO: handle failure
			}
		);
	
		return false;
	},

	fileupload: function (form, callback) {
		YAHOO.util.Connect.setForm(form, true);
		YAHOO.util.Connect.asyncRequest(
			'POST',
			form.getAttribute('action'),
			{
				success: callback,
				failure: callback
				// TODO: handle failure
			}
		);
	
		return false;
	},

	post: function (url, args, callback) {
		YAHOO.util.Connect.asyncRequest(
			'POST',
			url,
			{
				success: callback,
				failure: callback
			},
			args
		);
	
		return false;
	}

};

sorry.go = function(action) {
	if(sorry.is_logged) {		
		return true;
	}
	else {
		showLoginForm();
		return false;
	}
};

sorry.checkEmptiness = function (where, who) {
	var button = document.getElementById(who);
	if (!button) return;
	button.disabled = !YAHOO.lang.trim(where.value).length;
};
