function OnClickHandler()
{
   if (navigator.appVersion.indexOf("MSIE 4.")!=-1)
   {
 	var el=null;
 	var flag=true;
 	el = event.srcElement;
 	 while (flag && el)
	{
 		if (el.tagName=="A")
 		{
			flag=false;
			if (el.protocol=="javascript:")
			{ 
				execScript(el.href,"javascript");
				window.event.returnValue=false;
			}
 			if (el.protocol=="vbscript:")
			{	
				execScript(el.pathname,"vbscript");
 				window.event.returnValue=false;
			}
		}
		else
 		{ 
 			el=el.parentElement;
		}
	}	
   } 
}

// document.onclick = OnClickHandler;

// *********************************************************
//  RUTINAS PARA EL TRATAMIENTO DE FECHAS.
// *********************************************************

function EsSeparador(caracter) {
return (caracter.charAt(0) == "-" || caracter.charAt(0) == "/" )
}

function numeroseparadores(cadenaData) {
var count = 0;

cadenafecha=""+cadenaData;
for (i = 0;i < cadenafecha.length;i++)
if (EsSeparador(cadenafecha.charAt(i)))
count++;
return count;
}

function PrimerSeparador (cadena) {
var guion=cadena.indexOf("-");
var barra=cadena.indexOf("/");

if (guion == -1) {
return barra;
} else {
if (barra == -1) {
return guion;
} else {
if (guion > barra)
return barra;
else
return guion;
}
}
}
function SegundoSeparador (cadena) {
var guion=cadena.lastIndexOf("-");
var barra=cadena.lastIndexOf("/");
if (guion == -1) {
return barra;
} else {
if (barra == -1) {
return guion;
} else {
if (guion < barra)
return barra;
else
return guion;
}
}
}



// *********************************************************
//  RUTINAS PARA EL TRATAMIENTO DE NUMEROS
// *********************************************************
function isDigit(caracter) {
// *********************************************************
//      Devuelve falso si el carácter no es un número
// *********************************************************

 if (
  caracter != "0" &&
  caracter != "1" &&
  caracter != "2" &&
  caracter != "3" &&
  caracter != "4" &&
  caracter != "5" &&
  caracter != "6" &&
  caracter != "7" &&
  caracter != "8" &&
  caracter != "9")
  return false;
 else
  return true;
}

function isNumber(cadena) {
// *********************************************************
//      Comprueba si la cadena es un número
// *********************************************************

 for(i = 0;i<cadena.length;i++) {
  if (!isDigit(cadena.charAt(i)))
    {
        return false;
    }
 }
return true;
}


function parseaFecha(fecha)
{
        /* Funcion que recoge una fecha con formato DD-MM-AAAA y
	 devuelve la fecha con formato AAAAMMDD */

        var dia = fecha.substring(0,2);
        var mes = fecha.substring(3,5);
        var anno = fecha.substring(6);
        var fechaSalida = anno + mes + dia;
        return fechaSalida;
}

function obtieneSegundos(hora)
{
	/* Funcion que pasa a segundos una hora con formato hh:mm:ss */
	
	var h = hora.substring(0,2);
	var m = hora.substring(3,5);
	var s = hora.substring(6);
	
	var horaSegundos = (h*3600) + (m*60) + s;
	return horaSegundos;
}

