function trim(cadena)
{
	for(i=0; i<cadena.length; )	{
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(i+1, cadena.length);
		else
			break;
	}

	for(i=cadena.length-1; i>=0; i=cadena.length-1)
	{
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(0,i);
		else
			break;
	}
	
	return (cadena);
}

function str_replace(busca, repla, orig){
str     = new String(orig);

rExp    = "/"+busca+"/g";
rExp    = eval(rExp);
newS    = String(repla);

str = new String(str.replace(rExp, newS));

return str;
}

function validoCif(cif){ //tb lo hace con los NIF
		//Returns: 1 = NIF ok, 2 = CIF ok, 3 = NIE ok, -1 = NIF bad, -2 = CIF bad, -3 = NIE bad, 0 = ??? bad
		var cif= cif.toUpperCase();
		num = new Array();
		for (i = 0; i < 9; i ++){
			num[i] = cif.substr(i,1);
		}
		var regular = new RegExp("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)");
		//si no tiene un formato valido devuelve error
		if (!regular.exec(cif)){return false;}
		
		//comprobacion de NIFs estandar
		regular = new RegExp("(^[0-9]{8}[A-Z]{1}$)");
		if (regular.exec(cif)){
		cadena = "TRWAGMYFPDXBNJZSQVHLCKE";
		if (num[8] == cadena.substr(cif.substr(0, 8)% 23, 1))
			return true;
		else
			return false;
		}
		
		//algoritmo para comprobacion de codigos tipo CIF
		suma = num[2]*1 + num[4]*1 + num[6]*1;
		for (i = 1; i < 8; i += 2){
			cadena = new String(2 * num[i]);
			suma += cadena.substr(0,1)*1 + cadena.substr(1,1)*1;
		}
		sum = new String(suma);
		n = new String(10 - sum.substr(sum.length - 1, 1));
		
		//comprobacion de NIFs especiales (se calculan como CIFs)
		regular = new RegExp("^[KLM]{1}");
		if (regular.exec(cif))
		if (num[8] == String.fromCharCode(64 + n))
			return true;
		else
			return false;
		
		//comprobacion de CIFs
		regular = new RegExp("^[ABCDEFGHJNPQRSUVW]{1}");
		if (regular.exec(cif))
		if (num[8] == String.fromCharCode(64 + n) || num[8] == n.substr(n.length - 1, 1))
			return true;
		else
			return false;
		
		//comprobacion de NIEs
		//T
		regular = new RegExp("^[T]{1}");
		if (regular.exec(cif)){
		regular = new RegExp("^[T]{1}[A-Z0-9]{8}$");
		if (num[8] == regular.exec(cif))
			return true;
		else
			return false;
		}
		//XYZ
		regular = new RegExp("^[XYZ]{1}");
		if (regular.exec(cif)){
		cadena1 = "TRWAGMYFPDXBNJZSQVHLCKE";
		cadena2 = str_replace('X','0', cif);
		cadena2 = str_replace('Y','1', cadena2);
		cadena2 = str_replace('Z','2', cadena2);
		if (num[8] == cadena1.substr( cadena2.substr(0, 8)% 23, 1))
			return true;
		else
			return false;
		}
		//si todavia no se ha verificado devuelve error
		return true;
}

function validarNif(abc){ // validar Nif
	dni=abc.substring(0,abc.length-1)
	let=abc.charAt(abc.length-1)
	if (!isNaN(let))
	 {
	 // alert('Falta la letra')
	 // document.formulario.nif.focus()
	  return false
	 }
	else
	 {
	  cadena="TRWAGMYFPDXBNJZSQVHLCKET"
	  posicion = dni % 23
	  letra = cadena.substring(posicion,posicion+1)
	  if (letra!=let.toUpperCase())
	   {
		//alert("Nif no válido")
		//document.formulario.nif.focus()
		return false
	   }
	 }
	//alert("Nif válido")
	return true;
	}



