Si he entendido bien el problema que tu tienes es que un Proceso AJAX te machaca el otro ya que AJAX es asincrono. De entrada sólo puede correr un proceso aunque hay formas para hacer que puedas crear varios procesos y que estos se vayan ordenando en el tiempo.
Mírate esta estructura y adáptala a tu código.    
Código javascript
:
Ver originalvar ajax=null; //vble global
 
//Funcion que crea el objeto ajax
function objetoAjax(){
    var xmlhttp=false;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
           xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            xmlhttp = false;
    }
    }
 
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}
 
function f1(url,divcontenido){
    if (ajax==null) {
      objDestino=document.getElementById(divcontenido)
      ajax=objetoAjax();
      ajax.open("POST", url, true);
      ajax.onreadystatechange=function() {
          if (ajax.readyState==4) {
              objDestino.innerHTML = ajax.responseText
              ajax = null
          }
      }
      ajax.send(null)
    }else{
      setTimeout("f1('"+url+"','"+divcontenido+"')",1)
      
    }
}
 
function f2(url,divcontenido){
    if (ajax==null) {
      objDestino=document.getElementById(divcontenido)
      ajax=objetoAjax();
      ajax.open("POST", url, true);
      ajax.onreadystatechange=function() {
          if (ajax.readyState==4) {
              objDestino.innerHTML = ajax.responseText
              ajax = null
          }
      }
      ajax.send(null)
    }else{
      setTimeout("f2('"+url+"','"+divcontenido+"')",1)
      
    }
}
  
Fijate bien que creamos una vble global 
ajax que nos permite rastrearla y ver en que estado se encuentra. 
1º Rastreamos estado de la vble 
ajax
   a) ajax==null : 
       a1:Creamos la instacia del objeto XMLHttpRequest y realizamos la petición ajax
       a2:ajax.readyState==4, Recibimos la respuesta en ajax.responseText y realizamos acciones oportunas,...
       a3:ajax=null, ponemos semaforo en verde
    b) ajax != null:
       b1:Volvemos a llamar a la función con un retardo a elección del desarrollador. Cuanto menor sea el retardo mayor será el grado de espera activa del proceso. Aqui estaría rebueno un sleep() pero aun no he encontrado la forma y creo que en javascript no existe tal función. Corríjanme si me equivoco. 
Espero haberme explicado y que te sirva mi aporte  
Ya contarás como te va... 
Saludos,