<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Flot Examples</title>
    <link href="layout.css" rel="stylesheet" type="text/css"></link>
    <!--[if IE]><script language="javascript" type="text/javascript" src="../excanvas.pack.js"></script><![endif]-->
    <script language="javascript" type="text/javascript" src="../jquery.js"></script>
    <script language="javascript" type="text/javascript" src="../jquery.flot.js"></script>
 </head>
    <body>
    <h1>Flot Examples</h1>

    <div style="float:left">
      <div id="placeholder" style="width:500px;height:300px"></div>
    </div>
    
    <div id="miniature" style="float:left;margin-left:20px;margin-top:50px">
      <div id="overview" style="width:166px;height:100px"></div>

      <p id="overviewLegend" style="margin-left:10px"></p>
    </div>

    <p style="clear:left"> The selection support makes 
      pretty advanced zooming schemes possible. With a few lines of code,
      the small overview plot to the right has been connected to the large
      plot. Try selecting a rectangle on either of them.</p>

<script id="source" language="javascript" type="text/javascript">
$(function () {
    // setup plot
    function getData(x1, x2) {
        var d = [];
        for (var i = x1; i < x2; i += (x2 - x1) / 100)
            d.push([i, Math.sin(i * Math.sin(i))]);

        return [
            { label: "sin(x sin(x))", data: d }
        ];
    }

    var options = {
        legend: { show: false },
        lines: { show: true },
        points: { show: true },
        yaxis: { ticks: 10 },
        selection: { mode: "xy" }
    };

    var startData = getData(0, 3 * Math.PI);
    
    var plot = $.plot($("#placeholder"), startData, options);

    // setup overview
    var overview = $.plot($("#overview"), startData, {
        legend: { show: true, container: $("#overviewLegend") },
        lines: { show: true, lineWidth: 1 },
        shadowSize: 0,
        xaxis: { ticks: 4 },
        yaxis: { ticks: 3, min: -2, max: 2 },
        grid: { color: "#999" },
        selection: { mode: "xy" }
    });

    // now connect the two
    var internalSelection = false;
    
    $("#placeholder").bind("selected", function (event, area) {
        // do the zooming
        plot = $.plot($("#placeholder"), getData(area.x1, area.x2),
                      $.extend(true, {}, options, {
                          xaxis: { min: area.x1, max: area.x2 },
                          yaxis: { min: area.y1, max: area.y2 }
                      }));
        
        if (internalSelection)
            return; // prevent eternal loop
        internalSelection = true;
        overview.setSelection(area);
        internalSelection = false;
    });
    $("#overview").bind("selected", function (event, area) {
        if (internalSelection)
            return;
        internalSelection = true;
        plot.setSelection(area);
        internalSelection = false;
    });
});
</script>

 </body>
</html>