$ID = function (id) { return document.getElementById(id) };


$EL = function (el, id, cl) {
  var obj = document.createElement(el);
  if (cl != null && cl != "") obj.className = cl;
  obj.id = id ? id : ("anon_" + (++NEXT_ID));
  return obj;
};


$TEXT = function (t) { return document.createTextNode(t) };


in_hex = function (x, y) {
  if (x >= HEX_SIDE/2 && x < HEX_SIDE*3/2) return true;
  else if (x <  HEX_SIDE/2 && y <  HEX_SIDE/2*SQRT_3 && (SQRT_3 * x >= HEX_SIDE/2*SQRT_3 - y)) return true;
  else if (x <  HEX_SIDE/2 && y >= HEX_SIDE/2*SQRT_3 && (SQRT_3 * x >= y - HEX_SIDE/2*SQRT_3)) return true;
  else if (x >= HEX_SIDE*3/2 && y <  HEX_SIDE/2*SQRT_3 && (SQRT_3 * (HEX_SIDE*2 - x) >= HEX_SIDE/2*SQRT_3 - y)) return true;
  else if (x >= HEX_SIDE*3/2 && y >= HEX_SIDE/2*SQRT_3 && (SQRT_3 * (HEX_SIDE*2 - x) >= y - HEX_SIDE/2*SQRT_3)) return true;
  return false;
};


get_hexant = function (x, y) {
  if (y < HEX_SIDE * SQRT_3/2) {
    if (y >= (x - HEX_SIDE/2) * SQRT_3) return 0;
    if (y <= (HEX_SIDE * 3/2 - x) * SQRT_3) return 1;
    else return 2;
  }
  else {
    if (y <= (HEX_SIDE * 3/2 - x) * SQRT_3) return 5;
    if (y >= (x - HEX_SIDE/2) * SQRT_3) return 4;
    else return 3;
  }
};


get_vertex = function (x, y) {
  if (Math.pow(x - HEX_SIDE/2, 2) + Math.pow(y, 2) <= Math.pow(HEX_SIDE/2, 2))
    return 0;
  if (Math.pow(x - 3*HEX_SIDE/2, 2) + Math.pow(y, 2) <= Math.pow(HEX_SIDE/2, 2))
    return 1;
  if (Math.pow(x - 2*HEX_SIDE, 2) + Math.pow(y - HEX_SIDE*SQRT_3/2, 2) <= Math.pow(HEX_SIDE/2, 2))
    return 2;
  if (Math.pow(x - 3*HEX_SIDE/2, 2) + Math.pow(y - HEX_SIDE*SQRT_3, 2) <= Math.pow(HEX_SIDE/2, 2))
    return 3;
  if (Math.pow(x - HEX_SIDE/2, 2) + Math.pow(y - HEX_SIDE*SQRT_3, 2) <= Math.pow(HEX_SIDE/2, 2))
    return 4;
  if (Math.pow(x, 2) + Math.pow(y - HEX_SIDE*SQRT_3/2, 2) <= Math.pow(HEX_SIDE/2, 2))
    return 5;
  return null;
};


function LOGMSG (msg) {
  if (msg == "") $ID('msglog').innerHTML = "";
  else $ID('msglog').innerHTML = msg + "\n" + $ID('msglog').innerHTML;
}


