(function ($) {
   'use strict';

    var igcFile = null;
    var barogramPlot = null;
    
    function plotBarogram() {
        var nPoints = igcFile.recordTime.length;
        var pressureBarogramData = [];
        var gpsBarogramData = [];
        var j;
        var timestamp;
        var altitudeUnit = $('#altitudeUnits').val();
        var altitudeConversionFactor;
        if (altitudeUnit === 'feet') {
            altitudeConversionFactor = 3.2808399;
        }
        else {
            altitudeConversionFactor = 1.0;
        }

        for (j = 0; j < nPoints; j++) {
            timestamp = igcFile.recordTime[j].getTime();
            pressureBarogramData.push([timestamp, igcFile.pressureAltitude[j] * altitudeConversionFactor]);
            gpsBarogramData.push([timestamp, igcFile.gpsAltitude[j] * altitudeConversionFactor]);
        }

        var baro = $.plot($('#barogram'), [{
            label: 'Pressure altitude',
            data: pressureBarogramData
        }, {
            label: 'GPS altitude',
            data: gpsBarogramData
        }], {
            axisLabels: {
                show: true
            },
            xaxis: {
                mode: 'time',
                timeformat: '%H:%M',
                axisLabel: 'Time (UTC)'
            },
            yaxis: {
                axisLabel: 'Altitude / ' + altitudeUnit
            },
            
            crosshair: {
                mode: 'x'
            }
        });
        
        return baro;
    }
    
    function displayIgc(mapControl) {
        // Display the headers.
        var headerTable = $('#headerInfo tbody');
        headerTable.html('');
        var headerName;
        var headerIndex;
        for (headerIndex = 0; headerIndex < igcFile.headers.length; headerIndex++) {
            headerTable.append(
                $('<tr></tr>').append($('<th></th>').text(igcFile.headers[headerIndex].name))
                              .append($('<td></td>').text(igcFile.headers[headerIndex].value))
            );
        }

        // Show the task declaration if it is present.
        if (igcFile.task.coordinates.length > 0) {
            $('#task').show();
            var taskList = $('#task ol').first().html('');
            var j;
            for (j = 0; j < igcFile.task.names.length; j++) {
                taskList.append($('<li></li>').text(igcFile.task.names[j]));
            }

            mapControl.addTask(igcFile.task.coordinates, igcFile.task.names);
        }
        else {
            $('#task').hide();
        }

        // Reveal the map and graph. We have to do this before
        // setting the zoom level of the map or plotting the graph.
        $('#igcFileDisplay').show();
        
        mapControl.addTrack(igcFile.latLong);
        barogramPlot = plotBarogram(igcFile);
        
        $('#timeSlider').prop('max', igcFile.recordTime.length - 1);
        updateTimeline(0, mapControl);
    }
    
    function updateTimeline (timeIndex, mapControl) {
        $('#timePositionDisplay').text(
            igcFile.recordTime[timeIndex].toUTCString()
        );
        
        mapControl.setTimeMarker(timeIndex);
        
        barogramPlot.lockCrosshair({
           x: igcFile.recordTime[timeIndex].getTime(),
           y: 1.0
        });
    }
    
    
    $(document).ready(function () {
        var mapControl = createMapControl('map');

        $('#fileControl').change(function () {
            if (this.files.length > 0) {
                var reader = new FileReader();
                reader.onload = function(e)  {
                  try {
                      $('#errorMessage').text('');
                      mapControl.reset();
                      $('#timeSlider').val(0);

                      igcFile = parseIGC(this.result);
                      displayIgc(mapControl);
                  } catch (ex) {
                      if (ex instanceof IGCException) {
                          $('#errorMessage').text(ex.message);
                      }
                      else {
                          throw ex;
                      }
                  }
                };
                reader.readAsText(this.files[0]);
            }
        });

        $('#altitudeUnits').change(function () {
            if (igcFile !== null) {
                barogramPlot = plotBarogram();
                updateTimeline($('#timeSlider').val(), mapControl);
            }
        });
        
        $('#timeSlider').change(function() {
           updateTimeline($(this).val(), mapControl);
        });
    });
}(jQuery));

@@ -4471,32 +4471,326 @@
     
-$('#timeSlider').change(
+// We need to handle the 'change' event for IE, but%0A        // 'input' for Chrome and Firefox in order to update smoothly%0A        // as the range input is dragged.%0A        $('#timeSlider').on('input', function() %7B%0A           updateTimeline($(this).val(), mapControl);%0A        %7D);%0A        $('#timeSlider').on('change', 
 func

Update in real time as slider is moved.