var fullscreen_parent;
var fullscreen_next;
var chat_xhr;

$(document).ready(function() {
  //Обновление даты/погоды каждую минуту
  $("#struct").everyTime('60s', function(){
    reload_weather();
  });

  //Обновление управления модулями каждые 6 минут
  //$("#struct_intro").everyTime('360s', function(){
  //  reload_sett_checkboxes(1);
  //});

  //Обновление контента модулей каждые 5 минут
  $("body").everyTime('300s', function(){
    reload_modules();
  });
  
  reload_weather();

  reload_sett_checkboxes();

  reload_view_settings(1);
  
  //Асинхронная загрузка изображения при создании темы
  $('#create_theme_load_image').upload({
    name: 'theme_image',
    method: 'post',
    enctype: 'multipart/form-data',
    action: '/main/upload_theme_image/',
    params: {},
    onSubmit: function() {
      $('#create_theme_load_image').html('<img src="/img/loading.gif" border="0" />');
      $("#create_theme_error").text("").css("display", "none");
    },
    onComplete: function(data) {
      switch (data) {
        case "-1":
          $("#load_theme_image_error").text("Неподдерживаемый формат изображения!").css("display", "block");
          $('#create_theme_load_image').html('Обзор');
        break;
        case "-2":
          $("#load_theme_image_error").text("Не удалось загрузить изображение!").css("display", "block");
          $('#create_theme_load_image').html('Обзор');
        default:
          $("#load_theme_image_error").text("").css("display", "none");
          $("#create_theme_image_name").val(data);
          $('#create_theme_load_image').html('').css("background", "url(/themes/thumb_"+ data +") no-repeat center");
      }
    }
  });
  
  $("#create_theme_container").css({"display": "none", "visibility": "visible"});
  
  $("#create_theme_name").focus(function() {
    $("#create_theme_error").text("").css("display", "none");
  });
  
  $("#view_themes_container div.theme_container").live("click", function() {
    set_theme($(this).attr("id"));
  });

  //Получение контента активных модулей
  $.each ($("div.block_container"), function(i, obj) {
    var block_id = $(obj).attr("id");
    $("#"+ block_id +" img.block_func_settings").attr({"src": "/img/loading.gif"});
    $.post("/modules/load_block/"+ block_id +"/", {}, function(data) {
      replace_block_html(block_id, data);
      if (!$("#"+ block_id +" div.block_delete_edit").length && $("#"+ block_id).attr("data-my-module") == "1") {
        $("#"+ block_id +" div.block_content").after('<div class="block_delete_edit"><a href="#" class="blue_11_link">Редактировать</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#" class="red_11_link">Удалить</a></div>');
      }
      if (!$("#"+ block_id +" div.block_delete_edit").length && !$("#"+ block_id +" div.block_good_bad").length && $("#"+ block_id).attr("data-rated") == "0") {
        $("#"+ block_id +" div.block_content").after('<div class="block_good_bad"><a href="#" class="blue_11_link">Нравится</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#" class="red_11_link">Не нравится</a></div>');
      }
      if ($(obj).attr("data-minimized") == "0") {
        $("#"+ block_id +" div.block_content").slideDown();
      }
      if ($(obj).attr("data-settings") == "1") {
        $("#"+ block_id +" img.block_func_settings").attr({"src": "/img/block_settings.gif"});
      } else {
        $("#"+ block_id +" img.block_func_settings").remove();
      }
      $(obj).css({"position": "static", "width": "auto", "z-index": 0});
    }, "json");
  });

  $(document).mousedown(function(event) {
    if (!$(event.target).parents("#block_settings").length && $(event.target).attr("id") != "block_settings" && $(event.target).attr("class") != "block_func_settings") {
      $("#block_settings").css({"display": "none"});
      $("#used_block_id").val("");
    }
  });
  
  $("input.sett_checkbox").live("click", function() {
    var block_id = $(this).attr("id").split("sett_").join("");
    if ($(this).attr("checked") && !$("#"+ block_id).length) {
      $.post("/modules/close/", {block_id: block_id, closed: 0}, function(data) {
        if (data) {
          load_block(block_id, data);
        }
      }, "json");
    } else {
      $.post("/modules/close/", {block_id: block_id, closed: 1});
      $("#"+ block_id).remove();
    }
  });
  
  $("#sheet, div.popup_form_closer img").click(function() {
    $("#sheet, div.popup_form").css({"display": "none"});
    $("div.popup_form input[type='text'], div.popup_form input[type='password']").val("");
  });
  
  $("#autorize_link").click(function() {
    $("#sheet").css({"display": "block"});
    $("#login_form_errors").text("");
    $("#login_form input").val("");
    $("#login_form").css({"display": "block", "left": $(document).width() / 2 - $("#login_form").width() / 2});
    $("#login_form input").eq(0).focus();
    return false;
  });
  
  $("#register_link").click(function() {
    $("#sheet").css({"display": "block"});
    $("#register_form_errors").text("");
    $("#register_form input").val("");
    $("#register_form").css({"display": "block", "left": $(document).width() / 2 - $("#register_form").width() / 2});
    $("#register_form input").eq(0).focus();
    return false;
  });
  
  $("#user_settings_link").click(function() {
    $("#sheet").css({"display": "block"});
    $("#user_settings_form").css({"display": "block", "left": $(document).width() / 2 - $("#register_form").width() / 2});
    return false;
  });
  
  $("#close_view_settings, #close_create_theme").click(function() {
    $("#change_view_style").click();
  });
  
  //Функция активирует редактирование оформлений
  $("a.edit_theme_link").live("click", function() {
    var theme_id = $(this).attr("id").replace("edit_theme_", "");
    $("#create_theme_table").attr("data-edit_theme", theme_id);
    $("#create_theme_title_text").html('Редактирование оформления <span class="b_blue_12">'+ $("#theme_"+ theme_id).attr("data-name") +'</span>');
    $("#create_theme_button").css("display", "none");
    $("#edit_theme_button").css("display", "");
    $("#create_theme").click();
    $("#create_theme_image_name").val($("#theme_"+ theme_id).attr("data-image"));
    $("#create_theme_load_image").css("background", $("#theme_"+ theme_id).css("background")).html("");
    $("#create_theme_repeat").val($("#theme_"+ theme_id).attr("data-background-repeat"));
    $("#create_theme_align").val($("#theme_"+ theme_id).attr("data-background-position"));
    var color_fone = ($("#theme_"+ theme_id).attr("data-background-color") ? $("#theme_"+ theme_id).attr("data-background-color") : "fff");
    $("#create_theme_color_fone").val("#"+ color_fone).css("background-color", "#"+ color_fone);
    var color_text_1 = ($("#theme_"+ theme_id).attr("data-text-color") && $("#theme_"+ theme_id).attr("data-text-color") != "#" ? $("#theme_"+ theme_id).attr("data-text-color") : "#333");
    $("#create_theme_color_text_1").val(color_text_1).css("background-color", color_text_1);
    var color_text_2 = ($("#theme_"+ theme_id).attr("data-text-sub-color") && $("#theme_"+ theme_id).attr("data-text-sub-color") != "#" ? $("#theme_"+ theme_id).attr("data-text-sub-color") : "#375eb1");
    $("#create_theme_color_text_2").val(color_text_2).css("background-color", color_text_2);
    $("#create_theme_name").val($("#theme_"+ theme_id).attr("data-name"));
    return false;
  });
  
  //Функция вызывает окно добавления модулей
  $("#add_module_link").click(function() {
    $("#sheet").css({"display": "block"});
    $("#add_module_form_errors").text("");
    $("#add_module_form input").val("");
    $("#add_module_form").css({"display": "block", "left": $(document).width() / 2 - $("#add_module_form").width() / 2});
    return false;
  });
  
  //Функция вызывает окно редактирования модулей
  $("div.block_delete_edit a.blue_11_link").live("click", function() {
    var block_id = $(this).parent().parent().attr("id");
    loading("show");
    $.post("/modules/get_module_data/", {id: block_id}, function(data) {
      $("#sheet").css({"display": "block"});
      $("#edit_module_form_errors").text("");
      $("#edit_module_title").val($("#"+ block_id +" .block_title div").text());
      $("#edit_module_link").val(data.link);
      $("#edit_module_content_type").val(data.content_type);
      $("#edit_module_public_status").val(data.public_status);
      $("#edit_module_id").val(block_id);
      $("#edit_module_form").css({"display": "block", "left": $(document).width() / 2 - $("#register_form").width() / 2});
      loading("hide");
    }, "json");
    return false;
  });
  
  //Функция отвечает за удаление модулей
  $("div.block_delete_edit a.red_11_link").live("click", function() {
    if (confirm("Вы действительно хотите удалить этот модуль?\n\nПомните, что после удаления модуль невозможно восстановить,\nон перестанет существовать как для Вас, так и для других пользователей,\nустановивших его на свою персональную страницу.")) {
      var block_id = $(this).parent().parent().attr("id");
      $.post("/modules/delete/", {id: block_id}, function(data) {
        reload_sett_checkboxes();
      });
      $("#"+ block_id).remove();
    }
    return false;
  });
  
  //Увеличение рейтинга модуля
  $("div.block_good_bad a.blue_11_link").live("click", function() {
    add_module_rating($(this).parent().parent().attr("id"), 1);
    return false;
  });
  
  //Уменьшение рейтинга модуля
  $("div.block_good_bad a.red_11_link").live("click", function() {
    add_module_rating($(this).parent().parent().attr("id"), -1);
    return false;
  });
  
  //Функция отвечает за удаление оформлений
  $("a.delete_theme_link").live("click", function() {
    if (confirm("Вы действительно хотите удалить это оформление?")) {
      $.post("/main/delete_theme/", {id: $(this).attr("id")}, function(data) {
        reload_view_settings($("#view_themes_table").attr("data-page"));
      });
    }
    return false;
  });

  //Функция управляет отображением блоков "Смена оформления страницы" и "Создание оформления"
  $("#change_view_style").click(function() {
    if ($("#view_settings_container").css("display") == "none") { //Если блок "Смена оформления" скрыт
      if ($("#create_theme_container").css("display") == "none") { //Если блок "Создание оформления" скрыт
        $("#view_settings_container").slideDown(); //Отображаем блок "Смена оформления"
      } else { //Если блок "Создание оформления" виден
        $("#create_theme_container").slideUp("", function() { //Скрываем блок "Создание оформления"
          clear_create_theme(); //Очищаем блок "Создание оформления"
          $("#view_settings_container").slideDown(); //Отображаем блок "Смена оформления"
        });
      }
      $.cookie("view_settings_container", 1, {expires: 365}); //Пишем в куки состояние отображения блока "Смена оформления"
    } else { //Если блок "Смена оформления" виден
      $("#view_settings_container").slideUp(); //Скрываем блок "Смена оформления"
      $.cookie("view_settings_container", 0, {expires: 365}); //Пишем в куки состояние отображения блока "Смена оформления"
    }
    return false;
  });
  
  $("#create_theme").click(function() {
    $("#view_settings_container").slideUp("", function() {
      $("#create_theme_container").slideDown();
    });
    return false;
  });
  
  $(document).keyup(function(event) {
    if (event.keyCode == 27) {
      hide_all_windows();
    }
  });
  
  $("#login_form input").keyup(function(event) {
    if (event.keyCode == 13) {
      $("#login_form .button").click();
    }
  });
  
  $("#search_string").keyup(function(event) {
    if (event.keyCode == 13) {
      $("#logo_search .button").click();
    }
  });
  
  $("input.chat_message_input").live("keyup", function(event) {
    if (event.keyCode == 13) {
      say2chat(this);
    }
  });
  
  $("input.chat_message_send").live("click", function(event) {
    say2chat($(this).prev());
  });

  $("#blocks_settings_switcher a").click(function() {
    if ($("#struct_settings_block").css("display") == "none") {
      $("#struct_settings_block").slideDown();
      $.cookie("struct_settings_block", 1, {expires: 365});
    } else {
      $("#struct_settings_block").slideUp();
      $.cookie("struct_settings_block", 0, {expires: 365});
    }
    return false;
  });

  $("div.block_container").draggable({
    start: function(event, ui) {
      var width = $(this).width();
      $(this).css({"position": "absolute", "width": width, "z-index": 4});
    },
    stop: function(event, ui) {
      $(this).css({"position": "static", "width": "auto", "z-index": 0});
      $("#dragspot").before(this);
      $("#dragspot").css({"display": "none"});
      save_block_position(this);
      $(this).click();
    }
  });
  
  $("div.block_container").droppable({
    tolerance: "pointer",
    over: function(event, ui) {
      $("#dragspot").css({"display": "block", "height": $(ui.draggable).height()});
      $(this).before($("#dragspot"));
    },
    out: function(event, ui) {
      $("#dragspot").parent().append($("#dragspot"));
    }
  });
  
  $("div.block_container").draggable("disable");
  
  $("td.block_col").droppable({
    tolerance: "pointer",
    over: function(event, ui) {
      if ($("#dragspot").css("display") == "none" || $("#dragspot").parent().attr("id") != $(this).attr("id")) {
        $("#dragspot").css({"display": "block", "height": $(ui.draggable).height()});
        $(this).append($("#dragspot"));
      }
    }
  });
  
  $("#all_struct_wrapper div.block_title").live("mouseover", function() {
    $(this).parent().draggable("enable");
  });
  $("#all_struct_wrapper div.block_title").live("mouseout", function() {
    $(this).parent().draggable("disable");
  });
  $("#all_struct_wrapper div.block_content").live("mouseover", function() {
    $(this).parent().draggable("disable");
  });
  
  //Показывает/скрывает окно с настройками модуля
  $("img.block_func_settings").live("click", function() {
    var parent = $(this).parent().parent().parent().parent().parent();
    if ($("#used_block_id").val() && $("#used_block_id").val() == $(parent).parent().attr("id")) {
      $("#block_settings").slideUp();
      $("#used_block_id").val("");
    } else {
      if ($("#used_block_id").val()) {
        $("#block_settings").css({"display": "none"});
      }
      var block_id = $(parent).parent().attr("id");
      $("#used_block_id").val(block_id);
      $("#block_settings").css({"width": $(parent).width() - 50});
      $("#block_settings").css({"top": Math.round($(parent).offset().top + $(parent).height() * 2 - 4), "left": Math.round($(parent).offset().left + $(parent).width() / 2 - $("#block_settings").width() / 2 - 12)});
      $("#block_settings").slideDown();
      $("#block_settings_container").html('<center><img src="/img/loading.gif" /></center>');
      $.get("/modules/load_settings/"+ block_id +"/", function(data) {
        $("#block_settings_container").html(data);
      });
    }
  });
  
  //Сворачивает модуль
  $("img.block_func_minimize").live("click", function() {
    var obj = $(this).parent().parent().parent().parent().parent().next();
    if ($(obj).css("display") != "none") {
      $(obj).slideUp();
      var minimized = 1;
    } else {
      $("#"+ $(obj).parent().attr("id") +" div.block_title table").css("color", "333");
      $(obj).slideDown();
      var minimized = 0;
    }
    $(obj).parent().attr("data-minimized", minimized);
    $.post("/modules/minimize/", {block_id: $(obj).parent().attr("id"), minimized: minimized});
  });
  
  //Разворачивает модуль во весь экран
  $("img.block_func_fullscreen").live("click", function() {
    var block = $(this).parent().parent().parent().parent().parent().parent();
    var block_id = $(block).attr("id");
    if ($("#all_struct_wrapper").css("display") != "none") {
      fullscreen_parent = $(block).parent();
      fullscreen_next = $(block).next();
      $(block).draggable("disable");
      $(block).attr("data-minimized", 0);
      $.post("/modules/minimize/", {block_id: block_id, minimized: 0});
      $("#fullscreen_container").html(block).css("z-index", 0);
      $(block).css({"position": "absolute", "top": 0, "left": 0, "width": "100%", "height": "100%", "margin": 0, "border": "none"});
      $("#"+ block_id +" div.block_title").css("cursor", "default");
      $("#"+ block_id +" div.block_delete_edit, #"+ block_id +" div.block_good_bad, #"+ block_id +" img.block_func_close, #"+ block_id +" img.block_func_minimize").css("visibility", "hidden");
      $("#all_struct_wrapper").hide();
      if ($(block).attr("data-autoreload") == "1") {
        reload_block(block_id, false, true);
      } else {
        fullscreen_block($(block).attr("data-autoreload"), block_id, true);
      }
    } else {
      if ($(fullscreen_next).length) {
        $(fullscreen_next).before(block);
      } else {
        $(fullscreen_parent).append(block);
      }
      $("#fullscreen_container").css("z-index", -1);
      $("#"+ block_id +" div.block_title").css("cursor", "move");
      $(block).css({"position": "static", "width": "auto", "height": "auto", "margin": "0 10px 10px 10px", "border": "1px solid #e5e5e5"});
      $("#"+ block_id +" div.block_delete_edit, #"+ block_id +" div.block_good_bad, #"+ block_id +" img.block_func_close, #"+ block_id +" img.block_func_minimize").css("visibility", "visible");
      $("#all_struct_wrapper").show();
      if ($(block).attr("data-autoreload") == "1") {
        reload_block(block_id, false, true);
      } else {
        fullscreen_block($(block).attr("data-autoreload"), block_id, false);
      }
    }
  });
  
  //Закрывает модуль
  $("img.block_func_close").live("click", function() {
    var obj = $(this).parent().parent().parent().parent().parent().parent();
    var block_id = $(obj).attr("id");
    $(obj).remove();
    $.post("/modules/close/", {block_id: block_id, closed: 1});
    $("#sett_"+ block_id).attr({"checked": false});
  });
  
  //Пасхалки
  $("#logo_weather img").live("dblclick", function() {
    if ($(this).attr("src") == "/img/weather/evil.png") {
      $(this).attr("src", "/img/weather/icon.gif")
    } else {
      $(this).attr("src", "/img/weather/evil.png")
    }
  });
  $("#show_me_a_big_secret").dblclick(function() {
    if ($("#big_secret").css("display") == "none") {
      $("#big_secret div.help_title").text("Как грабить корованы?");
      $("#big_secret div.help_text").text("Грабить корованы рекомендуется не реже четырех раз в день. Для граблинга корованов необходимы грабли специальной конструкции.");
      $("#big_secret").slideDown();
    } else {
      $("#big_secret").slideUp();
    }
  });
  
  //Показывает поле для добавления записи в блокнот
  $("#notepade_add").live("click", function() {
    if ($("#paper_textarea").css("display") != "block") {
      $("#paper_textarea textarea").val("");
      $("#paper_textarea").slideDown("", function() {
        $("#paper_textarea textarea").css("width", $("#paper_textarea").width());
      });
    }
    return false;
  });
  
  //Добавляет запись в блокнот
  $("#paper_textarea_controls a.blue_11_link").live("click", function() {
    var block_id = $(this).parent().parent().parent().parent().attr("id");
    var text = $.trim($("#paper_textarea textarea").val());
    if (text != "") {
      $.post("/modules/notepad_add/", {text: text}, function(data) {
        reload_block(block_id, 1);
      });
    }
    $("#paper_textarea_controls a.red_11_link").click();
    return false;
  });
  
  //Скрывает поле добавления записи в блокнот
  $("#paper_textarea_controls a.red_11_link").live("click", function() {
    var paper_width = $("#paper_textarea").width();
    $("#paper_textarea textarea").val("");
    $("#paper_textarea textarea").css("width", 0);
    $("#paper_textarea").slideUp();
    return false;
  });
  
  //Удаляет запись из блокнота
  $("img.paper_delete").live("click", function() {
    var notepad_paper_block_id = $(this).parent().parent().attr("id");
    var block_id = $(this).parent().parent().parent().parent().attr("id");
    if (confirm("Вы действительно хотите удалить запись?")) {
      $.post("/modules/notepad_delete/", {notepad_paper_block_id: notepad_paper_block_id}, function(data) {
        reload_block(block_id, 1);
      });
    }
  });
  
  //Показывает/скрывает пользователей чата
  $("a.chat_users_messages_switch").live("click", function() {
    var block_id = $(this).parent().parent().parent().attr("id");
    var users = $("#"+ block_id +" div.chat_users_window");
    if ($(users).css("display") == "none") {
      $(users).slideDown();
      $(this).text("свернуть");
    } else {
      $(users).slideUp();
      $(this).text("показать");
    }
    return false;
  });
  
  $("a.black_12_ml20_link_dashed").hover(function() {
    $(this).css("border-bottom", "none");
  }, function() {
    $(this).css("border-bottom", "1px dashed #333");
  });

});

