hola a todos, saludos desde chiapas!
 
el titulo si va de acuerdo a lo q deseo preguntar, no mas q es larga la historia, espero de verdad tengan tiempo para leer...... 
Bueno tengo una duda q me ha estado quebrando la cabeza, tengo un form donde registro un proyecto, en dicho form puedo asignar alumnos, asesores externos y asesores internos. 
mi problema esta con los asesores; por ejemplo, supongamos q el maestro (q un maestro es un asesor interno) con idCat 45 se asigna al proyecto, recibo el 45 por un input y se carga el maestro a traves de 
AJAX por cada maestro asignado cargo 3 inputs, dos tipo hidden ( uno para el contador de asesores y el otro q lleva su value=45) y un tercer input tipo text para anotar el area q asesorara que en este ejemplo como es asesor interno se llamara id y name = areaint1. 
el problema principal es la validacion de si esta vacio ese campo

, esta es mi funcion para validar el form, PERO CLARO, el 
explorer
 no lo hace.  
 Código HTML:
 function verifEmpre(formulario,a)
{
 if(formulario.categoria.value==0){alert("Selecciona una categoria.");return;}
 if(formulario.subcategoria.value==0){alert("Selecciona una subcategoria.");return;}
 if(vacio(formulario.empresa)){alert("Escribe el nombre que tendra la Empresa.");return;}
 if(vacio(formulario.giro)){alert("Escribe el giro de la Empresa.");return;}
 if(vacio(formulario.producto)){alert("Escribe el producto que vendera la Empresa.");return;}
 if(vacio(formulario.sede)){alert("Escribe la sede donde se llevara a cabo el Evento de Emprendedor.");return;}
 if(vacio(formulario.objetivo)){alert("Escribe el objetivo general de la Empresa.");return;}
 
 if(typeof externo1!='undefined')
 {
  if(formulario.areaext1.value==""){alert("Escribe el área que asesorará el primer Asesor Externo.");return;}
 }
 if(typeof externo2!='undefined')
 {
  if(formulario.areaext2.value==""){alert("Escribe el área que asesorará el segundo Asesor Externo.");return;}
 }
 if(typeof asesor1!='undefined')
 {
  if(formulario.areaint1.value==""){alert("Escribe el área que asesorará el primer Asesor Interno.");return;}
 }
 if(typeof asesor2!='undefined')
 {
  if(formulario.areaint2.value==""){alert("Escribe el área que asesorará el segundo Asesor Interno.");return;}
 }
 
 
 formulario.action="guardar-empre.php?guarda="+a;
 formulario.submit();
 
}
 pd: lo raro de esta funcion es q si en cada if en lugar de estar negado lo paso a == en el explorer lo hace pero en el firefox no....pero como dicen esa es otra historia! 
