
//FUNCIONES JAVASCRIPT

//seguridad:
//si no tiene cookie de permiso se manda a página acceso denegado
//tipo=getCookie("TipoUsu");
//if (!tipo>=1)
//	window.top.location.href="NoAcceso.htm";
	
var colorDes='#faeeee';
	
window.focus();	

function jsCambiaFamilia()
{ 
  for (i = document.getElementById('txtSubfamilia').length - 1; i>=0; i--)
  document.getElementById('txtSubfamilia').remove(i);
  
  var oOption = document.createElement('OPTION');
   document.all.txtSubfamilia.options.add(oOption,1);			
  oOption.innerText = "Cargando ...";
  oOption.value = "";      
  
  top.document.all.frameExterno.src = "00externo.php?boton=cambiarFamilia&familia=" + top.document.all.txtFamilia.value;
}
	
function nocontextmenu() 
{ 
	//return;

	event.cancelBubble = true 
	event.returnValue = false; 

	return false; 
} 

function norightclick(e) 
{ 
	//return;

  if (window.Event) 
	{ 
		if (e.which == 2 || e.which == 3)
		alert(message); 
		return false; 
	} 
	else 
		if (event.button == 2 || event.button == 3) 
		{ 
			event.cancelBubble = true 
			event.returnValue = false;
			alert(message);
			return false; 
		} 
} 

if (document.layers)
{ 
	document.captureEvents(Event.MOUSEDOWN); 
} 


