
var
  dialog_element, focus_element;    

function  dimmer_fix() {
  e = document.getElementById('dimmer_screen');
  e.style.left = 0;
  e.style.top = 0;
  vp = get_viewport();
  e.style.width = vp.width;
  e.style.height = '100%';
  sc = get_viewport_scroll();
  e.style.left = sc.x;
  e.style.top = sc.y;
  e.style.display = '';
  if (dialog_element) {
    dialog_element.style.display = '';
    dialog_element.style.left = (vp.width - dialog_element.offsetWidth) / 2 + sc.x;
    dialog_element.style.top = (vp.height - dialog_element.offsetHeight) / 2 + sc.y;
  }
}

function  dimmer_on (dialog_name, strong) {
  e = document.getElementById('dimmer_screen');
  if (strong)
    e.onclick = '';
  else
    e.onclick = dimmer_off;
  dialog_element = document.getElementById(dialog_name);
  dimmer_fix();
  Event.add (window, 'resize', dimmer_fix);
  Event.add (window, 'scroll', dimmer_fix);
}

function  dimmer_off() {
  if (dialog_element)
    dialog_element.style.display = 'none';
  Event.remove (window, 'resize', dimmer_fix);
  Event.remove (window, 'scroll', dimmer_fix);
  document.getElementById('dimmer_screen').style.display = 'none';
  if (focus_element != null) {
    if (focus_element.type == undefined)  // if "obj" is an array: it's a radio button. Focus on the first element.
      focus_element[0].focus();
    else
      focus_element.focus();
    focus_element = null;
  }
}

function  msgbox_common_ (type, message, tip, redirect)
{
  document.getElementById('msgbox_icon_ok').style.display = 'none';
  document.getElementById('msgbox_icon_info').style.display = 'none';
  document.getElementById('msgbox_icon_warning').style.display = 'none';
  document.getElementById('msgbox_icon_error').style.display = 'none';
  document.getElementById('msgbox_icon_question').style.display = 'none';
  document.getElementById('msgbox_icon_'+type).style.display = '';
  if (type == 'question') {
    document.getElementById('msgbox_btn_info').style.display = 'none';
    document.getElementById('msgbox_btn_question').style.display = '';
  }
  else {
    document.getElementById('msgbox_btn_info').style.display = '';
    document.getElementById('msgbox_btn_question').style.display = 'none';
  }
  document.getElementById('msgbox_text').innerHTML = message;
  if (tip.length == 0) 
    document.getElementById('msgbox_tip_tr').style.display = 'none';
  else {
    document.getElementById('msgbox_tip_tr').style.display = '';
    document.getElementById('msgbox_tip').innerHTML = tip;
  }
  document.getElementById('msgbox_redirect').value = redirect;
  dimmer_on ('msgbox_window', false);
}

function  msgbox_ok (message, tip, redirect) {
  msgbox_common_ ('ok', message, tip, redirect);
}

function  msgbox_info (message, tip, redirect) {
  msgbox_common_ ('info', message, tip, redirect);
}

function  msgbox_warning (message, tip, redirect) {
  msgbox_common_ ('warning', message, tip, redirect);
}

function  msgbox_error (message, tip, redirect) {
  msgbox_common_ ('error', message, tip, redirect);
}

function  msgbox_question (message, tip, redirect_ok, redirect_cancel) {
  document.getElementById('msgbox_redirect_ok').value = redirect_ok;
  document.getElementById('msgbox_redirect_cancel').value = redirect_cancel;
  msgbox_common_ ('question', message, tip);
}

function  msgbox_focus_after_close (e)
{
  focus_element = e;
}