function validaDate (cadenaDate,campo) {
// *********************************************************
//      Función que comprueba la fecha de un campo.
// *********************************************************

// Primero de todo, tenemos que comprobar el numero de caracteres escritos
var cadenafecha = ""+Reemplaza(cadenaDate,'.','/');
var numsep = numeroseparadores(cadenafecha);

if (cadenafecha.length == 0)
return 0;

if (numsep == 0) {
if (cadenafecha.length == 6) {
var Strano=cadenafecha.substring(4,6);
var Strmes=cadenafecha.substring(2,4);
var Strdia=cadenafecha.substring(0,2);
} else if (cadenafecha.length == 8) {
var Strano=cadenafecha.substring(4,8);
var Strmes=cadenafecha.substring(2,4);
var Strdia=cadenafecha.substring(0,2);
} else {
return -1;
} // endif
} else if (numsep == 2) {
// Miramos si los dos separadores son el mismo
if ( cadenafecha.charAt(PrimerSeparador(cadenafecha)) != 
cadenafecha.charAt(SegundoSeparador(cadenafecha)) ) {
return -1;
} else {
var Strano=cadenafecha.substring(SegundoSeparador(cadenafecha)+1,cadenafecha.length);
var Strmes=cadenafecha.substring(PrimerSeparador(cadenafecha)+1,SegundoSeparador(cadenafecha));
var Strdia=cadenafecha.substring(0,PrimerSeparador(cadenafecha));
} // endif
} else {
return -1;
} // endif

if (!isNumber(Strdia))
return -1;
else {
if (Strdia.length == 1)
Strdia = "0" + Strdia;
else if (Strdia.length != 2)
return -1;
dia = eval(Strdia);
}
if (!isNumber(Strmes))
return -1;
else {
if (Strmes.length == 1)
Strmes = "0" + Strmes;
else if (Strmes.length != 2)
return -1;
mes = eval(Strmes);
}
if (!isNumber(Strano))
return -1;
else {
if (Strano.length == 2){
  if ((eval(Strano)>80) && (eval(Strano)<100)){
    campo.value = Strdia + "/" + Strmes + "/" + "19" + Strano;
    Strano = "19" + Strano;
  }else{
    campo.value = Strdia + "/" + Strmes + "/" + "20" + Strano;
    Strano = "20" + Strano;
  }
}else{
  if (Strano.length != 4)
    return -1;
  else
    campo.value = Strdia + "/" + Strmes + "/" + Strano;
}
ano = eval(Strano);
}
if (ano % 4 == 0)  // a$o bisiesto
{
        if(ano % 100 == 0)
        {
                if(ano % 400 == 0)
                        bisiesto = true;
                else
                        bisiesto = false;
        }
        else
                bisiesto = true;
}
else
        bisiesto = false;


if (mes == 2) {
if (!bisiesto) {
if ( dia > 28 || dia < 1) 
return -1;
} else {
if ( dia > 29 || dia < 1) 
return -1;
}
} else if (mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) {
if (dia > 31 || dia < 1)
return -1;
} else if (mes==9 || mes==4 || mes==6 || mes==11) {
if (dia > 30 || dia < 1)
return -1;
} else {
return -1;
} // endif

// Si estamos aqu¡, devolvemos la fecha en formato n£mero
return (eval(Strano+Strmes+Strdia))
}





function Reemplaza(entrada,de,a) {
// *********************************************************
//  Reemplaza de la cadena entrada el caracter a por el de
// *********************************************************

  var cadena = entrada;
  var i=0;
  while ((i=cadena.indexOf(de))!= -1) {
    var temporal = '';
    temporal = temporal + cadena.substring(0,i) + a + cadena.substring(i + 1);
  cadena = temporal;
  }
  return cadena;
}



function TransformarNumero(cadena) {
// *********************************************************
//      Recoge un nzmero introducido con coma decimal y se
// lo cambia por un punto.
// *********************************************************
var cadenarespu = "";
var i = 0;
while ( i < cadena.length ) {
  if (cadena.charAt(i) != ',')
    cadenarespu = cadenarespu + cadena.charAt(i);
  else{
    cadenarespu = cadenarespu + '.';
  }
  i++;
}
return cadenarespu;
}

function TransformarNumeroTotal(cadena) {
// *********************************************************
//      Recoge un numero introducido con coma decimal y con puntos
// para separar los miles, quita los puntos y cambia la coma por
// un punto.
// *********************************************************
var cadenarespu = "";
var i = 0;
while ( i < cadena.length ) {
  if (cadena.charAt(i) == '.')
  {
    cadenarespu = cadenarespu + cadena.charAt(i + 1);
    i++;
  }
  else if (cadena.charAt(i) == ',')
    cadenarespu = cadenarespu + '.';
  else
    cadenarespu = cadenarespu + cadena.charAt(i);
 
  i++;
}
return cadenarespu;
}

