1becab6f1a87af952979239f1079e15ddd8ea74e
angie
  Wed Apr 16 16:54:48 2014 -0700
Matt and Tim noticed that the ESP6500 VCF track details had twoprintCustomTrackUrl invocations.  One was in genericClickHandlerPlus
and it used an incorrect name (known issue with using pgSnp display
code for VCF).  The second was inside doVcfTabixDetails, using
the correct name.  I moved doVcfTabixDetails and doVcfDetails out
of genericClickHandlerPlus; now doMiddle calls them, and they call
genericHeader and printTrackHtml in a shared function.
refs #9329

diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index fe73b1d..7efcbaa 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -4009,36 +4009,30 @@
         doBedDetail(tdb, NULL, item);
         }
     else if (sameString(type, "interaction") )
 	{
 	int num = 12;
         genericBedClick(conn, tdb, item, start, num);
 	}
     else if (startsWith("gvf", type))
         {
         doGvf(tdb, item);
         }
 #ifdef USE_BAM
     else if (sameString(type, "bam"))
 	doBamDetails(tdb, item);
 #endif // USE_BAM
-#ifdef USE_TABIX
-    else if (sameString(type, "vcfTabix"))
-	doVcfTabixDetails(tdb, item);
-#endif // USE_TABIX
-    else if (sameString(type, "vcf"))
-	doVcfDetails(tdb, item);
     }
 if (imagePath)
     {
     char *bigImagePath = trackDbSettingClosestToHome(tdb, ITEM_BIG_IMAGE_PATH);
     char *bothWords[2];
     int shouldBeTwo = chopLine(imagePath, bothWords);
     if (shouldBeTwo != 2)
 	errAbort("itemImagePath setting for %s track incorrect. Needs to be \"itemImagePath <path> <suffix>\".", tdb->track);
     printf("<BR><IMG SRC=\"%s/%s.%s\"><BR><BR>\n", bothWords[0], item, bothWords[1]);
     shouldBeTwo = chopLine(bigImagePath, bothWords);
     if (shouldBeTwo != 2)
 	errAbort("bigItemImagePath setting for %s track incorrect. Needs to be \"itemImagePath <path> <suffix>\".", tdb->track);
     printf("<A HREF=\"%s/%s.%s\">Download Original Image</A><BR>\n", bothWords[0], item, bothWords[1]);
     }
 
@@ -25346,30 +25340,40 @@
     {
     doLrg(tdb, item);
     }
 else if (sameString("lrgTranscriptAli", table))
     {
     doLrgTranscriptPsl(tdb, item);
     }
 else if (sameWord(table, "htcLrgCdna"))
     {
     htcLrgCdna(item);
     }
 else if (isHubTrack(table) && startsWith("snake", trackHubSkipHubName(table)))
     {
     doSnakeClick(tdb, item);
     }
+#ifdef USE_TABIX
+else if (tdb != NULL && startsWithWord("vcfTabix", tdb->type))
+    {
+    doVcfTabixDetails(tdb, item);
+    }
+#endif // USE_TABIX
+else if (tdb != NULL && startsWithWord("vcf", tdb->type))
+    {
+    doVcfDetails(tdb, item);
+    }
 
 else if (tdb != NULL)
     {
     genericClickHandler(tdb, item, NULL);
     }
 else
     {
     cartWebStart(cart, database, "%s", track);
     printf("Sorry, clicking there doesn't do anything yet (%s).", track);
     }
 /* End of 1000+ line dispatch on table involving 100+ if/elses. */
 
 cartHtmlEnd();
 }