diff --git a/~dev_rating/media/js/rating.js b/~dev_rating/media/js/rating.js
index b321185a929a3f435ad4529486024c071426356b..3f88220c95e75cc35618abc25106612bcfb1d156 100644
--- a/~dev_rating/media/js/rating.js
+++ b/~dev_rating/media/js/rating.js
@@ -1,31 +1,58 @@
 var $ = jQuery;
 
-$(function() {
-    // inititializations
-
-    var pageType = $("#pageType").val();
+$(function () {
+    // Секция инициализации
     var optionsViewData = {
-         'absence': {
-            sendingOption : 'absence',
-            messageOK : 'Неявка выставлена',
-            messageFail : 'Установка неявки не удалась'
+        'absence': {
+            sendingOption: 'absence',
+            messageOK: 'Неявка выставлена',
+            messageFail: 'Установка неявки не удалась'
         },
-         'absence_unset': {
-            sendingOption : null,
-            messageOK : 'Неявка отменена',
-            messageFail : 'Отмена неявки не удалась'
+        'absence_unset': {
+            sendingOption: null,
+            messageOK: 'Неявка отменена',
+            messageFail: 'Отмена неявки не удалась'
         },
-         'pass': {
-            sendingOption : 'pass',
-            messageOK : 'Автомат выставлен',
-            messageFail : 'Установка автомата не удалась'
+        'pass': {
+            sendingOption: 'pass',
+            messageOK: 'Автомат выставлен',
+            messageFail: 'Установка автомата не удалась'
         },
-         'pass_unset': {
-            sendingOption : null,
-            messageOK : 'Автомат отменен',
-            messageFail : 'Отмена автомата не удалась'
+        'pass_unset': {
+            sendingOption: null,
+            messageOK: 'Автомат отменен',
+            messageFail: 'Отмена автомата не удалась'
         }
     };
+    var json_settings = $.parseJSON($("#hidden_div").html());
+    var pageType = $("#pageType").val();
+    var cancelFlag = false;
+    var g_col;
+    var g_row;
+    var g_isFocusCell = false; // Стоит фокус на ячейки или нет
+    var g_oldRateCell = null;
+    var g_submoduleID = null;
+    var g_studentID = null;
+    var g_submoduleTitle = "";
+    var g_submoduleMaxRate = 0;
+    var g_stdName = "";
+    var jTdInfo_wrap = $("#tdInfo_wrap");
+    var jTdInfo = jTdInfo_wrap.children('#tdInfo');
+    var g_URL = (window.location.href).split("/");
+    var g_disciplineID = g_URL[g_URL.length - 1];
+
+    // on page loaded
+    // Настройки дисциплины:
+    // + ID - id дисциплины
+    // + studyGroupID_Filter - studyGroupID для фильтра (Эффект памяти)
+
+    controlVisualization();
+    $("div.main_content").ready(AdjustTable);
+    $(window).resize(AdjustTable);
+
+    $("#hidden_div").remove();
+    filterGroups(json_settings.GroupID_Filter);
+    $(".groupSelector [value='" + json_settings.GroupID_Filter + "']").attr("selected", "selected");
 
     function AdjustTable() {
         var jWrap = $('div.main_layer');
@@ -45,7 +72,7 @@ $(function() {
 
     function controlRowVisualization(jRow) {
 
-        if (pageType !== "exam") {
+        if ((pageType !== "exam") || (json_settings.ExamType !== "exam")) {
             return;
         }
 
@@ -84,12 +111,13 @@ $(function() {
                 $(this).attr("disabled", true);
             }
 
+            // TODO: условия этого и предыдущего if вынести в отдельную функцию, проверяющую допустимость
             if (($(this)[0].checked) || autopass || otherDisabled) { // автомат, неявка или сдал до этого
                 neighborExam.children().attr("disabled", true);
             } else {
-                if (firstInARow && (semesterRate < 38)) { // задолженник
-                    neighborExam.children().attr("disabled", true);
-                } else if (semesterRate + extra < 38) { // задолженник до сих пор
+                if ((firstInARow && (semesterRate < 38)) || // задолженник
+                    (semesterRate + extra < 38))  // задолженник до сих пор
+                {
                     neighborExam.children().attr("disabled", true);
                 } else {
                     neighborExam.children().removeAttr("disabled");
@@ -112,35 +140,6 @@ $(function() {
             });
     }
 
-    // on page loaded
-    controlVisualization();
-    $("div.main_content").ready(AdjustTable);
-    $(window).resize(AdjustTable);
-
-    var cancelFlag = false;
-    var g_col;
-    var g_row;
-    var g_isFocusCell = false; // Стоит фокус на ячейки или нет
-    var g_oldRateCell = null;
-    var g_submoduleID = null;
-    var g_studentID = null;
-    var g_submoduleTitle = "";
-    var g_submoduleMaxRate = 0;
-    var g_stdName = "";
-    var jTdInfo_wrap = $("#tdInfo_wrap");
-    var jTdInfo = jTdInfo_wrap.children('#tdInfo');
-
-    var g_URL = (window.location.href).split("/");
-    var g_disciplineID = g_URL[g_URL.length - 1];
-
-    // Настройки дисциплины:
-    // + ID - id дисциплины
-    // + studyGroupID_Filter - studyGroupID для фильтра (Эффект памяти)
-    var json_settings = $.parseJSON($("#hidden_div").html());
-    $("#hidden_div").remove();
-    filterGroups(json_settings.GroupID_Filter);
-    $(".groupSelector [value='" + json_settings.GroupID_Filter + "']").attr("selected", "selected");
-
     // Скрываем все остальные группы
     // 0 - показать все
     function filterGroups(groupID) {
@@ -285,7 +284,7 @@ $(function() {
             rateResult += parseInt(jThis.siblings(".semesterRateResultCell").text());
             rateResult += parseInt(jThis.siblings(".bonus").text());
 
-                jThis.siblings(".additionalCell").each(function () {
+            jThis.siblings(".additionalCell").each(function () {
                 if ($(this).children("input").val() !== "")
                     rateResult += parseInt($(this).children("input").val());
             });
@@ -493,8 +492,8 @@ $(function() {
         if (!checked)
             option += '_unset';
         var thisTd = $(this).parent();
-        g_col = thisTd.attr('id').substr(8,1); // absence_C
-        g_row = thisTd.attr('id').substr(10,1); // absence_C_R
+        g_col = thisTd.attr('id').substr(8, 1); // absence_C
+        g_row = thisTd.attr('id').substr(10, 1); // absence_C_R
 
         // call
         TdInfo(thisTd);
@@ -514,8 +513,8 @@ $(function() {
         if (!checked)
             option += '_unset';
         var thisTd = $(this).parent();
-        g_col = thisTd.attr('id').substr(9,1); // autopass_C
-        g_row = thisTd.attr('id').substr(11,1); // autopass_C_R
+        g_col = thisTd.attr('id').substr(9, 1); // autopass_C
+        g_row = thisTd.attr('id').substr(11, 1); // autopass_C_R
 
         // call
         TdInfo(thisTd);
@@ -536,7 +535,7 @@ $(function() {
             type: "POST",
             url: URLdir + "handler/rating/SetExamPeriodOption",
             data: "studentID=" + g_studentID + "&submoduleID=" + g_submoduleID +
-                    "&option=" + optionsViewData[option].sendingOption,
+            "&option=" + optionsViewData[option].sendingOption,
             complete: function (jqXHR, textStatus) {
                 statusCode = jqXHR.status;
                 switch (jqXHR.status) {
@@ -562,20 +561,19 @@ $(function() {
     }
 
     // Фильтр по группе
-    $(".groupSelector").change(function() {
+    $(".groupSelector").change(function () {
         var group = $(this).val();
-        if (group >= 0)
-        {
+        if (group >= 0) {
             filterGroups(group);
             $.post(
                 URLdir + "handler/rating/SelectGroup",
                 {
                     "disciplineID": g_disciplineID,
-                    "groupSelected":  group
+                    "groupSelected": group
                 },
-                function(data){
+                function (data) {
                     data = $.parseJSON(data);
-                    if(data.success === true) {
+                    if (data.success === true) {
 
                     }
                 }
@@ -584,11 +582,10 @@ $(function() {
     });
 
     // Скачать таблицу оценивания в формате excel // depricated
-    $(".downloadExcel").click(function(){
+    $(".downloadExcel").click(function () {
         $.fileDownload(URLdir + 'handler/FileCreator/GenerateExcelRatingTable', {
             httpMethod: "POST",
-            data:
-            {
+            data: {
                 'disciplineID': g_disciplineID
             },
             successCallback: function () {
@@ -601,15 +598,14 @@ $(function() {
     });
 
     // Ведомость в формате excel
-    $('body').on('click', '.downloadExcelStatement', function(){
+    $('body').on('click', '.downloadExcelStatement', function () {
 
         var groupID = parseInt($(this).attr("id").substr(6))
-        var jStageSelector = $("#stageSelector_"+groupID);
+        var jStageSelector = $("#stageSelector_" + groupID);
 
         $.fileDownload(URLdir + 'handler/FileCreator/GenerateFinalForm', {
             httpMethod: "POST",
-            data:
-            {
+            data: {
                 "disciplineID": g_disciplineID,
                 "groupID": groupID,
                 "stage": parseInt(jStageSelector.val())