function habilitar(desencadenante, idGrupo, elementoInicio, elementoFinal) { //si desecadenante es null se deshabilitan elementos
	if(desencadenante!=null &&
	   ((desencadenante.type=='checkbox' && desencadenante.checked) ||
	   (desencadenante.type=='radio' && desencadenante.checked && desencadenante.value=='true'))) { //habilitar elementos
		for (i=elementoInicio; i<=elementoFinal; i++) {
			var elemento = document.getElementById(idGrupo + '-' + i);
			elemento.disabled=false;
			elemento.readOnly=false;
		} //for
	} else { //deshabilitar elementos
		for (i=elementoInicio; i<=elementoFinal; i++) {
			var elemento = document.getElementById(idGrupo + '-' + i);
			if(typeof(elemento)=='object') {
				if(elemento.type=='text') {
					elemento.value='';
					elemento.readOnly=true;
				} else if(elemento.type=='radio' || elemento.type=='checkbox') {
					elemento.checked=false;
					elemento.disabled=true;
				} //if-else if
			} //if
		} //for
	} //if-else
} //habilitar

function excluir(desencadenante, idGrupo, elementoInicio, elementoFinal) {
	if(desencadenante.type=='checkbox' && desencadenante.checked) {
		for (i=elementoInicio; i<=elementoFinal; i++) {
			var elemento = document.getElementById(idGrupo + '-' + i);
			if(elemento != desencadenante) elemento.checked=false;
		} //for
	} //if
} //excluir

function reiniciar(desencadenante, idGrupo, elementoInicio, elementoFinal) {
	if(desencadenante.type=='checkbox' && !desencadenante.checked) {
		for (i=elementoInicio; i<=elementoFinal; i++) {
			var elemento = document.getElementById(idGrupo + '-' + i);
			if(typeof(elemento)=='object' && elemento != desencadenante) {
				if(elemento.type=='text') {
					elemento.value='';
				} else if(elemento.type=='radio' || elemento.type=='checkbox') {
					elemento.checked=false;
				} //if-else if
			} //if
		} //for
	} //if
} //reiniciar

function validar_nif(nif) {
	var dni = nif.substring(0,nif.length-1);
	var letra_final = nif.charAt(nif.length-1);
	var cadena = "";
	var posicion = 0;
	var letra = "";
	
	if (!isNaN(letra_final)) return false;
	else {
	  cadena="TRWAGMYFPDXBNJZSQVHLCKET";
	  posicion = dni % 23;
	  letra = cadena.substring(posicion,posicion+1);
	  if (letra!=letra_final.toUpperCase()) return false;
	} //if-else
	
	return true;
} //validar_nif

function validar_cif(cif) {
	if(validar_nif(cif)) return true;
	var pares = 0;
	var impares = 0;
	var suma;
	var ultima;
	var unumero;
	var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I");
	var val;
	
	cif = cif.toUpperCase();
	
	var regular = new RegExp(/^[ABCDEFGHKLMNPQS]\d\d\d\d\d\d\d[0-9,A-J]$/g);
	if (!regular.exec(cif)) return false;
	
	ultima = cif.substr(8,1);
	for (var cont = 1 ; cont < 7 ; cont ++){
		val = (2 * parseInt(cif.substr(cont++,1))).toString() + "0";
		impares += parseInt(val.substr(0,1)) + parseInt(val.substr(1,1));
		pares += parseInt(cif.substr(cont,1));
	}
	val = (2 * parseInt(cif.substr(cont,1))).toString() + "0";
	impares += parseInt(val.substr(0,1)) + parseInt(val.substr(1,1));
	 
	suma = (pares + impares).toString();
	unumero = parseInt(suma.substr(suma.length - 1, 1));
	unumero = (10 - unumero).toString();
	if(unumero == 10) unumero = 0;
	
	if ((ultima == unumero) || (ultima == uletra[unumero])) return true;
	else return false;
}  //validar_cif

function validar_cp(cp) {
	var exp_reg_cp = new RegExp(/^\d{5}$/g);
	return exp_reg_cp.exec(cp);
}

function validar_email(email) {
	var exp_regular_email = new RegExp(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/g);
	return exp_regular_email.exec(email);
}
