diff --git a/media/js/profile.js b/media/js/profile.js
index aea86e7cb69689c6e4f2817f50750fdd7d29128d..5845af5cd6ffcf92d8bbb7d644b4750a30d316bd 100644
--- a/media/js/profile.js
+++ b/media/js/profile.js
@@ -1,51 +1,29 @@
 $(function () {
-    var jProfiler = $('#profileInfo').first();
-    var isOpened = false;
-    var flag = false;
-    var jLogin = $('#login');
-    var jPass = $('#password');
-    var jError = $('.auth_error');
-    var jSignButton = $('#signin_b');
-    
-    // Показ профиля при нажатии
+    let $username = $('#username'),
 
-    $('#settingsButton').click(function () {
-        $.get(URLdir + "window/settings", function (data) {
-            wnd.open(JSON.parse(data));
-            onSettingsPopup();
-        });
-    });
+        $profileInfo = $('#profileInfo').first(),
+        $login = $('#login'),
+        $password = $('#password'),
 
-    $(document).click(function () {
-        if (flag === true) {
-            flag = false;
-        } else if (isOpened === true) {
-            jProfiler.slideUp(200);//css('display', 'none');
-            isOpened = false;
-        }
-    });
+        $error = $('.auth_error'),
+        $signInButton = $('#signin_b');
 
-    $(".profile_wrapper").click(function () {
-        flag = true;
-    });
 
-    $('#username').click(function () {
-        flag = true;
-        if (isOpened) {
-            jProfiler.slideUp(200);//css('display', 'none');
-            isOpened = false;
-        }
-        else {
-            jProfiler.slideDown(200);//css('display', 'block');
-            isOpened = true;
-        }
-    });
+    // Показ профиля при нажатии
+    $('#settingsButton').click(() =>
+        $.getJSON(URLdir + 'window/settings')
+            .done(data => { wnd.open(data); onSettingsPopup() }));
+
+    
+    let isUsernameLayer = node => (node == $username[0]) || $.contains($profileInfo[0], node);
+    
+    $(document).click(e => isUsernameLayer(e.target) || $profileInfo.slideUp(200));
+    $username.click(_ => $profileInfo.slideToggle(200));
 
 
     function closeSession() {
         $.post(URLdir + 'handler/Session/closeSession')
-            .done(_ => { $('.popup_overlay').show(); jLogin.focus() });
-    }
+            .done(_ => { $('.popup_overlay').show(); $login.focus() }) }
 
     function setSessionTimer(time) {
         let updateTime = () =>
@@ -58,28 +36,24 @@ $(function () {
     setSessionTimer(1);
 
 
-    Auth.onAllow = function() {
-        jSignButton.removeAttr('disabled');
-    };
-        
     // todo: animation
-    Auth.onDeprecate = function() {
-        jSignButton.attr('disabled', 'disabled');
-    };
-    
+    Auth.onAllow = () => $signInButton.turnOn();
+    Auth.onDeprecate = () => $signInButton.turnOff();
+
+
     function tryToAuthorize() {
-        var login = jLogin.val();
-        var pass = jPass.val();
+        var login = $login.val();
+        var pass = $password.val();
 
-        // check fields are empty 
+        // check fields are empty
         if (login.length == 0 || pass.length == 0) {
-            login.length ? jPass.focus() : jLogin.focus();
+            login.length ? $password.focus() : $login.focus();
             return;
         }
-        
+
         // send ajax request
         Auth.signIn(login, pass)
-            .fail(_ => jError.show())
+            .fail(_ => $error.show())
             .done(_ => {
                 // global var at base.twig
                 User.login == login
@@ -87,18 +61,18 @@ $(function () {
                     : window.location.replace(URLdir);
 
                 $('.popup_overlay').hide();
-                jError.hide();
-                jLogin.val('');
-                jPass.val('');
+                $error.hide();
+                $login.val('');
+                $password.val('');
             });
     }
-    
-    jLogin.add(jPass).keypress(function (event) {
+
+    $login.add($password).keypress(function (event) {
         if (event.keyCode == 13)
             tryToAuthorize();
-        else jError.fadeOut(600);
+        else $error.fadeOut(600);
     });
 
-    jSignButton.click(tryToAuthorize);
+    $signInButton.click(tryToAuthorize);
 
 });
diff --git a/media/js/semesterSwitcher.js b/media/js/semesterSwitcher.js
index 7088b29ee611ec647c4477dff0b5bdc421f8a5c8..7a59244aa8029e87cfb7203a6206c37e73a785d0 100644
--- a/media/js/semesterSwitcher.js
+++ b/media/js/semesterSwitcher.js
@@ -1,36 +1,15 @@
-$(function()
-{
-    var jSemester = $('.semesterSwitcher').first();
-    var isSOpened = false;
-    var sFlag = false;
+$(function () {
+    let $semesters = $('.semesterSwitcher').first(),
+        $switch = $('#changeSemester'),
+        $layer = $('.semesterLayer');
 
-    $(document).click(function() {
-        if (sFlag === true) {
-            sFlag = false;
-        } else if (isSOpened === true) {
-            jSemester.slideUp(200);//css('display', 'none');
-            isSOpened = false;
-        }
-    });
+    $(document).click(e => $.contains($layer[0], e.target) || $semesters.slideUp(200));
 
-    $('#changeSemester').click(function() {
-        sFlag = true;
-        if(isSOpened)
-        {
-            jSemester.slideUp(200);//css('display', 'none');
-            isSOpened = false;
-        }
-        else
-        {
-            jSemester.slideDown(200);//css('display', 'block');
-            isSOpened = true;
-        }
-    });
+    $switch.click(_ => $semesters.slideToggle(200));
 
-    $('.switchSemester').click(function(){
-        var ID = this.id.split('-');
-        $.post(URLdir + "handler/Settings/setSemesterID", {semesterID: ID[1]}, function(data){
-            window.location.replace(URLdir);
-        });
+    $('.switchSemester').click(e => {
+        $.post(URLdir + "handler/Settings/setSemesterID", {
+            id: e.target.id.split('-')[1]
+        }).done(_ => window.location.replace(URLdir));
     });
 });
\ No newline at end of file
diff --git a/media/less/common.less b/media/less/common.less
index 0eeeb2a60b69bf4a9d58c71644463ee1ea831739..adf41ce606838b7bebb1b6c8afe84e8684824c28 100644
--- a/media/less/common.less
+++ b/media/less/common.less
@@ -274,6 +274,11 @@ input[type="checkbox"] {
     padding-bottom: 10px;
 }
 
+#username {
+    cursor: pointer;
+    user-select: none;
+}
+
 // ---------------------------------------------------------------------------------------------------------------------
 // Main layer
 // ---------------------------------------------------------------------------------------------------------------------
diff --git a/~dev_rating/application/classes/Controller/Handler/Settings.php b/~dev_rating/application/classes/Controller/Handler/Settings.php
index e3d820673b345f0138af22dab6d194b213c02678..8a4124a8b3bf4f794a7fb014f98aa495402a3d01 100644
--- a/~dev_rating/application/classes/Controller/Handler/Settings.php
+++ b/~dev_rating/application/classes/Controller/Handler/Settings.php
@@ -81,11 +81,9 @@ class Controller_Handler_Settings extends Controller_Handler
     }
 
     public function action_setSemesterID() {
-        $this->post
-            ->rule('semesterID', 'not_empty')
-            ->rule('semesterID', 'digit');
-        if ($this->post->check()) {
-            $this->user->SemesterID = (int) $this->post['semesterID'];
-        }
+        $this->post->rule('id', 'not_empty')->rule('id', 'digit');
+
+        if ($this->post->check())
+            $this->user->SemesterID = (int) $_POST['id'];
     }
 }