function QuitarDecimales(cadena,separador) {
// *********************************************************
//      Elimina los decimales de un nzmero.
// *********************************************************
var cadenarespu = "";
var i=0;
if (cadena != "")
{
while ( i < cadena.length) {
  if (cadena.charAt(i) != separador)
  {
    cadenarespu = cadenarespu + cadena.charAt(i);
  }
  else
  {
    return cadenarespu;
  }
  i++;
}
}
return cadenarespu;
}


function NumDecimales(cadena,separador){
// *********************************************************
//      Cuenta el nzmero de decimales que tiene un nzmero.
// *********************************************************
  var numdecimales=0;
  var contardecimales=0;
  for(i=0;i<cadena.length;i++){
    if (contardecimales)
      numdecimales=numdecimales + 1;
    if (cadena.charAt(i) == separador)
      contardecimales = 1;
  }
  return eval(numdecimales);
}

function ValidarNumero (numero, separador){
// *********************************************************
// Valida el formato de un numero, bien sea el separador decimal una coma o un punto.
// Devuelve el numero bien formateado, o false si el numero no es valido.
// *********************************************************
  var parte_entera="";
  var parte_decimal="";
  var finBucle = 0;
  var i=0;
  var j=0;

  if (numero == ''){
    return("0"+ separador +"00");   
  }
  while ( (i < numero.length) && (finBucle == 0) ) {
    if ((numero.charAt(i) != '.') && (numero.charAt(i) != ',')){
      parte_entera = parte_entera + numero.charAt(i);
    }
    else
      finBucle = 1;
    i++;
  }
  if ((i>0) && (i<numero.length)){
    for(j=i;j<numero.length;j++){
      parte_decimal = parte_decimal + numero.charAt(j);
    }
  }
  if (parte_entera != ""){
    if (!(isNumber(parte_entera))){
      return false;
    }
  }else{
    parte_entera = "0";
  }
  if (parte_decimal != ""){
    if (!(isNumber(parte_decimal))){
      return false;
    }
  }else{
    parte_decimal = "00";
  }

  if (parte_decimal.length > 2){
    return false;
  }else if (parte_decimal.length == 1){
    parte_decimal = parte_decimal + "0";
  }

  return(parte_entera + separador + parte_decimal);
}


function NumeroNegativo(numero) {
// *********************************************************
//      Recoge un una cadena y comprueba si tiene un '-'
// *********************************************************
var i = 0;
while ( i < numero.length ) {
  if (numero.charAt(i) != '-')
    i++;
  else
    return true;
}
return false;
}

function De_Numero_a_String(numero) {
// *********************************************************
//    Sustituye el punto decimal por una coma. 
// *********************************************************
var cadenarespu = "";
var cadena_aux = "";
var i=0;
cadena_aux = "" + numero;

while ( i < cadena_aux.length) {
  if (cadena_aux.charAt(i) != '.' && cadena_aux.charAt(i) != ',')
    cadenarespu = cadenarespu + cadena_aux.charAt(i);
  else if (cadena_aux.charAt(i) == '.')
    cadenarespu = cadenarespu + ',';
  i++;
  }
return cadenarespu;
}

function numero_con_2_decimales(numero)
{
	//funcion que recoge un numero y lo devuelve con dos decimales (si tenia mas) separado por coma.

	var parte_entera = "";
	var parte_decimal = "";
	var parte_decima_aux = "";
	var new_parte_decimal = "";
	var resultado;
	var punto = numero.indexOf(".");
	if(punto != -1)
	{
		parte_entera = numero.substring(0,punto);
		parte_decimal = numero.substring(punto+1);
		if(parte_decimal.length > 2)
		{
                        parte_decimal_aux = parte_decimal.charAt(1) + "." + parte_decimal.substring(2);
/*
			new_parte_decimal = parte_decimal.substring(0,2);
*/
			new_parte_decimal = Math.round(eval(parte_decimal_aux));
                        new_parte_decimal = parte_decimal.charAt(0) + new_parte_decimal; 
		}
		else
		{
			new_parte_decimal = parte_decimal;
		}
		resultado = parte_entera + "," + new_parte_decimal;
	}
	else
	{
		resultado = numero;
	}
	return resultado;
}


