// Функция показывает объект.
function show_obj(obj)
{
  if (!is_object(obj))
    return;
  if (obj.style.display != 'block')
    obj.style.display = 'block';
  else
    obj.style.display = 'none';
}

// Функция показывает объект по имени.
function show_obj_by_name(name)
{
  show_obj(get_object(name));
}

// Функция убирает объект.
function hide_obj(obj)
{
  if (is_object(obj))
    obj.style.display = 'none';
}

// Функция убирает объект по имени.
function hide_obj_by_name(name)
{
  hide_obj(get_object(name));
}

// Функция возвращает истину, если объект невидим.
function is_obj_hidden(obj)
{
  return obj.style.display != 'block';
}

// Функция добавляет функцию к событию.
function add_handler(target, eventName, handlerName)
{
  if (target.addEventListener)
    target.addEventListener(eventName, handlerName, false);
  else if (target.attachEvent)
    target.attachEvent("on" + eventName, handlerName);
  else
    target["on" + eventName] = handlerName;
}

// Функция контроля ввода числа.
function check_number(obj)
{
  if (/^[0-9]*$/.test(obj.value))
    obj.value_ = obj.value;
  else
    obj.value = obj.value_;
}

// Функция контроля ввода вещественного числа.
function check_double(obj)
{
  if (/^[0-9]*[.]?[0-9]*$/.test(obj.value))
    obj.value_ = obj.value;
  else
    obj.value = obj.value_;
}

// Функция контроля числа вводимых символов.
function text_counter(field, counter, maxlimit)
{
  var length = field.value.length;
	if (length > maxlimit)
  {
		field.value = field.value.substring(0, maxlimit);
    length = maxlimit;
  }
  if (is_object(counter))
  {
    if (length == maxlimit)
      counter.innerHTML = '<span class="bright">' + length + '</span> / ' + maxlimit;
    else
	    counter.innerHTML = length + ' / ' + maxlimit;
  }
}

// Функция проверки степени надежности пароля.
function check_password_score(name)
{
  var obj = get_object(name);
  var obj_score = get_object('check_' + name);
  if (!obj.value)
  {
    obj_score.innerHTML = '';
    return;
  }
  var score = get_password_score(obj.value);
  var score_str = '';
  var score_color = '';
  if (score >= 90)
  {
    score_str = 'Отличный пароль';
    score_color = "#2f9203";
  }
  else if (score >= 80)
  {
    score_str = 'Очень хороший пароль';
    score_color = "#729203";
  }
  else if (score >= 70)
  {
    score_str = 'Хороший пароль';
    score_color = "#869203";
  }
  else if (score >= 60)
  {
    score_str = 'Неплохой пароль';
    score_color = "#928303";
  }
  else if (score >= 50)
  {
    score_str = 'Нормальный пароль';
    score_color = "#925103";
  }
  else if (score >= 25)
  {
    score_str = 'Слабый пароль';
    score_color = "#923603";
  }
  else
  {
    score_str = 'Плохой пароль';
    score_color = "#920a03";
  }
  score_str += ' (' + score + '%)';
  obj_score.innerHTML = score_str;
  obj_score.style.backgroundColor = score_color;
}

// Функция проверки совпадения пароля.
function check_password_confirm(name, name_confirm)
{
  var obj = get_object(name);
  var obj_confirm = get_object(name_confirm);
  var obj_result = get_object('check_' + name);
  if (!obj.value || !obj_confirm.value)
  {
    obj_result.innerHTML = '';
    return;
  }
  if (obj.value == obj_confirm.value)
  {
    var result_str = 'Пароли совпадают';
    var result_color = "#2f9203";
  }
  else
  {
    var result_str = 'Пароли не совпадают';
    var result_color = "#920a03";
  }
  obj_result.innerHTML = result_str;
  obj_result.style.backgroundColor = result_color;
}

// Функция проверки формата e-mail.
function check_email(name)
{
  var obj = get_object(name);
  var obj_result = get_object('check_' + name);
  if (!obj.value)
  {
    obj_result.innerHTML = '';
    return;
  }
  if (is_email(obj.value))
  {
    var result_str = 'Правильный формат e-mail';
    var result_color = "#2f9203";
  }
  else
  {
    var result_str = 'Неправильный формат e-mail';
    var result_color = "#920a03";
  }
  obj_result.innerHTML = result_str;
  obj_result.style.backgroundColor = result_color;
}

