Index: trunk/FACT++/www/viewer/index.js
===================================================================
--- trunk/FACT++/www/viewer/index.js	(revision 17818)
+++ trunk/FACT++/www/viewer/index.js	(revision 17819)
@@ -204,4 +204,27 @@
 }
 
+function setFileChecks()
+{
+    var list = document.getElementById("file").data;
+    if (!list)
+        return;
+
+    var file = document.getElementById("file").value;
+    var drs  = document.getElementById("drsfile");
+
+    var hasDrs = list[file]&2;
+    var hasCal = list[file]&4;
+    var isMC   = list[file]&8;
+
+    if (!hasDrs || isMC)
+        $('#drsfile').prop('checked', false);
+    if (!hasCal || isMC)
+        $('#calibrated').prop('checked', false);
+
+    $('#calibrated').prop('disabled', !hasCal && !drs.checked && !isMC);
+    $('#drsfile').prop('disabled',    !hasDrs && !isMC);
+    $('#montecarlo').prop('checked', isMC);
+}
+
 function disableControls(disabled)
 {
@@ -219,14 +242,10 @@
 
     if (disabled)
+    {
         $('#calibrated').prop('disabled', true);
+        $('#drsfile').prop('disabled', true);
+    }
     else
-    {
-        var list = document.getElementById("file").data;
-        if (list)
-        {
-            var file = document.getElementById("file").value;
-            $('#calibrated').prop('disabled', !list[file]);
-        }
-    }
+        setFileChecks();
 }
 
@@ -333,12 +352,5 @@
 function onFileSelect(event, ui)
 {
-    var list = document.getElementById("file").data;
-    var file = ui.item.value;
-
-    $('#calibrated').prop('disabled', !list[file]);
-    if (!list[file])
-        $('#calibrated').prop('checked', false);
-
-    document.getElementById("event").value = 0;
+    setFileChecks();
     onSubmit(ui.item.value);
 }
@@ -360,4 +372,5 @@
     {
         alert("ERROR[0] - Decoding answer:\n"+e);
+        debug(result);
         return;
     }
@@ -505,5 +518,5 @@
 }
 
-function onDataReceived(rc)
+function onDataReceived(result)
 {
     var err = document.getElementById("error");
@@ -515,7 +528,8 @@
     //dbg.appendChild(pre);
 
+    var rc;
     try
     {
-        rc = JSON.parse(rc);
+        rc = JSON.parse(result);
         if (!rc)
             return;
@@ -524,4 +538,5 @@
     {
         alert("ERROR[1] - Decoding answer:\n"+e);
+        debug(result);
         return;
     }
@@ -530,5 +545,5 @@
     var file = rc.file;
 
-    document.getElementById("event").max = file.numEvents;
+    document.getElementById("event").max = file.numEvents-1;
     var el = document.getElementById("numevents");
     if (el.firstChild)
@@ -734,9 +749,13 @@
 
     var calibrated = document.getElementById("calibrated");
-    var calib   = !calibrated.disabled && calibrated.checked;
-    var event   = document.getElementById("event").value;
-    var pixel   = document.getElementById("pixel").value;
-    var source1 = editor1.getValue();
-    var source2 = editor2.getValue();
+    var drsfile    = document.getElementById("drsfile");
+    var montecarlo = document.getElementById("montecarlo");
+    var ismc       = montecarlo.checked;
+    var calib      = !calibrated.disabled && calibrated.checked;
+    var drs        = !drsfile.disabled && drsfile.checked;
+    var event      = document.getElementById("event").value;
+    var pixel      = document.getElementById("pixel").value;
+    var source1    = editor1.getValue();
+    var source2    = editor2.getValue();
 
     var uri = "file="+file+"&event="+event+"&pixel="+map[pixel];
@@ -746,4 +765,8 @@
     if (calib)
         uri += "&calibrated=1";
+    if (drs)
+        uri += "&drsfile=1";
+    if (ismc)
+        uri += "&montecarlo=1";
 
     $.ajax({