//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

	//cambia el color de fondo de los input
	function fauxHover() 
	{     
     var inputs = document.getElementsByTagName('input'); 
     for (var i=0; i<inputs.length; i++) 
		 { 
        inputs[i].onmouseover = function() { this.className = 'hovered' } 
        inputs[i].onmouseout = function() { this.className = '' } 
     } 
      
     var fieldsets = document.getElementsByTagName('fieldset'); 
     for (var i=0; i<fieldsets.length; i++) 
		 { 
        fieldsets[i].onmouseover = function() { this.className = 'hovered' } 
        fieldsets[i].onmouseout = function() { this.className = '' } 
     }     
  }
	
	function controlVisible(obj, vis)
	//hace un control visible o invisible
	//parametros: thiObj=control ; vis=true/false
	{
		if (vis)
  		vis = "visible";
    else
  	 vis = "hidden";
	
// 	  theObj = eval("document.all." + theObj);
	  obj.style.visibility = vis;
	}

	function getCookie(NameOfCookie)
	{

		if (document.cookie.length > 0) 
		{ 

			begin = document.cookie.indexOf(NameOfCookie+"="); 
			if (begin != -1) 
			{ 
			begin += NameOfCookie.length+1; 
			end = document.cookie.indexOf(";", begin);
			if (end == -1) end = document.cookie.length;
			return unescape(document.cookie.substring(begin, end)); 
			} 
		}
	}

	function setCookie(NameOfCookie, value, expiredays) 
	{
		var ExpireDate = new Date ();
		ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));

		document.cookie = NameOfCookie + "=" + escape(value) + 
		((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString());
	}

	function delCookie (NameOfCookie) 
	{
		//modo2
		var date = new Date();
		date.setTime(date.getTime()-1*24*60*60*1000);
		document.cookie = NameOfCookie + "='';expires=" + date.toGMTString(); 
	}
	
	

	function abrirFormSel(formulario,nombreForm)
	//abre un formulario de solo selección
	{
		if (nombreForm==null)
			nombreForm="";
	
    window.open(formulario,nombreForm,"toolbar=0,scrollbars=1,resizable=1,width=550,height=450,left=100,top=100");    
	}

	function abrirForm(formulario,nombreForm,params,tama1,tama2,scroll)
	{
    var iLen = String(formulario).length;
		var w,h;
		if ((tama1==''||tama1==null) && (tama2==''||tama2==null)) 
		{
  		w = 750;
  		h = 530;
		}
		else
		{
  		w = tama1;
  		h = tama2;
		}
		
		if (params==''||params==null)
    {  			
  		var nleft = (screen.width - w) / 2;
    	var ntop = (screen.height - h) / 2;
    	var params = "toolbar=0,location=0,statusbar=0,menubar=0,resizable=1,width=" + w + ",height=" + h + ",left=" + nleft + ",top =" + ntop;
		}
		 
		if (scroll==''||scroll==null)
      params+=",scrollbars=1";
		else
  		params+=",scrollbars=0";
		
		if (String(formulario).substring(iLen, iLen - 4)=='.pdf')
			return window.open(formulario,nombreForm,'menubar=0,resizable=1,scrollbars=1,status=0,titlebar=0,toolbar=0');
		else
   		return window.open(formulario,nombreForm,params);
	}

	function abrirFormExterno(formulario,nombreForm,params)
	//abre un formulario 
	{
		params=paramVentana("OCU");
    window.open(formulario,nombreForm,params);
	}
    
  function setPointer()
  {
  	if (document.all)
      for (var i=0;i < document.all.length; i++)
      	document.all(i).style.cursor = 'wait';
  }
  
  function resetPointer()
  {
  	if (document.all)
      for (var i=0;i < document.all.length; i++)
       	document.all(i).style.cursor = 'default';
  } 
  
	function alert2(cabecera,mensaje,icono,defbut,mods)
	{
			//botones si y no
      botones=4
  
      icono = (icono==0) ? 0 : 2;
      defbut = (defbut==0) ? 0 : 1;
      retVal = makeMsgBox(cabecera,mensaje,icono,botones,defbut,mods);
      retVal = (retVal==6);

  		return retVal;
	}

	function alert3(cabecera,mensaje,introDefecto)
	{
	  retVal = makeInputBox(cabecera,mensaje,introDefecto);
  	return retVal;
	}

	function alert4(cabecera,mensaje,icono,botonDefecto,mods)
	{
      //botones si, no y cancelar
      botones=3
      //boton por defecto el dos
      botonDefecto=(botonDefecto==null) ? 2:botonDefecto;
        
      icono = (icono==0) ? 0 : 2;
      
      retVal = makeMsgBox(cabecera,mensaje,icono,botones,botonDefecto,mods);
      if (retVal==6)
      	retVal="S";
      else if (retVal==7)
      	retVal="N";
      else if (retVal==2)
      	retVal="C";

  		return retVal;
	}

	function alert5(cabecera,mensaje,icono,defbut,mods)
	{
			//botones si y no
      botones=0
  
      icono = (icono==0) ? 0 : 4;
      defbut = (defbut==0) ? 0 : 1;
      retVal = makeMsgBox(cabecera,mensaje,icono,botones,defbut,mods);
      retVal = (retVal==6);

  		return retVal;
	}

  
	function paramVentana(tipo)
	//devuelve parametros de configuración genéricos para una ventana
  {	
	  var resp="";
    var ancho,alto,izq,arriba;
				
	  if (tipo=="OCU") //ventana oculta solo para operaciones internas
		  resp= "toolbar=0,scrollbars=1,resizable=1,height=30,width=400,left=2000,top=2000";
	  else if (tipo=="GRA") //ventana grande
		{
		  ancho=790;//screen.width-10;
			alto=590;//screen.height;
			izq=0;//(screen.width/2)-(ancho/2)
			arriba=0;//(screen.height/2)-(alto/2)
			resp= "toolbar=0,scrollbars=1,resizable=1,height="+alto+",width="+ancho+",left="+izq+",top="+arriba;
		}	
		
		return resp;
  }
  
  function abrirFormExternoSubmit(nombreFormOrigen,actionDestino,targetDestino)
  {      
    //guardamos target,action, y variable boton anterior
    var targetAnt=eval(nombreFormOrigen).target;
    var actionAnt=eval(nombreFormOrigen).action;
    try
    {
	    var botonAnt=eval(nombreFormOrigen).boton.value;
  	  //ponemos algo a botón para que el submit no nos eche para atras
    	eval(nombreFormOrigen).boton.value="-";
    }
    catch(er){}
    //establecemos target y action destino
    eval(nombreFormOrigen).target=targetDestino;
    eval(nombreFormOrigen).action=actionDestino;
    //llamamos antes para que la ventana se ajuste
    window.open(actionDestino,targetDestino,paramVentana("OCU"));
		//llamamos a destino 
    eval(nombreFormOrigen).submit();
    //dejamos todo como estaba
    try
    {
    	eval(nombreFormOrigen).boton.value=botonAnt;
    }
    catch(er){}
    eval(nombreFormOrigen).target=targetAnt;
    eval(nombreFormOrigen).action=actionAnt;
	}

	function carta(boton,codigoOrigen)
	//para escribir una carta desde un origen determinado pasando como parametros la orden o botón seleccionado
  //osea por ejemplo CartaCliente y el codigoorigen que seria el nif del cliente en este caso
  {
    if (boton=="CartaSiniestro") 
    {
    	tipoOrigen="SINIESTRO";    
   		abrirForm("08e.htm?boton2="+boton+"&Codigo="+codigoOrigen,"carta","toolbar=0,scrollbars=1,resizable=1");
		}
    else if (boton=="CartaMailing") 
    {
    	tipoOrigen="MAILING";    
   		abrirForm("08e.htm?boton2="+boton+"&Codigo="+codigoOrigen,"carta","toolbar=0,scrollbars=1,resizable=1");
		}
    else
    {
			var cabExtra="";

      if (boton=="CartaCliente")
      	tipoOrigen="CLIENTE"
      else if (boton=="CartaColaborador")
      	tipoOrigen="COLABORADOR";    
      else if (boton=="CartaTomadorPol")
			{
      	tipoOrigen="POLIZA";
        cabExtra=" - Carta a tomador de póliza";    
      }
      else if (boton=="CartaTomadorRecibo")
			{
      	tipoOrigen="RECIBO";    
        cabExtra=" - Carta desde recibo";    
      }
      
//   	  var resp= alert4("Cuestión"+cabExtra,"¿Desea crear nueva carta?, si su respuesta no es afirmativa se mostrarán las ya enviadas");
var resp="S";
      if (resp=="S")
    		abrirForm("08eIni.php?boton2="+boton+"&Codigo="+codigoOrigen,"carta","toolbar=0,scrollbars=1,resizable=1");    
   		else if (resp=="N")
       	window.open("cartaSaliente.php?boton=todoParametro&txtTipoOrigen="+tipoOrigen+"&txtCodigo="+codigoOrigen,"cartasaliente","toolbar=0,scrollbars=1,resizable=1,width=550,height=450,left=100,top=100");
		}
  }

  function cerosLeft(numero,longitud)
  {
	//recibe un numero y una longitud y devuelve una cadena
   //con esa longitud añadiendo ceros a la izquierda
   var resp="0";
   for (var n=1;n<longitud;n++)
     resp+="0";
   
   resp+=numero;
   resp=resp.substring(resp.length-longitud,resp.length);
	return resp;
  
  }

  function dia()
  //devuelve fecha actual formato dia mes año
  {
    var fechaActual=new Date();

    var dia = cerosLeft(fechaActual.getDate(),2); 	
		var mes = cerosLeft(parseInt(fechaActual.getMonth()) + 1,2); 
		var ano = fechaActual.getFullYear(); 

		var fecha=dia + "-" + mes + "-" + ano; 

    return fecha;
  }
  
    function anyoBisiesto(anyo)
    {
        /**
        * si el año introducido es de dos cifras lo pasamos al periodo de 1900. Ejemplo: 25 > 1925
        */
        if (anyo < 100)
            var fin = anyo + 1900;
        else
            var fin = anyo ;

        /*
        * primera condicion: si el resto de dividir el año entre 4 no es cero > el año no es bisiesto
        * es decir, obtenemos año modulo 4, teniendo que cumplirse anyo mod(4)=0 para bisiesto
        */
        if (fin % 4 != 0)
            return false;
        else
        {
            if (fin % 100 == 0)
            {
                /**
                * si el año es divisible por 4 y por 100 y divisible por 400 > es bisiesto
                */
                if (fin % 400 == 0)
                {
                    return true;
                }
                /**
                * si es divisible por 4 y por 100 pero no lo es por 400 > no es bisiesto
                */
                else
                {
                    return false;
                }
            }
            /**
            * si es divisible por 4 y no es divisible por 100 > el año es bisiesto
            */
            else
            {
                return true;
            }
        }
    }
    
    /**
    * funcion principal de validacion de la fecha
    * argumento fecha > cadena de texto de la fecha introducida por el usuario
    */
    
