1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5cr.define('mobile', function() {
6
7  function ChooseNetwork() {
8  }
9
10  cr.addSingletonGetter(ChooseNetwork);
11
12  ChooseNetwork.prototype = {
13    networks_: [],
14    showNetworks_: function(networks) {
15      this.networks_ = networks;
16
17      if (networks.length == 0) {
18        $('scanning').hidden = true;
19        $('choosing').hidden = true;
20        $('no-mobile-networks').hidden = false;
21        return;
22      }
23
24      var container = $('choosing');
25      container.innerHTML = '';
26      for (var i in networks) {
27        var elem = document.createElement('div');
28        elem.innerHTML =
29            '<input type="radio" name="network" id="network' + i + '" />' +
30            '<label for="network' + i + '" id="label' + i + '"></label>';
31        container.appendChild(elem);
32        $('label' + i).textContent = networks[i].operatorName;
33        if (networks[i].status == 'current') {
34          $('network' + i).checked = true;
35          $('connect').disabled = false;
36        } else if (networks[i].status == 'forbidden') {
37          $('network' + i).disabled = true;
38          elem.className = 'disabled';
39        } else {
40          $('network' + i).addEventListener('click', function(event) {
41            $('connect').disabled = false;
42          });
43        }
44      }
45      $('scanning').hidden = true;
46      $('choosing').hidden = false;
47      $('no-mobile-networks').hidden = true;
48    },
49    connect_: function() {
50      for (var i in this.networks_) {
51        if ($('network' + i).checked) {
52          chrome.send('connect', [this.networks_[i].networkId]);
53          ChooseNetwork.close();
54          return;
55        }
56      }
57    },
58    showScanning_: function() {
59      $('scanning').hidden = false;
60      $('choose').hidden = true;
61      $('no-mobile-networks').hidden = true;
62    }
63  };
64
65  ChooseNetwork.cancel = function() {
66    chrome.send('cancel');
67    ChooseNetwork.close();
68  };
69
70  ChooseNetwork.close = function() {
71    window.close();
72  };
73
74  ChooseNetwork.connect = function() {
75    ChooseNetwork.getInstance().connect_();
76  };
77
78  ChooseNetwork.showScanning = function() {
79    ChooseNetwork.getInstance().showScanning_();
80  };
81
82  ChooseNetwork.initialize = function() {
83    $('cancel').addEventListener('click', function(event) {
84      ChooseNetwork.cancel();
85    });
86
87    $('connect').disabled = true;
88    $('connect').addEventListener('click', function(event) {
89      ChooseNetwork.connect();
90    });
91    chrome.send('pageReady');
92  };
93
94  ChooseNetwork.showNetworks = function(networks) {
95    ChooseNetwork.getInstance().showNetworks_(networks);
96  };
97
98  // Export
99  return {
100    ChooseNetwork: ChooseNetwork
101  };
102});
103
104var ChooseNetwork = mobile.ChooseNetwork;
105
106document.addEventListener('DOMContentLoaded', function() {
107  // TODO(dpolukhin): refactor spinner code&css to be reusable.
108  // Setup css canvas 'spinner-circle'
109  (function() {
110    var lineWidth = 3;
111    var r = 8;
112    var ctx = document.getCSSCanvasContext(
113        '2d', 'spinner-circle', 2 * r, 2 * r);
114
115    ctx.lineWidth = lineWidth;
116    ctx.lineCap = 'round';
117    ctx.lineJoin = 'round';
118
119    ctx.strokeStyle = '#4e73c7';
120    ctx.beginPath();
121    ctx.moveTo(lineWidth / 2, r - lineWidth / 2);
122    ctx.arc(r, r, r - lineWidth / 2, Math.PI, Math.PI * 3 / 2);
123    ctx.stroke();
124  })();
125
126  ChooseNetwork.initialize();
127});
128
129disableTextSelectAndDrag();
130