/*** FUNCION DONDE SE CREA LA CAPA DE LOS MENSAJES DE LAS VALIDACIONES ***/
function nuevoElemento(nombre)
{
	var nuevoElemento = new Element('div',
		{
			'id':'msj'+nombre,
			'class':'msg'
		});

	return nuevoElemento;
}

/*** VALIDACION PARA LOS CAMPOS TEXT Y PASSWORD DE TIPO REQUERIDO ***/
function validar_requerido(elem)
{//alert(elem.name)
	correcto = true;
	switch(elem.type)
	{
		case 'text':
		case 'hidden':
		case 'password':

			if($('msj'+elem.name)!=null)
				$('msj'+elem.name).remove();

			if (elem.value == '' && elem.name!="nombre_cooperativa")
			{
			var ee = nuevoElemento(elem.name);

				ee.setHTML("Campo requerido");
				ee.injectAfter(elem);
				new Fx.Style('msj'+elem.name,'opacity',{duration:2000}).start(0,1);

				correcto = false
			}
		break;
	}

	return correcto;
}

function validar_requerido_opcional(elem)
{
	correcto = true;
	switch(elem.type)
	{
		case 'text':
		case 'password':

			if(elem.value=='') return true;

			if($('msj'+elem.name)!=null)
				$('msj'+elem.name).remove();

					if (elem.value == '')
					{
					var ee = nuevoElemento(elem.name);

						ee.setHTML("Campo requerido");
						ee.injectAfter(elem);
						new Fx.Style('msj'+elem.name,'opacity',{duration:2000}).start(0,1);

						correcto = false
					}
		break;
	}

	return correcto;
}

/*** VALIDACION PARA LOS CAMPOS SELECT DE TIPO REQUERIDO ***/
function validar_select(elem)
{
	correcto = true;

			if($('msj'+elem.name)!=null)
				$('msj'+elem.name).remove();

					if (elem.selectedIndex == 0)
					{
					var ee = nuevoElemento(elem.name);

						ee.setHTML("Seleccione una opci&oacute;n de la lista");
						ee.injectAfter(elem);
						new Fx.Style('msj'+elem.name,'opacity',{duration:2000}).start(0,1);

						correcto = false
					}

	return correcto;
}

/*** VALIDACION PARA LOS CAMPOS DE TIPO RADIO BUTTON ***/
	/*** ACORDAR COLOCAR EL NAME DEL RADIO EN EL CLASS DEL CODIGO HTML ***/
function validar_radio(elem)
{
	

	correcto = false;
	var rad = $A($$('.'+elem.name));
	
	if ( ($('msj'+elem.name)!=null) && ($('msj'+elem.name)!=false) )
	{
		
		$('msj'+elem.name).remove();
		
	}

		
		rad.each(function(e,i)
		{
			
			if(e.checked)
			{
				correcto = true;
			}
		});

		if(!correcto)
		{
			var ee = nuevoElemento(elem.name);

			ee.setHTML("Debe seleccionar una opci&oacute;n");
			//ee.injectAfter(rad.getLast());
				
			if(window.ie){
				ee.injectBefore($(elem.name));
				
			}else{
					ee.injectAfter($(elem.name));
					
				}
		
			
			//ee.injectBefore($(elem.name));
			new Fx.Style('msj'+elem.name,'opacity',{duration:2000}).start(0,1);
		}

		return correcto;
}

/*** VALIDACION PARA LOS CAMPOS TEXTAREA DE TIPO REQUERIDO ***/
function validar_textarea(elem)
{
	correcto = true;

			if($('msj'+elem.name)!=null)
				$('msj'+elem.name).remove();

					if (elem.value.length == 0)
					{
					var ee = nuevoElemento(elem.name);

						ee.setHTML("Campo requerido");
						ee.injectAfter(elem);
						new Fx.Style('msj'+elem.name,'opacity',{duration:2000}).start(0,1);

						correcto = false
					}

	return correcto;
}

/*** VALIDACION PARA LOS CAMPOS NUMERICOS ***/
function validar_numerico(elem)
{
	correcto = true;
	strChars = "0123456789";

/*	if($('msj'+elem.name)!=null)
		$('msj'+elem.name).remove();
*/
	for (i = 0; i < elem.value.length; i++)
	{
		strChar = elem.value.charAt(i);
		if (strChars.indexOf(strChar) == -1)
		{
			correcto = false;
		    var ee = nuevoElemento(elem.name);
	      	ee.setHTML("Introduzca s&oacute;lo n&uacute;meros");
			ee.injectAfter(elem);
			new Fx.Style('msj'+elem.name,'opacity',{duration:5000}).start(0,1);

			break;
		}
	}

	return correcto;
}