/* Validació de numeros       */

function EliminaCaracter(cadena, caracter) {
// *********************************************************
//      Recoge un una cadena y elimina el 'caracter' de toda
// la cadena.
// *********************************************************
var cadenarespu = "";
var i = 0;
while ( i < cadena.length ) {
  if (cadena.charAt(i) != caracter)
    cadenarespu = cadenarespu + cadena.charAt(i);
  i++;
}
return cadenarespu;
}

function numeroDeCaracteres(cadena,caracter)
// *********************************************************
//  Función que devuelve el número de veces que aparece 
//  caractere dentro de una cadena
// *********************************************************
{
	var count = 0;
	for(i=0;i<cadena.length;i++)
	{
		if(cadena.charAt(i) == caracter)
		{
			count++;
		}
	}
	return count;
}

function De_String_a_Numero(cadena) {
// *********************************************************
//    Para numeros que vengan en el siguiente formato : 
//    1.000.000,50
//    Elimina los puntos y sustituye la coma decimal por un punto. 
// *********************************************************
var cadenarespu = "";
var i=0;
while ( i < cadena.length) {
  if (cadena.charAt(i) != '.' && cadena.charAt(i) != ',')
    cadenarespu = cadenarespu + cadena.charAt(i);
  else if (cadena.charAt(i) == ',')
    cadenarespu = cadenarespu + '.';
  i++;
}
return cadenarespu;
}

function parseaDate(fecha)
{
// *********************************************************
// Funcion que recoge una fecha con formato DD-MM-AAAA y
// devuelve la fecha con formato AAAAMMDD 
// *********************************************************

        /* Funcion que recoge una fecha con formato DD-MM-AAAA y
	 devuelve la fecha con formato AAAAMMDD */

        var dia = fecha.substring(0,2);
        var mes = fecha.substring(3,5);
        var anno = fecha.substring(6);
        var fechaSalida = anno + mes + dia;
        return fechaSalida;
}

// *********************************************************
//  RUTINAS PARA EL TRATAMIENTO DE NUMEROS
// *********************************************************


function fNUM_IsDigit(caracter) {
// *********************************************************
//      Torna fals si el carácter no es un número
// *********************************************************

 if (
  caracter != "0" &&
  caracter != "1" &&
  caracter != "2" &&
  caracter != "3" &&
  caracter != "4" &&
  caracter != "5" &&
  caracter != "6" &&
  caracter != "7" &&
  caracter != "8" &&
  caracter != "9")
  return false;
 else
  return true;
}

function fNUM_IsNumber(cadena) {
// *********************************************************
//      Comprova que la cadena es un número
// *********************************************************

 for(i = 0;i<cadena.length;i++) {
  if (!fNUM_IsDigit(cadena.charAt(i)))
    {
        return false;
    }
 }
return true;
}


function fNUM_EliminaPunts(caracter) {
// *********************************************************
//      Elimina els punts d'un número. Deixa les comes dels decimals
// *********************************************************


   return EliminaCaracter(caracter, ".");
   
}

function fNUM_PossarPunts(enter) {
// *********************************************************
//      Possar els punts d'un número en un enter.
// *********************************************************
var venter = "";
var i      = 0;
var j      = 0; 
 
   for (i = enter.length - 1; i >= 0; i--) {
      if ( ( (j % 3) == 0 ) && (j > 0) ) {
      	venter += '.';
      }	
      venter = enter.charAt(i) + venter;
      j++;
   }
   
}