function separaFecha(fecha,DMA)
//recibe una fecha y lo que se quiere devolver: dia mes o año de la misma
//DMA puede ser D, M  o  A
{
  if (fecha.length==8) //si es formato sin espacios
  {
	  var dia=fecha.substring(0,2);
		var mes=fecha.substring(2,4);
		var ano=fecha.substring(4,8);  
  }
	else
	{
	  var dia=fecha.substring(0,2);
		var mes=fecha.substring(3,5);
		var ano=fecha.substring(6,10);  
  }
      
  if (DMA=="D")  	
	  return dia;
  else if (DMA=="M")
	  return mes;  
  else if (DMA=="A")   
    return ano;
}
    
    
    
    function validarFecha(fecha)
    {
       /**
       * obtenemos la fecha introducida y la separamos en dia, mes y año
       */
       
       /*
       a=fecha;
       dia=a.split("/")[0];
       mes=a.split("/")[1];
       anyo=a.split("/")[2];
       */

       //la fecha no debe contener mas de 10 caracteres
       if (fecha.length>10)
       	return false;
       
       var dia=separaFecha(fecha,"D");
       var mes=separaFecha(fecha,"M");
       var anyo=separaFecha(fecha,"A");
       
       //comprobamos que no sea un número ninguno de los valores
       if ( (isNaN(dia))||(isNaN(mes))||(isNaN(anyo)) )        	
	       return false
       
       //comprobamos si es año bisiesto
       if(anyoBisiesto(anyo))
           var febrero=29;
       else
           var febrero=28;
				
       /**
       * si el mes introducido es negativo, 0 o mayor que 12 > alertamos y detenemos ejecucion
       */
       if ((mes<1) || (mes>12))
       {
           //alert("El mes introducido no es valido. Por favor, introduzca un mes correcto");
           return false;
       }
       /**
       * si el mes introducido es febrero y el dia es mayor que el correspondiente 
       * al año introducido > alertamos y detenemos ejecucion
       */
       if ((mes==2) && ((dia<1) || (dia>febrero)))
       {
           //alert("El dia introducido no es valido. Por favor, introduzca un dia correcto");
           return false;         
       }
       /**
       * si el mes introducido es de 31 dias y el dia introducido es mayor de 31 > alertamos y detenemos ejecucion
       */
       if (((mes==1) || (mes==3) || (mes==5) || (mes==7) || (mes==8) || (mes==10) || (mes==12)) && ((dia<1) || (dia>31)))
       {
           //alert("El dia introducido no es valido. Por favor, introduzca un dia correcto");
           return false;
       }
       /**
       * si el mes introducido es de 30 dias y el dia introducido es mayor de 301 > alertamos y detenemos ejecucion
       */
       if (((mes==4) || (mes==6) || (mes==9) || (mes==11)) && ((dia<1) || (dia>30)))
       {
           //alert("El dia introducido no es valido. Por favor, introduzca un dia correcto");
           return false;
       }
       /**
       * si el mes año introducido es menor que 1900 o mayor que 2010 > alertamos y detenemos ejecucion
       * NOTA: estos valores son a eleccion vuestra, y no constituyen por si solos fecha erronea
       */
       if ((anyo<1900) || (anyo>2099))
       {
           //alert("El año introducido no es valido. Por favor, introduzca un año entre 1900 y 2010");
           return false;           
       } 
       /**
       * en caso de que todo sea correcto > enviamos los datos del formulario
       * para ello debeis descomentar la ultima sentencia
       */

			return true;
    
    }    

  function restaFechas(fechaFin,fechaIni,diaAno)
  {
    //definimos fechaFin
    var dia=separaFecha(fechaFin,"D");
    var mes=separaFecha(fechaFin,"M");
    var anyo=separaFecha(fechaFin,"A");
		fechaFin = new Date(anyo,mes,dia);    
    //fecha inicio
    dia=separaFecha(fechaIni,"D");
    mes=separaFecha(fechaIni,"M");
    anyo=separaFecha(fechaIni,"A");
		fechaIni = new Date(anyo,mes,dia); 
		//

		var resta = fechaFin.getTime()-fechaIni.getTime();
     
  	var resultado = Math.floor(resta/(1000*60*60*24));
		
    //resultado en años
    if (diaAno=="A")
	    return Math.round(resultado/365);
    else
    //por defecto resultado en días
    	return resultado;  
    
    
	}

  