//Обновляет контент модулей
function reload_modules() {
  $.each ($("div.block_container"), function(i, obj) {
    if ($(obj).attr("data-autoreload") == "1") {
      var block_id = $(obj).attr("id");
      $.post("/modules/load_block/"+ block_id +"/", {}, function(data) {
        replace_block_html(block_id, data);
      }, "json");
    }
  });
}

//Обновляет погоду
function reload_weather() {
  $.get("/main/reload_weather/", function(data) {
    $("#logo_weather").html(data);
  });
}

function hide_settings_block() {
  $("#block_settings").css({"display": "none"});
  $("#used_block_id").val("");
}

//Открывает модуль
function load_block(block_id, block) {
  var module = '<div class="block_container" id="'+ block_id +'" data-minimized="'+ block.minimized +'" data-settings="'+ block.settings +'" data-my-module="'+ block.my_module +'" data-autoreload="'+ block.autoreload +'" data-md5="'+ block.md5 +'" data-rated="'+ block.rated +'"><div class="block_title"><table cellspacing="0" cellpadding="0"><tr><td><div>'+ block.title +'</div><img src="/img/block_settings.gif" class="block_func_settings" /><img src="/img/block_close.gif" class="block_func_close" /><img src="/img/block_fullscreen.gif" class="block_func_fullscreen" /><img src="/img/block_minimize.gif" class="block_func_minimize" /><br class="clear" /></td></tr></table></div><div class="block_content"></div></div>';
  $("#block_col_"+ block.column).prepend(module);
  reload_block(block_id);
  $("#"+ block_id).css({"position": "static", "width": "auto", "z-index": 0});
  set_drag_block(block_id);
}

