var numbers="0123456789.";
  function isNumeric(x) {
    // is x a String or a character?
    if(x.length>1) {
      // remove negative sign
      x=Math.abs(x)+"";
      for(j=0;j<x.length;j++) {
        // call isNumeric recursively for each character
        number=isNumeric(x.substring(j,j+1));
        if(!number) return number;
      }
      return number;
    }
    else {
      // if x is number return true
      if(numbers.indexOf(x)>=0) return true;
      return false;
    }
  }
function validar_correo (correo){
	if(correo != "") {
		emailad = correo;
		var exclude=/[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
		var check=/@[\w\-]+\./;
		var checkend=/\.[a-zA-Z]{2,4}$/;	
		if(((emailad.search(exclude) != -1)|| (emailad.search(check)) == -1)|| (emailad.search(checkend) == -1)) {
			return false;
		}
		else{
			return true;
		}
	}
}
function redondear(cantidad, decimales) 
{
	var cantidad = parseFloat(cantidad);
	var decimales = parseFloat(decimales);
	decimales = (!decimales ? 2 : decimales);
	return Math.round(cantidad * Math.pow(10, decimales)) / Math.pow(10, decimales);
}
//---------------------------------------------------------------------
// Función para saber si un campo es numerico o mayor
// que un parametro que se le pasa.
// El parametro que indica la longitud maxima es opcional, y si no
// tiene ningun valor, por defecto sera 1000.
//---------------------------------------------------------------------
function EsNumerico(campo, maximo) {
	var miError = false;

	// Valor por defecto del maximo
	if (maximo == null) maximo = 1000;
	
	if (event.keyCode != 0) {
		if ((event.keyCode == 44) || (event.keyCode == 46))
			// La coma y el punto, lo convierto en un punto
			event.keyCode = 46;
		else
			if ((event.keyCode < 48) || (event.keyCode > 57)) {
				// La tecla pulsada no es un número
				event.keyCode = 0;
				miError = true;
				}
		if (campo.value < 0)
			// EL valor no puede ser negativo
			campo.value = -campo.value;
		if (isNaN(campo.value) && (!miError)) {
			// Todo el campo no es numérico
			event.keyCode = 0;
			campo.focus();
			miError = true;
			}
		if ((campo.value >= maximo) && (!miError)) {
			// No dejo que la longitud sea mayor al valor indicado
			event.keyCode = 0;
			miError = true;
			}
		}
	return miError;
	}

//---------------------------------------------------------------------
// Funcion para cuando un campo de un formulario pierde el foco, 
// para comprobar si el valor que hay en ese campo es numerico y
// de longitud inferior o igual a la especificada.
//---------------------------------------------------------------------
function numPierdeFoco(campo, mensajeNumerico, mensajeMaximo, maximo) {
	var miError = false;

	// Valor por defecto del maximo
	if (maximo == null) maximo = 1000;

	campo.value = Replace(campo.value,',','.');
	if (campo.value < 0) {
		// EL valor no puede ser negativo
		campo.focus();
		campo.value = -campo.value;
		}
	if (isNaN(campo.value)) {
		// Tiene que ser numérico
		alert(mensajeNumerico);
		campo.focus();
		miError = true;
		}
	if ((campo.value > maximo) && (!miError) && (mensajeMaximo != '')) {
		// Si la longitud es mayor, muestro un mensaje
		alert(mensajeMaximo);
		campo.focus();
		miError = true;
		}
	return miError;
	}

//---------------------------------------------------------------------
// Funcion para reemplazar un texto dentro de otro.
//---------------------------------------------------------------------
function Replace(Cadena, Buscar, Reemplazar) {
	var temp = Cadena;
	var a = 0;

	for (var i = 0; i < Cadena.length; i++) {
		a = temp.indexOf(Buscar);
		if (a == -1) break
		else temp = temp.substring(0, a) + Reemplazar + temp.substring((a + Buscar.length));
		}
	return temp;
	}

//---------------------------------------------------------------------
// Funciones de validación de los campos.
//---------------------------------------------------------------------
function ValidaImporte(campo, accion) {
	var maximo = 10000000;
	var alertNumerico = 'El importe de la hipoteca tiene que ser numérico.';
	var alertMaximo = 'El importe de la hipoteca no puede ser superior a ' + maximo + ' euros.';

	if (accion == null) accion = 'blur';
	if (accion == 'keypress') return EsNumerico(campo, maximo);
	if (accion == 'blur') return numPierdeFoco(campo, alertNumerico, alertMaximo, maximo);
	}

function ValidaAnos(campo, accion) {
	var maximo = 30;
	var alertNumerico = 'El plazo de pago tiene que ser numérico.';
	var alertMaximo = 'El plazo no puede ser superior a ' + maximo + ' años.';

	if (accion == null) accion = 'blur';
	if (accion == 'keypress') return EsNumerico(campo, maximo);
	if (accion == 'blur') return numPierdeFoco(campo, alertNumerico, alertMaximo, maximo);
	}

function ValidaTipo(campo, accion) {
	var alertNumerico = 'El tipo de interés tiene que ser numérico.';
	var alertMaximo = '';

	if (accion == null) accion = 'blur';
	if (accion == 'keypress') return EsNumerico(campo);
	if (accion == 'blur') return numPierdeFoco(campo, alertNumerico, alertMaximo);
	}

function ValidarFormulario(Formulario) {
	var miError = false;
	
	// Validacion del importe
	if (Formulario.caja_importe.value == "" || Formulario.caja_importe.value == 0) {
		alert("Por favor introduce un importe.");
		Formulario.caja_importe.focus();
		miError = true;
		}
	else
		miError = ValidaImporte(Formulario.caja_importe);

	// Validacion del plazo
	if (!miError) {
		if (Formulario.caja_plazo.value == "" || Formulario.caja_plazo.value == 0) {
			alert("Por favor introduce un plazo.");
			Formulario.caja_plazo.focus();
			miError = true;
			}
		else
			miError = ValidaAnos(Formulario.caja_plazo);
		}

	// Validacion de la frecuencia de pago
	/*if (Formulario.lstbxFrecuencia.selectedIndex == 0 && !miError) {
		alert('Debes seleccionar la frecuendia de pago.');
		Formulario.lstbxFrecuencia.focus();
		miError = true;
		}
	*/
	// Validacion del tipo de interes
	if (!miError) {
		if (Formulario.caja_interes.value == "" || Formulario.caja_interes.value == 0) {
			alert("Por favor introduce un tipo de interés.");
			Formulario.caja_interes.focus();
			miError = true;
			}
		else
			miError = ValidaTipo(Formulario.caja_interes);
		}
	
	if (!miError) CalculaCuota(Formulario);
	}

//---------------------------------------------------------------------
// Calculo de la cuota.
//---------------------------------------------------------------------
function CalculaCuota(form) {
	//financiacion,plazo,intereses
	var moneda = "  Euros mensuales.";
	var importe = form.caja_importe.value * 1;
	var frecuencia;
	var ajuste;
	var interes;
	var plazo;
	var pagomes;
	
	//Frecuencia pago:mensual
	frecuencia = 12;
	ajuste = 1;
	/*switch (form.lstbxFrecuencia.value) {
		case "f1":
			frecuencia = 12;
			ajuste = 1;
			break;
		case "f2":
			frecuencia = 4;
			ajuste = 3;
			break;
		case "f3":
			frecuencia = 3;
			ajuste = 4;
			break;
		case "f4":
			frecuencia = 2;
			ajuste = 6;
			break;
		case "f5":
			frecuencia = 1;
			ajuste = 12;
			break;
		}
	*/
	
	interes = form.caja_interes.value / (100 * frecuencia);
	plazo = form.caja_plazo.value * 1 * frecuencia;
	pagomes = cuota(importe,interes,plazo);
	if (isNaN(pagomes))
		//form.txtbxCuota.value = "";
		alert("No hay datos que mostrar");
	else
		//form.txtbxCuota.value = pagomes + moneda;
		alert("Importe a pagar: " + pagomes + moneda)
	}

function cuota(importe,interes,plazo) {
	potencia = 1 + interes;
	multiplicador = Math.pow(potencia,-plazo);
	multiplicador1 = importe*interes;
	pagomes = multiplicador1 / (1-multiplicador);
	pagomes =redondear(pagomes, 2) 
//	pagomes = Math.round(pagomes);
	return pagomes;
	}