// JavaScript Document

var new_account = function() {
	
	var first_name = new Ext.form.TextField({
		fieldLabel: 'Nombre(s)',
		name: 'first_name',
		anchor: '92%'
	});
	
	var last_name = new Ext.form.TextField({
		fieldLabel: 'Apellidos',
		name: 'last_name',
		anchor: '92%'
	});
	
	var badge_name = new Ext.form.TextField({
		fieldLabel: 'Pseud&oacute;nimo',
		allowBlank: false,
		name: 'badge_name',
		anchor: '92%'
	});
	
	var email = new Ext.form.TextField({
		fieldLabel: 'E-mail',
		allowBlank: false,
		name: 'email',
		vtype: 'email',
		anchor: '92%'
	});
	
	var passwd = new Ext.form.TextField({
		fieldLabel: 'Contrase&ntilde;a',
		allowBlank: false,
		name: 'passwd',
		inputType: 'password',
		anchor: '92%'
	});
	
	var passwd_retype = new Ext.form.TextField({
		fieldLabel: 'Reescriba la contrase&ntilde;a',
		allowBlank: false,
		name: 'passwd_retype',
		inputType: 'password',
		anchor: '92%'
	});

	var formPanel = new Ext.form.FormPanel({
		baseCls: 'x-plain',
		labelWidth: 135,
		bodyStyle: 'position: relative;',
		labelAlign: 'right',
		autoScroll: true,
		url:'/usuarios/nuevo',
		defaultType: 'textfield',
		items: [first_name, last_name, badge_name, email, passwd, passwd_retype]
	});

	var ext_window = new Ext.Window({
		title: 'Nuevo registro',
		modal:true,
		layout: 'fit',
		plain: true,
		bodyStyle: 'padding: 10px;',
		buttonAlign: 'center',
		width: 400,
		height: 250,
		defaultButton: 0,
		constrain: true,
		items: formPanel,
		buttons: [{
			text: '<span style="font-weight: bold">Enviar registro</span>', 
			handler: function() {
				if (formPanel.form.isValid()) {
					formPanel.form.submit({			      
						waitMsg: 'Registrando',
						failure: function(form, action) {
							ext_window.center();
							Ext.MessageBox.alert('Error al enviar', action.result.errorInfo);
						},
						success: function(form, action) {
							Ext.MessageBox.alert('Env&iacute;o completado', action.result.info, function() {
								log_in();
							});
							ext_window.hide();
						}
					});                 
				} else{
					Ext.MessageBox.alert('Error al enviar', 'Algunos campos no han sido llenados o son inv&aacute;lidos. ' +
						'Para m&aacute;s detalles, posicione el rat&oacute;n encima de los s&iacute;mbolos de advertencia ' +
						'que encontrar&aacute; a la derecha de los campos con los errores.');
				}             
			}
		},{
			text: 'Cancelar',
			handler: function(){ext_window.hide();}
		}]
	});
	
	ext_window.show();
	
};

var log_in = function() {
	
	var email = new Ext.form.TextField({
		fieldLabel: 'E-mail',
		allowBlank: false,
		name: 'email',
		vtype: 'email',
		anchor: '90%'
	});
	
	var passwd = new Ext.form.TextField({
		fieldLabel: 'Contrase&ntilde;a',
		allowBlank: false,
		name: 'passwd',
		inputType: 'password',
		anchor: '90%'
	});

	var formPanel = new Ext.form.FormPanel({
		baseCls: 'x-plain',
		labelWidth: 75,
		bodyStyle: 'position: relative;',
		labelAlign: 'right',
		autoScroll: true,
		url:'/usuarios/iniciar_sesion',
		defaultType: 'textfield',
		items: [email, passwd]
	});

	var ext_window = new Ext.Window({
		title: 'Iniciar sesi&oacute;n',
		modal:true,
		layout: 'fit',
		plain: true,
		bodyStyle: 'padding: 10px;',
		buttonAlign: 'center',
		width: 320,
		height: 145,
		defaultButton: 0,
		constrain: true,
		items: formPanel,
		buttons: [{
			text: '<span style="font-weight: bold">Iniciar</span>', 
			handler: function() {
				if (formPanel.form.isValid()) {
					formPanel.form.submit({			      
						waitMsg: 'Validando',
						failure: function(form, action) {
							ext_window.center();
							Ext.MessageBox.alert('Error al enviar', action.result.errorInfo);
						},
						success: function(form, action) {
							ext_window.hide();
							window.location = '/.';
						}
					});                 
				} else{
					Ext.MessageBox.alert('Error al enviar', 'Algunos campos no han sido llenados o son inv&aacute;lidos. ' +
						'Para m&aacute;s detalles, posicione el rat&oacute;n encima de los s&iacute;mbolos de advertencia ' +
						'que encontrar&aacute; a la derecha de los campos con los errores.');
				}             
			}
		},{
			text: 'Nuevo registro',
			handler: function(){ext_window.hide();new_account();}
		},{
			text: 'Cancelar',
			handler: function(){ext_window.hide();}
		}]
	});
	
	ext_window.show();
	
};

