function misc_create_button(label)
{
  var button = document.createElement('BUTTON');
  // button.type = 'button'; - IE na to nie pozwala :/
  var table = document.createElement('TABLE');
  var tbody = document.createElement('TBODY');
  var row = document.createElement('TR');
  var cell = document.createElement('TD');
  cell.className = "btn_l";
  row.appendChild(cell);
  cell = document.createElement('TD');
  cell.className = "btn_m";
  cell.appendChild(document.createTextNode(label));
  row.appendChild(cell);
  cell = document.createElement('TD');
  cell.className = "btn_r";
  row.appendChild(cell);
  tbody.appendChild(row);
  table.appendChild(tbody);
  button.appendChild(table);
  return button;
}

function misc_create_coolbox(width, left_label, right_label, inside, type, className)
{
  var header_left = document.createElement('DIV');
  header_left.className = 'cool_box_header_left';
  if (left_label) header_left.appendChild(left_label);

  var header_right = document.createElement('DIV');
  header_right.className = 'cool_box_header_right';
  if (right_label) header_right.appendChild(right_label);

  var header_inner = document.createElement('DIV');
  header_inner.className = 'cool_box_header_inner';
  header_inner.appendChild(header_left);
  header_inner.appendChild(header_right);

  var header = document.createElement('DIV');
  header.className = 'cool_box_header';
  header.appendChild(header_inner);

  var inner = document.createElement('DIV');
  inner.className = 'cool_box_inner';
  if (inside) inner.appendChild(inside);

  var content = document.createElement('DIV');
  content.className = 'cool_box_content';
  content.appendChild(inner);

  var box = document.createElement('DIV');
  box.className = 'cool_box cool_box_' + type;
  if (className) box.className += ' ' + className;
  box.appendChild(header);
  box.appendChild(content);
  box.style.width = width;

  return box;
}

function misc_encode_utf8(s)
{
  return unescape(encodeURIComponent(s)); // Nice hack :D
}

function misc_decode_utf8(s)
{
  return decodeURIComponent(escape(s)); // Nice hack :D
}

function misc_repair_utf8(s)
{
  if (s.charCodeAt(0) == 0xfeff) { // na początku BOM w Unicodzie - wycinamy go
    return s.substr(1);
  }
  if (s.charCodeAt(0) == 0xef && s.charCodeAt(1) == 0xbb && s.charCodeAt(2) == 0xbf) { // na początku BOM w UTF-8
    return misc_decode_utf8(s.substr(3)); // musimy sami zdekodować - głupia przeglądarka...
  }
  return s;
}