//busca en un array multidimensional con 2 parametros de busqueda
function buscarArrayMulti(nombreArray,ejeY,ejeX)
{
	var n=0;
  var m=0;

	nombreArray=eval(nombreArray);
  //primero buscamos el ejeY, en el elemento 0 que contiene la etiqueta de la columna
  for (n=0;n<nombreArray.length;n++)
  {
		if (nombreArray[n][0]==ejeY)
    {
		  for (m=0;m<nombreArray[n].length;m++)
      {
			if(nombreArray[0][m]==ejeX)																
					 return nombreArray[n][m+1];//le sumamos 1 para saltar el indice
      }    	
    }
	}
	return '';
}

//busca en un array multidimensional con 1 solo parámetro de busqueda
function buscarArrayUni(nombreArray,param)
{
	var n=0;

	nombreArray=eval(nombreArray);
  for (n=0;n<nombreArray[0].length;n++)
  {
		if (nombreArray[0][n]==param)//es la longitud del array indice											
			 return nombreArray[1][n]; //devolvemos el valor del siguiente array     	
  }
	return '';
}

function esNumero(num)
{
 if (isNaN(num))
	return false;
 else
 	return true; 
}

 function formatNum(valor, nDecimales) 
 {
 	if (nDecimales==null)
  	nDecimales=2;

  var T = Number('1e'+nDecimales)
 	var resp= Math.round(valor*T)/T 

	return resp;
 } 

function parseFloat2(num)
//recibe cadena numérica y devuelve número, cero si está vacia 
{
	var num=parseFloat(num)
  if (isNaN(num))
  	num=0;
    
	return num;
}

function numFormat2(cantidad,decimales)
{
 	if (decimales==null)
  	decimales=2;

  cantidad=''+formatNum(cantidad,decimales);
  
  var resp='';
  var caracter='';
  var contaMillar=0;
  var contaMillarActivado=0;
  
  if (!contieneCad(cantidad,'.'))
  	contaMillarActivado=1;    
  
  for (var n=cantidad.length;n>=0;n--)
  {
  	caracter=cantidad.substr(n,1);

    if (caracter=='.')
    {
    	caracter=',';
      contaMillarActivado=1
    }  
    
    if (contaMillarActivado)
  	{
    	contaMillar++;	
      if (contaMillar>3)
  		{
  	    caracter='.'+caracter;
        contaMillar=1;
      }  
    }
      
    resp=caracter+resp;
    
	}	

  //quitamos casos extraordinarios
  if (resp.substr(0,1)=='.')
  	resp=resp.substr(1,resp.length);
  if (resp.substr(0,2)=='-.')
  	resp='-'+resp.substr(2,resp.length);
  
  //  
  
  	return resp;
}

