var clavePeseta="ESP";
var claveEuro="EUR";
var eur2pta="166.386";

// Elimina la posibilidad de tener foco a los elementos del formulario que se
// le pasan en unaTabla
function PonSinFoco(unForm,unaTabla) {
	for (i=0;i<unaTabla.length ; i++) {	
		eval("unForm."+unaTabla[i]).onfocus=eval("unForm."+unaTabla[i]).blur;	}	
}

// Busca en "unaTabla", en la colClave el valor loBuscado, y devuelve el
// número de fila en que fue encontrado. Si no lo encuentra devuelve -1.
function BuscaClave(unaTabla, colClave, loBuscado) {
for (i=0;i<unaTabla.length && unaTabla[i][colClave]!=loBuscado; i++) {}
return (i==unaTabla.length?-1:i);
}

//  Devuelve un subarray con las filas que cumplan la "condicion", esta
// debe ser una expresión en función del índice de la tabla [i].
function SelectArray(unaTabla, condicion) {
FilasSi=new Array();
ind=0;
for (i=0;i<unaTabla.length ; i++) {
	if (eval(condicion)) {FilasSi[ind++]=unaTabla[i];}
}
return (FilasSi);
}

//  Elimina blancos al principio y al final de una cadena.
function TrimCadena(UnaCadena) {
	for (var i = 0; (i < UnaCadena.length) && (UnaCadena.charAt(i)==" "); i++) {};
	for (var f = UnaCadena.length-1; (f >=0 ) && (UnaCadena.charAt(f)==" "); f--) {};
	return UnaCadena.slice(i,++f);
}

//  Rellena una cadena hasta el largo dado con un caracter de relleno;
// DoI marca si el relleno se hace por la derecha o izquierda.
function RellenaCadena(cadena,largo,relleno,DoI) {
relleno=relleno.substr(0,1);
if (cadena.length>=largo) {cadena=cadena.substr(0,largo)}
	else {
		while (cadena.length<largo) {cadena=(DoI=="D"?cadena+relleno:relleno+cadena);	}
	}
return (cadena);
}

//  Redondea un número a un determinado número de decimales.
function roundOff(number,X) {
//  X = (!X ? 2 : X);
  var result= Math.round(number*Math.pow(10,X))/Math.pow(10,X);
  return result;
}

var whitespace = " \t\n\r";
var delimitadorDecimal = ",";
var delimitadorMiles = ".";
var defaultEmptyOK = false;

function presenta(imp, ndec) {
if (isNaN(imp) || !isFinite(imp))  return "";
var st=roundOff(imp,ndec)+"";
return formateaImportePantalla(st,ndec);
}

function formateaImportePantalla(importe,ndec) {
   var parteEntera,parteDecimal;
   arrayOfStrings = importe.split('.');    // Separo la parte entera y la decimal.
   if (arrayOfStrings.length==1) {parteEntera=arrayOfStrings[0];parteDecimal="";}   // solo hay parte entera.
     else {parteEntera=arrayOfStrings[0];parteDecimal=arrayOfStrings[1];}           // Hay parte entera y parte decimal.

    // Pongo delimitadorMiles
    var s3="";
    for(var i=parteEntera.length;i>0;i--) {
        if ( ((parteEntera.length-i)%3==0) && (i!=parteEntera.length) ) s3=parteEntera.charAt(i-1)+delimitadorMiles+s3;
        else s3=parteEntera.charAt(i-1)+s3;
       }
    if (s3=="") s3="0";   // Si no hay parte entera el numero es del tipo 0,
    if (ndec==0)	return s3;
	  else	return s3+delimitadorDecimal+RellenaCadena(parteDecimal,ndec,"0","D");
}

