//Clase que contiene metodos de validacion genericos para cualquier elemento
//y que no están en funcion de su tipo. 
//Recibe como parametro el prefijo para formar los identificadores de las etiquetas
function ConversorElemento(dePrefijoIdEtiqueta)
{	
	this.dePrefijoIdEtiqueta = dePrefijoIdEtiqueta;

	//Recibe un identificador de campo y de etiqueta y un indicador lógico indicando la obligatoriedad del campo
	//Comprueba si el valor del campo es correcto: si no es requerido o es requerido y está informado es correcto
	//Si es correcto devuelve valor true y en caso contrario pone un error con NuMensaje 10001 en el campo y 
	//devuelve valor false 
	this.esValidoBoRequerido = function (idCampo, idEtiqueta, boRequerido)
	{
		var vaCampo = document.getElementById(idCampo).value;
		if (!boRequerido || (boRequerido && !this.esCampoVacio(vaCampo)))
		{
			return true;
		}
		else
		{
			gestorMensajesUsuario.ponerError (idCampo, idEtiqueta, 10001);
			return false;
		}
	}
	
	//Recibe un identificador de campo y de etiqueta y un indicador lógico indicando la obligatoriedad del campo
	//llama a la funcion ConversorElemento.esValidoBoRequerido, si recibe de la llamada valor true quita el posible 
	//error que tenga el campo y devuelve valor true en otro caso devuelve valor false
	this.esValidoBoRequeridoGenerico = function (idCampo, idEtiqueta, boRequerido)
	{
		if (this.esValidoBoRequerido(idCampo, idEtiqueta, boRequerido))
		{
			gestorMensajesUsuario.quitarError(idCampo, idEtiqueta);
			return true;
		}
		else
			return false;
	}
	
	//Recibe un nombre de campo e identificador de etiqueta y un indicador lógico indicando la obligatoriedad del campo
	//Comprueba si el valor del campo es correcto: si no es requerido o es requerido y existe algun radio chequeado
	//Si no es correcto pone el error NuMensaje 10001 en la etiqueta y en todos los radios con el nombre recibido 
	//y sus respectivas etiquetas sin imagen de error
	this.esValidoBoRequeridoParaRadio = function (coNombreCampo, idEtiqueta, boRequerido)
	{
		var liCampos = document.getElementsByName(coNombreCampo);
		var boCampoVacio = true;
		for (i = 0; i < liCampos.length; i++)
		{
			boCampoVacio = boCampoVacio && !liCampos[i].checked;
		}
		var esValido = (!boRequerido || (boRequerido && !boCampoVacio))
		if (esValido)
			gestorMensajesUsuario.quitarErrorEtiqueta(idEtiqueta);
		else
			gestorMensajesUsuario.ponerErrorEtiqueta(idEtiqueta, 10001);
					
		for (i = 0; i < liCampos.length; i++)
		{
			idCampoRadio = coNombreCampo + '_' + liCampos[i].value;
			idEtiquetaRadio = this.dePrefijoIdEtiqueta + coNombreCampo + '_' + liCampos[i].value;
			if (esValido)			
				gestorMensajesUsuario.quitarError(idCampoRadio, idEtiquetaRadio);
			else
				gestorMensajesUsuario.ponerErrorSinImagen(idCampoRadio, idEtiquetaRadio);
		}
		
		return esValido;		
	}	
	
	//Recibe un nombre de campo e identificador de etiqueta y un indicador lógico indicando la obligatoriedad del campo
	//Comprueba si el valor del campo es correcto: si no es requerido o es requerido y si está chequeado
	//Si no es correcto pone el error NuMensaje 10001 en la etiqueta y campo 
	this.esValidoBoRequeridoParaCheckbox = function (idCampo, idEtiqueta, boRequerido)
	{
		var boCampoVacio = !document.getElementById(idCampo).checked;
		var esValido = (!boRequerido || (boRequerido && !boCampoVacio))
		if (esValido)
			gestorMensajesUsuario.quitarError(idCampo, idEtiqueta);
		else
			gestorMensajesUsuario.ponerError(idCampo, idEtiqueta, 10001);
		return esValido;		
	}	
	
	
	//Funcion que informa si un campo es vacio, considerando como vacio, una cadena vacía o una cadena de caracteres blancos
	this.esCampoVacio = function (vaCampo)
	{
		return (vaCampo.replace(/ /g, '')=='');
	}
	
	//Funcion que devuelve el prefijo para formar el identificador de una etiqueta
	this.getDePrefijoIdEtiqueta = function()
	{
		return this.dePrefijoIdEtiqueta;
	}
	
		//Obtiene el identificador de etiqueta a partir de un identificador de campo	
	this.obtenerIdEtiqueta = function (idCampo)
	{
		return  conversorElemento.getDePrefijoIdEtiqueta() + idCampo;
	}
}