function formatNum2(num,decimales,puntoDecimal)
//recibe un número y lo devuelve por defecto con dos decimales
{	
  num=num.toString();

  if (decimales==null)
  	decimales=2;
  if (puntoDecimal==null)
  	puntoDecimal=".";

  posDecimal=num.indexOf(puntoDecimal);

  var result=num;
  if (posDecimal!=-1)
	{
    result=posDecimal+decimales+1;
    result=num.substring(0,result);
	}
  
  result=new Number(result);

	return result;
}
	
	function formatNumCadena(num)
	{
    //redondea y devuelve un número siempre en formato cadena con dos decimales
		num=formatNum(num);
		num=num.toString();
	  posDecimal=num.indexOf('.');
		if (posDecimal==-1)
  		num+='.00';
		else if (posDecimal==num.length-2)
  		num+='0';				  
			
		return num	

	}

	function redondeo(X, nDecimales)
  { 
  	if (nDecimales==null)
    	nDecimales=2;
    var T = Number('1e'+nDecimales)
  	return Math.round(X*T)/T 
  }

  function contieneCad(cadPajar,cadAguja)
  {
    cadPajar=cadPajar.toString();
    var c1= cadPajar.split(cadAguja)[0];
    var posIniCadAguja=c1.length;
    var c2= cadPajar.substring(posIniCadAguja,posIniCadAguja+cadAguja.length);
		if (c2==cadAguja)
    	return true;
    else
    	return false;  		  	

  }
  
  function verFecha(objeto)
  //el parametro normalmente es this
  //esta pensada para el evento onblur, si la fecha no esta vacia y es correcta formatea la fecha 
  //colocándole los separadores correctos, sino da mensaje de error y borra la fecha y posicionando el foco de nuevo
  {
    var fecha=objeto.value;

    if (fecha!='')
		{
	    if (validarFecha(fecha))    
  		{
        var dia=separaFecha(fecha,'D');
  	    var mes=separaFecha(fecha,'M');
    	  var ano=separaFecha(fecha,'A');
   			objeto.value=dia+'-'+mes+'-'+ano;    
			}
      else
      {
      	alert('Fecha incorrecta');
        objeto.value='';
        objeto.focus();
      }  
        
    }
  }
  
	function mayuscula(objeto)  
  {
  	objeto.value=objeto.value.toUpperCase();
  
  }
  
  function desCamposForm(objForm)
  //deshabilita todos los campos del formulario recibido 
  {
    for (var n=0;n<objForm.elements.length;n++)
    {
      if (objForm.elements[n].type=='text')
				objForm.elements[n].readOnly=true;		
			else
				objForm.elements[n].disabled=true;
      if (objForm.elements[n].type!='button')
	      objForm.elements[n].style.background=colorDes;					
    }

  }  

  function desEnlaces(iniciales)
  //deshabilita todos los enlaces cuyas tres primeras iniciales del name comiencen por
  //el parámetro recibido 
  {
    if (iniciales!=null)
			iniciales='lnk';
		
		for (var n=0;n<document.links.length;n++)
    {
      if (document.links[n].name.substring(0,3)==iniciales)
			{
        document.links[n].href="#";
	      document.links[n].style.textDecoration="none";        
      }                
    }

  }
  
  function dividir(dividendo,divisor)
  {
    var resp= dividendo/divisor;
    if (resp==Infinity)
    	resp=0;
  	return resp;	
  }
    
  function calculoCC(Banco, Cuenta)
	{
     Pesos= new Array(6,3,7,9,10,5,8,4,2,1);
     var result ="";
     var iTemp =0;
     for (var n=0;n<=7;n++){
        iTemp  = iTemp + Banco.substr(7 - n, 1) * Pesos[n];
     }
     result = 11 - iTemp % 11;
     if (result > 9){
       result=1-result % 10;
     }
     iTemp=0;
     for (var n=0;n<=9;n++){
        iTemp  = iTemp + Cuenta.substr(9 - n, 1) * Pesos[n];
     }
     iTemp =11 - (iTemp % 11);
     if (iTemp > 9){
      iTemp =1-(iTemp % 10);
     }
     result=result*10+iTemp;
     return(result);
  }

	function verCC(objeto)
	{
		var cc=objeto.value;

    if (cc!="")
		{
		  while (strpos(cc," ")>=0)
		    cc=cc.replace(" ","");
		  while (strpos(cc,"-")>=0)	
			  cc=cc.replace("-","");
		
      if (cc.length!=20)
				alert("Cuenta Corriente incorrecta");
      else
      {      
        var entOfi=cc.substring(0,8);
        var dc=cc.substring(8,10);
        var numCta=cc.substring(10,20);        
				var digitoCorrecto=calculoCC(entOfi,numCta)
				
        if (digitoCorrecto!=dc)
        	alert("Cuenta Corriente incorrecta, el Dígito de Control correcto sería el "+digitoCorrecto);              
      }
    }  
	}
	
  function escribeCC(objeto)
  {
    var tecla=event.keyCode;
  	var cuenta=objeto.value;
    var longCuenta=cuenta.length;
//    if ((longCuenta==4||longCuenta==9||longCuenta==12)&&tecla!=46&&tecla!=8)
    if ((longCuenta==4||longCuenta==11||longCuenta==16)&&tecla!=46&&tecla!=8)
    {
    	//alert(objeto.value+"-");
      objeto.value+=" - ";
    }   
  }  
	
	function strpos(str, ch)
	{
	  for (var i = 0; i < str.length; i++)
		  if (str.substring(i, i+1) == ch) return i;
		return -1;
  }
	
  function letraNif(obj)
  //valida los nifs
  {  
  	var dni=obj.value;
  	
		if (dni=='')
			return false;
		while (strpos(dni,".")>=0)	
			dni=dni.replace('.','');
		while (strpos(dni," ")>=0)	
		  dni=dni.replace(' ','');
		while (strpos(dni,"-")>=0)	
		  dni=dni.replace('-','');		
  	var iniDni=dni.substr(0,1);
  	var finDni=dni.substr(dni.length-1,dni.length);		
	if (!esNumero(finDni))
			dni = dni.substr(0,dni.length-1);
			dni = dni.toUpperCase();			
		if (esNumero(iniDni))	//si empieza es un NIF 
  	{	
    	if (!/^\d{8}$/.test(dni)) 
			{
    		return false;
			}
    	else	
    	{
    		var letras = "TRWAGMYFPDXBNJZSQVHLCKE";
    		var numero = dni%23;
    		var letra = letras.substring(numero,numero+1);
    		obj.value=dni+letra;		
				
				return true;
    	}
  	}
		else
    		obj.value=dni;		
			return true;
			//return false;
								
  }   
	
	function seleccionar(codigo,campoDestino)
	{
		objCampoDestino=eval("window.parent.opener.document.all."+campoDestino);
		objCampoDestino.value=codigo;
		objCampoDestino.onchange();
		window.parent.close();
	}
	
  
  function verCP(obj,campoPobla,campoProvin,campoPobla2,campoProvin2)
	{
		var codigo=obj.value;
		if (campoPobla2==null)
			 campoPobla2='';
		if (campoProvin2==null)
			 campoProvin2='';					 		
		frameExterno.location.href='externo.php?boton=verCp&codigo='+codigo+'&campoPobla='+campoPobla+'&campoProvin='+campoProvin+'&campoPobla2='+campoPobla2+'&campoProvin2='+campoProvin2;
	}

  function verDescriptor(obj,campoDes,descriptor,campoDes2)
	{
		var codigo=obj.value;
		if (campoDes2==null)
			 campoDes2='';
		frameExterno.location.href='externo.php?boton=verDescriptor&codigo='+codigo+'&campoDes='+campoDes+'&descriptor='+descriptor+'&campoDes2='+campoDes2;
		//frameExterno.location.href='externo.php?boton=verDescriptor&codigo='+codigo+'&campoDes='+campoDes+'&descriptor='+descriptor;
	}		

  function verCliente(obj,campoDes,campoNif,nif,campoNumero)
	{
		if (campoNumero==null)
			var campoNumero='';
		if (nif==null)
			var nif='';
		if (campoNif==null)
			var campoNif='';
			
		var codigo=obj.value;
		frameExterno.location.href='externo.php?boton=verCliente&codigo='+codigo+'&campoDes='+campoDes+'&nif='+nif+'&campoNif='+campoNif+'&campoNumero='+campoNumero;			
	}
	
  function verAgente(obj,campoDes)
	{
		var codigo=obj.value;
		frameExterno.location.href='externo.php?boton=verAgente&codigo='+codigo+'&campoDes='+campoDes;
	}
	
  function verConcepto(obj,campoDes)
	{
		var codigo=obj.value;
		frameExterno.location.href='externo.php?boton=verConcepto&codigo='+codigo+'&campoDes='+campoDes;
	}

  function verConceptoPrecio(obj,campoPrecio)
	{
		var codigo=obj.value;
		frameExterno.location.href='externo.php?boton=verConceptoPrecio&codigo='+codigo+'&campoPrecio='+campoPrecio;
	}
	
  function verItv(obj,campoDes,campoTip1,campoTip2,campoMar,campoMod,campoTar,campoMma,campoPla,campoCar,campoCil,campoPot,campoNC,campoMar2,campoMod2,campoTipoVeh)
	{
		var codigo=obj.value;
 		if (campoMar2==null)
			campoMar2='';
 		if (campoMod2==null)
			campoMod2='';				
 		if (campoTipoVeh==null)
			campoTipoVeh='';				
		frameExterno.location.href='externo.php?boton=verItv&codigo='+codigo+'&campoDes='+campoDes+'&campoTip1='+campoTip1+'&campoTip2='+campoTip2+'&campoMar='+campoMar+'&campoMod='+campoMod+'&campoTar='+campoTar+'&campoMma='+campoMma+'&campoPla='+campoPla+'&campoCar='+campoCar+'&campoCil='+campoCil+'&campoPot='+campoPot+'&campoNC='+campoNC+'&campoMar2='+campoMar2+'&campoMod2='+campoMod2+'&campoTipoVeh='+campoTipoVeh;
	}
	
  function verTipoVehiculo(obj,campoDes)
	{
		var codigo=obj.value;
		frameExterno.location.href='externo.php?boton=verTipoVehiculo&codigo='+codigo+'&campoDes='+campoDes;
	}	  
	
	
  function verSucursal(obj,campoDes)
	{
		var codigo=obj.value;
		frameExterno.location.href='externo.php?boton=verSucursal&codigo='+codigo+'&campoDes='+campoDes;
	}	  

  function verOperacion(obj,campoDes)
	{
		var codigo=obj.value;
		frameExterno.location.href='externo.php?boton=verOperacion&codigo='+codigo+'&campoDes='+campoDes;
	}
	
	function existeEnTabla(obj,valorBuscado,columna)
	{
 		if (columna==null)
			columna=0;
      		
    var longArray=obj.rows.length;
    var valor;
    for (var n=0;n<longArray;n++)
    {	
    	valor=obj.rows[n].cells[columna].innerText;
     	if (valor==valorBuscado)
 				return true;
    }	
		return false;
	}
	
	function desCaja(obj,siNo)
	{
		if (siNo==null)
			siNo='S';
		
		if (siNo=='S') 
		{		
			obj.style.background=colorDes;
			obj.readOnly=true;
			obj.tabIndex=-1;			
		}
		else
		{
			obj.style.background='white';
			obj.readOnly=false;
		}
	}

