290bed0188b25d96661c246e40d8ae525a1c95ff
larrym
  Mon Jun 28 14:49:07 2010 -0700
remote track work
diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js
index 116d489..4352bed 100644
--- src/hg/js/hgTracks.js
+++ src/hg/js/hgTracks.js
@@ -1198,7 +1198,6 @@
         if( pos != undefined)
             $( pos ).focus();
     }
-    
     if($("#tabs").length > 0) {
         var val = $('#currentSearchTab').val();
         $("#tabs").tabs({
@@ -1211,6 +1210,24 @@
         $('#descSearch').keydown(searchKeydown);
         $('#nameSearch').keydown(searchKeydown);
     }
+
+    for (var id in trackDbJson) {
+        var rec = trackDbJson[id];
+        if(rec.type == "remote") {
+            if($("#img_data_" + id).length > 0) {
+                var script = document.createElement('script');
+                // XXXX add current image width
+//              XXXX implement this  var pos = parsePosition(getPosition());
+                var pos = new Object();
+                pos.chromStart = 1;
+                pos.chromEnd = 10;
+                script.setAttribute('src', rec.url + "?track=" + id + "&jsonp=remoteTrackCallback&chrom=" + pos.chrom +
+                                    "&start=" + pos.chromStart + "&end=" + pos.chromEnd);
+                // load the script
+                document.getElementsByTagName('head')[0].appendChild(script); 
+            }
+        }
+    }
 });
 
 function rulerModeToggle (ele)
@@ -1639,6 +1656,7 @@
 {
 // Take html from hgTrackUi and put it up as a modal dialog.
 
+    alert(response);
     $('#hgTrackUiDialog').html("<div style='font-size:80%'>" + response + "</div>");
     $('#hgTrackUiDialog').dialog({
                                ajaxOptions: {
@@ -1839,3 +1857,27 @@
         // $('#searchTracks').submit();
     }
 }
+
+function remoteTrackCallback(rec)
+// jsonp callback to load a remote track.
+{
+    if(rec.error) {
+        alert("retrieval from remote site failed with error: " + rec.error)
+    } else {
+        var track = rec.track;
+        $('#img_data_' + track).attr('style', '');
+        $('#img_data_' + track).attr('height', rec.height);
+        $('#img_data_' + track).attr('width', rec.width);
+        $('#img_data_' + track).attr('src', rec.img);
+        $('#td_data_' + track + ' > div').each(function(index) {
+                                                   if(index == 1) {
+                                                       var style = $(this).attr('style');
+                                                       style = style.replace(/height:\s*\d+/i, "height:" + rec.height);
+                                                       $(this).attr('style', style);
+                                                   }
+                                               });
+        var style = $('#p_btn_' + track).attr('style');
+        style = style.replace(/height:\s*\d+/i, "height:" + rec.height);
+        $('#p_btn_' + track).attr('style', style);
+    }
+}