En vista de q mi funcion no jala para explorer intente hacer q en el script q guardar el form de dicho proyecto "guardar-empre.php" cheque si esta o no vacio mi input tipo text del area del asesor y si es asi q regrese al form. 
claro se q no debo validar del lado del servidor pero...la desesperacion ya saben....  
 Código PHP:
    if($_GET['guarda']==1)
 {
  $cate = $_POST['categoria'];
  $subcate = $_POST['subcategoria'];
  $nombre = $_POST['empresa'] ; 
  $giro = $_POST['giro'];
  $produc = $_POST['producto'];
  $lugar = $_POST['sede'];
  $fecha_sede = $_POST['anio']."-".$_POST['mes']."-".$_POST['dia'];
  $obj = $_POST['objetivo'];
  $fase = 1;
  $dateactual = date("Y-m-d");
 
  $cont = $_POST['contador'];
  $cont2 = $_POST['contador2'];
  $cont3 = $_POST['contador3'];
 
 
  if(isset($cont3))
  {
   switch($cont3)
   {
    case 1:
      if($_POST['areaext1']=="")
      {
       echo "<script>alert('Escribe el area del primer Asesor Externo.');</script>";
       echo "<script>location.href='javascript:history.go(-1)';</script>";
      }
    break;
    case 2:
      if($_POST['areaext1']=="")
      {
       echo "<script>alert('Escribe el area del primer Asesor Externo.');</script>";
       echo "<script>location.href='javascript:history.go(-1)';</script>";
      }
      if($_POST['areaext2']=="")
      {
       echo "<script>alert('Escribe el area del segundo Asesor Externo.');</script>";
       echo "<script>location.href='javascript:history.go(-1)';</script>";
      }
    break;
   }
  }
  if(isset($cont2))
  {
   switch($cont2)
   {
    case 1:
      if($_POST['areaint1']=="")
      {
       echo "<script>alert('Escribe el area del primer Asesor Interno.');</script>";
       echo "<script>location.href='javascript:history.go(-1)';</script>";
      }
    break;
    case 2:
      if($_POST['areaint1']=="")
      {
       echo "<script>alert('Escribe el area del primer Asesor Interno.');</script>";
       echo "<script>location.href='javascript:history.go(-1)';</script>";
      }
      if($_POST['areaint2']=="")
      {
       echo "<script>alert('Escribe el area del segundo Asesor Interno.');</script>";
       echo "<script>location.href='javascript:history.go(-1)';</script>";
      }
    break;
   }
  }
  else
  //Verificamos que no existe una Empresa con el mismo nombre.
  $consulta = "SELECT nom_empresa FROM proyecto_empre WHERE nom_empresa='$nombre'";
  $resultado = mysql_query($consulta);
  $row = mysql_fetch_row($resultado);
 
  if(!$row)
  {
   $mysql = "INSERT INTO proyecto_empre (iddpto,idcategoria,id_subcat,nom_empresa,giro,producto) VALUES('".$_SESSION['user']."','$cate','$subcate','$nombre','$giro', '$produc')";
   $result = mysql_query($mysql,$db) or die(mysql_error("Error al guardar los datos de emprendedores."));
 
   $query = "SELECT MAX(idemprendedor) as 'maxid' FROM proyecto_empre";
   $resultado = mysql_query($query,$db);
   $fila = mysql_fetch_array($resultado);
 
   $mysql = "INSERT INTO details_empre (idemprendedor,fecha_reg,lugar_sede,fecha_sede,objetivo,lugar,fase) VALUES('".$fila['maxid']."','$dateactual','$lugar','$fecha_sede','$obj','$lugar','$fase')";
   $result = mysql_query($mysql,$db) or die(mysql_error("Error al guardar los datos en la tabla detalles_empre"));
 
   $query = "SELECT MAX(iddetails) as 'maxid' FROM details_empre";
   $resultado = mysql_query($query,$db);
   $fila2 = mysql_fetch_array($resultado);
 
   //GUARDAMOS EN LA TABLA EMPRE_ALUMNO
   for($x=1; $x<=$cont; $x++)
   {
    $var = 'alumno'.$x;
    $alum = $_POST[$var]; 
    $mysql = "INSERT INTO empre_alumno (idemprendedor,NoControl) VALUES(".$fila['maxid'].",'".$alum."')";
    $result = mysql_query($mysql,$db);
   }
 
   //GUARDAMOS EN LA TABLA EMPRE_EXTERNO
   for($y=1; $y<=$cont2; $y++)
   { 
    $var2 = 'asesor'.$y;
    $cat = $_POST[$var2]; 
    $mysql = "INSERT INTO empre_interno (idemprendedor,idCat,area) VALUES(".$fila['maxid'].",'".$cat."','".$_POST['areaint'.$y]."')";
    $result = mysql_query($mysql,$db);
   }
   //GUARDAMOS EN LA TABLA EMPRE_INTERNO
   for($y=1; $y<=$cont3; $y++)
   { 
    $var2 = 'externo'.$y;
    $cat = $_POST[$var2];
    $mysql = "INSERT INTO empre_externo (idemprendedor,numcontrol,area) VALUES(".$fila['maxid'].",'".$cat."','".$_POST['areaext'.$y]."')";
    $result = mysql_query($mysql,$db);
   }
 
  $_SESSION['iddetalles'] = $fila2['maxid'];
 
  echo "<script> location.href='altaempre_2.php'</script>";
 
  }
 
  else
  {
   echo"<script>alert(\"El Título de la Empresa ya existe!\")</script>";
   echo"<script>location.href='altaempre.php'</script>";
  }
} 
    
  
pero no continua con el formulario, algo pasa cuando entra al segundo if de $cont2, esto pasa cuando agrego dos asesores externos y dos internos y la validacion se pierde con el ultimo asesor, se queda en blanco la pag, no marca error y no guarda. 
en vista de q no pude con ninguna de las dos formas, no se q estoy haciendo mal, tambien me comentaron y he visto en una revista de users.code como funciona exactamente el constructor del objeto XHMLHttp de AJAX 
PREGUNTAS: 
¿¿¿puedo utilizar ese constructor del ajax para concocer q navegador uso y dependiendo de eso, utilizo la primera fiuncion q he escrito arriba?? 
¿¿¿seria algo asi??? ¿¿¿¿es correcto???  
 Código HTML:
 function crearObjetoXMLHttp()
{
 if(typeof XMLHttpRequest != "undefined")
 {
  return new XMLHttpRequest();
 }
 else if (window.ActiveXObject)
 {
  var mtVersion = ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];
  for (var i=0; i< mtVersion.length;i++)
  {
   try
   {
    var objXmlHttp = new ActiveXObject(mtVersion[i]);
    return objXmlHttp;
   }
   catch(objError){
   }
  }
 }
 throw new Error("El objeto XMLHttp no pudo crearse.");
}
<br>
<br>
var objajax = crearObjetoXMLHttp();
   alert(objajax);
   if(objajax=="[object]")
   alert("EL NAVEGADOR ES EXPLORER");
  
y por utlimo 
¿¿¿que hay de utilizar otro script??? he visto en las FAQS q tienen un en php,   
que hago??? algun comentario, ayuda, lo q sea!!, estoy mal en mi funcion?? lo hago por ajax?? estoy mal en la validacion donde guardo??? 
de antemano gracias por tomarse el tiempo de leer.