/**
	Dependencias:
		- mootools-1.2.1-core.js
		- mootools-1.2-more.js
		- formCheck.js
*/

var ZonaUsu = {
	formActivo: null,
	formName: null,
	formCheck: null,
	acciones: {},
	actions: {},
	messages: {},
	responses: {},
	fields: {},
	notifArea: null,
	errorClass: 'fc-error',
	isZonaUsuActive: true,
	avisosAgendaHasSet: false,
	init: function() {
		//Inicialización de id desde atributo name.
		$$('form, input, textarea, select').each(function(input, index){
			if(!$chk(input.get('id'))) {
				input.set('id', input.get('name'));
			}
		});

		this.formActivo = document.forms[this.formName];

		this.asignarEventos();

		this.crearFormCheck();

		this.toggleZonaUsuario(this.isZonaUsuActive);

        if(this.avisosAgendaHasSet) {
        	this.abrirAvisosCliente();
        }
	},

	toggleZonaUsuario: function(isZonaUsuActive) {
		this.isZonaUsuActive = isZonaUsuActive;
		$('registro').setStyle('diplay',this.isZonaUsuActive? 'none': 'hidden');
	},

	/**
	* Comprueba los valores necesarios y realiza la navegación de logado.
	*/
	loginUsuario: function(event) {
		if(ZonaUsu.formCheck.validateFormNow(event)) {
    		$('btnLogin').set('disabled', 'disabled');
			this.formActivo.accion.value = this.acciones.LOGIN_MENU;
			this.formActivo.action = this.actions.ZONA_USU;
			this.formActivo.submit();
			return true;
		}
        return false;
	},

	recordarClave: function() {
		var email = $('emailLogin').get('value').trim();
		var url = "." + this.actions.RECUERDO_CLAVE;
		if(email != '') {
			url += "?email=" + email;
		}
		//TODO JGM: llamar a los componentes comunes para abrir ventanas.
		//var ventana = abrirVentana(url);
	},

    abrirAvisosCliente: function() {
    	//abrirVentana(this.actions.AGENDA_CLIENTE, 'AvisosAgenda', 550, 700)
    	Portal.abrirVentana(this.actions.AGENDA_CLIENTE, 'AvisosAgenda', 550, 700);
    },

    /*
    logout: function() {
		this.formActivo.accion.value = this.acciones.DESCONECTAR;
		this.formActivo.action = this.actions.ABIERTA;
		this.formActivo.submit();
	},
	*/

    desconectarTienda: function() {
    	this.formActivo.accion.value = this.acciones.DESCONECTAR_TIENDA;
    	this.formActivo.action = this.actions.MENU_IZQUIERDA;
    	this.formActivo.submit();
    },

    consultaProductosVip: function() {
    	this.formActivo.action = this.actions.CONSULTA_PRODUCTOS_VIP;
        this.accion.value = this.acciones.MOSTRAR_FORMULARIO_VIP;
    	this.formActivo.submit();
    },

    consultaProductosGranCuenta: function (catalogo) {
		this.formActivo.action = this.actions.CONSULTA_PRODUCTOS_GC;
		this.formActivo.accion.value = this.acciones.MOSTRAR_FORMULARIO_VIP;
		this.formActivo.catalogo.value = catalogo;
		this.formActivo.submit();
	},

    /*
	pasoAdministracion: function() {
		this.formActivo.accion.value = "";
		this.formActivo.action = this.actions.ADMIN_SECURE;
		this.formActivo.submit();
	},
    */
	/**
	* Asigna los literales internacionalizados para cada error, crea las funciones especificas de validación
	* e inicializa el objeto formCheck.
	*/
	crearFormCheck: function() {
		//Inicialización del chequeo de formularios
		//Creo y asigno el validador del formulario.
		this.formCheck = new FormCheck(this.formName,{
			display : {
				showErrors: 0,
				addClassErrorToField: 1,
				//closeTipsButton: 0,
				tipsPosition:'left'
			}
		});
	},

    asignarEventos: function() {
    	var btnLogin = $('btnLogin');
		if($chk(btnLogin)) {
			btnLogin.addEvent('click',
				ZonaUsu.loginUsuario.bind(this)
			);
		}

		var likRecuerdoClave = $('recuerdoClave');
		if($chk(likRecuerdoClave)) {
			likRecuerdoClave.addEvent('click',
				ZonaUsu.recordarClave.bind(this)
			);
		}

		var likAvisosAgenda = $('avisosAgenda');
		if($chk(likAvisosAgenda)) {
			likAvisosAgenda.addEvent('click',
				ZonaUsu.abrirAvisosCliente.bind(this)
			);
		}

		/*
		var likLogout = $('logout');
		if($chk(likLogout)) {
			likLogout.addEvent('click',
				ZonaUsu.logout.bind(this)
			);
		}
		*/

		var likDesconectarTienda = $('desconectarTienda');
		if($chk(likDesconectarTienda)) {
			likDesconectarTienda.addEvent('click',
				ZonaUsu.desconectarTienda.bind(this)
			);
		}

        var likProductosVip = $('productosVip');
		if($chk(likProductosVip)) {
			likProductosVip.addEvent('click',
				ZonaUsu.consultaProductosVip.bind(this)
			);
		}

		/*
		var lnkAdministracion = $('lnkAdministracion');
		if($chk(lnkAdministracion)) {
			lnkAdministracion.addEvent('click',
				ZonaUsu.pasoAdministracion.bind(this)
			);
		}
		*/
	},

	notificarUsuario: function(msg, level) {
		var styleClass = 'notif ';
		switch(level) {
			case 'error':
				styleClass += 'errNotif';
				break;
			case 'warning':
				styleClass += 'warnNotif';
				break;
			case 'message':
				styleClass += 'messNotif';
				break;
			case 'correct':
				styleClass += 'corrNotif';
				break;
			default:
				styleClass += 'errNotif';
				break;
		}
		var notifArea = new Element('div', {
			'class': styleClass,
			'html': msg
		});
		notifArea.inject($("fPredeterminados"),'before');
		var closeDiv =  new Element('div', {'class': 'closeDiv'});
		closeDiv.addEvent('click',function(){
			this.getParent().dispose();
		});
		closeDiv.injectTop(notifArea);
	}
}

window.addEvent('domready', function(){
	ZonaUsu.init();
});

//Sobreescribo las funciones de mensajes sustituyendolas por las de la propia clase
window.mostrarErrorEscrito = function(msg) {
	ZonaUsu.notificarUsuario(msg,'error');
};
window.mostrarAvisoEscrito = function(msg) {
	ZonaUsu.notificarUsuario(msg,'message');
};
