/**
* Copyright 2012-2017, Plotly, Inc.
* All rights reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

'use strict';

var DESELECTDIM = require('../../constants/interactions').DESELECTDIM;

module.exports = function selectPoints(searchInfo, polygon) {
    var cd = searchInfo.cd;
    var xa = searchInfo.xaxis;
    var ya = searchInfo.yaxis;
    var selection = [];
    var node3 = cd[0].node3;

    var i, di, ct, x, y;

    if(polygon === false) {
        for(i = 0; i < cd.length; i++) {
            cd[i].dim = 0;
        }
    } else {
        for(i = 0; i < cd.length; i++) {
            di = cd[i];
            ct = di.ct;

            if(!ct) continue;

            x = xa.c2p(ct);
            y = ya.c2p(ct);

            if(polygon.contains([x, y])) {
                selection.push({
                    pointNumber: i,
                    lon: ct[0],
                    lat: ct[1]
                });
                di.dim = 0;
            } else {
                di.dim = 1;
            }
        }
    }

    node3.selectAll('path').style('opacity', function(d) {
        return d.dim ? DESELECTDIM : 1;
    });

    return selection;
};

@@ -1105,16 +1105,36 @@
 %0A    %7D%0A%0A
+    if(node3) %7B%0A    
     node
@@ -1178,16 +1178,17 @@
 function
+ 
 (d) %7B%0A  
@@ -1189,24 +1189,28 @@
 ) %7B%0A        
+  
+  
 return d.dim
@@ -1233,19 +1233,29 @@
  1;%0A    
+  
+  
 %7D);
+%0A    %7D
 %0A%0A    re

handle trace with no points, resulting in invisible trace and node3 undefined