//Обновляет контент модуля
function reload_block(block_id, invisible, hard) {
  if (typeof(invisible) == "undefined" || !invisible) {
    invisible = 0;
  }
  if (!invisible) {
    $("#"+ block_id +" div.block_content").css({"display": "none"});
    $("#"+ block_id +" img.block_func_settings").attr({"src": "/img/loading.gif"});
  }
  $.post("/modules/load_block/"+ block_id +"/", {}, function(data) {
    replace_block_html(block_id, data, hard);
    if (!$("#"+ block_id +" div.block_delete_edit").length && $("#"+ block_id).attr("data-my-module") == "1") {
      $("#"+ block_id +" div.block_content").after('<div class="block_delete_edit"><a href="#" class="blue_11_link">Редактировать</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#" class="red_11_link">Удалить</a></div>');
    }
    if (!$("#"+ block_id +" div.block_delete_edit").length && !$("#"+ block_id +" div.block_good_bad").length && $("#"+ block_id).attr("data-rated") == "0") {
      $("#"+ block_id +" div.block_content").after('<div class="block_good_bad"><a href="#" class="blue_11_link">Нравится</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#" class="red_11_link">Не нравится</a></div>');
    }
    if (!invisible) {
      if ($("#"+ block_id).attr("data-minimized") == "0") {
        $("#"+ block_id +" div.block_content").slideDown();
      }
      if ($("#"+ block_id).attr("data-settings") == "1") {
        $("#"+ block_id +" img.block_func_settings").attr({"src": "/img/block_settings.gif"});
      } else {
        $("#"+ block_id +" img.block_func_settings").remove();
      }
    }
  }, "json");
}

