   <!-- 
   //Comprueba si la entrada en las cajas de texto contienen 
   //   solo números o el punto decimal. 
   function SonNumeros( valor_1 ){ 
            if ( valor_1 == "" ) 
               return false; 
            var punto = true; 
            for (var i = 0; i < valor_1.length; i++){ 
                var ch = valor_1.substring(i, i+1) 
                if (( ch < "0" || ch > "9" )){ 
                   if ( ch != "."){ 
                      return false; 
                   } 
                   else{ 

                   } 
                } 
            } 
            return true; 
   } 

   //Comprueba que los datos introducidos sean válidos y estén 
   //   dentro del rango fisiológico, y calcula el IMC.  
   function IndMasCor(peso_1,talla_1){ 
            //Comprueba si se introdujo un número, y si no es así 
            //   lo indica y borra la caja correspondiente. 
            if(!SonNumeros(peso_1.value)){ 
               var mensaje="El dato de PESO introducido NO es numérico.\n\n"+ 
                           "Solo puede usar dígitos o\n"+ 
                           "el <.> como separador decimal." 
               alert(mensaje); 
               //Borra el valor incorrecto de peso. 
               peso_1.value=""; 
               peso_1.focus(); 
               return ""; 
            } 
            //Convierte el dato de la caja a su valor numérico real. 
            var pe = parseFloat(peso_1.value,10); 
            if(isNaN(pe) || (pe < 40 || pe > 200)){ 
               mensaje = "¡ Peso incorrecto !\n\n"+ 
                         "El peso debe ser un valor numérico\n"+ 
                         "comprendido entre 40 y 200 kg."; 
               alert(mensaje); 
               //Devuelve como valor de peso los rangos extremos. 
               var pes_dev;  
               if ( isNaN(pe) ){ 
                  pes_dev = ""; 
               } 
               else{ 
                  pes_dev = 40; 
                  if ( pe > 200 ) 
                     pes_dev = 200; 
               }  
               document.forms[0].peso.value = pes_dev; 
               document.forms[0].peso.focus(); 
               return ""; 
            } 
            if(!SonNumeros(talla_1.value)){ 
               var mensaje="El dato de TALLA introducido NO es numérico.\n\n"+ 
                           "Solo puede usar dígitos o\n"+ 
                           "el <.> como separador decimal." 
               alert(mensaje); 
               talla_1.value=""; 
               talla_1.focus(); 
               return ""; 
            } 
            var ta=parseFloat(talla_1.value,10); 
            if(isNaN(ta) || ( ta < 1.4 || ta > 2.1)){ 
               var mensaje = "¡ Talla incorrecta !\n\n"+ 
                             "La talla debe ser un valor numérico\n"+ 
                             "comprendido entre 1.400 y 2.100 m."; 
               alert(mensaje); 
               var tall_dev;  
               if ( isNaN(pe) ){ 
                  tall_dev = ""; 
               } 
               else{ 
                  tall_dev = 1.400; 
                  if ( pe > 150 ) 
                     tall_dev = 2.100; 
               }  
               document.forms[0].talla.value = tall_dev; 
               talla_1.value=""; 
               talla_1.focus(); 
               return ""; 
            } 
            return Math.round((pe/(ta*ta))*10)/10; 
   } 

   //Decide que diagnóstico mostrar en función del valor del IMC.  
   function DiagIMC (imc_1){ 
            if ( imc_1 == ""){ 
                return ""; 
            } 
            else{ 
                if ( imc_1 < 18 ){ 
                   return "Delgadez muy preocupante.\n"+ 
                          "En estas situaciones crece el riesgo de\n"+ 
                          "padecer patologías respiratorias, diges-\n"+ 
                          "tivas y trastornos del comportamiento\n"+ 
                          "alimentario como anorexia y/o bulimia."; 
                }  
                if ( imc_1 < 20 ){ 
                   return "Delgadez no recomendable.\n"+ 
                          "Peso insuficiente para su talla. Debe\n"+ 
                          "incrementarse ligeramente el peso hasta\n"+ 
                          "sobrepasar un IMC de 20.";  
                } 
                if ( imc_1 < 25 ){ 
                   return "Relación ideal de peso y talla.\n"+ 
                          "Este valor del índice se corresponde con\n"+ 
                          "la menor tasa de morbi- mortalidad.";  
                } 
                if ( imc_1 < 30 ){ 
                   return "Comienzo del sobrepeso.\n"+ 
                          "Debe cuidar no alcanzar un valor de 30\n"+ 
                          "en el índice de masa corporal IMC y re-\n"+ 
                          "ducirlo hasta 25 si fuera posible, ba-\n"+ 
                          "jando un poco de peso."; 
                }  
                if ( imc_1 < 35 ){ 
                   return "Obesidad.\n"+ 
                          "Se ha de reducir peso para reducir los\n"+ 
                          "riesgos de patologías asociadas como hi-\n"+ 
                         "pertensión, diabetes, aterosclerosis,...";  
                } 
                if ( imc_1 < 40 ){ 
                   return "Obesidad severa.\n"+ 
                          "Un IMC tan elevado está siempre asociado\n"+ 
                          "con trastornos muy graves de los siste-\n"+ 
                          "mas cardiovascular, endocrino, etc...\n"+ 
                          "Debe reducir su peso inmediatamente."; 
                } 
                if ( imc_1 == 40 || imc_1 > 40 ){ 
                   return "Obesidad morbida.\n"+ 
                          "Debe acudir a un especialista inmedia-\n"+ 
                          "tamente."; 
                } 
            } 
   } 

   //Calcula el peso para un IMC de 20 (talla fija). 
   function LimiteInferior (talla_1){ 
            var ta=parseFloat(talla_1.value,10); 
            return Math.round((20 * ta* ta)*10)/10; 
   } 

   //Calcula el peso para un IMC de 25 (talla fija). 
   function LimiteSuperior (talla_1){ 
            var ta=parseFloat(talla_1.value,10); 
            return Math.round((25 * ta* ta)*10)/10; 
   } 
   
   
