/**
	Dependencias:
		- mootools-1.2.1-core.js
		- mootools-1.2-more.js
		- formcheck.js
*/

var RamoIdeal = {
	formActivo: null,
	formName: null,
	acciones: {},
	actions: {},
	messages: {},
	cache: {},
	init: function() {
		Portal.init();
		this.formActivo = document.forms[this.formName];
        new TexAreaMaxLength ($('descripcion'), 250, $('notifDescripcionSize'));
        new TexAreaMaxLength ($('observaciones'), 250, $('notifObservacionesSize'));
        $('lnkEnvio').addEvent('click',function(event) {
			new Event(event).stop();
			RamoIdeal.envioFormulario();
		});
        $('btnBuscaLoc').addEvent('click', function(event){
			new Event(event).stop();
			this.buscarLocalidad();
		}.bind(this));
		this.crearFormCheck();
	},

    /**
	* Asigna los literales internacionalizados para cada error, crea las funciones especificas de validación
	* e inicializa el objeto formCheck.
	*/
	crearFormCheck: function() {
		//Creo y asigno el validador del formulario.
		this.formCheck = new FormCheck(RamoIdeal.formName,{
			display : {
				showErrors: 0,
				addClassErrorToField: 1
			}
		});
	},

	buscarLocalidad: function() {
		var codPostal = $('codigoPostal').get('value').trim();
		var localidad = $('localidad').get('value').trim();
		var provincia = $('provincia').get('value').trim();
		var notif = $('notifFindLoc');
		try {
			notif.addClass('waitFieldOn');
			jsonrpc = new JSONRpcClient("/JSON-RPC");
			// Call a Java method on the server
			var localidades = null;
			if(localidad.length > 0 || codPostal.length > 0) {
				localidades = jsonrpc.RPCLocalidad.obtenerDatosLocalidades(provincia, localidad, codPostal);
			}
			if($chk(localidades) && $chk(localidades.list) && localidades.list.length == 1) {
				var locAux = localidades.list[0];
				$('provincia').set('value', locAux.provincia);
				$('localidad').set('value', locAux.nombreciudad);
				$('codigoPostal').set('value', locAux.codpostal);
				RamoIdeal.localidad = locAux;
				//Hack para IE. En caso contrario no llega a mostrarte la carga.
				notif.removeClass.delay(100, notif, 'waitFieldOn');
				return true;
			} else {
				if($chk(localidades)) {
					RamoIdeal.cache.localidades = localidades.list;
				}
				var initFnt = function () {
					//BusquedaLocalidad.cache.provincias = RamoIdeal.cache.provincias;
					BusquedaLocalidad.init(
						provincia,
						localidad,
						codPostal,
						RamoIdeal,
						function (localidad) {
							$('provincia').set('value', localidad.provincia);
							$('localidad').set('value', localidad.nombreciudad);
							$('codigoPostal').set('value', localidad.codpostal);
							RamoIdeal.localidad = localidad;
						}
					);
				};

				var jsAux = {
					id: 'jsLocalidad',
					path: '/restyling/js/BusquedaLocalidad.js'
				};
				FormHelp.showPopUp(
					'/restyling/jsp/localidad/busquedaLocalidad.jsp',
					'popupDiv',
					'popupDiv',
					true,
					null,
					{
						id: 'jsLocalidad',
						path: '/restyling/js/BusquedaLocalidad.js'
					},
					initFnt
				);
				//Hack para IE. En caso contrario no llega a mostrarte la carga.
				notif.removeClass.delay(100, notif, 'waitFieldOn');
				return false;
			}

		} catch(e) {
			notif.removeClass('waitFieldOn');
			//No lo internacionalizo. En teoría no debería mostrarse nunca.
			Portal.showError("Error inesperado al buscar su localidad.<br>"+
			"Intentelo más tarde o pruebe con otros datos.<br>" +
			"Gracias y disculpe las molestias");
		}
	},

	envioFormulario: function (event) {
		InputHelp.clearValues();
    	if(RamoIdeal.formCheck.validateFormNow(event)) {
			this.formActivo.action = this.actions.DEF;
			this.formActivo.accion.value = this.acciones.ENVIAR;
			this.formActivo.submit();
		} else {
			InputHelp.setValues();
		}
	}
}

window.addEvent('domready', function(){
	RamoIdeal.init();
});