var user = new Object();
user = {
	id: global.cookie.Read("bbuserid"),
	name: global.utf8.decode(decodeURIComponent(global.cookie.Read("bbusername"))),
	getId: function(){
		return user.id;
	},
	getName: function(){
		return user.name;
	},
	isLogged: function(){
		return user.getId()>0;
	},
	logoff: {
		ajax: null,
		Do: function(){
			var ajax = gAjax('get',global.RelativeRoot() + 'misc/ajax/main.php?mode=user_logoff');
			ajax.addEvent(4,'user.logoff.parseDo()');
			user.logoff.ajax = ajax;
			ajax.send();
		},
		parseDo: function(){
			global.div.Shrink('div_pam_form',0);
			global.div.Shrink('div_pam_display',0);
			document.forms['form_pam'].reset();
			document.forms['form_pam'].username.focus();
			user.login.writeMessage('');
			user.login.status = -1;
		}
	},
	login: {
		ajax: null,
		status:-1,
		Do: function(){
			if (user.login.status>-1){
				return;
			}
			var ajax = gAjax('post',global.RelativeRoot() + 'userlogin.php');
			ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
			ajax.setVars(global.form.CreateQuery(document.forms['form_pam']));
			ajax.addEvent(1,'gLoader.show("Efetuando o login","progress")');
			ajax.addEvent(4,'gLoader.close();user.login.parseDo()');
			user.login.ajax = ajax;
			ajax.send();
			user.login.status = 0;
		},
		parseDo: function(){
			var ajax = user.login.ajax;
			if (!ajax.isResponseXML()){
				user.login.status = -1;
				return user.login.writeError(ajax.getResponseText());
			}
			ajax = ajax.getQueryXML();
			if (ajax.getValue('attributes()->status')=='ok'){
				user.login.status = 1;
				return user.login.writeLogged(ajax.getValue('item_details->user->name'),ajax.getValue('item_details->user->url->internal'),ajax.getValue('item_details->user->avatar->path'));
			}else{
				user.login.status = -1;
				gLoader.show(ajax.getValue('error->description'),'info',5);
				//return user.login.writeMessage(ajax.getValue('error->description'));
			}
		},
		writeLogged: function(name,url,avatar){
			var s = '';
			s+='<div class="avatar"><a href="'+url+'"><img src="'+avatar+'" /></a></div>';
			s+='<div class="text">Vocę está logado como <a href="'+url+'">'+name+'</a><br /><br /><a href="javascript:void(0)" onclick="user.logoff.Do()">Encerrar sessăo</a></div>';
			global.div.Shrink('div_pam_form',0);
			global.div.Shrink('div_pam_display',1);
			global.div.Write('div_pam_display',s);
		},
		writeMessage: function(msg){
			global.div.Write('div_pam_msg',msg);
		},
		check: function(){
			if (user.isLogged()){
				document.getElementById('div_pam').className = 'pam dark';
				user.login.writeLogged(user.getName(),'http://redirect.gamevicio.com.br/user?'+user.getId(),global.cookie.Read('bbavatar'));
			}
		},
		enableEvent: function(){
			var form = document.forms['form_pam'];
			form.username.onfocus = function(){
				if (form.username.value.indexOf('usuário/email')!=-1){
					form.username.value = '';
					form.password.value = '';
					document.getElementById('div_pam').className = 'pam dark';
				}
			}
			form.password.onfocus = function(){
				if (form.username.value.indexOf('usuário/email')!=-1){
					form.username.value = '';
					form.password.value = '';
					form.username.focus();
					document.getElementById('div_pam').className = 'pam dark';
				}
			}
			form.username.onblur = function(){
				if (form.username.value.length<1){
					form.username.value = 'usuário/email';
					form.password.value = 'senha';
					document.getElementById('div_pam').className = 'pam clean';
				}
			}
			form.onsubmit = function(){
				if (form.username.value.indexOf('usuário/email')>-1){
					alert('entre com seu nome de usuário');
					return false;
				}
				if (form.username.value.length<2){
					alert('entre com seu nome de usuário');
					return false;
				}
				if (form.password.value.length<2){
					alert('faltou a senha');
					form.password.focus();
					return false;
				}
				user.login.Do();
				return false;
			}
		},
		start: function(){
			user.login.enableEvent();
			user.login.check();
		}
	},
	//ediçăo de perfil
	profile:{
		start: function(form){
			if (form){
				user.profile.form.start(form);
			}
		},
		redirect: function(){
			if (!user.isLogged()){
				gLoader.show('Vocę năo está logado','info',6);
				return;
			}
			window.location = 'http://forum.gamevicio.com.br/index2.php?pag=my_profile&id='+user.getId();
		},
		form: {
			obj:null,
			start: function(form){
				var f = document.getElementById(form) ? document.getElementById(form) : form ;
				user.profile.form.setObj(f);
				user.profile.form.enableEvent();
			},
			setObj: function(o){
				user.profile.form.obj = o;
			},
			getObj: function(){
				return user.profile.form.obj;
			},
			enableEvent: function(){
				var f = user.profile.form.getObj();
				if (f.new_name){
					//evitar caracteres especiais
					f.new_name.onkeypress = function(){
						var f = user.profile.form.getObj().new_name;
						!(/^[0-9a-zA-Z_.-]*$/i).test(f.value)?f.value = f.value.replace(/[^0-9a-zA-Z_.-]/ig,''):null;
					}
					f.new_name.onblur = function(){
						var f = user.profile.form.getObj().new_name;
						!(/^[0-9a-zA-Z_.-]*$/i).test(f.value)?f.value = f.value.replace(/[^0-9a-zA-Z_.-]/ig,''):null;
					}
				}
			}
		},
		checkName: {
			ajax: null,
			Do: function(){
				var f = user.profile.form.getObj().new_name;
				!(/^[0-9a-zA-Z_.-]*$/i).test(f.value)?f.value = f.value.replace(/[^0-9a-zA-Z_.-]/ig,''):null;
				f = f.value;
				if (f.length<4){
					gLoader.show('Nome de usuário muito pequeno','info',5);
					return;
				}

				var ajax = gAjax('get',global.RelativeRoot() + 'misc/ajax/main.php?mode=user_register_check_name&name=' + f);
				ajax.addEvent(1,'gLoader.show("Verificando a disponibilidade deste nome de usuário","progress");');
				ajax.addEvent(4,'gLoader.close();user.profile.checkName.parseDo()');
				user.profile.checkName.ajax = ajax;
				ajax.send();
			},
			parseDo: function(){
				var ajax = user.profile.checkName.ajax;
				if (!ajax.isResponseXML()){
					gLoader.show(ajax.getResponseText(),'info',5);
					return;
				}
				ajax = ajax.getQueryXML();
				r = ajax.getValue('attributes()->status')=="fail" ? ajax.getValue('error->description') : 'Nome de usuário disponível';

				gLoader.show(r,'info',5);
			}
		}
	}
}