function show_calendar4(str_target, str_datetime) {
	var arr_months = ["January", "February", "March", "April", "May", "June",
		"July", "August", "September", "October", "November", "December"];
	var week_days = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
	var n_weekstart = 1; // day week starts from (normally 0 or 1)
	
	var dt_datetime = (str_datetime == null || str_datetime =="" ?  new Date() : str2dt4(str_datetime));
	var dt_prev_month = new Date(dt_datetime);
	dt_prev_month.setMonth(dt_datetime.getMonth()-1);
	if (dt_datetime.getMonth()%12 != (dt_prev_month.getMonth()+1)%12) {
		dt_prev_month.setMonth(dt_datetime.getMonth());
		dt_prev_month.setDate(0);
	}
	var dt_next_month = new Date(dt_datetime);
	dt_next_month.setMonth(dt_datetime.getMonth()+1);
	if ((dt_datetime.getMonth() + 1)%12 != dt_next_month.getMonth()%12)
		dt_next_month.setDate(0);
	
	var dt_firstday = new Date(dt_datetime);
	dt_firstday.setDate(1);
	dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);
	var dt_lastday = new Date(dt_next_month);
	dt_lastday.setDate(0);
	
	// html generation (feel free to tune it for your particular application)
	// print calendar header
	var str_buffer = new String (
		"<html>\n"+
		"<head>\n"+
		"	<title>Select date</title>\n"+
		"</head>\n"+
		"<body background=\"bg.gif\">\n"+
		"<table class=\"clsOTable\" cellspacing=\"0\" border=\"0\" width=\"100%\">\n"+
		"<tr><td bgcolor=\"green\">\n"+
		"<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">\n"+
		"<tr>\n	<td bgcolor=\"green\"><a href=\"javascript:window.opener.show_calendar4('"+
		str_target+"', '"+ dt2dtstr4(dt_prev_month)+"');\">"+
		"<img src=\"images&#47prev.gif\" width=\"16\" height=\"16\" border=\"0\""+
		" alt=\"previous month\"></a></td>\n"+
		"	<td bgcolor=\"green\" colspan=\"5\">"+
		"<font color=\"white\" face=\"tahoma, verdana\" size=\"2\">"
		+arr_months[dt_datetime.getMonth()]+" "+dt_datetime.getFullYear()+"</font></td>\n"+
		"	<td bgcolor=\"green\" align=\"right\"><a href=\"javascript:window.opener.show_calendar4('"
		+str_target+"', '"+dt2dtstr4(dt_next_month)+"');\">"+
		"<img src=\"images&#47next.gif\" width=\"16\" height=\"16\" border=\"0\""+
		" alt=\"next month\"></a></td>\n</tr>\n"
	);

	var dt_current_day = new Date(dt_firstday);
	// print weekdays titles
	str_buffer += "<tr>\n";
	for (var n=0; n<7; n++)
		str_buffer += "	<td bgcolor=\"gray\">"+
		"<font color=\"white\" face=\"tahoma, verdana\" size=\"2\">"+
		week_days[(n_weekstart+n)%7]+"</font></td>\n";
	// print calendar table
	str_buffer += "</tr>\n";
	while (dt_current_day.getMonth() == dt_datetime.getMonth() ||
		dt_current_day.getMonth() == dt_firstday.getMonth()) {
		// print row heder
		str_buffer += "<tr>\n";
		for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
				if (dt_current_day.getDate() == dt_datetime.getDate() &&
					dt_current_day.getMonth() == dt_datetime.getMonth())
					// print current date
					str_buffer += "	<td bgcolor=\"green\" align=\"right\">";
				else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
					// weekend days
					str_buffer += "	<td bgcolor=\"#b3b75b\" align=\"right\">";
				else
					// print working days of current month
					str_buffer += "	<td bgcolor=\"white\" align=\"right\">";

				if (dt_current_day.getMonth() == dt_datetime.getMonth())
					// print days of current month
					str_buffer += "<a href=\"javascript:window.opener."+str_target+
					".value='"+dt2dtstr4(dt_current_day)+"'; window.close();\">"+
					"<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";
				else 
					// print days of other months
					str_buffer += "<a href=\"javascript:window.opener."+str_target+
					".value='"+dt2dtstr4(dt_current_day)+"'; window.close();\">"+
					"<font color=\"gray\" face=\"tahoma, verdana\" size=\"2\">";
				str_buffer += dt_current_day.getDate()+"</font></a></td>\n";
				dt_current_day.setDate(dt_current_day.getDate()+1);
		}
		// print row footer
		str_buffer += "</tr>\n";
	}
	// print calendar footer

	str_buffer +=
		"</table>\n" +
		"</tr>\n</td>\n</table>\n" +
		"</body>\n" +
		"</html>\n";

	var vWinCal = window.open("", "Calendar", 
		"width=300,height=190,status=no,resizable=yes,top=200,left=200");
	vWinCal.opener = self;
	vWinCal.focus();
	var calc_doc = vWinCal.document;
	calc_doc.write (str_buffer);
	calc_doc.close();
}
// datetime parsing and formatting routimes. modify them if you wish other datetime format
function str2dt4 (str_datetime) {
	var re_date = /^(\d+)\/(\d+)\/(\d+)$/;
	if (!re_date.exec(str_datetime))
		return alert("Invalid Datetime format: "+ str_datetime);
	return (new Date (RegExp.$3, RegExp.$1-1, RegExp.$2));
}
function dt2dtstr4 (dt_datetime) {
	return (new String (
			(dt_datetime.getMonth()+1)+"/"+dt_datetime.getDate()+"/"+dt_datetime.getFullYear()));
}

 function aMayusculas(campo){
     campo.value=campo.value.toUpperCase();
  }
  
  function hlinea(){
     linea.style.color="red"
  }
  
   //--> 

<!-- Begin
function popUp(URL,winwid,winhei) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=yes,location=0,statusbar=0,menubar=0,resizable=1,width="+ winwid +",height="+ winhei +",left = 0,top = 0');");
}
// End -->

<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}
//-->

<!--
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} 
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; 
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}//-->

