function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

// Para mostrar/ocultar capas
function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}
//valida que los tipos de los campos definidos en un formulario como obligatorios tengan la información adecuada
function validaTipos(campos_obligatorios){
	var todoOk = true;
	var n;
	var tipo = "";
	for (var n = 0; n < campos_obligatorios.length; n++) {
		campo = campos_obligatorios[n];
		campos = campo.substring(2,campo.length);
		tipo = campo.substring(0,1);
		campoF = eval("document.forms[0]."+campo);
		todoOk = todoOk && tiposCampo(tipo,campoF);
	}
	return todoOk;
}   
//cambia las propiedades del boton
function cambiaBotonOver(id){
	id.style.color = "#59A4FB";	
}
function cambiaBoton(id){
	id.style.color =  "#033773";
}

function cambiaBotonOverPL(id){
	id.style.color = "#0871AB";	
}

function cambiaBotonPL(id){
	id.style.color =  "#054A70";
}
//cambia las propiedades del boton formato tabla
function cambiaBotonOver_t(id){
	id.style.border = "2px";
	id.style.borderColor = "#59A4FB";
	id.style.borderStyle = "ridge";
	id.style.color = "#59A4FB";	
}
function cambiaBotonDown(id){
	id.style.border = "1px";
	id.style.borderColor = "#59A4FB";
	id.style.borderStyle = "ridge";
	id.style.color = "#59A4FB";	
}
function cambiaBoton_t(id){
	id.style.border = "2px";
	id.style.borderColor = "#033773";
	id.style.borderStyle = "ridge";
	id.style.color =  "#033773";
}
function tiposCampo(tipo,campoF){
	var todoBien = true;
	switch (tipo) {
		case "a":{
			//alfanumérico
			break;
		}
		case "n":{
			//número entero
			if (!fEsEntero(campoF)){
				if (unaVez) 
				//msgError2+="\n    - El campo "+campos+" no contiene un número.";
				fijarAtencion(campoF);
				todoBien = false;				
			}
			break;
		}
		case "r":{
			//número real
			if (!fEsReal(campoF)){
				//msgError2+="\n    - El campo "+campos+" no contiene un número decimal.";
				fijarAtencion(campoF);
				todoBien = false;				
			}
			break;
		}
		case "f":{
			//fecha
			if (!fEsFecha(campoF)){
				//msgError2+="\n    - El campo "+campos+" no contiene una fecha correcta.";
				fijarAtencion(campoF);
				todoBien = false;				
			}
			break;				
		}
		case "s":{
			//texto - sólo letras
			if (!validaLetras(campoF)){
				//msgError2+="\n    - El campo "+campos+" no contiene sólo letras.";
				fijarAtencion(campoF);
				todoBien = false;				
			}
			break;			
		}
		case "e":{
			//email
			if (!fValidarEmail(campoF)){
				//msgError2+="\n    - El campo "+campos+" no contiene un formato de email correcto.";
				fijarAtencion(campoF);
				todoBien = false;				
			}
			break;
		}
		case "t":{
			//teléfono
			if (!fEsTelefonoValido(campoF)){
				//msgError2+="\n    - El campo "+campos+" no contiene un teléfono correcto.";
				fijarAtencion(campoF);
				todoBien = false;				
			}
			break;
		}
		case "m":{
			//matrícula
			break;
		}
		/*case "d":{
			//dni - cif - nif -...
			if (!fEsDNI(campoF)){
				//msgError2+="\n    - El campo "+campos+" no contiene un documento correcto.";
				fijarAtencion(campoF);
				todoBien = false;				
			}
			break;
		}*/
		case "c":{
			//código postal, número entero mayor-igual de 5 posiciones.
			if (fEsEntero(campoF)){
				if (campoF.value.length<5){
					//msgError2+="\n    - El campo "+campos+" no contiene un código postal correcto.";
					fijarAtencion(campoF);
					todoBien = false;
				}
			}else{
				//msgError2+="\n    - El campo "+campos+" no contiene un código postal correcto.";
				fijarAtencion(campoF);
				todoBien = false;
			}
			break;
		}
		case "l":{
			//listas-combos.
			break;
		}
	}	
	return todoBien;
}
//valida que se haya insertado información en los campos obligatorios
function validar_obligatorios(formulario, campos_obligatorios) {
	var todoOk = true;
	var validar = true;
	var numeroCamposVacios = 0;
	if (campos_obligatorios.length>0){
		for (var n = 0; n < campos_obligatorios.length; n++) {
			campo = campos_obligatorios[n];
			if (!obtenerValor(formulario, campo)){
				fijarAtencion(formulario.elements[campo]);
				numeroCamposVacios++;
			}
		}
		if (numeroCamposVacios == campos_obligatorios.length){
			validar = false;
			msgError+="\n (No se han introducido datos).";
		}
	}
	if (validar){
		for (var n = 0; n < campos_obligatorios.length; n++) {
			campo = campos_obligatorios[n];
			campos = campo.substring(2,campo.length);
			if (!obtenerValor(formulario, campo)) {
				fijarAtencion(formulario.elements[campo]);
				todoOk = false;
			}
		}
		if (!todoOk){
			msgError+="\n (Faltan por introducir los campos mostrados en amarillo).";
		}
	}else todoOk=false;
	return todoOk;
}
//comprueba que se haya insertado la información necesaria para cada uno de los tipos de objetos de HTML
function obtenerValor(formulario, campo) {
	var s
	if (input = formulario.elements[campo]) {
		if (input.type == undefined)
			tipo = formulario.elements[campo][0].type
		else
			tipo = input.type
		switch (tipo) {
			case "text": 	 
			case "password":
			case "textarea": 
			case "hidden":	return input.value;
					break;
			case "checkbox":if (input.checked)
						return input.value;
					break;
			case "radio":	if (input.length) {
						for (s = 0; s < input.length; s++) {
							if (input[s].checked) {
								return input[s].value
							}
						}
					} else {
						return input.value
					}
					break;
			case "select-one":	if (input.options[input.selectedIndex].value!="ignorar")
							return input.options[input.selectedIndex].value;
						else 	return;
						break;
			default: 	return false
		}
	} else {
		return false
	}
}