function fNUM_PossarEnter(enter,longitud) {
// *********************************************************
//      Possar els punts de la part entera d'un  número i omple amb blancs per la esquerra.
// *********************************************************
var venter = '';
var vtratar= ''+enter;
var i      = 0;
var j      = 0; 
 
   for (i = vtratar.length - 1; i >= 0; i--) {
     venter += vtratar.charAt(j);
     j++   	
     if ( ( (i % 3) == 0 ) && ( i > 0) ) {
     	venter += '.';
     }
    }
    	
   for (i=j; i < longitud; i++) {
     venter = '' + venter; 	
   }     	
   
   return venter;
}

function fNUM_PossarDecimal(decimal,longitud) {
// *********************************************************
//      Torna part decimal  i omple amb 0 per la dreta. Fa un truncament per la dreta.
// *********************************************************
var vdecimal = "";
var i      = 0;
var j      = 0; 
 
 
   for (i = 0; i < decimal.length; i++) {	
     if ( j < longitud ) {
     	vdecimal += decimal.charAt(i); 	
        j++;
     }
   }

   for (i = j; i < longitud; i++) {
     vdecimal += '0';	
   }
  
   return vdecimal;
   
}

function fNUM_ValidaEnter(enter) {
// *********************************************************
//      Valida un numero enter.
// *********************************************************
var part = new Array( "","","","","" );

var i     = 0;
var j     = 0;
var div   = new Function("x","y","return( parseInt( x / y ) )");


   if (numeroDeCaracteres( enter , '.' ) == 0) {
      return fNUM_IsNumber( enter )	 
   }	
   else {   
     j = 1;
     for ( i = (enter.length - 1); i >= 0; i--){
         if ( enter.charAt(i) == '.') {
           if ((j%4) != 0) {
       	     return false
       	   }
       	 } else {
       	  	  part[ div(i,4) ] = enter.charAt(i) + part[ div(i,4) ]
       	  	 }
       	 j++; 	 
     }  	 

     for (j=0; j < 5; j++){
         if ( part[ j ] != '' ) { 	
           if ( !fNUM_IsNumber( part[j] ) ) {
              return false; 	
       	   } 
         }
     }    
   }
  return true; 
}


function fNUM_ComprovaPunts(numero) {
// *********************************************************
//      Elimina els punts d'un número. Deixa les comes dels decimals
// *********************************************************
var part_entera = "";
var part_decimal= "";
var finBucle    = 0;
var i 		= 0;
var j 		= 0;
var vnumero     = ""+numero;


   if (vnumero == "" ) {
      return true;	
   }  
   
   
   while ( ( i < vnumero.length) && (finBucle == 0) ) {
      if (vnumero.charAt(i) != ',') {
      	 part_entera += vnumero.charAt(i);
      }
      else
          finBucle = 1;
      i++;    
   }	
   
   if ((i>0) && (i<vnumero.length)){
    for(j=i;j<vnumero.length;j++){
      part_decimal += vnumero.charAt(j);
    }
   }
 
  if (part_decimal != ""){
    if (!(fNUM_IsNumber(part_decimal))){
      return false;
    }
  } 

  if (part_entera != ""){
    if (!(fNUM_ValidaEnter(part_entera))){
      return false;
    }
  }
  return true;
}


function fNUM_PartEntera(numero) {
// *********************************************************
//      Retorna la part entera d'un número. 
// *********************************************************
var part_entera = "";
var finBucle = 0;
var i = 0;
var j = 0;
var vnumero = ""+numero;

   if (vnumero == '' ) {
      return "0";	
   }  
   
   if ( !fNUM_ComprovaPunts(vnumero) ) {
       return "ERROR";
   }
     
   while ( ( i < vnumero.length) && (finBucle == 0) ) {
      if (vnumero.charAt(i) != ',') {
      	 part_entera +=  vnumero.charAt(i);
      }
      else
          finBucle = 1;
      i++;    
   }	

  return part_entera;
  
}