function validar_numerico_opcional(elem)
{
	correcto = true;
	strChars = "0123456789";

	if($('msj'+elem.name)!=null)
		$('msj'+elem.name).remove();

	if(elem.value==0) return true;

	for (i = 0; i < elem.value.length; i++)
	{
		strChar = elem.value.charAt(i);
		if (strChars.indexOf(strChar) == -1)
		{
			correcto = false;
		    var ee = nuevoElemento(elem.name);
	      	ee.setHTML("Introduzca s&oacute;lo n&uacute;meros");
			ee.injectAfter(elem);
			new Fx.Style('msj'+elem.name,'opacity',{duration:5000}).start(0,1);

			break;
		}
	}

	return correcto;
}

/*** VALIDACION PARA LOS CAMPOS DE TIPO MONTO (v_registrar_proyecto y v_actualizar_proyecto ***/
function validar_monto(elem)
{
	correcto = true;
	strChars = ",0123456789";

	for (i = 0; i < elem.value.length; i++)
	{
		strChar = elem.value.charAt(i);
		if (strChars.indexOf(strChar) == -1)
		{
			correcto = false;
		    var ee = nuevoElemento(elem.name);
	      	ee.setHTML("Monto inv&aacute;lido. Formato: 1200,12");
			ee.injectAfter(elem);
			new Fx.Style('msj'+elem.name,'opacity',{duration:5000}).start(0,1);

			break;
		}
	}

	return correcto;
}

/*** VALIDACION PARA EL CAMPO DE TIPO CEDULA ***/
function validar_cedula(elem)
{
	correcto = true;
	strChars = "0123456789";

	if($('msj'+elem.name)!=null) return false;

	if(elem.value.length<7)
	{
		correcto = false;
		    var ee = nuevoElemento(elem.name);
	      	ee.setHTML("N&uacute;mero de c&eacute;dula inv&aacute;lido");
			ee.injectAfter(elem);
			new Fx.Style('msj'+elem.name,'opacity',{duration:5000}).start(0,1);
	}

	for (i = 0; i < elem.value.length; i++)
	{
		strChar = elem.value.charAt(i);
		if (strChars.indexOf(strChar) == -1)
		{
			correcto = false;
		    var ee = nuevoElemento(elem.name);
	      	ee.setHTML("Introduzca s&oacute;lo n&uacute;meros");
			ee.injectAfter(elem);
			new Fx.Style('msj'+elem.name,'opacity',{duration:5000}).start(0,1);

			break;
		}
	}

	return correcto;
}

/*** VALIDACION PARA LOS CAMPOS NUMERICOS DE TIPO DECIMAL (v_agregar_clasificacion) ***/
function validar_decimal(elem)
{
	correcto = true;
	strChars = ",0123456789";

	for (i = 0; i < elem.value.length; i++)
	{
		strChar = elem.value.charAt(i);
		if (strChars.indexOf(strChar) == -1)
		{
			correcto = false;
		    var ee = nuevoElemento(elem.name);
	      	ee.setHTML("Introduzca s&oacute;lo n&uacute;meros enteros o decimales. Ej: 12 o 12,5");
			ee.injectAfter(elem);
			new Fx.Style('msj'+elem.name,'opacity',{duration:5000}).start(0,1);

			break;
		}
	}

	return correcto;
}

/*** VALIDACION CAMPOS QUE DEBEN TENER SOLO LETRAS ***/
function validar_alfa(elem)
{
	correcto = true;
	strChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ \u00C1\u00E1\u00C9\u00E9\u00CD\u00ED\u00D3\u00F3\u00DA\u00FA\u00DC\u00FC\u00D1\u00F1";
/*
	if($('msj'+elem.name)!=null)
		$('msj'+elem.name).remove();
*/
	for (i = 0; i < elem.value.length; i++)
	{
		strChar = elem.value.charAt(i);
		if (strChars.indexOf(strChar) == -1)
		{
			correcto = false;
		    var ee = nuevoElemento(elem.name);
	      	ee.setHTML("Introduzca s&oacute;lo letras");
			ee.injectAfter(elem);
			new Fx.Style('msj'+elem.name,'opacity',{duration:5000}).start(0,1);

			break;
		}
	}

	return correcto;
}

