var browser = "";
var max_get_length = 1536; // 1.5KB

var filter_settings = null;
var filter_request_sequence_number = 1;
var filter_request_sequence_number_applied = 0;

var settings_dialog_ph = null;

var paging_dialog_ph = null;
var items_per_page = 10;
var paging_dialog_items = new Array();

function extract_param(param, query)
{
  var pos = query.indexOf(param);

  if(pos > 0)
  {
    param = "&" + param;
    pos = query.indexOf(param);
  }

  if(pos < 0)
  {
    return { param:"", query:query };
  }

  var offset = pos + param.length;
  var end = query.indexOf("&", offset);

  var res = { param:"", query:"" };

  if(end < 0)
  {
    res.param = query.slice(offset);
    res.query = query.slice(0, pos);
  }
  else
  {
    res.param = query.slice(offset, end);
    if(pos == 0) end++;
    res.query = query.slice(0, pos) + query.slice(end);
  }
  
  return res;
}

function navigate(url)
{
  if(url.length > max_get_length)
  {
    post_url(url);
  }
  else
  {
    window.location = url;
  }  
}

function post_url(url)
{
  var form = document.getElementById("post");
  var parts = url.split("?", 2);

  form.action = parts[0];

  if(parts.length > 1)
  {
    var form_inner_html = "";
    var name_values = parts[1].split("&");

    for(var i = 0; i < name_values.length; i++)
    {
      var nv = name_values[i].split("=", 2);

      form_inner_html += '\n<input type="hidden" name="' + 
                         el_xml_encode(el_mime_url_decode(nv[0])) + '"';

      if(nv.length > 1)
      {
        form_inner_html += ' value="' + 
                           el_xml_encode(el_mime_url_decode(nv[1])) + '"';
      }

      form_inner_html += '/>';
    }
    
    form.innerHTML = form_inner_html;
  }

  form.submit();
}

function show_settings_dialog()
{
  var place_holder = document.getElementById("settings_ph");
  
  var text = "<div id='settings_dialog' class='dialog'>\
<table id='settings_dialog_option_table'>";

  text += "<tr><td><label for='interface_lang'>\
Interface Language:</label></td><td><select id='interface_lang'>";

  var interface_langs = 
  [ 
    { id:"eng", label: "English" }, 
    { id:"rus", label: "Russian" }
  ];

  for(var i = 0; i < interface_langs.length; i++)
  {
    var opt = interface_langs[i];
    
    text += "<option id=\"il_" + opt.id + "\" " + 
            (current_language == opt.id ? 
            "selected=\"true\"" : "") + ">" + opt.label + 
            "</option>";
  }

  text += "</select><td></tr>"

  var options = 
  [ 
    { param:"n", 
      label:"Messages Language:", 
      current:search_filter_lang,
      xml:"language"
    },
    { param:"y", 
      label:"Message Sources Country:", 
      current:search_filter_country,
      xml:"country"
    }
  ];

  for(var i = 0; i < options.length; i++)
  {
    var opt = options[i];
    var id = "fo_" + opt.param + "_" + opt.xml;

    text += "<tr><td>";


    text += "<label for=\"" + id + "\">" + opt.label + 
            "</label></td><td>";

    text += "<select id='" + id + 
            "' name='filter_options' onchange='filter_option_changed()'>";


    text += "<option id='" + opt.current + 
            "' selected='true' disabled='true'>Loading ...</option>";

    text += "</select></td></tr>";
  }


  text += "<tr><td><label for='sort_settings'>\
Sort Messages By:</label></td><td><select id='sort_settings'>";

  var sort_options = 
  [ 
    { id:0, label: "Relevance&#xA0;Descending" }, 
    { id:1, label: "Publication&#xA0;Date&#xA0;Descending" },
    { id:3, label: "Fetch&#xA0;Date&#xA0;Descending" },
    { id:6, label: "Event&#xA0;Size&#xA0;Descending" },
    { id:5, label: "Relevance&#xA0;Ascending" }, 
    { id:2, label: "Publication&#xA0;Date&#xA0;Ascending" },
    { id:4, label: "Fetch&#xA0;Date&#xA0;Ascending" },
    { id:7, label: "Event&#xA0;Size&#xA0;Ascending" }
  ];

  for(var i = 0; i < sort_options.length; i++)
  {
    var opt = sort_options[i];
    
    text += "<option id=\"so_" + opt.id + "\" " + (sorting_type == opt.id ? 
            "selected=\"true\"" : "") + ">" + opt.label + 
            "</option>";
  }

  text += "</select><td></tr><tr><td><label for='rpp_settings'>\
Display Results Per Page:</label></td><td><select id='rpp_settings'>";

  var results_per_page_options = [ 10, 20, 30, 50, 100 ];

  for(var i = 0; i < results_per_page_options.length; i++)
  {
    var rp = results_per_page_options[i];
    
    text += "<option id=\"rp_" + rp + "\" " + (results_per_page == rp ? 
            "selected=\"true\"" : "") + ">" + rp + 
            "</option>";
  }

  text += "</select><td></tr>";

  var bool_settings = 
  [ 
    { param:"b", on:"0", off:"3", label: "Include Message Duplicates", def: 0 },
    { param:"e", on:"0", off: "1", label: "Show Message Annotations", def: 1 }, 
    { param:"i", on:"1", off: "0", label: "Show Message Images", def: 1 },
    { param:"c", on:"2", off:"1", label: "Display Messages In 2 Columns", def: 1 },
    { param:"p", on:"l", off:"s", label: "Display Messages With Large Print", def: 0 }
  ];

  for(var i = 0; i < bool_settings.length; i++)
  {
    var opt = bool_settings[i];

    text += "<tr><td colspan='2'><input type='checkbox' id='bo_" +
            opt.param + "_" + opt.on + "_" + opt.off + "_" + opt.def +
            "' name='bool_settings'";

    if(view_option[opt.param] == opt.on)
    {
      text += " checked=\"checked\"";
    }

    text += "/><label for='sort_settings'>" + opt.label + 
            "</label></td></tr>"
  }

  text += "</table><div id='settings_dialog_warn'>Note: settings will not be saved if cookies have been disabled in your browser.</div>\
<button onclick='save_settings();'>Save Settings</button>&nbsp;\
<button onclick='set_default_settings();'>Set Default Settings</button>&nbsp;\
<button onclick='close_settings_dialog();'>Cancel</button></div>";

  place_holder.innerHTML = text;

  el_attach_event(document, "mousedown", settings_dialog_mousedown);
  document.onkeydown = set_settings_key_down;

  settings_dialog_ph = place_holder;
  filter_option_changed();
}