//Вставляет новый контент в модуль
function replace_block_html(block_id, data, hard) {
  hard = (typeof(hard) != "undefined" ? hard : false);
  //if ($("#"+ block_id).attr("data-md5") != data.md5 || !$("#"+ block_id +" div.block_content").html() || hard) {
    if ($("#"+ block_id).attr("data-minimized") == 1 && $("#"+ block_id).attr("data-md5") != data.md5) {
      $("#"+ block_id +" div.block_title table").css("color", "b00");
    }
    $("#"+ block_id).attr("data-md5", data.md5);
    $("#"+ block_id +" div.block_content").html(data.content);
    resize_images(block_id);
  //}
}

//Управляет размером изображений в контенте модуля
function resize_images(block_id) {
  if ($("#all_struct_wrapper").css("display") != "none") {
    var max_image_width = Math.floor(($(window).width() - 80) / 3);
    var images = $("#"+ block_id +" div.block_content img");
    $.each (images, function(i, image) {
      resize_image(image, max_image_width);
      $(image).one("load", function() {
        resize_image(this, max_image_width);
      });
    });
  }
}

//Уменьшает размер изображения до размера свободного места в модуле
function resize_image(image, max_image_width) {
  var image_width = $(image).width();
  if (image_width > max_image_width - 60) {
    $(image).width(max_image_width - 60).height("auto");
  }
  if (image_width > max_image_width - 120) {
    $(image).attr("align", "center").css("display", "block");
  }
  $(image).css("border", "none");
}