function listaTrOnMouseOver(obj)
{	
	obj.style.cursor='hand';
	for (x=0; x<obj.cells.length; x++)	
		obj.cells[x].style.background='#E2F5D5'; //azul claro

}

function listaTrOnMouseOut(obj)
{	
	var color='';
	if (obj.cells[0].id==1)
		color='#F0F0F0';
	else
		color='#E2E2E2';			

	for (x=0; x<obj.cells.length; x++)	
		obj.cells[x].style.background=color;
}

function listaTrOnClick(obj)
{	
		obj.cells[0].onclick();
}

function verNoticia(doc)
{
	var nombreDoc=doc.substring(0,3);
	var numDoc=doc.substring(3);
	
	if( getCookie('TipoUsu')>10 ) //PROVEEDOR
	{
		if (nombreDoc=='EXP')
			location='14incidencia.php?boton=busca&txtFEC_INI=&txtFEC_FIN=&txtMATRICULA=&txtEXPE='+numDoc;
		else if (nombreDoc=='ORD')
			location='03orden.php?boton=ficha&codigo='+numDoc;
	}	
	else
	{
		if (nombreDoc=='EXP')
			window.open('03expediente.php?boton=ficha&codigo='+numDoc,'expedientes',paramVentana('GRA'));
		else if (nombreDoc=='ORD')
			location='03orden.php?boton=ficha&codigo='+numDoc;
		else if (nombreDoc=='ALB')
			window.open('03albaran.php?boton=ficha&codigo='+numDoc,'prefacturas',paramVentana('GRA'));
		else if (nombreDoc=='NOT')
			location='03solicitudnota.php?boton=ficha&codigo='+numDoc;

	}
		
}

function mascaraNum()
//para el onkeydown, es una máscara numérica
//ejemplo:  onkeydown='return mascaraNum()';
{	
	var tecla=event.keyCode;
//	alert (tecla);
	if ( !( (tecla>=96 && tecla<=105) || (tecla>=48 && tecla<=57) || tecla==8 || tecla==9 || tecla==190 || tecla==110 || tecla==109 || tecla==189) ) 
		return false;	
}