// Функция обновления значения даты.
function date_update(name)
{
  var day = get_object(name + '_day').value;
  var month = get_object(name + '_month').value;
  var year = get_object(name + '_year').value;
  var hour_obj = get_object(name + '_hour');
  var hour = '00';
  if (is_object(hour_obj))
  {
    hour = hour_obj.value;
    if (hour.length < 2)
      hour = '0' + hour;
  }
  var minute_obj = get_object(name + '_minute');
  var minute = '00';
  if (is_object(minute_obj))
  {
    minute = minute_obj.value;
    if (minute.length < 2)
      minute = '0' + minute;
  }
  get_object(name).value = day + "." + month + "." + year +
    " " + hour + ":" + minute;
}

// Функция события клика по кнопке сворачивающегося блока.
function button_hide_click(name, values)
{
  var img_up = get_object(name + '_img_up');
  var img_down = get_object(name + '_img_down');
  if (img_up.style.display == "inline")
  {
    img_up.style.display = "none";
    img_down.style.display = "inline";
  }
  else
  {
    img_up.style.display = "inline";
    img_down.style.display = "none";
  }
  var count = values.length;
  for (var i = 0; i < count; i++)
  {
    var value = values[i];
    var obj = get_object(value);
    if (!is_object(obj))
      obj = get_object(value + '[]');
    if (!is_object(obj))
      continue;
    var obj_caption = get_object(value + '_caption');
    if (obj_caption.style.display == "inline")
      obj_caption.style.display = "none";
    else
      obj_caption.style.display = "inline";
    var obj_content = get_object(value + "_content");
    if (is_object(obj_content))
      obj_content.style.display = obj_caption.style.display;
    var obj_text = get_object(value + '_text');
    if (is_object(obj_text))
      obj_text.style.display = obj_caption.style.display;
  }
}

// Функция подгружает изображение.
function load_image(url)
{
  img = new Image; img.src = url;
}

// Функция скрывает редактор CKEditor.
function hide_ckeditor(name)
{
  var editor = eval("editor_" + name);
  if (editor)
  {
		editor.destroy();
    var obj = get_object(name);
    obj.focus();
    eval('editor_' + name + ' = ""');
  }
}

// Функция показывает / скрывает редактор CKEditor.
function show_ckeditor(name, height, toolbar_name, max_length)
{
  var editor = eval("editor_" + name);
  if (editor)
		hide_ckeditor(name);
  else
  {
    editor = CKEDITOR.replace(name,
    {
      toolbar: toolbar_name,
      height: height,
      toolbarLocation: "top"
    });
    if (max_length)
    {
      editor.on('key', function(event){
        text_counter( {value : event.editor.getData()},
        get_object('counter_' + name), max_length);
        }, editor.element.$);
      var locked;
      editor.on('key', function(event){
        var currentLength = editor.getData().length;
        if (currentLength >= max_length)
        {
          if (!locked)
          {
            editor.fire('saveSnapshot');
            locked = 1;
            event.cancel();
          }
          else
            setTimeout(function()
            {
              if (editor.getData().length > max_length)
                editor.execCommand('undo');
              else
                locked = 0;
            }, 0);
        }
      });
    }
    CKFinder.SetupCKEditor(editor, '/js/ckfinder/');
    eval("editor_" + name + " = editor");
  }
}

// Функция показывает / скрывает редактор CKEditor.
function insert_into_ckeditor(name, str)
{
  var editor = eval("editor_" + name);
  if (editor)
    editor.insertHtml(str);
}

// Функция обрабатывает наведение мышки на звезды рейтинга.
function vote_stars_changed(id, star_number, count_stars, img_0, img_1)
{
  for (var i = 1; i <= count_stars; i++)
  {
    var img = get_object("img_votes_stars_" + id + "_" + i);
    if (i <= star_number)
      img.src = img_1;
    else
      img.src = img_0;
  }
}

// Функция добавляет галерею prettyphoto.
function add_prettyphoto()
{
  $(document).ready(function() { $(".gallery a[rel^=prettyPhoto]").prettyPhoto({theme:"light_rounded"}); });
}
