
// PRECARGAR IMAGENES Y HACER ROLLOVERS

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

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.0
  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 && document.getElementById) x=document.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];}
}

function MM_nbGroup(event, grpName) { //v3.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : args[i+1];
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == "down") {
    if ((nbArr = document[grpName]) != null)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = args[i+1];
      nbArr[nbArr.length] = img;
  } }
}

function MM_changeProp(objName,x,theProp,theValue) { //v3.0
  var obj = MM_findObj(objName);
  if (obj && (theProp.indexOf("style.")==-1 || obj.style)) eval("obj."+theProp+"='"+theValue+"'");
}

function MM_showHideLayers() { //v3.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; }
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}


function mostrar(capa){
		  document.getElementById(capa).style.display="block";
}

function ocultar(capa){
		  document.getElementById(capa).style.display="none";
}

function cambia(capa){
	      actual=document.getElementById(capa).style.display;
		  if (actual=="block")
		     ocultar(capa);
    	  else
		     mostrar(capa);
}


function letraDNI(n){
	var d =(n/23)
	d = Math.floor(d);
	var e=d*23
	var r=n-e
	if (r==0)
		return "T"
	if (r==1)
		return "R"
	if (r==2)
		return "W"
	if (r==3)
		return "A"
	if (r==4)
		return "G"
	if (r==5)
		return "M"
	if (r==6)
		return "Y"
	if (r==7)
		return "F"
	if (r==8)
		return "P"
	if (r==9)
		return "D"
	if (r==10)
		return "X"
	if (r==11)
		return "B"
	if (r==12)
		return "N"
	if (r==13)
		return "J"
	if (r==14)
		return "Z"
	if (r==15)
		return "S"
	if (r==16)
		return "Q"
	if (r==17)
		return "V"
	if (r==18)
		return "H"
	if (r==19)
		return "L"
	if (r==20)
		return "C"
	if (r==21)
		return "K"
	if (r==22)
		return "E"
}  

//-----------------------------------------------------------------------------------------------------------------------/
// COMPRUEBA QUE LA LETRA DEL NIF ES CORRECTA

