25d1384939ae2993a959cc0d152ffab41633c64e
angie
  Mon Apr 30 22:20:13 2012 -0700
Make setCartVars optionally synchronous too -- page reload was interruptingsetCartVars in some cases. (#6152)

diff --git src/hg/js/ajax.js src/hg/js/ajax.js
index a3b24c9..7329d8f 100644
--- src/hg/js/ajax.js
+++ src/hg/js/ajax.js
@@ -141,66 +141,69 @@
             } catch(e) {
                 req = false;
             }
         }
     }
     if(debug)
         alert(url);
     if(req) {
         req.onreadystatechange = callBack;
         req.open("GET", url, true);
         req.send();
         //req.send("");
     }
 }
 
-function setCartVars(names, values, errFunc)
+function setCartVars(names, values, errFunc, async)
 {
 // Asynchronously sets the array of cart vars with values
     if(names.length <= 0)
         return;
 
     if (errFunc == null)
 	errFunc = errorHandler;
+    if (async == null)
+	async = true;
 
     // Set up constant portion of url
     var loc = window.location.href;
     if(loc.indexOf("?") > -1) {
         loc = loc.substring(0, loc.indexOf("?"));
     }
     if(loc.lastIndexOf("/") > -1) {
         loc = loc.substring(0, loc.lastIndexOf("/"));
     }
     loc = loc + "/cartDump";
     var hgsid = getHgsid();
     var data = "submit=1&noDisplay=1&hgsid=" + hgsid;
     var track = getTrack();
     if(track && track.length > 0)
         data = data + "&g=" + track;
     for(var ix=0; ix<names.length; ix++) {
         data = data + "&" + encodeURIComponent(names[ix]) + "=" + encodeURIComponent(values[ix]);
     }
     var type;
     // We prefer GETs so we can analyze logs, but use POSTs if data is longer than a (conservatively small) 
     // maximum length to avoid problems on older versions of IE.
     if((loc.length + data.length) > 2000) {
         type = "POST";
     } else {
         type = "GET";
     }
     $.ajax({
                type: type,
+               async: async,
                url: loc,
                data: data,
                trueSuccess: function () {},
                success: catchErrorOrDispatch,
                error: errFunc,
                cache: false
            });
 }
 
 function setCartVar(name, value)
 {
 // Asynchronously set a cart variable.
     setCartVars( [ name ], [ value ] );
 }