(function() {

var uploadbtn = document.getElementById('uploadbtn');
var uploadfile = document.getElementById('uploadfile');

uploadbtn.addEventListener('change', function () {
  uploadfile.value = this.value.replace(/^.*\\/, "");
  var len = uploadfile.value.length - 7;
  uploadfile.setAttribute('size', len);
  var len = uploadfile.offsetWidth;
  uploadbtn.style.width = len + "px";
});

/* onload check wanconf form selects and set accordingly */
/*  var wanconf = document.getElementById('wanconf');
var selects = wanconf.getElementsByTagName('select');
for (i = 0; i < selects.length; i++) { 
  wanChange(selects[i]);
}
*/

var wanconf = document.getElementById('wanconf');
wanconf.addEventListener('change', function(e) { wanChange(e.target) });

function wanChange(e) {
  var wanwifi = document.getElementById('wanwifi');
  var wanaddr = document.getElementById('wanaddr');

  switch (e[e.selectedIndex].id) {
    case 'wlan':
      wanwifi.setAttribute('class','show');
      iwScan();
      break;
    case 'dhcp':
    //  wanaddr.setAttribute('class','hide');
      for (var i = 0; i < wanaddr.children.length; i++) {
        wanaddr.children[i].setAttribute('readonly', true);
      }
      break;
    case 'eth':
      wanwifi.setAttribute('class','hide');
      break
    case 'stat':
    //  wanaddr.setAttribute('class','show');
      for (var i = 0; i < wanaddr.children.length; i++) {
        wanaddr.children[i].removeAttribute('readonly');
}
      break;
  }
}

var wanssid = document.getElementById('wanssid');
wanssid.addEventListener('focus', function(e) { 
  iwScan();
  e.stopPropagation();
});

var submitbtns = document.querySelectorAll('input[type="submit"]');
for (var i=0; i < submitbtns.length; i++){
  submitbtns[i].addEventListener('click', function(e) {
  if (e.target.hasAttribute('data-wait')) {
    e.target.value = e.target.getAttribute('data-wait');
  } else e.target.value = 'Working, please wait..';
  e.stopPropagation();
  }, false);
}

/* update uptime output */
(function uptimeUpdate() {
  setTimeout(function() {
    ajaxReq('POST', '/admin/uptime', 'null', function(xmlDoc) {
      //console.log(xmlDoc['response'])
      document.getElementById('uptime').innerHTML = xmlDoc['response'];
    });
    uptimeUpdate();
  }, 5000);
})();

//iwScan();

})();

function iwScan() {
  function comp(a,b) {
    if (a.quality < b.quality)
      return 1;
    if (a.quality > b.quality)
      return -1;
    return 0;
  }
  ajaxReq('POST', '/admin/iwscan', 'null', function(xmlDoc) {
    var res = JSON.parse(xmlDoc['response']);
    var stas = res['results'].sort(comp);
    var wanssid = document.getElementById('wanssid');
    for (var i = 0; i < Object.keys(stas).length; i++) { 
//      console.log(stas[i]['ssid']);
//      console.log(stas[i]);
      var sta;
      if (sta = document.getElementById(stas[i]['ssid'])) {
        console.log('found ' + stas[i]['ssid'] + ' entry');
      } else {
        sta = document.createElement('option');
        sta.id = stas[i]['ssid'];
        sta.setAttribute('data-quality',  stas[i]['quality']);
        if (stas[i]['encryption']['enabled']) {
          sta.setAttribute('data-enc', 'wpa2');
        } else {
          sta.setAttribute('data-enc', 'false');
        }
        sta.innerHTML = stas[i]['ssid'];
        wanssid.appendChild(sta);
      }
    }
    //  console.log(res);
  });
}

function ajaxReq(url, method, data, callback) {
  var xmlDoc = new XMLHttpRequest();
  xmlDoc.open(url, method, true);
  if (method == 'POST') {
    xmlDoc.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  }
  xmlDoc.onreadystatechange = function() {
    if (xmlDoc.readyState === 4 && xmlDoc.status === 200) {
      callback(xmlDoc);
    }
  }
  xmlDoc.send(data);
}