var UserZone = {
	
	init : function() {
		if (!UserZone.isLogged()) 
			if (_PATH.match(/details/)) 
				UserZone.showLogin(true);
			else
				$('login').down('.discounts').show();
	},
	
	isLogged : function() {
		return typeof(_USER) == 'object' && _USER.username;
	},
	
	showLogin: function() {
		['register', 'subscribe', 'reminder'].each(Element.hide);
		$('login').show();
		$('login').down('.discounts').hide();
		
		if (arguments[0]) 
			$('login').select('.form', '.alert').invoke('show');
		else {
			new Effect.Appear($('login').down('.form'), {
				duration: 0.2
			});
		}
	},
	
	showRegister: function() {		
		['login', 'login_error', 'subscribe', 'reminder'].each(Element.hide);
		new Effect.Appear('register', { duration: 0.2 });
	},
	
	showReminder: function() {		
		['login_error', 'subscribe', 'reminder'].each(Element.hide);
		new Effect.Appear('reminder', { duration: 0.2 });
	},

	showSubscribe: function() {		
		['login', 'login_error', 'register', 'reminder'].each(Element.hide);
		
		if ($('user'))
			$('user').hide();
		
		new Effect.Appear('subscribe', { duration: 0.2 });
	},
	
	login : function (form) {
		$('login_error').hide();
		$('login').down('.loader').show();
		
		new Ajax.Request(_INDEX + '?act=neo_userzone/ajax_login', {
			parameters : $(form).serialize(),
			onComplete : function (transport) {
				$('login').down('.loader').hide();
				transport.responseText.match(/^1/) ? UserZone.loginSuccess() : UserZone.loginError();
			}
		})
	},
	
	register : function(form) {
		$(form).hide();
		$('register').down('.loader').show();
		
		$(form).request({
			onComplete: function(transport) {
				if (transport.responseText.isJSON()) {
					var errors = $H(transport.responseText.evalJSON());
					$('register').down('.loader').hide();
					$(form).show();
					return alert(errors.values().join("\n"));					
				}	
							
				$('register').insert({
					before: transport.responseText
				});
				
				['login','login_error','register','login_link','register_link'].each(Element.hide);
				
				if ($('p1_email'))
					$('p1_email').value = $F(form['item[email]']);				
			}
		})
	},
	
	subscribe : function(form) {
		if (!emailCheck($F(form['item[email]'])))
			return alert(_MESSAGES.INVALID_EMAIL);		
			
		$(form).hide();
		$('subscribe').down('.loader').show();
		
		$(form).request({
			onComplete: function(transport) {
				$('subscribe').update(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');
	}
}

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