//valida si la longitud de un textarea supera el maximo e indica el numero de letras actuales
//maxLength es el maximo permitido, textarea es del area de texto y label un componente donde se pueda escribir
//cuando llegamos a 5 caracteres para el final el contador se pone rojo
function checkLength(maxLength,textarea,label){
	if (textarea.value.length > maxLength)
	{
		alert('Imposible escribir más. Ha alcanzado el límite permitido');
		textarea.value=textarea.value.substring(0,maxLength);
		
	} else if ((maxLength - textarea.value.length) <= 5) {
		label.style.color="red";
	} else{
		label.style.color="green";
	}
	label.value = maxLength - textarea.value.length;
}
//Busca el primer padre que corresponda a nombre de etiqueta indicado del nodo pasado
function getTagParent(node,tagName){
	var parent = node;
	do{
		parent = parent.parentNode;
	}while(parent && (parent.tagName != tagName));//hasta que no haya mas padres o hallemos el que queremos
	return parent;
}
//valida los campos de la encuesta independientemente de los campos que haya
function validaEncuesta(form){
	
	var radioGroupName=""; //sirve para no verificar los radios mas de una vez
	var fallo = 0;//suponemos que no ha fallado ninguna pregunta
	 
	for (i=0; i< form.elements.length;i++){//asi recorremos todos los elementos
		if ((form.elements[i].type != "hidden") && (form.elements[i].type != "submit")){
			ok = false; 
			
			if (form.elements[i].name.charAt(0)=='!'){//el campo no es obligatorio
				ok = true; //no hay fallo porque todo esta bien
			}else
			if ((form.elements[i].type == "radio") && 
				(form.elements[i].name != radioGroupName ))
			{
				radioGroupName = form.elements[i].name; //tomamos el nombre para verificarlo solo una vez
				//hay que buscar todos los radio del mismo nombre y verificar si alguno esta pulsado
				grupoRadio = document.getElementsByName(form.elements[i].name);
				
				j = 0;
				while (j < grupoRadio.length && !ok){//mientras no encuentre el final o alguno marcado sigo
					ok = ok || grupoRadio[j++].checked;
				}
			}else if ((form.elements[i].type == "text") 
						|| (form.elements[i].type == "textarea") 
						|| (form.elements[i].type == "password"))
				{
					if (form.elements[i].value == "") //no ha escrito nada
						ok = false;
					else 
						ok = true;
				}
			else ok = true; //si no coincide con nada todo esta bien :-)
			if (!ok) {//hay un fallo
				fallo++;
				//ponemos la pestaña en rojo
				if (padre = getTagParent(form.elements[i],"DIV"))
					document.getElementById("but_"+padre.id).style.background="red";
				//ponemos su fila en rojo (el problema es que al marcarla no se quita el rojo)
				if (padre = getTagParent(form.elements[i],"TR"))
					padre.style.background="red";
			}
		}
	}
	if (fallo>0)
		alert(fallo+" campos obligatorios están sin marcar.\nPor favor, revise sus respuestas");
	return (fallo==0); //si fallo es 0 es que no se ha equivocado
}
