Hola,
Tengo un JS en una ventana con formulario que lo que hace es verificar si estan completos los campos y si lo están, entonces enviar el formulario. Me gustaria añadirle que una vez que envie el formulario se cierre la ventana. ¿Cómo puedo hacerlo? Os envio el script para que me indiqueis donde puedo añadirlo y cómo.
Muchas Gracias. 
 
  
<script language=JavaScript> 
 function submit_page(formulario)
 {
  hayError = false;  
	var numlistas=0; 
	 if (document.datos_generales.listas)
	 {
	    numlistas=document.datos_generales.listas.length;
	 } 
  // Comprueba que ha marcado alguna lista o categoría genérica  
  for (var k=0;k<numlistas;k++)
   { 
  		if (document.datos_generales.listas[k].checked) break;
  		if (k==document.datos_generales.listas.length-1)
  		{
		  alert("Debe marcar alguna lista de interes.");
    	          hayError=true;
	        }
  }  
  //Chequeamos que se ha seleccionado una edad     
  if(hayError == false && esBlanco(formulario.email))
  {
    alert("El campo direccion de e-mail no puede quedar en blanco.");
    formulario.email.focus();
    hayError = true;
  }
  if (hayError==false && ((formulario.pais.value=='') || (formulario.pais.value=='NULL') ))
  { 
    alert("Debe seleccionar un pais");
    hayError = true;
  }
  if (hayError==false) 
   {
     if (CompruebaCp()== true)
        hayError=true;
     else
        hayError=false;
   } 
  //CHEQUEA LA VALIDEZ DE LOS CAMPOS
  var validaEmail= esEmailValido(formulario.email.value);
  if(hayError == false && validaEmail!=0 )
  {
    if (validaEmail==1) { 
        alert("No es una direccion de email valida."); 
     hayError = true;
    } 
    if (validaEmail==2) { 
       alert("Email incorrecto. El campo email no puede contener espacios."); 
     hayError = true;
    }    
  }
  if(hayError == false && esMenorLongitud(formulario.email, 60) == false)
  { 
      alert("La direccion de e-mail es demasiado largo.");  
   hayError = true;
  } 
  // chequeo del sexo y la edad  
  if (hayError==false && (document.datos_generales.sexo[0].checked == false )
  		      &&  (document.datos_generales.sexo[1].checked == false ) ) 
     {
     	alert ("selecciona tu sexo ");
        hayError=true ;
     }  
  if ( hayError== false && (document.datos_generales.fec_ncto.value=='sel') ) 
	{ 
		alert('Debes seleccionar tu edad'); 
		document.datos_generales.fec_ncto.focus(); 
		hayError='true'; 
	}    
 if ( hayError== false && document.datos_generales.sector.value == '99' )
	{
		alert("Debes seleccionar tu Sector");
		hayError="true";
	}    
	if ( hayError== false && document.datos_generales.ocupacion.value == '99' )
	{
		alert("Debes seleccionar tu Ocupacion");
		hayError="true";
	} 
  if(hayError == false)
   {
    formulario.submit();
   }
 } 
// CHEQUEO DE BLANCOS
 function esBlanco(campo) {
  if(campo.value == "")
   return true;
  else
   for (var i=0;i<campo.value.length;i++)
    if (campo.value.charAt(i)!=" ") return false; 
  return true;
 } 
//CHEQUEO DE LONGITUD
 function esMenorLongitud(campo, longitud) {
  valor = campo.value; 
  if(valor.length > longitud) {
   return false;
  }
  return true;
 }
  //CHEQUEO DE EMAIL
  function esEmailValido(email) // Devuelve los valores:0(correcto),1(incorrecto),2(con espacios)
  {
    if (email.indexOf(" ")!=-1) // Comprobamos que email no contenga espacios,tampoco en los laterales
       return 2;
    if (email.indexOf("@")==-1) // Comprobamos que exista al menos un carácter @
    {
       return 1;
    }
    else
    {
      var posarroba=email.indexOf("@");
      var nombre=email.substring(0, posarroba);
      var dominio=email.substring(posarroba+1); 
      // Comprobamos que nombre  tenga al menos un carácter
      if (nombre.length==0)
         return 1; 
      // Comprobamos que nombre no sea un solo punto
      if (nombre==".")
         return 1; 
      // Comprobamos que dominio tenga al menos un carácter
      if (dominio.length==0)
         return 1 
      // Comprobamos que dominio tenga al menos existe un punto
      if (dominio.indexOf(".")==-1)
         return 1; 
      // Comprobamos que la ni la primera ni la última posición del dominio sea el punto
      len_dom=dominio.length - 1;
      if ((dominio.charAt(0)==".")||(dominio.charAt(len_dom  )=="."))
         return 1; 
      // Comprobamos que tanto nombre como dominio sólo cotengan carácteres válidos
      if (CharInCorrectos(nombre)) return 1;
      if (CharInCorrectos(dominio)) return 1;
    }
    return 0;
   } 
   function CharInCorrectos(cadena)
   {
     validos="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmno  pqrstuvwxyz0123456789-_."; 
     // Comprobamos que cadena no tenga algún carácter no contemplado
     // en el string validos y que no existan dos puntos contiguos
     for (i=0;i<cadena.length;i++)
     {
       if (validos.indexOf(cadena.charAt(i))==-1) return true;
       if (cadena.charAt(i)==".")
         if ((i!=cadena.length-1) && (cadena.charAt(i+1)=="."))
           return true;
     }
     return false; // No se ha encontrado ninguna irregularidad
   }  
  function CompruebaCp()
  {
        var pais     = document.datos_generales.pais.value;
        var cp       = document.datos_generales.cp.value;
        var longitud = document.datos_generales.cp.value.length;
        if (cp=='' && pais=='ESP') 
          {
            alert("Debes introducir el codigo postal");
            hayError="true";
            return true;
          }
        if (longitud != 5 && pais=='ESP')
          {
             alert("El codigo postal no es correcto");
             hayError="true";
             return true;
          }
        if (longitud==5 && pais=='ESP')
          {
           var pos0=parseInt(cp.charAt(0));
           var pos1=parseInt(cp.charAt(1));
           if (  (( pos0==5)&& (pos1 > 2)) || ( pos0 > 5 )    )
            {
               alert("El codigo postal no es correcto");
               hayError="true";
               return true;
            }
           validos="0123456789";   
           for (contador=0;contador<longitud;contador++)
            {
       		if (validos.indexOf(cp.charAt(contador))==-1) 
       		  {
               		alert("El codigo postal no puede contener letras ");
               		hayError="true";
               		return true;       		     
       		  }    		
            } 
 	     } 
         hayError="false";
   	     return false; 
}  
</script>