var UserZone = {
	
	init : function() {
//		if (!UserZone.isLogged()) 
//			if (_PATH.match(/details/)) 
//				UserZone.showLogin(true);
	},
	
	isLogged : function() {
		return typeof(_USER) == 'object' && _USER.username;
	},
	
	showLogin: function() {
		['register-sm', 'newsl', 'reminder', 'login_error'].each(function(s){if ($(s)) $(s).hide();});
		$('nav-side').childElements().invoke('removeClassName', 'sel');
		$('login-sm').up().addClassName('sel');
		$('login-sm').show();
		
		if (arguments[0]) 
			$('login-sm').select('.form').invoke('show');
		else {
			new Effect.Appear($('login-sm').down('.form'), {
				duration: 0.2
			});
		}

	},
	
	hideLogin: function() {
		$('login-sm').hide();
		$('login_error').hide();
		$('login-sm').up().removeClassName('sel');
	},
	
	showRegister: function() {		
		['login-sm', 'login_error', 'newsl', 'reminder', 'register_error'].each(function(s){if ($(s)) $(s).hide();});
		$('nav-side').childElements().invoke('removeClassName', 'sel');
		$('register-sm').up().addClassName('sel');
		new Effect.Appear('register-sm', { duration: 0.2 });
	},
	
	hideRegister: function() {
		$('register-sm').hide();
		$('register_error').hide();
		$('register-sm').up().removeClassName('sel');
		if ($('user') && $('user').visible()) $('register-sm').up().hide();
	},
	
	showReminder: function() {		
		['login_error', 'newsl', 'register-sm', 'login-sm'].each(function(s){if ($(s)) $(s).hide();});
		new $('reminder').show();
	},
	
	hideReminder: function() {
		$('reminder').hide();
		$('reminder').up().removeClassName('sel');
	},

	showSubscribe: function() {		
		['login-sm', 'login_error', 'register-sm', 'reminder', 'register_error', 'subscribe_error'].each(function(s){if ($(s)) $(s).hide();});
		$('nav-side').childElements().invoke('removeClassName', 'sel');
		$('newsl').up().addClassName('sel');
		
		new Effect.Appear('newsl', { duration: 0.2 });
	},
	
	hideSubscribe: function() {
		$('subscribe_error').hide();
		$('newsl').hide();
		$('newsl').up().removeClassName('sel');
	},
	
	login : function (form) {
		$('login_error').hide();
		$('login-sm').down('.loader').show();
		
		new Ajax.Request(_INDEX + '?act=neo_userzone/ajax_login', {
			parameters : $(form).serialize(),
			onComplete : function (transport) {
				$('login-sm').down('.loader').hide();
				transport.responseText.match(/^1/) ? UserZone.loginSuccess() : UserZone.loginError();
			}
		})
	},
	
	register : function(form) {
		
		$('register_error').hide();
		$('register-sm').down('.loader').show();
		
		$(form).request({
			onComplete: function(transport) {
				$('register-sm').down('.loader').hide();	
				if (transport.responseText.isJSON()) {
					var errors = $H(transport.responseText.evalJSON());
					//$(form).show();
					$('register_error').update(errors.values().join("<br/>"));
					//Effect.Appear('register_error');
					$('register_error').show();
					return false;					
				}	

				$(form).hide();
				$('contact-info').insert({
					before: transport.responseText
				});

				['login-sm','login_error'].each(Element.hide);
				$('login-sm').up().hide();
				if ($('p1_email'))
					$('p1_email').value = $F(form['item[email]']);
				$('register_success').show();
			}
		})
	},
	
	subscribe : function(form) {
		$('subscribe_error').hide();
		if (!emailCheck($F(form['item[email]']))){
			$('subscribe_error').update(_MESSAGES.INVALID_EMAIL);
			//Effect.Appear('subscribe_error');
			$('subscribe_error').show();
			return false;
		}
			
		$(form).hide();
		$('newsl').down('.loader').show();
		
		$(form).request({
			onComplete: function(transport) {
			$('newsl').down('.loader').hide();
				$(form).insert({
					before: transport.responseText
				});	
			}
		})
	},
	
	remind : function(form) {
		$(form).hide();
		$('reminder').down('.loader').show();
		
		$(form).request({
			onComplete: function(transport) {
				$('reminder').down('.loader').hide();
				$('reminder').hide();
				$(form).show();
				
				if (transport.responseText.isJSON()) {
					var errors = $A(transport.responseText.evalJSON());
					$('reminder').show();
					return alert(errors.join("\n"));
				}
				else {
					alert(transport.responseText);
				} 
			}
		});
	},
	
	loginSuccess : function () {
		if ($('request-method').content != 'POST')
			document.location.reload();
		else
			document.location = _ABS_PATH + _INDEX + "?logged_in=1";		
	},
	
	loginError : function () {
		['reminder'].each(Element.hide);
		//Effect.Appear('login_error');
		$('login_error').show();
	}
}

//document.observe("dom:loaded", UserZone.init);
// IE fires dom:loaded too early :(
Event.observe(window, 'load', UserZone.init);