/*** VALIDACION PARA LOS CAMPOS QUE SEAN RIF ***/
function validar_rif(elem)
{
	correcto = true;
	strChars = "jJ0123456789";

	if($('msj'+elem.name)!=null)
		$('msj'+elem.name).remove();

	/*for (i = 0; i < elem.value.length; i++)
	{
		strChar = elem.value.charAt(i);
		if (strChars.indexOf(strChar) == -1 )
		{
			correcto = false;

		    var ee = nuevoElemento(elem.name);
	      	ee.setHTML("Debe tener el siguiente formato: J123456789");
			ee.injectAfter(elem);
			new Fx.Style('msj'+elem.name,'opacity',{duration:5000}).start(0,1);

			break;
		}
	}*/

	//reemplazado por la siguiente linea...
	correcto = /^[V|v|E|e|J|j|G|g]\d{9}$/.test(elem.value);

	if ( correcto==false ){

		    var ee = nuevoElemento(elem.name);
	      	ee.setHTML("Debe tener el siguiente formato: J123456789");
			ee.injectAfter(elem);
			new Fx.Style('msj'+elem.name,'opacity',{duration:5000}).start(0,1);


	}

	return correcto;
}

/*** VALIDACION PARA LOS CAMPOS QUE SEAN CUENTA BANCARIA ***/
function validar_cuenta(elem)
{
	correcto = true;
	strChars = "0123456789";

	if($('msj'+elem.name)!=null)
		$('msj'+elem.name).remove();

	if(elem.value.length!=20)
	{
		correcto = false;
	}
	else
	{
		for (i = 0; i < elem.value.length; i++)
		{
			strChar = elem.value.charAt(i);
			if (strChars.indexOf(strChar) == -1 )
			{
				correcto = false;
				break;
			}
		}
	}

	if ( correcto==false )
	{
	    var ee = nuevoElemento(elem.name);
      	ee.setHTML("Debe estar conformado por 20 d&iacute;gitos");
		ee.injectAfter(elem);
		new Fx.Style('msj'+elem.name,'opacity',{duration:5000}).start(0,1);
	}

	return correcto;
}

/*** VALIDACION PARA LOS CAMPOS QUE SEAN COD. DE CONSEJO COMUNAL ***/
function validar_codigo(elem)
{
	if($('msj'+elem.name)!=null)
		$('msj'+elem.name).remove();

	if (elem.value.length==0)
	{
		return true;
	}

	if (!elem.value.match(/^\d{2}-\d{2}-\d{2}-\d{3}-\d{4}$/))
	{
		var ee = nuevoElemento(elem.name);

		ee.setHTML("Debe tener el siguiente formato: 00-00-00-000-0000");
		ee.injectAfter(elem);
		new Fx.Style('msj'+elem.name,'opacity',{duration:2000}).start(0,1);

		return false;
	}

	return true; // llega hasta aca

	correcto = true;
	strChars = "-0123456789";

	for (i = 0; i < elem.value.length; i++)
	{
		strChar = elem.value.charAt(i);

		if (strChars.indexOf(strChar) == -1 || elem.value.charAt(0)!='-')
		{
			correcto = false;
		    var ee = nuevoElemento(elem.name);
	      	ee.setHTML("Debe tener el siguiente formato: 00-00-00-000-0000");
			ee.injectAfter(elem);
			new Fx.Style('msj'+elem.name,'opacity',{duration:5000}).start(0,1);

			break;
		}
	}

	return correcto;
}

/*** VALIDACION PARA LOS CAMPOS QUE SEAN COD. DE PROYECTO ***/
function validar_codigo_proy(elem)
{
	if($('msj'+elem.name)!=null)
		$('msj'+elem.name).remove();

	if (elem.value.length==0)
	{
		return true;
	}

	if (!elem.value.match(/^\d{2}-\d{2}-\d{2}-\d{3}-\d{4}-\d{4}$/))
	{
		var ee = nuevoElemento(elem.name);

		ee.setHTML("Debe tener el siguiente formato: 00-00-00-000-0000-0000");
		ee.injectAfter(elem);
		new Fx.Style('msj'+elem.name,'opacity',{duration:2000}).start(0,1);

		return false;
	}

	return true; // llega hasta aca

	correcto = true;
	strChars = "-0123456789";

	for (i = 0; i < elem.value.length; i++)
	{
		strChar = elem.value.charAt(i);

		if (strChars.indexOf(strChar) == -1 || elem.value.charAt(0)!='-')
		{
			correcto = false;
		    var ee = nuevoElemento(elem.name);
	      	ee.setHTML("Debe tener el siguiente formato: 00-00-00-000-0000-0000");
			ee.injectAfter(elem);
			new Fx.Style('msj'+elem.name,'opacity',{duration:5000}).start(0,1);

			break;
		}
	}

	return correcto;
}