//Подвешивает "таскаемость" на только что открытый модуль
function set_drag_block(block_id) {
  var block = $("#"+ block_id);
  $(block).draggable({
    start: function(event, ui) {
      var width = $(this).width();
      $(this).css({"position": "absolute", "width": width, "z-index": 4});
    },
    stop: function(event, ui) {
      $(this).css({"position": "static", "width": "auto", "z-index": 0});
      $("#dragspot").before(this);
      $("#dragspot").css({"display": "none"});
      save_block_position(this);
    }
  });
  $(block).droppable({
    tolerance: "pointer",
    over: function(event, ui) {
      $("#dragspot").css({"display": "block", "height": $(ui.draggable).height()});
      $(this).before($("#dragspot"));
    },
    out: function(event, ui) {
      $($("#dragspot").parent()).append($("#dragspot"));
    }
  });
  $(block).draggable("disable");
}

//Сохраняет позицию модуля в сетке
function save_block_position(block) {
  var block_col_id = $(block).parents("td.block_col").attr("id");
  var prev_block_id = $(block).prev().attr("id");
  var block_id = $(block).attr("id");
  var next_blocks = "";
  $.each ($(block).nextAll("div.block_container"), function(i, obj) {
    next_blocks += $(obj).attr("id") +"|";
  });
  $.post("/modules/set_position/", {block_col_id: block_col_id, next_blocks: next_blocks, block_id: block_id, prev_block_id: prev_block_id});
}