function hover(tab){
//	tab.style.backgroundColor = '#FFFFFF';
	tab.style.color = '#FFFF00';
}
function activo(tab,num){
	if (currentPanel != num) hover(tab);
}
function setState(tabNum){
	document.getElementById('tab'+tabNum).style.color = '#FFFFFF';
}
function desactivo(num){
	if (currentPanel != num) setState(num);
}
function atencionOblg(campo){
	campo.style.backgroundColor = '#AAF7AA';
}
function fijaObligatorios(formulario, campos_obligatorios) {
	for (var n = 0; n < campos_obligatorios.length; n++) {
		campo = campos_obligatorios[n];
		atencionOblg(formulario.elements[campo]);
		campoObl = campo+"Obl";
		if (eval("document.getElementById('"+campoObl+"')"))
			eval("document.getElementById('"+campoObl+"').style.visibility = 'visible'");
	}
}
function habilitar(formulario, campoPaso, campoHabil){
	if (GetSelectValue(eval("document."+formulario+".tipoDocumento"))!="ignorar")
		eval("document."+formulario+"."+campoHabil+".disabled=false");

}
function saltaCampo(campoI, campoF, tam){
	if (campoI.value.length==tam) campoF.focus();	
}
function quitaAtencion(formulario) {
	myName = formulario.elements;
	for (var n=0, j=formulario.elements.length; n<j; n++) {
		quitarAtencion(myName[n]);
		campoObl = myName[n].name+"Obl";
		if (eval("document.getElementById('"+campoObl+"')")){
			eval("document.getElementById('"+campoObl+"').style.visibility = 'hidden'");
		}
	}
}
function cargaLoad(){
	fijaObligatorios(document.forms[0],obligatorios);
}
function validarDatos(obligatorios){
	var formulario;
 	var form = "";
 	var todoOk = true;
 	var todoOkOblig = true;
 	var todoOkTipos = true;
 	var erroresValidados = "";
	msgError 		= 'Error en los campos obligatorios:';
	msgError2 		= 'Los siguientes datos mostrados en amarillo son incorrectos';
	msgErrorGeneral = '';
 	formulario = document.forms[0];
	document.forms[0].tdparticular.style.backgroundColor = '#FFFFFF';
	document.forms[0].tdtrabajo.style.backgroundColor = '#FFFFFF';
	document.forms[0].tdmovil.style.backgroundColor = '#FFFFFF';
	document.forms[0].edparticular.style.backgroundColor = '#FFFFFF';
	document.forms[0].edtrabajo.style.backgroundColor = '#FFFFFF';

    fijaObligatorios(document.forms[0],obligatorios);  
    if(!validar_obligatorios(formulario, obligatorios)){                                     
        todoOkOblig = false;
    }
	if (todoOkOblig){
		if(!validaTipos(obligatorios)){
    		//validaciones de los tipos de los campos obligatorios
    		todoOkTipos = false;
    	}
	}else msgErrorGeneral +=msgError;
	if (!todoOkTipos) msgErrorGeneral +=msgError2;
	if (todoOkTipos&todoOkOblig){
    	//teléfono del titular
		if( !fNoEsNulo(document.forms[0].tdparticular.value) & !fNoEsNulo(document.forms[0].tdtrabajo.value) & !fNoEsNulo(document.forms[0].tdmovil.value)){
			erroresValidados+="\n    - Debe indicar al menos uno de los teléfonos.";
			fijarAtencion(document.forms[0].tdparticular);
			fijarAtencion(document.forms[0].tdtrabajo);
			fijarAtencion(document.forms[0].tdmovil);
			todoOk = false;					
		}else{
			if( fNoEsNulo(document.forms[0].tdparticular.value)){
				if (!fEsTelefonoFijoValido(document.forms[0].tdparticular.value)){
					erroresValidados+="\n    - El teléfono particular no tiene el formato correcto.";
					fijarAtencion(document.forms[0].tdparticular);
					todoOk = false;	
				}
			}
			if( fNoEsNulo(document.forms[0].tdmovil.value)){
				if (!fEsTelefonoMovilValido(document.forms[0].tdmovil.value)){
					erroresValidados+="\n    - El teléfono móvil no tiene el formato correcto.";
					fijarAtencion(document.forms[0].tdmovil);
					todoOk = false;	
				}
			}
			if( fNoEsNulo(document.forms[0].tdtrabajo.value)){
				if (!fEsTelefonoFijoValido(document.forms[0].tdtrabajo.value)&&!fEsTelefonoMovilValido(document.forms[0].tdtrabajo.value)){
					erroresValidados+="\n    - El teléfono del trabajo no tiene el formato correcto.";
					fijarAtencion(document.forms[0].tdtrabajo);
					todoOk = false;	
				}
			}
		}
		if( !fNoEsNulo(document.forms[0].edparticular.value) & !fNoEsNulo(document.forms[0].edtrabajo.value) ){
			erroresValidados+="\n    - Debe indicar al menos uno de los emails.";
			fijarAtencion(document.forms[0].edparticular);
			fijarAtencion(document.forms[0].edtrabajo);
			todoOk = false;					
		}else{
			if( fNoEsNulo(document.forms[0].edparticular.value)){
				if (!fValidarEmail(document.forms[0].edparticular)){
					erroresValidados+="\n    - El email particular no tiene el formato correcto.";
					fijarAtencion(document.forms[0].edparticular);
					todoOk = false;	
				}
			}
			if( fNoEsNulo(document.forms[0].edtrabajo.value)){
				if (!fValidarEmail(document.forms[0].edtrabajo)){
					erroresValidados+="\n    - El email del trabajo no tiene el formato correcto.";
					fijarAtencion(document.forms[0].edtrabajo);
					todoOk = false;	
				}
			}
		}
		if (!todoOk) msgErrorGeneral = msgError3 + erroresValidados;
	}
	return todoOk&todoOkOblig&todoOkTipos;
}