function fNUM_PartDecimal(numero) {
// *********************************************************
//      Retorna la part decimal d'un número. 
// *********************************************************

var part_decimal= "";
var finBucle = 0;
var i = 0;
var j = 0;
var vnumero = ""+numero; 

   if (vnumero == '' ) {
      return "";	
   }  
   
   if ( !fNUM_ComprovaPunts(vnumero) ) {
       return "ERROR";
   }
     
   while ( ( i < vnumero.length) && (finBucle == 0) ) {
      if (vnumero.charAt(i) != ',') {
      }
      else
          finBucle = 1;
      i++;    
   }	
  
   if ((i>0) && (i<vnumero.length)){
    for(j=i;j<vnumero.length;j++){
      part_decimal += vnumero.charAt(j);
    }
   }
  
  return part_decimal;
  
}

function fNUM_ValidaNumero(numero) {
// *********************************************************
//      Valida un numero .
// *********************************************************
var vnumero = ""+numero;


  if ( !fNUM_ComprovaPunts( vnumero ) ) {
    return false;	
  }

  vnumero = fNUM_EliminaPunts( vnumero );
  
  if ( !fNUM_IsNumber( fNUM_PartEntera( vnumero ) ) ) {
     return false;	
  }
  
  
  if ( !fNUM_IsNumber( fNUM_PartDecimal( vnumero ) ) ) {
     return false;	
  }
  
  return true;

}    

function fNUM_ValNumPES(numero, campo, longitud) {
// *********************************************************
//      Valida un import en moneda pesetes:
// *********************************************************
var vnumero = "";

  if (! fNUM_ValidaNumero(numero)) {
     return false;
  }
  
  if ( ! (fNUM_PartDecimal(numero) == "") ) {
     return false;   	  
  }
  
  vnumero = fNUM_EliminaPunts( fNUM_PartEntera(numero) );
  
  campo.value = fNUM_PossarEnter( vnumero , longitud);
  
  return true;
  
}    
 
function fNUM_ValNumEUR(numero, campo, longitud) {
// *********************************************************
//      Valida un import en moneda pesetes:
// *********************************************************
var part_entera = "";
var part_decimal= "";


  if ( !fNUM_ValidaNumero(numero) ) {
      return false;
  }

  part_decimal = fNUM_PartDecimal(numero);

  if (part_decimal.length > 2) {
     return false;
  }

  part_entera = fNUM_EliminaPunts( fNUM_PartEntera(numero) );
  
  campo.value = fNUM_PossarEnter( part_entera , longitud - 3) + ',' + fNUM_PossarDecimal( part_decimal, 2 );
  
  return true;
  
}    
 
function fNUM_ReturnMoneda(numero, moneda) {
// *********************************************************
//      Valida un import en moneda pesetes:
// *********************************************************
var part_entera = "";
var part_decimal= "";
var resultat= "NaN";

document.write("HOLA:::::");

  if ( !fNUM_ValidaNumero(numero) ) {
      return resultat;
  }

  part_decimal = fNUM_PartDecimal(numero);


  if (part_decimal.length > 2) {
     return resultat;
  }

  part_entera = fNUM_EliminaPunts( fNUM_PartEntera(numero) );
  
  if (moneda == "EUR") {
        resultat = fNUM_PossarEnter( part_entera , 0) + ',' + fNUM_PossarDecimal( part_decimal, 2 );
     } 
  else {
  	resultat = fNUM_PossarEnter( vnumero , 0);
       }
  
  return resultat;
}    
 


// *********************************************************
//      Retorna el valor d'un INPUT Tipo RADIO
// *********************************************************

function valorRadio( radio , Tamany) {
// *********************************************************
//      Valida un import en moneda pesetes:
// *********************************************************
var resultat= "";
var i = 0;
 
   for(i=0;i<radio.length;i++)
	{
		if(radio[i].checked)
		{
			resultat = radio[i].value;
		}
	}
    return resultat;
}