function validar_consejo_corto (elem)
{
	elem.addClass("ccorto");

	if($('msj'+elem.name)!=null)
		$('msj'+elem.name).remove();

	if (elem.value.length==0)
	{
		elem.removeClass("ccorto");
		return true;
	}

	if (!elem.value.match(/^\d{2}-\d{2}-\d{2}-\d{4}$/))
	{
		var ee = nuevoElemento(elem.name);

		ee.setHTML("Debe tener el siguiente formato: 00-00-00-0000");
		ee.injectAfter(elem);
		new Fx.Style('msj'+elem.name,'opacity',{duration:2000}).start(0,1);

		return false;
	}

	return true;
}

/*** VALIDACION PARA COMPROBAR QUE LAS CLAVES SEAN IGUALES (v_cambiar_clave) ***/
function igual_clave(elem)
{
	var correcto;

	if($('nueva_clave').value == $('conf_clave').value)
	{
		correcto = true
	}
	else
	{
		correcto = false
		var ee = nuevoElemento(elem.name);
	    ee.setHTML("Las contrase&ntilde;as no coinciden, verifique e intente de nuevo");
		ee.injectAfter(elem);
		new Fx.Style('msj'+elem.name,'opacity',{duration:5000}).start(0,1);
	}

	return correcto;
}


/*** FUNCION GENERAL QUE VA EN LOS ONSUBMIT QUE LLAMA A LAS DEMAS FUNCIONES ***/
function validar(f)
{
	var correcto = true;

	$$('#'+f.id+' .required').each(function(elem,i)
	{
		if(!validar_requerido(elem)) correcto = false;
	});

	$$('#'+f.id+' .numeric').each(function(elem,i)
	{
		if(!validar_numerico(elem)) correcto = false;
	});

	$$('#'+f.id+' .alfa').each(function(elem,i)
	{
		if(!validar_alfa(elem)) correcto = false;
	});

	$$('#'+f.id+' .rif').each(function(elem,i)
	{
		if(!validar_rif(elem)) correcto = false;
	});

	$$('#'+f.id+' .codigo').each(function(elem,i)
	{
		if(!validar_codigo(elem)) correcto = false;
	});

	$$('#'+f.id+' .codigo_proy').each(function(elem,i)
	{
		if(!validar_codigo_proy(elem)) correcto = false;
	});

	$$('#'+f.id+' .igual_clave').each(function(elem,i)
	{
		if(!igual_clave(elem)) correcto = false;
	});

	$$('#'+f.id+' .decimal').each(function(elem,i)
	{
		if(!validar_decimal(elem)) correcto = false;
	});

	$$('#'+f.id+' .select').each(function(elem,i)
	{
		/*if(elem.id=="clasif_proy" && elem.selectIndex%2==1)
		{
			vivienda_requerido = true;
			continue;
		}*/

		if(!validar_select(elem)) correcto = false;
	});

	$$('#'+f.id+' .textarea').each(function(elem,i)
	{
		if(!validar_textarea(elem)) correcto = false;
	});

	$$('#'+f.id+' .cedula').each(function(elem,i)
	{
		if(!validar_cedula(elem)) correcto = false;
	});

	$$('#'+f.id+' .monto').each(function(elem,i)
	{
		if(!validar_monto(elem)) correcto = false;
	});

	$$('#'+f.id+' .radio').each(function(elem,i)
	{
		if(!validar_radio(elem)) correcto = false;
	});

	return correcto;
}