//Функция авторизации
function autorize() {
  $("#login_form_loading").css("display", "block");
  $("#login_form table.button").css("display", "none");
  $("#login_form_errors").text("");
  $.post("/login/autorize/", {login: $.trim($("#autorize_login").val()), pass: $.trim($("#autorize_pass").val())}, function(data) {
    if (!data) {
      document.location = "/";
    } else {
      $("#login_form_loading").css("display", "none");
      $("#login_form table.button").css("display", "");
      $("#login_form_errors").text(data);
    }
  });
}

//Функция регистрации
function register() {
  var login = $.trim($("#register_login").val());
  var pass = $.trim($("#register_pass").val());
  var repass = $.trim($("#register_repass").val());
  var email = $.trim($("#register_email").val());
  if (login.length < 3) { $("#register_form_errors").html("Слишком короткий логин!<br />Минимальная длина - 3 символа."); return; }
  if (pass.length < 6) { $("#register_form_errors").html("Слишком короткий пароль!<br />Минимальная длина - 6 символов."); return; }
  if (pass != repass) { $("#register_form_errors").html("Пароль не совпадает с повтором!"); return; }
  if (!email.length) { $("#register_form_errors").html("Не указан e-mail!"); return; }
  
  $("#register_form_loading").css("display", "block");
  $("#register_form table.button").css("display", "none");
  $("#register_form_errors").text("");
  $.post("/login/register/", {login: login, pass: pass, email: email}, function(data) {
    if (!data) {
      document.location = "/";
    } else {
      $("#register_form_loading").css("display", "none");
      $("#register_form table.button").css("display", "");
      $("#register_form_errors").text(data);
    }
  });
}

//Обновляет контейнер с настройками видимости модулей
function reload_sett_checkboxes(without_loading) {
  if (!without_loading) {
    $("#struct_settings_block div").remove();
    $("#struct_settings_block td").html('<center><img src="/img/loading.gif" style="margin: 10px;" /></center>');
  }
  $.get("/modules/get_sett_checkboxes/", function(data) {
    $("#struct_settings_block td").html(data);
    if ($.cookie("struct_settings_block") == "1" && $("#struct_settings_block").css("display") == "none") {
      $("#struct_settings_block").slideDown();
    }
  });
}

//Обновляет набор тем
function reload_view_settings(page, reload_user_theme) {
  $("#view_themes_table").remove();
  $("#view_themes_container").html('<center><img src="/img/loading.gif" style="margin: 10px;" /></center>');
  $.get("/main/get_view_settings/"+ page +"/", function(data) {
    $("#view_themes_container").html(data);
    if (typeof(reload_user_theme) != "undefined" && reload_user_theme) {
      $.get("/main/get_user_theme_id/", function(data) { if (data) { set_theme("theme_"+ data); } });
    }
    if ($.cookie("view_settings_container") == "1" && $("#view_settings_container").css("display") == "none") {
      $("#view_settings_container").slideDown();
    }
  });
}

//Создает новый модуль
function add_module() {
  if ($.trim($("#add_modules_title").val()) == "") { $("#add_module_form_errors").text("Не указано название!"); return; }
  if ($.trim($("#add_modules_link").val()) == "") { $("#add_module_form_errors").text("Не указана ссылка!"); return; }
  $("#add_module_form_errors").text("");
  $("#add_module_form table.button").css("display", "none");
  $("#add_module_form_loading").css("display", "block");
  $.post("/modules/add/", {public_status: $("#add_modules_public_status").val(), title: $.trim($("#add_modules_title").val()), link: $.trim($("#add_modules_link").val()), content_type: $.trim($("#add_modules_content_type").val())}, function(data) {
    if (data) {
      $("#sheet").click();
      $("#add_module_form table.button").css("display", "");
      $("#add_module_form_loading").css("display", "none");
      load_block(data.id, data);
      reload_sett_checkboxes();
    }
  }, "json");
}