// VERIFICA EL CIF Y MUESTRA EL DIGITO DE CONTROL
//parametro elCIF -- this del textfield
//parametro F ------ this.form
function letraCIF(elCIF) 
{
	//si escribe el cif completo 10 digitos le restamos el Dígito de control para comprobarlo nosotros
	if (elCIF.value.length=="9")
		var temp = elCIF.value.substr(0,elCIF.value.length-1);
	else
		var temp = elCIF.value;
	
	temp = temp.toUpperCase(); // pasar a mayúsculas
	cif= temp;

  if (!/^[A-Za-z0-9]{8}$/.test(temp))
	{  // Al menos deben ser 8 dígitos	
     alert ("CIF incorrecto");
		 return false;
	}			
  else if (!/^[ABCDEFGHKLMNPQS]/.test(temp))
	{
	 	 // Es una letra de las admitidas ?	
     alert("El primer dígito es incorrecto, debe ser una letra de las siguientes: A,B,C,D,E,F,G,H,K,L,M,N,P,Q,S ");
		 return false;
	}	
  else	//ENTRAMOS SI EL CIF ES CORRECTO y calculamos el Dígito de control
	{	
  	var v1 = new Array(0,2,4,6,8,1,3,5,7,9); 
    var temp = 0, temp1;
      
    for( i = 2; i <= 6; i += 2 ) 
      {
        temp = temp + v1[ parseInt(elCIF.value.substr(i-1,1)) ];
        temp = temp + parseInt(elCIF.value.substr(i,1));
      };
  
    temp = temp + v1[ parseInt(elCIF.value.substr(7,1)) ];  
    temp = (10 - ( temp % 10));
  
    if( temp == 10 )
      elCIF.value=cif+"J";
    else
      elCIF.value=cif+temp;		
  	
  	var letra = elCIF.value.substr(0,1);
  	letra=letra.toUpperCase();
		
		return true;  
	}	
}

	
	function letraNIE(elNIE)  
  { 
		var nie = elNIE.value.substr(1,elNIE.value.length);
		
  	var nies = nie.substr(0,1);
  	
		if (nies=='')
			return;
		while (strpos(nie,".")>=0)	
			nie=nie.replace('.','');
		while (strpos(nie," ")>=0)	
		  nie=nie.replace(' ','');
		while (strpos(nie,"-")>=0)	
		  nie=nie.replace('-','');		
  	var ininie=nie.substr(0,1);
  	var finnie=nie.substr(nie.length-1,nie.length);		
  	if (!esNumero(finnie))
			nie = nie.substr(0,nie.length-1);
			nie = nie.toUpperCase();			
		if (esNumero(ininie))	//solo si empieza por número,los cifs no se tratan 
  	{	
    	if (!/^\d{8}$/.test(nie))
			{ 
    		alert("NIE incorrecto");
				return false;
			}
    	else	
    	{
    		var letras = "TRWAGMYFPDXBNJZSQVHLCKE";
    		var numero = nie%23;
    		var letra = letras.substring(numero,numero+1);
    		elNIE.value="X"+nie+letra;		
				if ((finnie!=letra)&&(!esNumero(finnie)))
					alert("Se corrigió la letra del NIE que resultaba incorrecta");
				
				return true;
    	}
  	}
  }
	
function formVacio(objForm)
{
//mira todas las cajas de texto de un formulario y devuelve true si no hay ninguna llena
 
	var resp=true;
	
	for (var n=0;n<objForm.elements.length;n++)
    {      
			if ( (objForm.elements[n].type=='text')&&(objForm.elements[n].value!='') )
			{
				resp=false;
				break;
			}
    }
	return resp;
}	

//quitar guiones y blancos a una matricula
function simpliMatricula(obj)
{
  obj=obj.value;

	for (i=0;i<obj.length;i++)
	  obj = obj.replace("-","");
	
	for (i=0;i<obj.length;i++)
	  obj = obj.replace(" ","");
		
	for (i=0;i<obj.length;i++)
	  obj = obj.replace(".","");
		
	return obj;
}

	function totalTabla(obj,columnas)
	{
		//totaliza las columnas de una tabla
		//el parámetro columnas es una cadena con los valores numéricos de las columnas separados por comas
	
		var filasTabla=obj.rows.length;

		//puede que la clave esté oculta
		var claveOculta=false;
		if (obj.rows[0].cells[0].style.display=='none')
			claveOculta=true;
		//
		
		//insertamos la fila en blanco
		var tr=obj.insertRow();
		var totalCol=obj.rows[0].cells.length;
		if (claveOculta)
			totalCol--;

		for(var n=0;n<totalCol;n++)
		{
			tr.insertCell();
			tr.cells(n).innerText='-';
			tr.cells(n).style.textAlign='center';			
		}	
		//

		var arrCol=columnas.split(',');		
				
		//calculamos los totales e insertamos en columna correspondiente
		var total,m,n,columna;

		for (m=0;m<arrCol.length;m++)
  	{
			columna=arrCol[m];
			if (!claveOculta)
				columna--;

  		total=0
      for (n=1;n<filasTabla;n++)
  			total+=parseFloat(obj.rows[n].cells[columna].innerText);

  		total=formatNumCadena(total);
  		
			//ahora insertamos total en la columna correspondiente
			if (claveOculta)
				columna--;
  		tr.cells(columna).innerHTML='<font size=1 color=#990000>'+total+'</font>';
  		tr.cells(columna).style.textAlign='right';
  		tr.style.background='#f0f0f0';
  		//
		}
		//

	}
	