function stripCharsInBag (s, bag)
{   var i;
    var returnString = "";

    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.

    for (i = 0; i < s.length; i++) {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function parseReal (s)
{
var c=stripCharsInBag(s,delimitadorMiles);
entYdec=c.split(delimitadorDecimal);    
n=(sinDatos(entYdec[0])?"0":entYdec[0])+"."+(sinDatos(entYdec[1])?"00":entYdec[1]);
return parseFloat(n);
}

function cuota12Pagos(importe,interes,plazo) {
	// plazo en meses, interes en tanto por uno
        var numerador   = importe*interes/12*Math.pow((1+interes/12),plazo);
        var denominador = Math.pow((1+interes/12),plazo)-1;
        return numerador/denominador;
}

function ValidaYDimeElValor(fs,nDec,mensajeNoValido) {
	var valor;
	if 	(sinDatos(fs.value))	valor=0.0; 
	else {
		  	if (validarImporte(fs.value,nDec)) valor=parseReal(fs.value);
      			 else {alert(mensajeNoValido);return false;}
		}
	return valor;
}

// Devuelve true si la cadena es null,espacios en blanco o es igual a cero.
function sinDatos (s) {
    var i;
    // Is s empty?
    if (isEmpty(s)) return true;
    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.
    for (i = 0; i < s.length; i++) {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1) return false;
    }
    // All characters are whitespace.
    return true;
}

function validarImporte(cantidad,decimales)
{
 var parteEntera;
 var parteDecimal;
 arrayOfStrings = cantidad.split(delimitadorDecimal);
 if (arrayOfStrings.length>2) return false;   // aparece mas de un delimitador decimal.
 if (arrayOfStrings.length==1) {parteEntera=arrayOfStrings[0];parteDecimal="";}   // solo hay parte entera.
   else {parteEntera=arrayOfStrings[0];parteDecimal=arrayOfStrings[1];}           // Hay parte entera y parte decimal.
 // Analizamos la parte decimal.
 if (parteDecimal!=""){
   if (!isInteger(parteDecimal)) return false;
   if ((decimales==0)&&(parteDecimal.length>0)) return false;  // El numero tiene decimales.
   if (parteDecimal.length>decimales) return false;            // El numero tiene mas decimales de los declarados.
 }

 // Analizamos la parte entera.
 var fragmentoMillar = parteEntera.split(delimitadorMiles);
 if ((fragmentoMillar.length==1)&&(isInteger(parteEntera))) return true;
 if ((fragmentoMillar[0].length>3)||(!isInteger(fragmentoMillar[0]))) return false;
 for (var i=1; i < fragmentoMillar.length; i++) {
   if ((fragmentoMillar[i].length!=3)||(!isInteger(fragmentoMillar[i]))) return false;
 }
 return true; // Se trata de un numero valido.

}

//---------------------------------------------------------------------
function isEmpty(s) {   return ((s == null) || (s.length == 0)) }
//---------------------------------------------------------------------
function isDigit (c) {   return ((c >= "0") && (c <= "9")) }
//---------------------------------------------------------------------
function isInteger (s)
{   var i;

    if (isEmpty(s))
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {
        // Check that current character is number.
        var c = s.charAt(i);

        if (!isDigit(c)) return false;
    }
    // All characters are numbers.
    return true;
}

//---------------------------------------------------------------------
function EsMultiplo(a,b,precision) {return (Math.abs(a%b)<precision);}
//---------------------------------------------------------------------

function getSearchAsArray() {
   // Browser-sniffing variables.
   var minNav3 = (navigator.appName == "Netscape" && 
      parseInt(navigator.appVersion) >= 3)
   var minIE4 = (navigator.appName.indexOf("Microsoft") >= 0 && 
      parseInt(navigator.appVersion) >= 4)
   var minDOM = minNav3 || minIE4   // Baseline DOM required for this function
   // Initialize array to be returned.
   var results = new Array()
   if (minDOM) {
      // Unescape and strip away leading question mark.
      var input = unescape(location.search.substring(1))
      if (input) {
         // Divide long string into array of name/value pairs.
         var srchArray = input.split("&")
         var tempArray = new Array()
         for (i = 0; i < srchArray.length; i++) {
            // Divide each name/value pair temporarily into a two-entry array.
            tempArray = srchArray[i].split("=")
            // Use temp array values as index identifier and value.
            results[tempArray[0]] = tempArray[1]
         }
      }
   }
   return results
}