function validar_cc(f)
{
	var correcto = true;
	
	
	
	$$('#'+f.id+' .required').each(function(elem,i)
	{
		if(!validar_requerido(elem)) correcto = false;
	});

	$$('#'+f.id+' .requiredopt').each(function(elem,i)
	{
		if(!validar_requerido_opcional(elem)) correcto = false;
	});

	$$('#'+f.id+' .select').each(function(elem,i)
	{
		if(!validar_select(elem)) correcto = false;
	});

	$$('#'+f.id+' .ccorto').each(function(elem,i)
	{
		if(!validar_consejo_corto(elem)) correcto = false;
	});

	$$('#'+f.id+' .radio').each(function(elem,i)
	{
		if(!validar_radio(elem)) correcto = false;
	});

	$$('#'+f.id+' input').each(function(elem,i)
	{
		
		//alert(elem.id);
		
		if(elem.type=="radio" && !validar_radio(elem)) correcto = false;
	});
	
	
	
	
	if (($("rif_cooperativa").value!="") && ($("cuenta_cooperativa").value.length<20 ))
	{
		alert('Error en los datos de la cooperativa, el campo numero de cuenta debe tener los veinte d\u00edgitos');
		correcto = false;
		return false;
		
	}

	if(!correcto) alert('Debe rellenar los campos requeridos');

	return correcto && total_tipologia() && validar_coope() && validar_miembros() && verificar_miembros() && validar_responsables(f);
}

function validar_coope()
{
	if($("rif_cooperativa").value!="" && $("cuenta_cooperativa").value=="" || $("rif_cooperativa").value=="" && $("cuenta_cooperativa").value!="")
	{
		alert('Debe colocar un numero de RIF v\u00e1lido y/o el n\u00famero de cuenta correcto');

		return false
	}

	return true;
}

function validar_miembros()
{
	if($$('#quinto_voc input').length==0)
	{
		alert("Debe registrar voceros y voceras\n");
		return false;
	}

	if($$('#quinto_con input').length==0)
	{
		alert("Debe registrar contralores sociales\n");
		return false;
	}

	if($$('#quinto_ges input').length==0)
	{
		alert("Debe registrar gestores financieros\n");
		return false;
	}

	return true;
}

function validar_responsables()
{
	var ci= [], j= 0;

	$$('#quinto_ges input').each(function(elem,i)
	{
		if(elem.name.indexOf("cedulagestor")==0)
		{
			ci[j++]= elem.value;
		}
	});

	if($('cedula_responsable1').value==$('cedula_responsable2').value && $('cedula_responsable1').value=='' )
	{
		return true;
	}

	if(!ci.contains($('cedula_responsable1').value) || !ci.contains($('cedula_responsable2').value))
	{
		alert("Los responsables de la cuenta bancaria deben estar registrados como 'Gestores Financieros'");
		return false;
	}

	if($('cedula_responsable1').value==$('cedula_responsable2').value)
	{
		alert("Debe registrar 2 (dos) responsables diferentes");
		return false;
	}

	return true;
}

function total_tipologia()
{
	var x = document.forms[0];

	if(x.tipologia[0].checked)
	{
		if( parseInt(x.num_viviendas.value)!=(parseInt(x.numquinta.value)+parseInt(x.numrancho.value)+parseInt(x.numapartamento.value)+parseInt(x.numtradicional.value)+parseInt(x.numcconvencional.value)+parseInt(x.numcisocial.value)))
		{
			alert('El n\u00famero de viviendas no corresponde con suma de las viviendas por tipolog\u00eda');
			x.num_viviendas.focus();
			return false;
		}
	}

	return true;
}

function verificar_miembros()
{
	var cedula= [], i= 0;
	correcto= true;

	$$('#quinto_voc input').each(function(elem,i)
	{
		if(elem.name.indexOf("cedulavocero")==0)
		{
			if(cedula.contains(elem.value) && elem.value!='')
			{
				alert("Error: La c\u00e9dula '"+elem.value+"' del vocero se encuentra repetida.");
				elem.focus();
				correcto = false;
			}
			else
				cedula[i++]= elem.value;
		}
	});

	if(!correcto) return false;

	$$('#quinto_con input').each(function(elem,i)
	{
		if(elem.name.indexOf("cedulaunidad")==0)
		{
			if(cedula.contains(elem.value) && elem.value!='')
			{
				alert("Error: La c\u00e9dula '"+elem.value+"' del integrante de unidad se encuentra repetida.");
				elem.focus();
				correcto = false;
			}
			else
				cedula[i++]= elem.value;
		}
	});

	if(!correcto) return false;

	$$('#quinto_ges input').each(function(elem,i)
	{
		if(elem.name.indexOf("cedulagestor")==0)
		{
			if(cedula.contains(elem.value) && elem.value!='')
			{
				alert("Error: La c\u00e9dula '"+elem.value+"' del gestor financiero se encuentra repetida.");
				elem.focus();
				correcto = false;
			}
			else
				cedula[i++]= elem.value;
		}
	});

	return correcto;
}
