// Generated by CoffeeScript 1.6.3
var $, cols, resize, rows, term, ws, ws_url;

term = ws = null;

cols = rows = null;

$ = document.querySelectorAll.bind(document);

ws_url = 'ws://' + document.location.host + '/ws' + location.pathname;

ws = new WebSocket(ws_url);

ws.onopen = function() {
  console.log("WebSocket open", arguments);
  term = new Terminal({
    visualBell: 100,
    screenKeys: true,
    scrollback: -1
  });
  term.on("data", function(data) {
    return ws.send('SH|' + data);
  });
  term.on("title", function(title) {
    return document.title = title;
  });
  term.open($('main')[0]);
  $('.terminal')[0].style = '';
  return resize();
};

ws.onclose = function() {
  if (term) {
    term.destroy();
  }
  console.log("WebSocket closed", arguments);
  return open('', '_self').close();
};

ws.onerror = function() {
  return console.log("WebSocket error", arguments);
};

ws.onmessage = function(event) {
  return term.write(event.data);
};

addEventListener('resize', resize = function() {
  var eh, ew, fake_term, fake_term_div, fake_term_line, main, main_bb;
  main = $('main')[0];
  fake_term = document.createElement('div');
  fake_term.className = 'terminal test';
  fake_term_div = document.createElement('div');
  fake_term_line = document.createElement('span');
  fake_term_line.textContent = '0123456789';
  fake_term_div.appendChild(fake_term_line);
  fake_term.appendChild(fake_term_div);
  main.appendChild(fake_term);
  ew = fake_term_line.getBoundingClientRect().width;
  eh = fake_term_div.getBoundingClientRect().height;
  main.removeChild(fake_term);
  main_bb = main.getBoundingClientRect();
  cols = Math.floor(10 * main_bb.width / ew) - 1;
  rows = Math.floor(main_bb.height / eh);
  console.log("Computed " + cols + " cols and " + rows + " rows from ", main_bb, ew, eh);
  term.resize(cols, rows);
  return ws.send("RS|" + cols + "," + rows);
});