function filter_option_changed()
{
  var elems = document.getElementsByName("filter_options");
  var changed = false;

  for(var i = 0; i < elems.length; i++)
  {
    var elem = elems[i];
    var options = elem.options;

    for(var j = 0; j < options.length; j++)
    {
      var opt = options[j];
      var pos = opt.text.lastIndexOf("(");
      
      if(pos >= 0)
      {
        opt.text = opt.text.slice(0, pos);
      }
    }
  }

  filter_settings = new Array();
  filter_settings.request_sequence_number = filter_request_sequence_number++;

  send_filter_settings_request(false);
}

function send_filter_settings_request(every)
{
  var elems = document.getElementsByName("filter_options");

  var request;

  try
  {
    request = new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch(e)
  {
    request = new XMLHttpRequest();
  }

  var data = 
  { req: request, 
    sel_indexes: new Array(),
    sequence_number: filter_settings.request_sequence_number,
    every: every
  };

  request.onreadystatechange = 
   get_update_filter_items_request_onreadystatechange(data);

  var params = "t=x&z=bh&s=1&r=0";

  for(var i = 0; i < elems.length; i++)
  {
    var elem = elems[i];
    var p = elem.id.split("_", 3)[1];
    var id = elem.options[elem.selectedIndex].id;

    params += "&" + p + "=" + el_mime_url_encode(id);
    data.sel_indexes[p] = id;
  }

  if(every)
  {
    params += "&q=EVERY";
  }
  else
  {
    params += "&" + search_query;
  }

  request.open("POST", search_path, true);

  request.setRequestHeader("Content-type", 
                           "application/x-www-form-urlencoded");
  
  request.send(params);
}

function save_settings()
{
  var settings = document.getElementById("interface_lang");
  var lang = settings.options[settings.selectedIndex].id.split("_", 2)[1];
  
  var current_path = window.location.href.split("?")[0];

  if(search_path == current_path)
  {
    var parts = search_path.split("/");
    current_path = "";

    for(var i = 0; i < parts.length; i++)
    {
      if(i) current_path += "/";
      current_path += i == 4 ? lang : parts[i];
    }

    current_path += "?";
  }
  else
  {
    current_path += "?lang=" + lang + "&";
  }

  settings = document.getElementById("sort_settings");
  var opt = settings.options[settings.selectedIndex];
  var sort_mode = opt.id.split("_", 2)[1];

  var url = current_path + "sl=1&a=s-" + sort_mode;
  
  var elems = document.getElementsByName("filter_options");

  for(var i = 0; i < elems.length; i++)
  {
    var elem = elems[i];
    var opt_vals = elem.id.split("_", 3);

    url += "&" + opt_vals[1] + "=s-" + 
      el_mime_url_encode(elem.options[elem.selectedIndex].id);
  }

  settings = document.getElementById("rpp_settings");
  opt = settings.options[settings.selectedIndex];

  if(settings.selectedIndex >= 0)
  {
    var rpp = opt.id.split("_", 2)[1];
    url += "&r=s-" + rpp;
  }

  elems = document.getElementsByName("bool_settings");

  for(var i = 0; i < elems.length; i++)
  {
    var elem = elems[i];
    var opt_vals = elem.id.split("_", 5);

    url += "&" + opt_vals[1] + "=s-" + 
      el_mime_url_encode(elem.checked ? opt_vals[2] : opt_vals[3]);
  }

  url += "&" + search_query;

  close_settings_dialog();
  navigate(url);
}

function set_default_settings()
{
  var select = document.getElementById("interface_lang");
  var elems = select.options;

  var eng_index = -1;
  var i = 0;
  for(; i < elems.length; i++)
  {
    var elem = elems[i];
    var opt_vals = elem.id.split("_", 2);
    var lang = opt_vals[1];
    
    if(lang == default_language)
    {
      select.selectedIndex = i;
      break;
    }
    else if(lang == "eng")
    {
      eng_index = i;
    }
  }

  if(i == elems.length && eng_index >= 0)
  {
    select.selectedIndex = eng_index;
  }

  elems = document.getElementsByName("filter_options");
  var sel_changed = false;

  for(var i = 0; i < elems.length; i++)
  {
    var elem = elems[i]

    if(elem.selectedIndex)
    {
      elem.selectedIndex = 0;
      sel_changed = true;
    }
  }

  if(sel_changed)
  {
    filter_option_changed();
  }

  document.getElementById("sort_settings").selectedIndex = 0;
  document.getElementById("rpp_settings").selectedIndex = 0;
  
  var elems = document.getElementsByName("bool_settings");

  for(var i = 0; i < elems.length; i++)
  {
    var elem = elems[i];
    var opt_vals = elem.id.split("_", 5);
    elem.checked = opt_vals[4] == "1";
  }
}

function settings_dialog_mousedown(e)
{
  var target = el_target(e);
 
  if(settings_dialog_ph != null)
  {
    for(var el = target; el != null; el = el.parentNode)
    {
      if(el.id == settings_dialog_ph.id)
      {
        return;
      }
    }

    close_settings_dialog();
  }
}

function set_settings_key_down(e) 
{
  if(settings_dialog_ph != null)
  {
    var evt = e || window.event;
  
    if(evt.keyCode == 27)
    {
      close_settings_dialog();
    }
    else if(evt.keyCode == 13)
    {
      save_settings();
      return false;
    }
  }
}

function close_settings_dialog()
{
  if(settings_dialog_ph != null)
  {
    settings_dialog_ph.innerHTML = "";
    settings_dialog_ph = null;
  }
}

function update_filter_items(request, sel_indexes, every)
{
  var elems = document.getElementsByName("filter_options");
  var changed = false;

  for(var i = 0; i < elems.length; i++)
  {
    var elem = elems[i];
    var elem_id = elem.id;

    var j = 0;
    for(; j < filter_settings.length && filter_settings[j].id != elem_id; j++);

    var filter;

    if(j < filter_settings.length)
    {
      filter = filter_settings[j];
    }
    else
    {
      filter = { id: elem_id, options: new Array() };
      filter_settings.push(filter);
    }

    var vals = elem_id.split("_", 3);
    var param = vals[1];
    var xml_elem_name = vals[2];

    var elements = el_child_node(el_child_node(el_child_node(
                                 request.responseXML, 
                                 "result"), 
                                 "stat"), 
                                 xml_elem_name).childNodes;

    var selected_item_id = sel_indexes[param];

    var filter_options = filter.options;

    for(var j = 0; j < elements.length; j++)
    {
      var element = elements[j];

      if(element.tagName == "item")
      {
        var id = el_child_text(element, "id");
        var value = el_child_text(element, "val");
        var count = parseInt(element.getAttribute("count"));

        var k = 0;
        for(; k < filter_options.length && filter_options[k].id != id; k++);

        var option;
        if(k < filter_options.length)
        {
          option = filter_options[k];
        }
        else
        {
          if(!every && !count)
          {
            continue;
          }

          option = { id: id, 
                     value: value, 
                     req_count: 0, 
                     total_count: 0, 
                     selected: id == selected_item_id 
                   };

          filter_options.push(option);
        }

        if(every)
        {
          option.total_count = count;
        }
        else
        {
          option.req_count = count;
        }
      }
    }
  }

  if(!every)
  {
    send_filter_settings_request(true);
    return;
  }

  var changed = false;
  var is_msie = browser == "msie";

  for(var i = 0; i < filter_settings.length; i++)
  {
    var elem_id = filter_settings[i].id;
    var elem = document.getElementById(elem_id);

    var options = elem.options;

    while(options.length)
    {
      elem.remove(0);
    }

    var filter_options = filter_settings[i].options;
    var selected = false;

    var j = 1;
    for(; j < filter_options.length && filter_options[j].req_count; j++);

    var highlight = j < filter_options.length;

    for(j = 0; j < filter_options.length; j++)
    {
      var fopt = filter_options[j];

      if(!is_msie && j && filter_options[j - 1].req_count && 
         fopt.req_count == 0)
      {
        var opt = document.createElement('option');
        opt.innerHTML = "&mdash;";
        opt.disabled = true;

        try
        {
          elem.add(opt, null); // standards compliant
        }
        catch(ex)
        {
          elem.add(opt); // IE only
        }
      }

      var opt = document.createElement('option');

      opt.id = fopt.id;
      
      var text = fopt.value + " (";

      if(fopt.total_count != fopt.req_count)
      {
        text += fopt.req_count + " of ";
      }

      text += fopt.total_count + ")";
      opt.text = text;

      if(fopt.selected)
      {
        opt.selected = true;
        selected = true;
      }
   
      try
      {
        elem.add(opt, null); // standards compliant
      }
      catch(ex)
      {
        elem.add(opt); // IE only
      }

      if(is_msie && j && highlight && !fopt.req_count)
      {
        options[options.length - 1].style.color = "rgb(70,70,70)";
      }
    }

    elem.disabled = false;      

    if(!selected)
    {
      elem.selectedIndex = 0;
      changed = true;
    }
  }

  if(changed)
  {
    filter_option_changed();
  }
}

function get_update_filter_items_request_onreadystatechange(data)
{
  var onready = function()
  { 
    if(data.req.readyState == 4)
    {
      var paging_dialog = document.getElementById("settings_dialog");

      if(paging_dialog != null)
      {
        switch(data.req.status)
        {
          case 200:
          {
            if(filter_settings != null &&
               filter_settings.request_sequence_number == data.sequence_number)
            {
              update_filter_items(data.req, data.sel_indexes, data.every);
            }

            break;
          }
          default:
          {
            alert("Server communication failure. Error code: " + 
                  data.req.status);
            break;
          }
        }
      }
      
    }
  }

  return onready;
}

function fill_items_table(index)
{
  var items = paging_dialog_items[paging_dialog_ph.items_key];
  var area = document.getElementById("paging_dialog_area");

  var searched_items = null;
  var search = paging_dialog_ph.search.toLowerCase();

  if(search == "")
  {
    searched_items = items;
  }
  else
  {
    searched_items = { values:new Array(), current:-1};

    for(var i = 0; i < items.values.length; i++)
    {
      var id = items.values[i].id;

      if(id == "" || id.toLowerCase().indexOf(search) >= 0 ||
         items.values[i].value.toLowerCase().indexOf(search) >= 0)
      {
        if(i == items.current)
        {
          searched_items.current = searched_items.values.length;
        }

        searched_items.values.push(items.values[i]);
      }
    }
  }

  var paging_dialog = document.getElementById("paging_dialog_stat");

  paging_dialog.innerHTML = searched_items.values.length + "/" + 
    items.values.length;

  if(index == null)
  {
    index = searched_items.current < 0 ? 0 :
       (Math.floor(searched_items.current / items_per_page) * items_per_page);
  }

  var text = "Page:";

  var pages = Math.ceil(searched_items.values.length / items_per_page);
  var curr_page = Math.floor(index / items_per_page);

  if(curr_page)
  {
    text += "&#xA0;<a href=\"javascript:fill_items_table(" + 
            (curr_page - 1) * items_per_page + ")\">&lt;</a>";
  }

  var pages_in_bar = 10;

  var from = Math.max(curr_page - pages_in_bar / 2, 0);
  var to = Math.min(from + pages_in_bar, pages);

  for(var i = from; i < to; i++)
  {
    if(i == curr_page)
    {
      text += "&#xA0;" + (i + 1);
    }
    else
    {
      text += "&#xA0;<a href=\"javascript:fill_items_table(" + 
              i * items_per_page + ")\">" + (i + 1) + "</a>";
    }
  }

  if(curr_page + 1 < pages)
  {
    text += "&#xA0;<a href=\"javascript:fill_items_table(" + 
            (curr_page + 1) * items_per_page + ")\">&gt;</a>";
  }

  var last = Math.min(searched_items.values.length, 
                      index + items_per_page);

  text += "<table class=\"option_select_table\">";

  for(var i = index; i < last; i++)
  {
    var item = searched_items.values[i];

    var a_tag = "<a href=\"" + make_source_url(item.id) + "\">";

    var url_text = item.id.length > 63 ? (item.id.substr(0, 60) + "...") : 
                   item.id;

    text += "<tr class='" + (i == searched_items.current ? 
            "paging_dialog_selected_row" : "paging_dialog_row") + 
            "'><td align='right'  class='paging_dialog_counter_cell'>" + 
            item.count + 
            "</td><td class='paging_dialog_cell'>" + a_tag + 
            highlight_search(url_text, search) + 
            "</a></td><td class='paging_dialog_cell'>" + a_tag + 
            highlight_search(item.value, search) + "</a></td></tr>";
  }

  text += "</table>";
  area.innerHTML = text;  
}

function highlight_search(text, search)
{
  if(search == "")
  {
    return el_xml_encode(text);
  }
  
  var res = "";
  var lwr_text = text.toLowerCase();
  var search_len = search.length;
  
  var begin = 0;
  var pos;

  while((pos = lwr_text.indexOf(search, begin)) >= 0)
  {
    res += el_xml_encode(text.slice(begin, pos)) + 
           "<span class='found_word'>" + 
           el_xml_encode(text.slice(pos, pos + search_len)) + "</span>";

    begin = pos + search_len;
  }

  if(begin != lwr_text.length)
  {
    res += el_xml_encode(text.slice(begin));
  }

  return res;
}

function make_source_url(feed)
{
  var url = source_url(feed);

  if(url.length > max_get_length)
  {
    return "javascript:set_source('" + el_mime_url_encode(feed) + "');";
  }
  else
  {
    return url;
  }  
}

function source_url(feed)
{
  var url = search_path + "?v=S" + el_mime_url_encode(feed);

  var res = extract_param("v=", search_query);
  res = extract_param("f=", res.query);
  res = extract_param("g=", res.query);
  res = extract_param("h=", res.query);

  var query = res.query;
  
  if(query != "")
  {
    url += "&" + query;
  }

  return url;
}

function set_source(feed)
{
  navigate(source_url(feed));
}

function fill_paging_dialog(index)
{
  var paging_dialog = document.getElementById("paging_dialog");
    
  if(paging_dialog == null)
  {
    return;
  }

  var items = paging_dialog_items[paging_dialog_ph.items_key];

  if(items == undefined)
  {
    paging_dialog.innerHTML = "Loading ...";

    var request;

    try
    {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e)
    {
      request = new XMLHttpRequest();
    }

    var data = 
    { req:request, 
      items_key:paging_dialog_ph.items_key,
      xml_element_name:paging_dialog_ph.xml_element_name
    };

    request.onreadystatechange = 
      get_items_request_onreadystatechange(data);

    res = extract_param("f=", search_query);
    var f = res.param;
    var query = res.query;

    if(f != "")
    {
      var new_q = "q=URL " + f;

      res = extract_param("q=", res.query);
      var q = res.param;
      query = res.query;

      if(q != "")
      {
        new_q += " AND ( " + q + " )";
      }

      query = new_q + "&" + query;
    }

    var params = "t=x&z=k&s=1&r=0&" + query;

    request.open("POST", search_path, true);

    request.setRequestHeader("Content-type", 
                             "application/x-www-form-urlencoded");
  
    request.send(params);
    return;
  }

  var text = "";

  text += "<div id='paging_dialog_header'>Search: \
<input type='text' id='paging_dialog_search'/>\
<span id='paging_dialog_stat'></span></div>";

  text += "<div id='paging_dialog_area'></div>\
<button onclick='close_paging_dialog();'>Close</button>";
  paging_dialog.innerHTML = text;

  var edit = document.getElementById("paging_dialog_search");
  edit.focus();

  fill_items_table(index);
}

function get_items_request_onreadystatechange(data)
{
  var onready = function()
  { 
    if(data.req.readyState == 4)
    {
      var paging_dialog = document.getElementById("paging_dialog");

      if(paging_dialog != null)
      {
        switch(data.req.status)
        {
          case 200:
          {
            if(paging_dialog != null)
            {
              paging_dialog.innerHTML = "Reading ...";
            }

            setTimeout(function() 
                       { 
                         process_items_request(data.req, 
                                               data.items_key, 
                                               data.xml_element_name); 
                       }, 
                       0);

            break;
          }
          default:
          {
            alert("Server communication failure. Error code: " + 
                  data.req.status);
            break;
          }
        }
      }
      
    }
  }

  return onready;
}

function process_items_request(request, items_key, xml_element_name)
{
  if(paging_dialog_items[items_key] != undefined)
  {
    return;
  }

  var elements = el_child_node(el_child_node(el_child_node(
                               request.responseXML, 
                               "result"), 
                               "stat"), 
                               xml_element_name).childNodes;

  var items = { values:new Array(), current:-1};
  paging_dialog_items[items_key] = items;

  for(var i = 0; i < elements.length; i++)
  {
    var element = elements[i];

    if(element.tagName == "item")
    {
      var item = 
      { id:el_child_text(element, "id"), 
        value:el_child_text(element, "val"),
        count:element.getAttribute("count")
      };

      if(item.id != "")
      {
        if(element.getAttribute("selected") == "true")
        {
          items.current = items.values.length;
        }

        items.values.push(item);
      }
    }
  }

  fill_paging_dialog(null);
}

function search_items()
{
  if(paging_dialog_ph == null)
  {
    return;
  }

  var edit = document.getElementById("paging_dialog_search");

  if(edit != null)
  {
    if(edit.value == paging_dialog_ph.search)
    {
      if(paging_dialog_ph.search_changed)
      {
        paging_dialog_ph.search_changed = false;
        fill_items_table(null);
      }
    }
    else
    {
      paging_dialog_ph.search = edit.value;
      paging_dialog_ph.search_changed = true;
    }
  }

  setTimeout("search_items()", 500);
}

function show_paging_dialog(xml_element_name)
{
  var ph_id = xml_element_name + "_ph";
  var place_holder = document.getElementById(ph_id);

  var text = "<div id=\"paging_dialog\" class=\"dialog\"></div>"

  place_holder.innerHTML = text;
  place_holder.search = "";
  place_holder.items_key = ph_id;
  place_holder.xml_element_name = xml_element_name;

  paging_dialog_ph = place_holder;

  el_attach_event(document, "mousedown", paging_dialog_mousedown);
  document.onkeydown = set_paging_key_down;

  fill_paging_dialog(null);
  search_items();
}

function set_paging_key_down(e) 
{
  var evt = e || window.event;

  if(evt.keyCode != 27)
  {
    return;
  }

  if(paging_dialog_ph != null)
  {
    close_paging_dialog();
  }
}

function paging_dialog_mousedown(e)
{
  var target = el_target(e);
 
  if(paging_dialog_ph != null)
  {
    for(var el = target; el != null; el = el.parentNode)
    {
      if(el.id == paging_dialog_ph.id)
      {
        return;
      }
    }

    close_paging_dialog();
  }
}

function close_paging_dialog()
{
  if(paging_dialog_ph != null)
  {
    paging_dialog_ph.innerHTML = "";
    paging_dialog_ph = null;
  }
}