var close_session = function() {
	Ext.Ajax.request({
		url: '/usuarios/cerrar_sesion',
		method: 'GET',
		success: function(result, request) {
			window.location = '/.';
		}
	});
}

var edit_account = function() {
	
	var first_name = new Ext.form.TextField({
		fieldLabel: 'Nombre(s)',
		name: 'first_name',
		anchor: '92%'
	});
	
	var last_name = new Ext.form.TextField({
		fieldLabel: 'Apellidos',
		name: 'last_name',
		anchor: '92%'
	});
	
	var badge_name = new Ext.form.TextField({
		fieldLabel: 'Pseud&oacute;nimo',
		allowBlank: false,
		name: 'badge_name',
		anchor: '92%'
	});
	
	var email = new Ext.form.TextField({
		fieldLabel: 'E-mail',
		allowBlank: false,
		name: 'email',
		vtype: 'email',
		anchor: '92%'
	});
	
	var passwd = new Ext.form.TextField({
		fieldLabel: 'Cambiar contrase&ntilde;a',
		name: 'passwd',
		inputType: 'password',
		anchor: '92%'
	});
	
	var passwd_retype = new Ext.form.TextField({
		fieldLabel: 'Reescriba la contrase&ntilde;a',
		name: 'passwd_retype',
		inputType: 'password',
		anchor: '92%'
	});

	var formPanel = new Ext.form.FormPanel({
		baseCls: 'x-plain',
		labelWidth: 135,
		bodyStyle: 'position: relative;',
		labelAlign: 'right',
		autoScroll: true,
		url:'/usuarios/editar',
		defaultType: 'textfield',
		items: [first_name, last_name, badge_name, email, passwd, passwd_retype],
		reader: new Ext.data.JsonReader({ root: 'results' }, ['first_name', 'last_name', 'badge_name', 'email'])
	});
	
	var ext_window = new Ext.Window({
		title: 'Editar perfil',
		modal:true,
		layout: 'fit',
		plain: true,
		bodyStyle: 'padding: 10px;',
		buttonAlign: 'center',
		width: 400,
		height: 250,
		defaultButton: 0,
		constrain: true,
		items: formPanel,
		buttons: [{
			text: '<span style="font-weight: bold">Guardar cambios</span>', 
			handler: function() {
				if (formPanel.form.isValid()) {
					formPanel.form.submit({			      
						waitMsg: 'Guardando cambios',
						failure: function(form, action) {
							ext_window.center();
							Ext.MessageBox.alert('Error al enviar', action.result.errorInfo);
						},
						success: function(form, action) {
							Ext.MessageBox.alert('Env&iacute;o completado', action.result.info);
							ext_window.hide();
						}
					});                 
				} else{
					Ext.MessageBox.alert('Error al enviar', 'Algunos campos no han sido llenados o son inv&aacute;lidos. ' +
						'Para m&aacute;s detalles, posicione el rat&oacute;n encima de los s&iacute;mbolos de advertencia ' +
						'que encontrar&aacute; a la derecha de los campos con los errores.');
				}             
			}
		},{
			text: 'Cancelar',
			handler: function(){ext_window.hide();}
		}]
	});
	
	ext_window.show();
	formPanel.form.load({url: '/usuarios/obtener_perfil', waitMsg: 'Cargando'});
	
};

function highlight() {
	Ext.get(this).frame('555555');
}

function votePoll(answerid, questionid, votes){
	Ext.get('poll_response').fadeOut();
	Ext.get('poll_response').dom.innerHTML = "<img src='/img/avac_spinner.gif' />";
	var conn = new Ext.data.Connection();
	conn.request({
		url: '/encuesta/votar',
		params: {"aid": answerid, "qid": questionid},
		method: 'POST',
		success: function(responseObject) {
			var responseDiv = Ext.get('poll_response');
			responseDiv.dom.innerHTML = responseObject.responseText;
			responseDiv.fadeIn().pause(6).fadeOut();
		},
		failure: function(responseObject) {
			Ext.MessageBox.show({
				title: 'Error al votar',
				msg: 'No se ha podido enviar su voto, por favor intente m&aacute;s tarde.',
				buttons: Ext.Msg.OK,
				animEl: 'answer'
			});
		}
	});
}

function commentersTooltip(id, usuario, gravatar, numComments){
	var userimage = "<img src='"+gravatar+"' width=42 align='left' />";
	if(numComments == 1){
		var contenido = "<div class='text'>1 comentario</div>";
	}else{
		var contenido = "<div class='text'>"+numComments+" comentarios</div>";
	}

	var tt = new Ext.ToolTip({
		target: id,
		title: userimage,
		trackMouse: true,
		width: 100,
		height: 100,
		html: "&nbsp;"+contenido
	});
}

Ext.onReady(function() {
							
	Ext.QuickTips.init();
	Ext.form.Field.prototype.msgTarget = 'side';

	var click_logo = function() {
		window.location = '/.';
	}
	
	Ext.get('logo').on('click', click_logo);
});