function compruebaNIF(nif)
  {
    var error=false;
    if(nif.length==0)				//por ahora NIF es opcional
   		return(false);
		
     if (nif.length!=9) 
     {
       error=true;
     }
     else 
	 {
    		var letras=0;
			var p;

		    for (var i=0; i<nif.length; i++) 
		    {
      			var ch = nif.substring (i, i+1);
      			if ( (ch < "0" || ch > "9") && (ch < "a" || ch > "z") && (ch < "A" || ch > "Z") )
       		        error=true;

			    if ( (ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z") )
			    {
			        if (i==0) p=1;
					if (i==nif.length-1) p=0;
					letras++;

					if(i>0 && i<(nif.length-1))
			           error=true;

  				   letra=ch;
      			}  
    	   }
		   
		   if (letras!=1)
	          error=true;

		   var dni="";

		   if (p==1) 
		   {
			 dni=nif.substring(1,9);
    		 dni=letraDNI(dni)+dni;
		   }
		   else
		   {
			 dni=nif.substring(0,8);	
			 dni=dni+letraDNI(dni);
		   }
	      
		   if (nif.toUpperCase()!=dni)
		   {
             error=true;
	       }
    }
	
	if (error)
		return(false);
		
	return true;	
 }

//-----------------------------------------------------------------------------------------------------------------------/
// COMPRUEBA EL CIF ES CORRECTO


function compruebaCIF(txt)
{ 
		if(txt.length==0)				//por ahora CIF es opcional
   		return(false);
		var error=false;
        var Suma,Control;
        var n;
        var cif=""; 
        cif=txt.toUpperCase(); 
		   	
        var i=cif.length;
		if (i!=9) 
			error=true;
        
				//Si empieza por una X, es especial para extranjeros y lo tratamos como un nif,
				//sustituyendo la X por un cero.
		if (cif.charAt(0)=='X')
			  return(compruebaNIF('0'+cif.substr(1)));	//ya no hay que comprobar nada más
		
		
		for (j=1;j<i-1;j++) //comprueba que los 7 dígitos inermedios del CIF sean números 0-9
        {
          var c = txt.charAt(j);
		  if (c < "0" || c > "9")
		  { 
		  	error=true;
			j=i-1;
		  }
        }
		
		if(!error)
		{	       	
			//La letra inicial debe ser una de las posibles
			var posibles="ABCDEFGHKLMPQSX";
			var letra = cif.charAt(0);  
					//(ya sean 1 carácter al inicio y el resto numérico o 1 carácter al ppio, otro al final y el resto numérico)
			if (posibles.indexOf(letra)==-1) error=true;

					//suma de los dígitos pares de los 7 intermedios
			Suma= eval(cif.charAt(2))+eval(cif.charAt(4))+eval(cif.charAt(6)); 
					
			for (n=1;n<8;n=n+2) //operamos con los 7 dígitos intermedios
					Suma=Suma+((2*eval(cif.charAt(n)))%10)+(Math.floor((2*eval(cif.charAt(n)))/10)); 
	

			if(!error)  //ai error vale false
			{
				var posibles2= "SP"   					//Estan reservados para entidades estatales los CIF que empiecen por S o P.
				var control="JABCDEFGHI";
				if (posibles2.indexOf(letra)==-1) //no se trata de una entidad estatal
				{ 
						//tratamiento del dígilto de control
						if (isNaN(cif.charAt(8)))  //dígito de control es una letra
						{
							if (cif.charAt(8) != String.fromCharCode(64+(10-(Suma%10)))) 
									error=true;
						}

						if ((Suma%10) ==0 ) 
						{
							if (parseInt(cif.charAt(8)) != (Suma%10) && cif.charAt(8)!=control.indexOf(8)) 
								error=true;
						}
						else
						{
							if (parseInt(cif.charAt(8)) != (10 - (Suma%10))&& cif.charAt(8)==control.indexOf(8)) 
								error=true;
						}
				}	
				else    
			   {
					//Control tipo letra en los casos especiales (comienzo en S o P)
					if (cif.charAt(8) != String.fromCharCode(64+(10-(Suma%10)))) 
						error=true;
				} 
				if(!error)
					return true;
				else
					return false;
			}
			else
				return false;
		}				   
		else
			return false;
	             
     
}

//-----------------------------------------------------------------------------------------------------------------------/
// COMPRUEBA EL DNI/NIF/CIF

function IDFiscal(txt)
{
	 var conf=false;
	 conf=compruebaNIF(txt);
	 
	 if (!conf)
		 conf=compruebaCIF(txt);
	 
	if (!conf){
		alert("El número o código de identificación introducido no es correcto.");
		document.form1.dni.value="";
		}
}

// PONER PUNTOS DE SEPARACION DE MILES

function puntos(number)
{
	numberstring =""
	var j=0 
	var i=0
	while (number >= 1)
	 { 

	    numberstring = (Math.round(number-0.5) % 10) + numberstring
	    number= number / 10
	    j++
	    if (number >= 1 && j==3) { 
			numberstring = "." + numberstring 
			j=0}
	    i++
	 }

	 numberstring=numberstring;
return (numberstring);
}

function entera(texto){

    var texto2=""
	var x=texto.indexOf(",")
    if (x==-1)
		x=texto.indexOf(".");
    if (x==-1)		
	    texto2=texto;
	else {
     	for(i=0;i<x;i++)
	      texto2=texto2+texto.charAt(i);  
	    }
	return (texto2);
}

function decimal(texto){

    var texto2=""
	var x=texto.indexOf(",")
	var y=texto.length
    if (x==-1)
		x=texto.indexOf(".");
    if (x==-1)		
		    texto2="";
	else {
	   if (x+3>y)
	   	var z=y;
	   else
	    var z=x+3;
	   for(i=x+1;i<z;i++)
		   texto2=texto2+texto.charAt(i);  
	   }
	return (texto2);
}

function puntoseuros (texto){

	var tentera=entera(texto);
	var tdecimal=decimal(texto);
	var resultado=puntos(tentera);
	if (tdecimal!="")
		resultado=resultado+","+tdecimal;
	return (resultado);
}

function puntocoma (numero){

	var resul=""
	var x=numero.indexOf(".")
	var y=numero.length
    if (x==-1)
	    resul=numero;
	else {
		for(i=0;i<x;i++)
		   resul=resul+numero.charAt(i); 
		resul=resul+",";
 		for(i=x+1;i<y;i++)
		   resul=resul+numero.charAt(i); 
	}
	return resul;	
}

function comapunto (numero){

	var resul=""
	var x=numero.indexOf(",")
	var y=numero.length
    if (x==-1)
	    resul=numero;
	else {
		for(i=0;i<x;i++)
		   resul=resul+numero.charAt(i); 
		resul=resul+".";
 		for(i=x+1;i<y;i++)
		   resul=resul+numero.charAt(i); 
	}
	return resul;	
}

// PARAR UNA ANIMACION

   function parar(animacion){
      document.getElementById(animacion).src="/haciendayadministracionpublica/ov/estilos/images/iconos/"+animacion+"_stop.gif";
   }