function keyToUpperCase(field, evt)
{
  if (document.all)
	{
    var c = event.keyCode;
    var C = String.fromCharCode(c).toUpperCase().charCodeAt(); 
    event.keyCode = C;
    return true;
  }
  else 
    return true;
}	

function docs(codigo,tipo)
{
	abrirForm('03docs.php?codigo='+codigo+'&tipo='+tipo,'docs','toolbar=0,scrollbars=1,resizable=1,height=480,width=590,left=50,top=50');
}

function reloj() {
  //obtiene fecha y hora
  var fecha = new Date();
  var Anio = fecha.getFullYear();
  var Mes = fecha.getMonth();
  var DiaActual = fecha.getDate();
  var Dia = fecha.getDay();
  var horas = fecha.getHours();
  var minutos = fecha.getMinutes();
  var segundos = fecha.getSeconds();

  //asigna p.m. o a.m. segun el caso
  var cir = "";
  var i = 12;
  if(horas < i) {
    cir = "a.m.";
  } else if(horas >= i) {
    cir = "p.m.";
  }

  //array nombres meses
  var mes = new Array();
  mes[0] = "Enero";
  mes[1] = "Febrero";
  mes[2] = "Marzo";
  mes[3] = "Abril";
  mes[4] = "Mayo";
  mes[5] = "Junio";
  mes[6] = "Julio";
  mes[7] = "Agosto";
  mes[8] = "Septiembre";
  mes[9] = "Octubre";
  mes[10] = "Noviembre";
  mes[11] = "Diciembre";
  
  //array nombres dias
  var dia = new Array();
  dia[0] = "Domingo";
  dia[1] = "Lunes";
  dia[2] = "Martes";
  dia[3] = "Miércoles";
  dia[4] = "Jueves";
  dia[5] = "Viernes";
  dia[6] = "Sábado";
  
  //array horas
  var hr = new Array();
  hr[0] = "12";
  hr[1] = "01";
  hr[2] = "02";
  hr[3] = "03";
  hr[4] = "04";
  hr[5] = "05";
  hr[6] = "06";
  hr[7] = "07";
  hr[8] = "08";
  hr[9] = "09";
  hr[10] = "10";
  hr[11] = "11";
  hr[12] = "12";
  hr[13] = "01";
  hr[14] = "02";
  hr[15] = "03";
  hr[16] = "04";
  hr[17] = "05";
  hr[18] = "06";
  hr[19] = "07";
  hr[20] = "08";
  hr[21] = "09";
  hr[22] = "10";
  hr[23] = "11";
  
  //obtiene nombre mes
  //mas faci: Mes = mes[Mes];
  if(Mes==0){Mes = mes[0];}
  if(Mes==1){Mes = mes[1];}
  if(Mes==2){Mes = mes[2];}
  if(Mes==3){Mes = mes[3];}
  if(Mes==4){Mes = mes[4];}
  if(Mes==5){Mes = mes[5];}
  if(Mes==6){Mes = mes[6];}
  if(Mes==7){Mes = mes[7];}
  if(Mes==8){Mes = mes[8];}
  if(Mes==9){Mes = mes[9];}
  if(Mes==10){Mes = mes[10];}
  if(Mes==11){Mes = mes[11];}

  //obtiene nombre dia
  //mas facil: Dia = dia[Dia];
  if(Dia==0){Dia = dia[0];}
  if(Dia==1){Dia = dia[1];}
  if(Dia==2){Dia = dia[2];}
  if(Dia==3){Dia = dia[3];}
  if(Dia==4){Dia = dia[4];}
  if(Dia==5){Dia = dia[5];}
  if(Dia==6){Dia = dia[6];}
  
  //ajusta formato horas
  //mas facil: horas = hr[horas];
  if(horas==0){horas = hr[0];}
  if(horas==1){horas = hr[1];}
  if(horas==2){horas = hr[2];}
  if(horas==3){horas = hr[3];}
  if(horas==4){horas = hr[4];}
  if(horas==5){horas = hr[5];}
  if(horas==6){horas = hr[6];}
  if(horas==7){horas = hr[7];}
  if(horas==8){horas = hr[8];}
  if(horas==9){horas = hr[9];}
  if(horas==10){horas = hr[10];}
  if(horas==11){horas = hr[11];}
  if(horas==12){horas = hr[12];}
  if(horas==13){horas = hr[13];}
  if(horas==14){horas = hr[14];}
  if(horas==15){horas = hr[15];}
  if(horas==16){horas = hr[16];}
  if(horas==17){horas = hr[17];}
  if(horas==18){horas = hr[18];}
  if(horas==19){horas = hr[19];}
  if(horas==20){horas = hr[20];}
  if(horas==21){horas = hr[21];}
  if(horas==22){horas = hr[22];}
  if(horas==23){horas = hr[23];}
  
  //ajusta segundos
  var m = 10;
  if(minutos < m) {
    minutos="0"+minutos;
  }
  if(segundos < m) {
    segundos="0"+segundos;
  }
 
  //cadena final
  //textoFinal = (Dia+", "+DiaActual+" de "+Mes+" de "+Anio+"       [ "+horas+":"+minutos+":"+segundos+" "+cir+" ]");
	textoFinal = (DiaActual+" - "+Mes+" - "+Anio);

  //muestra en barra de estado
  //window.status = textoFinal;
  //si quieres poner algo en el titulo
  //  document.title = " |-[ Prockto ]-| ";

  //repite cada 1 segundo
  //setTimeout("reloj()",1000);
	
	top.document.all.hora.innerText=textoFinal;
	
	return;
}