//Сохраняет изменения в модуле
function edit_module() {
  var block_id = $("#edit_module_id").val();
  var content_type = $("#edit_module_content_type").val();
  var title = $.trim($("#edit_module_title").val());
  var link = $.trim($("#edit_module_link").val());
  var public_status = $("#edit_module_public_status").val();
  if (title == "") { $("#edit_module_form_errors").text("Не указано название!"); return; }
  if (link == "") { $("#edit_module_form_errors").text("Не указана ссылка!"); return; }
  $("#edit_module_form_errors").text("");
  $("#edit_module_form table.button").css("display", "none");
  $("#edit_module_form_loading").css("display", "block");
  $.post("/modules/edit/", {block_id: block_id, title: title, link: link, content_type: content_type, public_status: public_status}, function(data) {
    $("#sheet").click();
    $("#edit_module_form table.button").css("display", "");
    $("#edit_module_form_loading").css("display", "none");
    $("#"+ block_id +" div.block_title div").text(title);
    reload_block(block_id);
    reload_sett_checkboxes();
  });
}

//Поиск
function search() {
  $.post("/main/search/", {q: $("#search_string").val(), id: $("#searcher").val()}, function(data) {
    document.location = data;
  });
}

//Сохраняет дефолтное значение модуля
function save_def_count() {
  var block_id = $("#used_block_id").val();
  var value = $("#block_settings_container select").val();
  hide_settings_block();
  $.post("/modules/save_def_count/", {block_id: block_id, value: value}, function(data) {
    if (data == "1") {
      reload_block(block_id);
    }
  });
}

//Скрывает все окна
function hide_all_windows() {
  hide_settings_block();
  $("#sheet").click();
}

//Создает новую тему
function create_theme(edit) {
  edit = (typeof(edit) == "undefined" ? 0 : $("#create_theme_table").attr("data-edit_theme"));
  var image = $("#create_theme_image_name").val();
  var align = $("#create_theme_align").val();
  var repeat = $("#create_theme_repeat").val();
  var fone = $("#create_theme_color_fone").val();
  var text_1 = $("#create_theme_color_text_1").val();
  var text_2 = $("#create_theme_color_text_2").val();
  var title = $("#create_theme_name").val();
  if (image == "") {
    $("#create_theme_error").text("Пожалуйста, загрузите изображение").css("display", "block");
  } else if (title == "") {
    $("#create_theme_error").text("Пожалуйста, укажите название").css("display", "block");
  } else {
    loading("show");
    $.post("/main/create_theme/", {edit: edit, image: image, align: align, repeat: repeat, fone: fone, text_1: text_1, text_2: text_2, title: title}, function(data) {
      if (!data) {
        $("#close_create_theme").click();
        reload_view_settings(1, edit);
      } else {
        $("#create_theme_error").text(data).css("display", "block");
      }
      loading("hide");
    });
  }
}

//Отображает индикатор загрузки
function loading(action) {
  switch (action) {
    case "show":
      $("#loading_sheet").css("display", "block");
    break;
    case "hide":
      $("#loading_sheet").css("display", "none");
    break;
  }
}

//Устанавливает выбранную тему
function set_theme(theme_id) {
  if (theme_id) {
    $.post("/main/set_theme/", {id: theme_id});
    var color_1 = $("#"+ theme_id).css("color");
    if (color_1 == "") { color_2 = "#333"};
    var color_2 = $("#"+ theme_id).attr("data-text-sub-color");
    if (color_2 == "#") { color_2 = "#375eb1"};
    $("#struct_logo_table").css({
      "background": $("#"+ theme_id).css("background").replace("thumb_", ""),
      "color": $("#"+ theme_id).css("color")
    });
    $("#struct_logo_table td.black_12, #struct_logo_table span.b_black_16").css({"color": color_1});
    $("#struct_logo_table span.b_blue_16").css({"color": color_2});
  } else {
    $.post("/main/set_theme/", {id: 1});
    $("#struct_logo_table").css({"background": "none", "color": "#333"});
    $("#struct_logo_table td.black_12, #struct_logo_table span.b_black_16").css({"color": "#333"});
    $("#struct_logo_table span.b_blue_16").css({"color": "#375eb1"});
  }
}

//Функция отменяет изменения в блоке "Создание оформления"
function clear_create_theme() {
  $("#create_theme_title_text").html('Создание оформления'); 
  $("#create_theme_button").css("display", "");
  $("#edit_theme_button").css("display", "none");
  $("#load_theme_image_error").text("").css("display", "none");
  $("#create_theme_image_name").val("");
  $("#create_theme_load_image").html("Обзор").css("background", "none");
  $("#create_theme_align").val("left");
  $("#create_theme_repeat").val("no-repeat");
  $("#create_theme_color_fone").val("").css("background-color", "#fff");
  $("#create_theme_color_text_1").val("").css("background-color", "#fff");
  $("#create_theme_color_text_2").val("").css("background-color", "#fff");
  $("#create_theme_name").val("");
}

//Сохраняет личные настройки пользователя
function save_user_settings() {
  var pub_filter = $("#user_settings_pub_filter").val();
  $.post("/main/save_user_settings/", {pub_filter: pub_filter}, function() {
    reload_modules();
    $("#sheet").click();
  });
}

