// Функция возвращает истину, если подстрока есть в строке.
function is_substring(substring, string)
{
  return string.indexOf(substring) != -1;
}

// Функция возвращает истину, если строка соответствует формату e-mail.
function is_email(value)
{
  return value.length != 0 && (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(value));
}

// Функция изменяет источник изображения.
function image_swap(img_name, new_src)
{
  var image = get_object(img_name);
  image.src = new_src;
}

// Функция изменяет источник изображения из его свойств.
function set_img_src(name, is_over)
{
  var img = get_object(name);
  if (is_object(img))
  {
    if (is_over)
      img.src = img.lang + '_.png';
    else
      img.src = img.lang + '.png';
  }
}

// Функция копирует текст в буфер обмена.
function copy_to_clipboard(text)
{
  // Для Firefox набрать about:config в строке адреса и
  // выставить true для свойства signed.applets.codebase_principal_support
  try
  {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
    var clipboard = Components.classes["@mozilla.org/widget/clipboard;1"].getService();
    if (clipboard)
      clipboard = clipboard.QueryInterface(Components.interfaces.nsIClipboard);
    var transferable = Components.classes["@mozilla.org/widget/transferable;1"].createInstance();
    if (transferable)
      transferable = transferable.QueryInterface(Components.interfaces.nsITransferable);
    if (clipboard && transferable)
    {
      transferable.addDataFlavor("text/unicode");
      var textObj = new Object();
      var textObj = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
      if (textObj)
      {
        textObj.data = text;
        transferable.setTransferData("text/unicode", textObj, text.length*2);
        var clipid=Components.interfaces.nsIClipboard;
        clipboard.setData(transferable, null, clipid.kGlobalClipboard);
      }
    }
  }
  catch (e)
  {
    window.clipboardData.setData("Text", text);
  }

}

// Функция выводит сообщение об удалении записи.
function delete_record(url, name, lang)
{
  if (!is_param(name))
    name = '';
  if (!is_param(lang))
    lang = 'ru';
  var msg = '';
  if (lang == 'ru')
  {
    msg = 'Действительно удалить запись';
    caption = 'Удалить';
  }
  else
  {
    msg = 'Do you really want to delete the record';
    caption = 'Delete';
  }
  if (name != '')
    msg = msg + ' (' + name + ')';
  msg = msg + '?';
  if (is_function('jConfirm'))
    jConfirm(msg, caption, function(r) {if (r) redirect(url);});
  else
  {
    if (confirm(msg))
	    redirect(url);
  }

}

// Функция вставляет цитату в объект из выделенного текста на странице.
function insert_quote(obj_name, text)
{
  if (document.selection)
  {
    obj = get_object(obj_name);
    obj.focus();
    obj.document.selection.createRange().text = "[quote]" + text + "[/quote]\n";
  }
}

// Функция возвращает выделенный текст на странице.
function get_selection()
{
  if (document.getSelection)
  {
		selection = document.getSelection();
		selection = selection.replace(/\r\n\r\n/gi, "_doublecaret_");
    while (selection.indexOf("  ") != -1)
      selection = selection.replace(/  /gi, "");
		selection = selection.replace(/_doublecaret_/gi, "\r\n\r\n");
  }
  else
    selection = document.selection.createRange().text;
}

// Функция перемещает запись вверх или вниз на заданное число позиций.
function admin_arrows(url, id)
{
  redirect(url + get_url_param("arrows_number", get_object("ed_arrows_number_" + id).value));
}

// Функция возвращает степень надежности пароля (от 0 до 100).
function get_password_score(str)
{
  var count = str.length;
  var str_uniq = '';
  for (var i = 0; i < count; i++)
    if (!is_substring(str.charAt(i), str_uniq))
      str_uniq += str.charAt(i);
  var count_uniq = str_uniq.length;
  var count_symb = 0;
  for (var i = 0; i < count_uniq; i++)
    if (is_substring(str_uniq.charAt(i), "!@#$%^&*?_~"))
      count_symb++;
	var score = 0;
  if (count <= 12)
    score = count * 3;
  else
    score = 36;
  if (count_uniq <= 12)
    score += count_uniq * 4;
  else
    score += 48;
  if (count_symb <= 2)
    score += count_symb * 8;
  else
    score += 16;
	return score;
}