function letraDNI(dni2){
//Quito caracteres Raros o no validos
dni2=dni2.replace(" ", "");
dni2=dni2.replace("-", "");
dni2=dni2.replace(".", "");
dni2=dni2.replace("#", "");
dni2=dni2.replace("_", "");

numero=dni2.substr(0,dni2.length-1);
letra2=dni2.substr(dni2.length-1,dni2.length-1).toUpperCase();

cadena="TRWAGMYFPDXBNJZSQVHLCKET";
posicion = parseInt(numero) % 23;
letra = cadena.substring(posicion,posicion+1);


 if (letra2==letra){
 	dniBueno=numero+letra;
	//alert(result);
	return dniBueno;
 }else{
 	return false;
 }

}
function validoEmail(valor){
  if (/^[_a-z0-9-]+(.[_a-z0-9-]+)*@([0-9a-z](-?[0-9a-z])*.)+[a-z]{2}([zmuvtg]|fo|me)?$/.test(valor)){
    return (true)
  } else {
   //alert("La dirección de email es incorrecta.");
   return (false);
  }
}
function validoURL(url){
// 	var re=/^http:\/\/\w+(\.\w+)*\.\w{2,3}$/;
	var re=/^(http:\/\/)?\w+(\.\w+)*\.\w{2,3}$/;
//	var re=/^\w+(\.\w+)*\.\w{2,3}$/;
	return re.test(url); 
}

function replaceAcentos(cadena){
	cadena=cadena.toUpperCase();
	cadena=cadena.replace("Á","A");
	cadena=cadena.replace("É","E");
	cadena=cadena.replace("Í","I");
	cadena=cadena.replace("Ó","O");
	cadena=cadena.replace("Ú","U");
	//cadena=cadena.replace("'","");
	return cadena;	
}

function validarPrecio(p){
	 var pr=p.value;
	 var valor;
	 
	 pr=pr.replace(".","");
	 while (pr.lastIndexOf('.') > -1){
				pr = pr.replace('.', '');
	 }			
	
	 valor=pr.replace(".",""); //quito los '.' de la cadena.			
	 if ((valor.length>6)&&(valor.length<9)){
		valor=pr.substr(0,(pr.length)-6)+"."+pr.substr((pr.length)-6,3)+"."+pr.substr((pr.length)-3);
	 }else {
		if (valor.length>3){
			valor=pr.substr(0,(pr.length)-3)+"."+pr.substr((pr.length)-3);
		}else{
			 valor=pr.replace(".",""); 
		}	
	 }
	 p.value=valor;
		if (isFinite(pr)==false){
			alert("El precio no puede contener caracteres que no sean numéricos."+pr);
			p.value=0;
		}
 }
 function validarPrecioComas(p){
	 var cadTmp=p.value;
	 var ptmp=cadTmp.split(',');
	 var pr=ptmp[0];
	 var valor;
	 
	 pr=pr.replace(".","");
	 while (pr.lastIndexOf('.') > -1){
				pr = pr.replace('.', '');
	 }			
	
	 valor=pr.replace(".",""); //quito los '.' de la cadena.			
	 if ((valor.length>6)&&(valor.length<9)){
		valor=pr.substr(0,(pr.length)-6)+"."+pr.substr((pr.length)-6,3)+"."+pr.substr((pr.length)-3);
	 }else {
		if (valor.length>3){
			valor=pr.substr(0,(pr.length)-3)+"."+pr.substr((pr.length)-3);
		}else{
			 valor=pr.replace(".",""); 
		}	
	 }
	 if(ptmp.length==2){
	 	p.value=valor+','+ptmp[1].substr(0,2);
	 }else{
		 p.value=valor;
	}
	
	/*if (isFinite(pr)==false){
		alert("El precio no puede contener caracteres que no sean numéricos."+pr);
		p.value=0;
	}*/
 }
 
 function validoCC(numeroCuenta){
	var valores = new Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6);
	var controlCS,controlCC = 0;
	for (i=0; i<=7; i++)
		controlCS += parseInt(numeroCuenta.charAt(i)) * valores[i+2];
	controlCS = 11 - (controlCS % 11);
	if (controlCS == 11) controlCS = 0;
	else if (controlCS == 10) controlCS = 1;
	
	for (i=10; i<=19; i++)
		controlCC += parseInt(numeroCuenta.charAt(i)) * valores[i-10];
	controlCC = 11 - (controlCC % 11);
	if (controlCC == 11) controlCC = 0;
	else if (controlCC == 10) controlCC = 1;
	
	if (numeroCuenta.charAt(8)==controlCS && numeroCuenta.charAt(9)==controlCC ) {
		return true;
	}else{
		return false;
	}
	
}