//Обновляет чат
function reload_chat(first) {
  if ($("a.chat_users_messages_switch").length) {
    var block_id = $("a.chat_users_messages_switch").parent().parent().parent().attr("id");
    $.ajax({cache: false, dataType: "json", url: "http://profintel.ru/files/chat.php?block_id="+ block_id +"&user_id="+ user_id +"&first="+ first +"&callback=?", type: "GET",
      success: function(data) {
        if (typeof(data.content) == "undefined") {
          reload_chat();
          return;
        }
        var scroll_flag = false;
        if (Math.abs($("div.chat_window").scrollTop() - $("div.chat_messages").height() + $("div.chat_window").height()) < 6) {
          scroll_flag = true;
        }
        if ($("#"+ block_id).attr("data-minimized") == 1 && first != 1) {
          $("#"+ block_id +" div.block_title table").css("color", "b00");
        }
        $("div.chat_messages").html(data.content);
        $("div.chat_users_window").html(data.users);
        $("span.chat_users_count").html(data.users_count);
        $("input.chat_message_input").width($("div.chat_window").width() - $("input.chat_message_send").width() - 17);
        if (first == 1 || scroll_flag) {
          $("div.chat_window").scrollTop(9999);
        }
        reload_chat();
      },
      error: function() {
        alert("error");
        setTimeout("reload_chat()", 30000);
      }
    });
  }
}

//Отправка сообщения в чат
function say2chat(obj) {
  var message = $.trim($(obj).val());
  $(obj).val("");
  if (message.length) {
    $("div.chat_messages").append('<span class="gray_11"><span style="color: #69c;">'+ $("#logo_weather span.b_black_16").text() +'</span></span> <a href="#" class="b_blue_12_link" onClick="return say2user(this);">'+ login +'</a>: <b>'+ message +'</b><br />');
    $.post("/modules/say2chat/", {message: message, block_id: $(obj).parent().parent().parent().attr("id")});
    $("div.chat_window").scrollTop(9999);
  }
}

//Отправка сообщения в чат конкретному пользователю
function say2user(obj) {
  input = $("#"+ $(obj).parent().parent().parent().parent().attr("id") +" input.chat_message_input");
  $(input).focus();
  $(input).val("to "+ $(obj).text() +": ");
  return false;
}

//Инициализация переводчика
function translator_init() {
  if ($("#translator_text_from").width() <= 200) {
    $("#translator_text_from, #translator_text_to").css("width", $("#translator_text_from").parent().parent().width() - 30);
  }
}

//Меняет языки местами
function translator_exchange_langs() {
  var lang_from = $("#translator_lang_from").val();
  if (lang_from) {
    $("#translator_lang_from").val($("#translator_lang_to").val());
    $("#translator_lang_to").val(lang_from);
    $("#translator_button").click();
  }
}

//Выполняет перевод
function translator_go() {
  if ($("#translator_text_from").val()) {
    $("#translator_button").hide();
    $("#translator_loading").show();
    $.post("/modules/translate/", {lang_from: $("#translator_lang_from").val(), lang_to: $("#translator_lang_to").val(), text: $("#translator_text_from").val()}, function(data) {
      if (data.responseStatus == 200) {
        $("#translator_text_to").val(data.responseData.translatedText);
      } else {
        $("#translator_text_to").val("");
      }
      $("#translator_button").show();
      $("#translator_loading").hide();
    }, "json");
  }
}

//Фулл-скрин-функции для некоторых модулей
function fullscreen_block(name, block_id, full) {
  switch (name) {
    case "chat":
      if (full) {
        $("#"+ block_id +" input.chat_message_input").width($("#"+ block_id +" div.chat_window").width() - $("#"+ block_id +" input.chat_message_send").width() - 17);
        $("#"+ block_id +" div.chat_window").height($(window).height() - $("#"+ block_id +" input.chat_message_input").height() - $("#"+ block_id +" div.block_title").height() - $("#"+ block_id +" div.block_delete_edit").height() - $("#"+ block_id +" div.block_good_bad").height() - $("#chat_users_text").height() - 60);
      } else {
        $("#"+ block_id +" input.chat_message_input").width(0);
        $("#"+ block_id +" input.chat_message_input").width($("#"+ block_id +" div.chat_window").width() - $("#"+ block_id +" input.chat_message_send").width() - 17);
        $("#"+ block_id +" div.chat_window").height("300px");
      }
      $("div.chat_window").scrollTop(9999);
    break;
    case "translator":
      if (full) {
        $("#translator_text_from, #translator_text_to").css({
          "width": $("#translator_text_from").parent().parent().width() - 30,
          "height": ($(window).height() - $("#translator_control").height() - $("#"+ block_id +" div.block_title").height() - $("#"+ block_id +" div.block_delete_edit").height() - $("#"+ block_id +" div.block_good_bad").height() - 60) / 2
        });
      } else {
        $("#translator_text_from, #translator_text_to").css("width", 0);
        $("#translator_text_from, #translator_text_to").css({
          "width": $("#translator_text_from").parent().parent().width() - 30,
          "height": "100px"
        });
      }
    break;
  }
}

//Изменение рейтинга модуля
function add_module_rating(block_id, rating) {
  $("#"+ block_id +" div.block_good_bad").remove();
  $("#"+ block_id).attr("data-rated", "1");
  $.post("/modules/add_rating/", {block_id: block_id, rating: rating}, function() {
    reload_sett_checkboxes(1);
  });
}
