diff --git a/application/bootstrap.php b/application/bootstrap.php
index e28950c5366681808e8611e14a468ef1f9db8ab2..bc29727290c72d5f9e439ac25a5738e1ff13975c 100644
--- a/application/bootstrap.php
+++ b/application/bootstrap.php
@@ -242,6 +242,13 @@ Route::set('stdnt:profile', 'student/profile')
         
 /* --------------- Преподаватели ---------------- */
 
+Route::set('map:create', 'map/create')
+        ->defaults(array(
+            'directory' => 'teacher',
+            'controller' => 'map',
+			'action' => 'create'
+        ));
+
 Route::set('map:edit', 'map/<id>', array('id' => '[0-9]+'))
         ->defaults(array(
             'directory' => 'teacher',
diff --git a/application/classes/Controller/Handler/Map.php b/application/classes/Controller/Handler/Map.php
index 8b7af4c5ba41f6e0bd608afa7e16bc654854dff0..ac6fc62f6373e257f1de8147e08c8e29952dcec5 100644
--- a/application/classes/Controller/Handler/Map.php
+++ b/application/classes/Controller/Handler/Map.php
@@ -13,6 +13,37 @@ class Controller_Handler_Map extends Controller_Handler {
 			return $result[0]['Num'];
 		}
 		
+		// Добавление преподавателем дисциплины
+		public function action_AddDiscipline() {
+			$data['success'] = false;
+            $this->post -> rule('Grade', 'not_empty')
+                        -> rule('Grade', 'digit')
+						-> rule('SubjectID', 'not_empty')
+                        -> rule('SubjectID', 'digit')
+						-> rule('ExamType', 'not_empty')
+						-> rule('LectionCount', 'not_empty')
+                        -> rule('LectionCount', 'digit')
+						-> rule('PracticeCount', 'not_empty')
+                        -> rule('PracticeCount', 'digit')
+						-> rule('DepartmentID', 'not_empty')
+                        -> rule('DepartmentID', 'digit');
+            if($this->post->check()) {
+					$result = $this->model->AddDiscipline(
+						$this->user['TeacherID'],
+						$this->post->offsetGet('Grade'),
+						$this->post->offsetGet('SubjectID'),
+						$this->post->offsetGet('ExamType'),
+						$this->post->offsetGet('LectionCount'),
+						$this->post->offsetGet('PracticeCount'),
+						$this->post->offsetGet('DepartmentID')
+					);
+					$data['DisciplineID'] = $result[0]['Num'];
+					if ($data['DisciplineID'] > 0)
+						$data['success'] = true;
+			}
+			$this->response->body(json_encode($data));
+		}
+		
 		// Изменения базовых параметров дисциплины
 		public function action_ChangeDiscipline() {
 			$data['success'] = false;
@@ -178,8 +209,11 @@ class Controller_Handler_Map extends Controller_Handler {
 			$data['success'] = false;
             $this->post -> rule('ModuleID', 'not_empty')
                         -> rule('ModuleID', 'digit')
-						-> rule('SubmodulesID', 'not_empty');
+						-> rule('SubmodulesID', 'not_empty')
+						-> rule('CurrentModuleOrder', 'not_empty')
+                        -> rule('CurrentModuleOrder', 'digit');
             if($this->post->check()) {
+				$ChangeOrderModulesID = json_decode($this->post->offsetGet('ChangeOrderModulesID'));
 				$Submodules = json_decode($this->post->offsetGet('SubmodulesID'));
 				foreach ($Submodules as &$SubmoduleID) {
 					$this->privateDeleteSubmodule($SubmoduleID);
@@ -188,8 +222,20 @@ class Controller_Handler_Map extends Controller_Handler {
 					$this->user['TeacherID'],
 					$this->post->offsetGet('ModuleID')
 				);
-				if ($result[0]['Num'] == 0)
+				if ($result[0]['Num'] == 0) {
+					if (count($ChangeOrderModulesID) > 0) {
+						$NewOrder = $this->post->offsetGet('CurrentModuleOrder');
+						foreach($ChangeOrderModulesID as $ModuleID) {
+							$this->model->ChangeModuleOrder(
+								$this->user['TeacherID'],
+								$ModuleID,
+								$NewOrder
+							);
+							$NewOrder++;
+						}
+					}
 					$data['success'] = true;
+				}
             }
             $this->response->body(json_encode($data));
         }
@@ -198,12 +244,27 @@ class Controller_Handler_Map extends Controller_Handler {
 		public function action_DeleteSubmodule() {
 			$data['success'] = false;
             $this->post -> rule('SubmoduleID', 'not_empty')
-                        -> rule('SubmoduleID', 'digit');
+                        -> rule('SubmoduleID', 'digit')
+						-> rule('CurrentSubmoduleOrder', 'not_empty')
+                        -> rule('CurrentSubmoduleOrder', 'digit');
             if($this->post->check()) {
+				$ChangeOrderSubmodulesID = json_decode($this->post->offsetGet('ChangeOrderSubmodulesID'));
                 $result = $this->privateDeleteSubmodule($this->post->offsetGet('SubmoduleID'));
-				if ($result == 0)
+				if ($result == 0) {
+					if (count($ChangeOrderSubmodulesID) > 0) {
+						$NewOrder = $this->post->offsetGet('CurrentSubmoduleOrder');
+						foreach($ChangeOrderSubmodulesID as $SubmoduleID) {
+							$this->model->ChangeSubmoduleOrder(
+								$this->user['TeacherID'],
+								$SubmoduleID,
+								$NewOrder
+							);
+							$NewOrder++;
+						}
+					}
 					$data['success'] = true;
-            }
+				}
+			}
 			$this->response->body(json_encode($data));
         }
 		
diff --git a/application/classes/Controller/Admin/Index.php b/application/classes/Controller/Teacher/Admin/Index.php
similarity index 100%
rename from application/classes/Controller/Admin/Index.php
rename to application/classes/Controller/Teacher/Admin/Index.php
diff --git a/application/classes/Controller/Teacher/Map.php b/application/classes/Controller/Teacher/Map.php
index 3fc87a5795191cdcebe7ef4d57fc352162943f13..89d4e06ac55510fbf6558a09f31f754e9c1cae9c 100644
--- a/application/classes/Controller/Teacher/Map.php
+++ b/application/classes/Controller/Teacher/Map.php
@@ -2,6 +2,37 @@
 
 class Controller_Teacher_Map extends Controller_UserEnvi {
     
+	private $GradesList = array(
+			1 => array(
+				'ID' => '1',
+				'Title' =>'РљСѓСЂСЃ 1'
+			),
+			2 => array(
+				'ID' => '2',
+				'Title' =>'РљСѓСЂСЃ 2'
+			),
+			3 => array(
+				'ID' => '3',
+				'Title' =>'РљСѓСЂСЃ 3'
+			),
+			4 => array(
+				'ID' => '4',
+				'Title' =>'РљСѓСЂСЃ 4'
+			),
+			5 => array(
+				'ID' => '5',
+				'Title' =>'РљСѓСЂСЃ 6'
+			),
+			6 => array(
+				'ID' => '6',
+				'Title' =>'Магистратура 1'
+			),
+			7=> array(
+				'ID' => '7',
+				'Title' =>'Магистратура 2'
+			)
+		);
+	
     public function action_show()
     {
         $twig = Twig::factory('teacher/map/show');
@@ -11,7 +42,7 @@ class Controller_Teacher_Map extends Controller_UserEnvi {
         
         if($map->count() == 0)
             throw HTTP_Exception::factory(404, "Учебная карта дисциплины с ID $id не найдена!");
-        
+		
         $twig->User = $this->UserInfo;
         $twig->Map = $this->getMapInfo($map);
         $twig->Subject = $this->getSubjectInfo($db, $id);
@@ -20,9 +51,14 @@ class Controller_Teacher_Map extends Controller_UserEnvi {
     
     public function action_create()
     {
-        $twig = Twig::factory('teacher/map/add');
+        $twig = Twig::factory('teacher/map/create');
+		$db = new Model_Teacher_Map;
         $twig->User = $this->UserInfo;
-        
+        $twig->SubjectsList = $this->GetSubjectsList($db);
+		$twig->GradesList = $this->GradesList;
+		
+		echo Debug::vars($this->UserInfo);
+		
         $this->response->body($twig);
     }
     
@@ -36,54 +72,8 @@ class Controller_Teacher_Map extends Controller_UserEnvi {
 		$twig->User = $this->UserInfo;
 		$twig->Map = $this->getMapInfo($map);
 		$twig->Discipline = $this->getSubjectInfo($db, $id);
-		$twig->SubjectsList = array(
-			1 => array(
-				'ID' => '1',
-				'Title' =>'Математический анализ'
-			),
-			2 => array(
-				'ID' => '2',
-				'Title' =>'Дифференциальные уравнения'
-			),
-			3 => array(
-				'ID' => '3',
-				'Title' =>'Операционные системы'
-			),
-			4 => array(
-				'ID' => '4',
-				'Title' =>'Топология'
-			)
-		);
-		$twig->GradesList = array(
-			1 => array(
-				'ID' => '1',
-				'Title' =>'РљСѓСЂСЃ 1'
-			),
-			2 => array(
-				'ID' => '2',
-				'Title' =>'РљСѓСЂСЃ 2'
-			),
-			3 => array(
-				'ID' => '3',
-				'Title' =>'РљСѓСЂСЃ 3'
-			),
-			4 => array(
-				'ID' => '4',
-				'Title' =>'РљСѓСЂСЃ 4'
-			),
-			5 => array(
-				'ID' => '5',
-				'Title' =>'РљСѓСЂСЃ 6'
-			),
-			6 => array(
-				'ID' => '6',
-				'Title' =>'Магистратура 1'
-			),
-			7=> array(
-				'ID' => '7',
-				'Title' =>'Магистратура 2'
-			)
-		);
+		$twig->SubjectsList = $this->GetSubjectsList($db);
+		$twig->GradesList = $this->GradesList;
 			
 		$this->response->body($twig);
     }
@@ -168,5 +158,21 @@ class Controller_Teacher_Map extends Controller_UserEnvi {
 		
 		return $subject;
     }
+	
+    private function GetSubjectsList($db)
+    {
+        $list = $db->GetSubjectList();
+		
+		$SubjectsList = array(); $i = 0;
+		
+		foreach ($list as $row) {
+			$i++;
+			$SubjectsList[$i]['ID'] = $row['ID'];
+			$SubjectsList[$i]['Title'] = $row['Name'];
+			$SubjectsList[$i]['Abbr'] = $row['Abbr'];
+		}
+		
+		return $SubjectsList;
+	}
 }
             
\ No newline at end of file
diff --git a/application/classes/Model/Teacher/Map.php b/application/classes/Model/Teacher/Map.php
index fdcc2d6d0c4ab8330fe2325d118da42416b17a0e..ca0b6f89c0b72976cb7e6d8b0bbb3956dcd0b81f 100644
--- a/application/classes/Model/Teacher/Map.php
+++ b/application/classes/Model/Teacher/Map.php
@@ -92,9 +92,9 @@ class Model_Teacher_Map extends Model
         return DB::query(Database::SELECT, $sql)->execute();
     }
 	
-    public function AddDiscipline($teacherID, $Grade, $SubjectID, $ExamType, $LectionCount, $PracticeCount)
+    public function AddDiscipline($teacherID, $Grade, $SubjectID, $ExamType, $LectionCount, $PracticeCount, $DepartmentID)
     {
-        $sql = "SELECT `AddDiscipline`('$teacherID', '$Grade', '$SubjectID', '$ExamType', '$LectionCount', '$PracticeCount') AS `Num`;";
+        $sql = "SELECT `AddDiscipline`('$teacherID', '$Grade', '$SubjectID', '$ExamType', '$LectionCount', '$PracticeCount', '$DepartmentID') AS `Num`;";
         return DB::query(Database::SELECT, $sql)->execute();
     }
 	
@@ -103,4 +103,22 @@ class Model_Teacher_Map extends Model
         $sql = "SELECT `ChangeDiscipline`('$teacherID', '$DisciplineID', '$ExamType', '$LectionCount', '$PracticeCount', '$Grade', '$SubjectID') AS `Num`;";
         return DB::query(Database::SELECT, $sql)->execute();
     }
+	
+    public function GetSubjectList()
+    {
+        $sql = "CALL `GetSubjectList`(); ";
+        return DB::query(Database::SELECT, $sql)->execute();
+    }
+	
+    public function ChangeModuleOrder($teacherID, $moduleID, $OrderNum)
+    {
+		$sql = "SELECT `ChangeModuleOrder`('$teacherID', '$moduleID', '$OrderNum') AS `Num`;";
+		return DB::query(Database::SELECT, $sql)->execute();
+    }
+	
+    public function ChangeSubmoduleOrder($teacherID, $SubmoduleID, $OrderNum)
+    {
+		$sql = "SELECT `ChangeSubmoduleOrder`('$teacherID', '$SubmoduleID', '$OrderNum') AS `Num`;";
+		return DB::query(Database::SELECT, $sql)->execute();
+    }
 }
diff --git a/application/views/base.twig b/application/views/base.twig
index 20c129b919fa24a3f7ea62fb4e086b929a4de92f..5991fbb6eee73dee7bbb1e699ebbd0986243476d 100644
--- a/application/views/base.twig
+++ b/application/views/base.twig
@@ -1,3 +1,4 @@
+<!DOCTYPE html>
 <html>
 <head>
 	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
@@ -7,7 +8,7 @@
 	{% block media %}{% endblock %}
 </head> 
 <body>
-<div id="wrap">
+<div id="wrap" class="page">
 
 	<div class="header_wrapper">
 		<div class="header">
diff --git a/application/views/settings.twig b/application/views/settings.twig
index 4e338e5f6d08dc1acb542c4d16ff57be45e1c6d8..8a90fcf93bf162b1ec181a37209d78470f1fc285 100644
--- a/application/views/settings.twig
+++ b/application/views/settings.twig
@@ -10,7 +10,7 @@
 {% block main_content %}
 <div class="pageProfileSettings">
 	<div class="settingsSection">
-		<p>Логин может состоять из латинских букв, цифр и символа _</p>
+		<p class="help">Логин может состоять из латинских букв, цифр и символа _</p>
 		<div class="itemBlock">
 			<div class="title">Логин:</div>
 			<div class="field"><input type="text" class="inputLogin inputText" value="{{ User.Login }}"></div>
@@ -35,7 +35,7 @@
 			<div class="title">Старый пароль:</div>
 			<div class="field"><input type="text" class="inputCurrentPass inputText" value=""></div>
 		</div>
-		<p>Пароль должен состоять из 5 и более символов</p>
+		<p class="help">Пароль должен состоять из 5 и более символов</p>
 		<div class="itemBlock">
 			<div class="title">Новый пароль:</div>
 			<div class="field"><input type="text" class="inputNewPass inputText" value=""></div>
diff --git a/application/views/teacher/index.twig b/application/views/teacher/index.twig
index ff434f32a3bd1491fcc99019184af8b523efb9c7..bdf702b7e0cc2df3b435ca5b98603475ef52b114 100644
--- a/application/views/teacher/index.twig
+++ b/application/views/teacher/index.twig
@@ -67,7 +67,8 @@
         {% for subject in content.Subjects %}
             {{ idx.outputSubject(subject, HTML) }}
         {% else %}
-            Похоже, что Вы не ведете ни одного предмета!
+            <p class="notification">Похоже, что Вы не ведете ни одного предмета!</p>
         {% endfor %}
+		{{ HTML.anchor('map/create', 'Добавить УКД', {'title': 'Перейти к добавлению'})|raw }}
     </div>
 {% endblock %}
\ No newline at end of file
diff --git a/application/views/teacher/map/create.twig b/application/views/teacher/map/create.twig
new file mode 100644
index 0000000000000000000000000000000000000000..d954d89f843c29fbe22f679985b99056162559c8
--- /dev/null
+++ b/application/views/teacher/map/create.twig
@@ -0,0 +1,55 @@
+{% extends 'base' %} 
+
+{% block title %}Конструктор УКД{% endblock %} {# head -> title #}
+{% block media %} {# head -> css, js #}
+	{{ HTML.script('media/js/functions.js')|raw }}
+
+	{{ HTML.style('media/css/construct.css')|raw }}
+	{{ HTML.script('media/js/construct/create.js')|raw }}
+{% endblock %}
+
+{% block main_top_title %}Добавление УКД{% endblock %}
+{% block main_content %}
+	<div class="guide">
+		<p>Обратите внимание, что добавление Учебной Карты Дисциплины (далее УКД) происходит в 3 этапа:</p>
+		<ol>
+		 <li>Добавление базовых параметров дисциплины: выбор предмета, формы контроля и др.;</li>
+		 <li>Привязка групп и студентов к данной УКД;</li>
+		 <li>Создание структуры УКД (Модули и мероприятия).</li>
+		</ol>
+	</div>
+	
+	<div class="discipline">
+		<div class="section">
+			<select class="SelectSubject">
+				<option value="0">Выберите предмет:</option>
+				{% for Subject in SubjectsList %}
+					<option value="{{ Subject.ID }}">{{ Subject.Title }}</option>
+				{% endfor %}
+			</select>
+		</div>
+		<div class="section">
+			<select class="SelectDepartment">
+				<option value="{{ User.DepartmentID }}">{{ User.DepartmentName }}</option>
+			</select>
+			<select class="SelectGrade">
+				<option value="0">Выберите курс:</option>
+				{% for Grade in GradesList %}
+					<option value="{{ Grade.ID }}" >{{ Grade.Title }}</option>
+				{% endfor %}
+			</select>
+		</div>
+		<div class="section">
+			Контроль: 
+			<input name="ExamType" type="radio" value="exam"> Экзамен
+			<input name="ExamType" type="radio" value="credit"> Зачет
+		</div>
+		<div class="section">
+			<div class="item title">Лекционных часов:</div>
+			<div class="item"><input class="InputLectionCount" style="width: 50px;" value="0"></div>
+			<div class="item title">Практических часов:</div>
+			<div class="item"><input class="InputPracticeCount" style="width: 50px;" value="0"></div>
+		</div>
+		<button class="AddDiscipline">Добавить</button>
+	</div>
+{% endblock %}
diff --git a/application/views/teacher/map/edit.twig b/application/views/teacher/map/edit.twig
index 289215a2e27bae0a063b859144f9676488067255..272537559e42742917df0bf9f141dd55136776ee 100644
--- a/application/views/teacher/map/edit.twig
+++ b/application/views/teacher/map/edit.twig
@@ -2,14 +2,22 @@
 
 {% block title %}Конструктор УКД{% endblock %} {# head -> title #}
 {% block media %} {# head -> css, js #}
+	{{ HTML.script('media/js/functions.js')|raw }}
+
+	{{ HTML.style('media/js/wnd/wnd.css')|raw }}
+	{{ HTML.script('media/js/wnd/wnd.js')|raw }}
+	
 	{{ HTML.style('media/css/construct.css')|raw }}
 	{{ HTML.script('media/js/construct/edit.js')|raw }}
+	{{ HTML.script('media/js/construct/attach.js')|raw }}
 {% endblock %}
 
 {% block main_top_title %}Редактирование УКД{% endblock %}
 {% block main_content %}
 	<div class="discipline">
 		<p class="top_center_info">Учебная карта дисциплины на 1 семестр 2014 года</p>
+		<span class="AttachGroups">Прикрепить группы</span>
+		<span class="AttachStudents">Прикрепить студентов</span>
 		<div class="section">
 			<select class="SelectSubject">
 				<option value="0">Выберите предмет:</option>
@@ -19,10 +27,10 @@
 			</select>
 		</div>
 		<div class="section">
-			<select class="department">
-				<option value="0">Выберите кафедру:</option>
+			<select class="SelectDepartment">
+				<option value="{{ User.DepartmentID }}">{{ User.DepartmentName }}</option>
 			</select>
-			<select class="Grade">
+			<select class="SelectGrade">
 				<option value="0">Выберите курс:</option>
 				{% for Grade in GradesList %}
 					<option value="{{ Grade.ID }}" {% if Grade.ID == Discipline.GradeID %}selected{% endif %}>{{ Grade.Title }}</option>
@@ -36,9 +44,9 @@
 		</div>
 		<div class="section">
 			<div class="item title">Лекционных часов:</div>
-			<div class="item"><input class="inputLectionCount" style="width: 50px;" value="{{ Discipline.LectureHours }}"></div>
+			<div class="item"><input class="InputLectionCount" style="width: 50px;" value="{{ Discipline.LectureHours }}"></div>
 			<div class="item title">Практических часов:</div>
-			<div class="item"><input class="inputPracticeCount" style="width: 50px;" value="{{ Discipline.PracticeHours }}"></div>
+			<div class="item"><input class="InputPracticeCount" style="width: 50px;" value="{{ Discipline.PracticeHours }}"></div>
 		</div>
 		<button class="ChangeDiscipline">Сохранить</button>
 	</div>
@@ -59,10 +67,10 @@
 					<div class="currentControl">{{ Map[i].CurrentControl }}</div>
 					<div class="landmarkControl">{{ Map[i].LandmarkControl }}</div>
 					<div class="actions">
-						<div class="deleteModule delete"></div>
-						<div class="downModule down"></div>
-						<div class="upModule up"></div>
-						<div class="addSubModule add"></div>
+						<div class="deleteModule icon delete"></div>
+						<div class="downModule icon down"></div>
+						<div class="upModule icon up"></div>
+						<div class="addSubModule icon add"></div>
 					</div>
 				</div>
 				<div class="subModules">
@@ -74,9 +82,9 @@
 						<div class="currentControl"><input type="text" class="inputCredit inputCurrentControl" value="{% if Map[i][j].SubmoduleControl == 'CurrentControl' %}{{ Map[i][j].MaxRate }}{% else %}0{% endif %}"></div>
 						<div class="landmarkControl"><input type="text" class="inputCredit inputLandmarkControl" value="{% if Map[i][j].SubmoduleControl == 'LandmarkControl' %}{{ Map[i][j].MaxRate }}{% else %}0{% endif %}"></div>
 						<div class="actions">
-							<div class="deleteSubModule delete"></div>
-							<div class="downSubModule down"></div>
-							<div class="upSubModule up"></div>
+							<div class="deleteSubModule icon delete"></div>
+							<div class="downSubModule icon down"></div>
+							<div class="upSubModule icon up"></div>
 						</div>
 					</div>
 				{% endfor %}
diff --git a/application/views/teacher/setRate.twig b/application/views/teacher/setRate.twig
index ffa83ca23ec3a17befd7bb3d2d30cab4f3a2ffe8..59663696e7de5f2942a213802ff08356ad04d651 100644
--- a/application/views/teacher/setRate.twig
+++ b/application/views/teacher/setRate.twig
@@ -2,6 +2,8 @@
 
 {% block title %}Выставление баллов{% endblock %} {# head -> title #}
 {% block media %} {# head -> css, js #}
+	{{ HTML.script('media/js/functions.js')|raw }}
+
 	{{ HTML.style('media/css/setRate.css')|raw }}
 	{{ HTML.script('media/js/setRate.js')|raw }}
 {% endblock %}
diff --git a/db/DatabaseSample.sql b/db/DatabaseSample.sql
index ca94934dedcac883c7827256e194c5a6aa508c0e..b140de937b225eac028138571961ddb2a822c023 100644
--- a/db/DatabaseSample.sql
+++ b/db/DatabaseSample.sql
@@ -54,8 +54,8 @@ INSERT INTO `accounts` (`ID`, `Login`, `Password`, `E-Mail`, `Type`, `Activation
 (7, NULL, NULL, NULL, 'teacher', 'code7', 1, NULL),
 (8, NULL, NULL, NULL, 'teacher', 'code8', 1, NULL),
 (9, NULL, NULL, NULL, 'student', 'code9', 1, NULL),
-(10, NULL, NULL, NULL, 'student', 'code10', 1, NULL),
-(11, NULL, NULL, NULL, 'student', 'code11', 1, NULL);
+(10, NULL, NULL, NULL, 'student', 'code10', 1, NULL);
+
 
 -- --------------------------------------------------------
 
@@ -368,8 +368,8 @@ CREATE TABLE IF NOT EXISTS `modules` (
 --
 
 INSERT INTO `modules` (`ID`, `Name`, `OrderNum`, `DisciplineID`) VALUES
-(3, 'Модуль11', 2, 1),
-(4, 'Модуль2', 1, 1),
+(3, 'Теория пределов', 2, 1),
+(4, 'Дифференцирование', 1, 1),
 (5, 'Модуль1', 1, 2),
 (6, 'Модуль1', 1, 3),
 (7, 'Модуль1', 1, 4),
@@ -507,12 +507,12 @@ CREATE TABLE IF NOT EXISTS `students` (
 --
 
 INSERT INTO `students` (`ID`, `StudyGroupID`, `AccountID`, `LastName`, `FirstName`, `SecondName`) VALUES
-(3, 1, 1, 'Student1', 'StudentFirst1', 'StudentLast1'),
-(4, 1, 2, 'Student2', 'StudentFirst3', NULL),
-(5, 2, 3, 'Student3', 'StudentFirst3', 'StudentLast3'),
-(6, 2, 4, 'Student4', 'StudentFirst4', NULL),
-(7, 1, 9, 'seg', 'aeg', 'seg'),
-(9, 3, 11, 'af', 'dt', 'fnd');
+(3, 1, 1, 'Сыроежкин', 'Сергей', 'Александрович'),
+(4, 1, 2, 'Селезнева', 'Алиса', 'Сергеевна'),
+(5, 2, 3, 'Камеррер', 'Максим', 'Владимирович'),
+(6, 2, 4, 'Пен', 'Питер', NULL),
+(7, 1, 9, 'Наина', 'Киевна', 'Горыныч'),
+(9, 3, 10, 'Бэггинс', 'Бильбо', NULL);
 
 -- --------------------------------------------------------
 
@@ -560,9 +560,9 @@ CREATE TABLE IF NOT EXISTS `subjects` (
 
 INSERT INTO `subjects` (`ID`, `Name`, `Abbr`) VALUES
 (1, 'Математический анализ', 'Матан'),
-(2, 'Дифференциальные уравнения', 'Дифф. ур-я'),
+(2, 'Конституционное право', 'КП'),
 (3, 'Операционные системы', 'ОС'),
-(4, 'Топология', NULL);
+(4, 'История', 'История');
 
 -- --------------------------------------------------------
 
@@ -588,13 +588,13 @@ CREATE TABLE IF NOT EXISTS `submodules` (
 --
 
 INSERT INTO `submodules` (`ID`, `ModuleID`, `MaxRate`, `OrderNum`, `Name`, `Description`, `Type`) VALUES
-(5, 3, 12, 2, 'РєСЂ1', NULL, 'LandmarkControl'),
-(6, 3, 20, 1, 'РљРѕР».', '', 'CurrentControl'),
+(5, 3, 12, 2, 'Контрольная работа', NULL, 'LandmarkControl'),
+(6, 3, 20, 1, 'Коллоквиум', '', 'CurrentControl'),
 (7, 4, 20, 1, 'РґР·', '', 'CurrentControl'),
 (9, 6, 20, 1, 'РґР·', '', 'CurrentControl'),
-(10, 6, 10, 2, 'РєРѕ', '', 'CurrentControl'),
-(11, 7, 20, 1, 'РљРѕР»', '', 'CurrentControl'),
-(12, 7, 15, 2, 'Р­РєР·', '', 'CurrentControl');
+(10, 6, 10, 2, 'Тест', '', 'CurrentControl'),
+(11, 7, 20, 1, 'Коллоквиум', '', 'CurrentControl'),
+(12, 7, 15, 2, 'Активность на занятиях', '', 'CurrentControl');
 
 -- --------------------------------------------------------
 
@@ -620,10 +620,10 @@ CREATE TABLE IF NOT EXISTS `teachers` (
 --
 
 INSERT INTO `teachers` (`ID`, `LastName`, `FirstName`, `SecondName`, `Degree`, `FacultyID`, `AccountID`) VALUES
-(3, 'Teacher1', 'TeacherFirst1', NULL, NULL, 1, 5),
-(4, 'Teacher2', 'TeacherFirst2', 'TeacherSecond2', NULL, 1, 6),
-(5, ' Teacher3', 'TeacherFirst3', 'TeacherSecond3', NULL, 2, 7),
-(6, 'Teacher4', 'TeacherFirst4', NULL, NULL, 1, 8);
+(3, 'Менделеев', 'Дмитрий', 'Иванович', NULL, 1, 5),
+(4, 'Лермонтов', 'Михаил', 'Юрьевич', NULL, 1, 6),
+(5, 'Крузенштерн', 'Иван', 'Федорович', NULL, 2, 7),
+(6, 'Лобачевский', 'Николай', 'Иванович', NULL, 1, 8);
 
 --
 -- Ограничения внешнего ключа сохраненных таблиц
diff --git a/db/NewEmpty.sql b/db/NewEmpty.sql
new file mode 100644
index 0000000000000000000000000000000000000000..068aa054dddd2fd7e6db98e55099e05c413559f8
--- /dev/null
+++ b/db/NewEmpty.sql
@@ -0,0 +1,669 @@
+-- phpMyAdmin SQL Dump
+-- version 4.0.10
+-- http://www.phpmyadmin.net
+--
+-- РҐРѕСЃС‚: 127.0.0.1:3306
+-- Время создания: Авг 20 2014 г., 23:32
+-- Версия сервера: 5.5.37-log
+-- Версия PHP: 5.3.28
+
+SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
+SET time_zone = "+00:00";
+
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+
+--
+-- База данных: `Sample3`
+--
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `accounts`
+--
+
+CREATE TABLE IF NOT EXISTS `accounts` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `Login` varchar(50) DEFAULT NULL,
+  `Password` varchar(64) DEFAULT NULL,
+  `E-Mail` varchar(255) DEFAULT NULL,
+  `Type` enum('student','teacher') NOT NULL,
+  `ActivationCode` varchar(40) DEFAULT NULL,
+  `isEnabled` tinyint(1) NOT NULL DEFAULT '1',
+  `UserAgent` text,
+  PRIMARY KEY (`ID`),
+  UNIQUE KEY `E-Mail` (`E-Mail`),
+  UNIQUE KEY `Login` (`Login`)
+) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
+
+--
+-- Дамп данных таблицы `accounts`
+--
+
+INSERT INTO `accounts` (`ID`, `Login`, `Password`, `E-Mail`, `Type`, `ActivationCode`, `isEnabled`, `UserAgent`) VALUES
+(6, 'Abbadon', 'ff6cfea689c242780b084583790e39f5eb03bb91', 'solidovic@gmail.com', 'teacher', NULL, 1, NULL),
+(7, NULL, NULL, NULL, 'student', 'code2', 1, NULL);
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `attending_groups`
+--
+
+CREATE TABLE IF NOT EXISTS `attending_groups` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `Name` varchar(50) DEFAULT NULL,
+  `SemesterID` int(11) NOT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `SemesterID` (`SemesterID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `attending_groups_bases`
+--
+
+CREATE TABLE IF NOT EXISTS `attending_groups_bases` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `AttendingGroupID` int(11) NOT NULL,
+  `StudyGroupID` int(11) NOT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `StudyGroupID` (`StudyGroupID`),
+  KEY `AttendingGroupID` (`AttendingGroupID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `attending_groups_pool`
+--
+
+CREATE TABLE IF NOT EXISTS `attending_groups_pool` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `AttendingGroupID` int(11) NOT NULL,
+  `StudentID` int(11) NOT NULL,
+  `Type` enum('attach','detach') NOT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `AttendingGroupID` (`AttendingGroupID`),
+  KEY `StudentID` (`StudentID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `classrooms`
+--
+
+CREATE TABLE IF NOT EXISTS `classrooms` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `Name` varchar(50) NOT NULL,
+  `Capacity` int(11) DEFAULT NULL,
+  `FacultyID` int(11) NOT NULL,
+  `Export` enum('true','false') NOT NULL DEFAULT 'false',
+  PRIMARY KEY (`ID`),
+  KEY `FacultyID` (`FacultyID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `classroom_sets`
+--
+
+CREATE TABLE IF NOT EXISTS `classroom_sets` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `Name` varchar(50) DEFAULT NULL,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `classroom_sets_pool`
+--
+
+CREATE TABLE IF NOT EXISTS `classroom_sets_pool` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `ClassroomSetID` int(11) NOT NULL,
+  `ClassroomID` int(11) NOT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `ClassroomID` (`ClassroomID`),
+  KEY `ClassroomSetID` (`ClassroomSetID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `degrees`
+--
+
+CREATE TABLE IF NOT EXISTS `degrees` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `Name` varchar(200) NOT NULL,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ;
+
+--
+-- Дамп данных таблицы `degrees`
+--
+
+INSERT INTO `degrees` (`ID`, `Name`) VALUES
+(1, 'Аспирант'),
+(2, 'Ассистент'),
+(3, 'Ведущий научный сотрудник'),
+(4, 'Главный научный сотрудник'),
+(5, 'Докторант'),
+(6, 'Доцент'),
+(7, 'Младший научный сотрудник'),
+(8, 'Научный сотрудник'),
+(9, 'Преподаватель'),
+(10, 'Профессор'),
+(11, 'Старший преподаватель'),
+(12, 'Стажер'),
+(13, 'Старший научный сотрудник'),
+(14, 'Доцент');
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `departments`
+--
+
+CREATE TABLE IF NOT EXISTS `departments` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `Name` varchar(200) NOT NULL,
+  `FacultyID` int(11) NOT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `FacultyID` (`FacultyID`)
+) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
+
+--
+-- Дамп данных таблицы `departments`
+--
+
+INSERT INTO `departments` (`ID`, `Name`, `FacultyID`) VALUES
+(1, 'Кафедра математического анализа', 1),
+(2, 'Кафедра магического анализа', 1);
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `disciplines`
+--
+
+CREATE TABLE IF NOT EXISTS `disciplines` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `Grade` int(11) NOT NULL,
+  `SubjectID` int(11) NOT NULL,
+  `AuthorID` int(11) NOT NULL,
+  `ExamType` enum('exam','credit') NOT NULL,
+  `SemesterID` int(11) NOT NULL,
+  `PracticeCount` int(11) NOT NULL DEFAULT '0',
+  `LectionCount` int(11) NOT NULL DEFAULT '0',
+  `DepartmentID` int(11) NOT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `SubjectID` (`SubjectID`),
+  KEY `TeacherID` (`AuthorID`),
+  KEY `SemesterID` (`SemesterID`),
+  KEY `DepartmentID` (`DepartmentID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `disciplines_teachers`
+--
+
+CREATE TABLE IF NOT EXISTS `disciplines_teachers` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `DisciplineID` int(11) NOT NULL,
+  `TeacherID` int(11) NOT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `DisciplineID` (`DisciplineID`),
+  KEY `AccountID` (`TeacherID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `faculties`
+--
+
+CREATE TABLE IF NOT EXISTS `faculties` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `Name` varchar(100) NOT NULL,
+  `Abbr` varchar(20) NOT NULL,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
+
+--
+-- Дамп данных таблицы `faculties`
+--
+
+INSERT INTO `faculties` (`ID`, `Name`, `Abbr`) VALUES
+(1, 'Математика Механика и КН', 'МехМат'),
+(2, 'Юридический факультет', 'ЮрФак');
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `general_settings`
+--
+
+CREATE TABLE IF NOT EXISTS `general_settings` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `Val` int(11) DEFAULT NULL,
+  `ValS` varchar(300) DEFAULT NULL,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
+
+--
+-- Дамп данных таблицы `general_settings`
+--
+
+INSERT INTO `general_settings` (`ID`, `Val`, `ValS`) VALUES
+(1, 1, NULL),
+(2, NULL, 'hfkshfkjdshkjfsdj');
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `lessons`
+--
+
+CREATE TABLE IF NOT EXISTS `lessons` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `AttendingGroupID` int(11) NOT NULL,
+  `DisciplineTeacherID` int(11) NOT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `DisciplineID` (`DisciplineTeacherID`),
+  KEY `AttendingGroupID` (`AttendingGroupID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `logs`
+--
+
+CREATE TABLE IF NOT EXISTS `logs` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `RatingTableID` int(11) NOT NULL,
+  `AccountID` int(11) NOT NULL,
+  `OldValue` int(11) NOT NULL,
+  `NewValue` int(11) NOT NULL,
+  `Date` datetime NOT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `RatingTableID` (`RatingTableID`),
+  KEY `AccountID` (`AccountID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `modules`
+--
+
+CREATE TABLE IF NOT EXISTS `modules` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `Name` varchar(50) NOT NULL,
+  `OrderNum` int(11) NOT NULL,
+  `DisciplineID` int(11) NOT NULL,
+  PRIMARY KEY (`ID`),
+  UNIQUE KEY `OrderNum` (`OrderNum`,`DisciplineID`),
+  KEY `DisciplineID` (`DisciplineID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `rating_table`
+--
+
+CREATE TABLE IF NOT EXISTS `rating_table` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `StudentID` int(11) NOT NULL,
+  `TeacherID` int(11) NOT NULL,
+  `SubmoduleID` int(11) NOT NULL,
+  `Rate` int(11) NOT NULL,
+  `Date` date NOT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `StudentID` (`StudentID`),
+  KEY `SubmoduleID` (`SubmoduleID`),
+  KEY `TeacherID` (`TeacherID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `requests`
+--
+
+CREATE TABLE IF NOT EXISTS `requests` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `AccountID` int(11) DEFAULT NULL,
+  `Information` text NOT NULL,
+  `Date` date NOT NULL,
+  `Status` int(11) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`ID`),
+  KEY `AccountID` (`AccountID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `schedule`
+--
+
+CREATE TABLE IF NOT EXISTS `schedule` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `LessonID` int(11) NOT NULL,
+  `Day` int(11) NOT NULL,
+  `LessonTimeID` int(11) NOT NULL,
+  `ClassroomSetID` int(11) NOT NULL,
+  `SubgroupCount` int(11) NOT NULL,
+  `SubgroupNum` int(11) NOT NULL,
+  `WeekSplit` enum('full','up','down') NOT NULL DEFAULT 'full',
+  `LesType` int(11) NOT NULL,
+  `Notice` varchar(30) NOT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `LessonID` (`LessonID`),
+  KEY `ClassroomSetID` (`ClassroomSetID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `semesters`
+--
+
+CREATE TABLE IF NOT EXISTS `semesters` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `Year` int(11) NOT NULL,
+  `Num` int(11) NOT NULL,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
+
+--
+-- Дамп данных таблицы `semesters`
+--
+
+INSERT INTO `semesters` (`ID`, `Year`, `Num`) VALUES
+(1, 2014, 1);
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `specializations`
+--
+
+CREATE TABLE IF NOT EXISTS `specializations` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `Name` varchar(50) NOT NULL,
+  `Abbr` varchar(20) NOT NULL,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
+
+--
+-- Дамп данных таблицы `specializations`
+--
+
+INSERT INTO `specializations` (`ID`, `Name`, `Abbr`) VALUES
+(1, 'Прикладная математика и информатика', 'ПМиИ'),
+(2, 'Информационные технологии', 'ИТ'),
+(3, 'Математика', 'Матем'),
+(4, 'Механика', 'Механика');
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `students`
+--
+
+CREATE TABLE IF NOT EXISTS `students` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `StudyGroupID` int(11) NOT NULL,
+  `AccountID` int(11) NOT NULL,
+  `LastName` varchar(30) NOT NULL,
+  `FirstName` varchar(30) NOT NULL,
+  `SecondName` varchar(30) DEFAULT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `StudyGroupID` (`StudyGroupID`),
+  KEY `AccountID` (`AccountID`)
+) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
+
+--
+-- Дамп данных таблицы `students`
+--
+
+INSERT INTO `students` (`ID`, `StudyGroupID`, `AccountID`, `LastName`, `FirstName`, `SecondName`) VALUES
+(1, 1, 7, 'Иванов', 'Иван', 'Иванович');
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `study_groups`
+--
+
+CREATE TABLE IF NOT EXISTS `study_groups` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `Grade` int(11) NOT NULL,
+  `GroupNum` int(11) NOT NULL,
+  `SpecializationID` int(11) NOT NULL,
+  `FacultyID` int(11) NOT NULL,
+  `Name` varchar(50) DEFAULT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `SpecializtionID` (`SpecializationID`),
+  KEY `FacultyID` (`FacultyID`)
+) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
+
+--
+-- Дамп данных таблицы `study_groups`
+--
+
+INSERT INTO `study_groups` (`ID`, `Grade`, `GroupNum`, `SpecializationID`, `FacultyID`, `Name`) VALUES
+(1, 1, 1, 1, 1, NULL);
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `subjects`
+--
+
+CREATE TABLE IF NOT EXISTS `subjects` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `Name` varchar(50) NOT NULL,
+  `Abbr` varchar(20) DEFAULT NULL,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
+
+--
+-- Дамп данных таблицы `subjects`
+--
+
+INSERT INTO `subjects` (`ID`, `Name`, `Abbr`) VALUES
+(1, 'Математический анализ', 'Матан'),
+(2, 'Конституционное право', 'КП'),
+(3, 'Операционные системы', 'ОС'),
+(4, 'История', 'История');
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `submodules`
+--
+
+CREATE TABLE IF NOT EXISTS `submodules` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `ModuleID` int(11) NOT NULL,
+  `MaxRate` int(11) NOT NULL,
+  `OrderNum` int(11) NOT NULL,
+  `Name` varchar(50) NOT NULL,
+  `Description` varchar(200) DEFAULT NULL,
+  `Type` enum('CurrentControl','LandmarkControl') NOT NULL DEFAULT 'CurrentControl',
+  PRIMARY KEY (`ID`),
+  UNIQUE KEY `ModuleID_2` (`ModuleID`,`OrderNum`),
+  KEY `ModuleID` (`ModuleID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Структура таблицы `teachers`
+--
+
+CREATE TABLE IF NOT EXISTS `teachers` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT,
+  `LastName` varchar(30) NOT NULL,
+  `FirstName` varchar(30) NOT NULL,
+  `SecondName` varchar(30) DEFAULT NULL,
+  `DegreeID` int(11) NOT NULL,
+  `DepartmentID` int(11) NOT NULL,
+  `AccountID` int(11) NOT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `FacultyID` (`DepartmentID`),
+  KEY `AccountID` (`AccountID`)
+) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
+
+--
+-- Дамп данных таблицы `teachers`
+--
+
+INSERT INTO `teachers` (`ID`, `LastName`, `FirstName`, `SecondName`, `DegreeID`, `DepartmentID`, `AccountID`) VALUES
+(1, 'Колобок', 'Фазиль', 'Евреивич', 9, 1, 6);
+
+--
+-- Ограничения внешнего ключа сохраненных таблиц
+--
+
+--
+-- Ограничения внешнего ключа таблицы `attending_groups`
+--
+ALTER TABLE `attending_groups`
+  ADD CONSTRAINT `attending_groups_ibfk_1` FOREIGN KEY (`SemesterID`) REFERENCES `semesters` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `attending_groups_bases`
+--
+ALTER TABLE `attending_groups_bases`
+  ADD CONSTRAINT `attending_groups_bases_ibfk_1` FOREIGN KEY (`AttendingGroupID`) REFERENCES `attending_groups` (`ID`),
+  ADD CONSTRAINT `attending_groups_bases_ibfk_2` FOREIGN KEY (`StudyGroupID`) REFERENCES `study_groups` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `attending_groups_pool`
+--
+ALTER TABLE `attending_groups_pool`
+  ADD CONSTRAINT `attending_groups_pool_ibfk_1` FOREIGN KEY (`AttendingGroupID`) REFERENCES `attending_groups` (`ID`),
+  ADD CONSTRAINT `attending_groups_pool_ibfk_2` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `classrooms`
+--
+ALTER TABLE `classrooms`
+  ADD CONSTRAINT `classrooms_ibfk_1` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `classroom_sets_pool`
+--
+ALTER TABLE `classroom_sets_pool`
+  ADD CONSTRAINT `classroom_sets_pool_ibfk_1` FOREIGN KEY (`ClassroomID`) REFERENCES `classrooms` (`ID`),
+  ADD CONSTRAINT `classroom_sets_pool_ibfk_2` FOREIGN KEY (`ClassroomSetID`) REFERENCES `classroom_sets` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `departments`
+--
+ALTER TABLE `departments`
+  ADD CONSTRAINT `departments_ibfk_1` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `disciplines`
+--
+ALTER TABLE `disciplines`
+  ADD CONSTRAINT `disciplines_ibfk_2` FOREIGN KEY (`SubjectID`) REFERENCES `subjects` (`ID`),
+  ADD CONSTRAINT `disciplines_ibfk_4` FOREIGN KEY (`SemesterID`) REFERENCES `semesters` (`ID`),
+  ADD CONSTRAINT `disciplines_ibfk_5` FOREIGN KEY (`AuthorID`) REFERENCES `teachers` (`ID`),
+  ADD CONSTRAINT `disciplines_ibfk_6` FOREIGN KEY (`DepartmentID`) REFERENCES `departments` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `disciplines_teachers`
+--
+ALTER TABLE `disciplines_teachers`
+  ADD CONSTRAINT `disciplines_teachers_ibfk_1` FOREIGN KEY (`DisciplineID`) REFERENCES `disciplines` (`ID`),
+  ADD CONSTRAINT `disciplines_teachers_ibfk_2` FOREIGN KEY (`TeacherID`) REFERENCES `teachers` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `lessons`
+--
+ALTER TABLE `lessons`
+  ADD CONSTRAINT `lessons_ibfk_6` FOREIGN KEY (`AttendingGroupID`) REFERENCES `attending_groups` (`ID`),
+  ADD CONSTRAINT `lessons_ibfk_7` FOREIGN KEY (`DisciplineTeacherID`) REFERENCES `disciplines_teachers` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `logs`
+--
+ALTER TABLE `logs`
+  ADD CONSTRAINT `logs_ibfk_1` FOREIGN KEY (`RatingTableID`) REFERENCES `rating_table` (`ID`),
+  ADD CONSTRAINT `logs_ibfk_2` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `modules`
+--
+ALTER TABLE `modules`
+  ADD CONSTRAINT `modules_ibfk_2` FOREIGN KEY (`DisciplineID`) REFERENCES `disciplines` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `rating_table`
+--
+ALTER TABLE `rating_table`
+  ADD CONSTRAINT `rating_table_ibfk_1` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`),
+  ADD CONSTRAINT `rating_table_ibfk_3` FOREIGN KEY (`SubmoduleID`) REFERENCES `submodules` (`ID`),
+  ADD CONSTRAINT `rating_table_ibfk_4` FOREIGN KEY (`TeacherID`) REFERENCES `teachers` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `requests`
+--
+ALTER TABLE `requests`
+  ADD CONSTRAINT `requests_ibfk_1` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`) ON DELETE SET NULL ON UPDATE SET NULL;
+
+--
+-- Ограничения внешнего ключа таблицы `schedule`
+--
+ALTER TABLE `schedule`
+  ADD CONSTRAINT `schedule_ibfk_1` FOREIGN KEY (`LessonID`) REFERENCES `lessons` (`ID`),
+  ADD CONSTRAINT `schedule_ibfk_2` FOREIGN KEY (`ClassroomSetID`) REFERENCES `classroom_sets` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `students`
+--
+ALTER TABLE `students`
+  ADD CONSTRAINT `students_ibfk_1` FOREIGN KEY (`StudyGroupID`) REFERENCES `study_groups` (`ID`),
+  ADD CONSTRAINT `students_ibfk_2` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `study_groups`
+--
+ALTER TABLE `study_groups`
+  ADD CONSTRAINT `study_groups_ibfk_2` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`),
+  ADD CONSTRAINT `study_groups_ibfk_4` FOREIGN KEY (`SpecializationID`) REFERENCES `specializations` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `submodules`
+--
+ALTER TABLE `submodules`
+  ADD CONSTRAINT `submodules_ibfk_1` FOREIGN KEY (`ModuleID`) REFERENCES `modules` (`ID`);
+
+--
+-- Ограничения внешнего ключа таблицы `teachers`
+--
+ALTER TABLE `teachers`
+  ADD CONSTRAINT `teachers_ibfk_2` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`),
+  ADD CONSTRAINT `teachers_ibfk_3` FOREIGN KEY (`DepartmentID`) REFERENCES `departments` (`ID`);
+
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql
index 5a414435b21a6500dec806e24dc3df6e39f6b563..7007e716d48dbccadc6f9c9b04b5877226692d76 100644
--- a/db/StoredProcedures.sql
+++ b/db/StoredProcedures.sql
@@ -55,6 +55,52 @@ BEGIN
 END //
 
 
+DROP PROCEDURE IF EXISTS GetSubjectList;//
+CREATE PROCEDURE `GetSubjectList`( )
+    NO SQL
+BEGIN
+	SELECT 	subjects.ID,
+			subjects.Name,
+			subjects.Abbr
+	FROM	`subjects`
+	ORDER BY subjects.Name ASC;
+END //
+
+
+
+DROP PROCEDURE IF EXISTS GetStudyGroups;//
+CREATE PROCEDURE `GetStudyGroups`( 	IN `Grade` INT,
+									IN `FacultyID` INT  )
+    NO SQL
+BEGIN
+	SELECT 	study_groups.ID,
+			study_groups.GroupNum,
+			specializations.ID 		AS 'SpecID',
+			specializations.Name 	AS 'SpecName',
+			specializations.Abbr 	AS 'SpecAbbr'
+	FROM `study_groups`
+	INNER JOIN `specializations` ON specializations.ID = study_groups.SpecializationID
+	WHERE study_groups.Grade = Grade AND study_groups.FacultyID = FacultyID;
+
+END //
+
+
+DROP PROCEDURE IF EXISTS GetStudentsByStudyGroups;//
+CREATE PROCEDURE `GetStudentsByStudyGroups`( 	IN `StudyGroupID` INT  )
+    NO SQL
+BEGIN
+	SELECT 	students.ID 			AS 'StudentID', 
+			students.LastName, 
+			students.FirstName, 
+			students.SecondName	
+	FROM `students`
+	WHERE students.StudyGroupID = StudyGroupID;
+
+END //
+
+
+
+
 -- ====== Работа с аккаунтами ======
 
 
@@ -143,12 +189,16 @@ BEGIN
 				teachers.LastName, 
 				teachers.FirstName, 
 				teachers.SecondName, 
-				teachers.Degree, 
+				degrees.Name 			AS 'Degree', 
+				departments.ID 			AS 'DepartmentID',
+				departments.Name 		AS 'DepartmentName',
 				faculties.ID 			AS 'FacultyID', 
 				faculties.Name 			AS 'FacultyName', 
 				faculties.Abbr 			AS 'FacultyAbbreviation'
 		FROM `teachers`
-		INNER JOIN `faculties` ON teachers.FacultyID = faculties.ID
+		INNER JOIN `departments` ON departments.ID = teachers.DepartmentID
+		INNER JOIN `faculties` ON departments.FacultyID = faculties.ID
+		INNER JOIN `degrees` ON degrees.ID = teachers.DegreeID
 		WHERE teachers.AccountID = UserID;
 
 	END IF;
@@ -306,7 +356,7 @@ BEGIN
 		SELECT accounts.ID 
 		INTO curID
 		FROM `accounts`
-		WHERE accounts.Code = Code;
+		WHERE accounts.ActivationCode = Code;
 		
 		INSERT INTO `students` (students.StudyGroupID, students.AccountID, students.LastName, students.FirstName, students.SecondName)
 		VALUES 				   (StudyGroupID, curID, Last, First, Second);
@@ -325,13 +375,32 @@ DROP FUNCTION IF EXISTS CreateTeacher; //
 CREATE FUNCTION `CreateTeacher`(	`Last` 		VARCHAR(30) CHARSET utf8, 
 									`First` 	VARCHAR(30) CHARSET utf8, 
 									`Second` 	VARCHAR(30) CHARSET utf8, 
-									`Degree` 	VARCHAR(50) CHARSET utf8, 
-									`FacultyID` INT, 
+									`DegreeID` 	   	INT, 
+									`DepartmentID` 	INT, 
 									`Code` 		VARCHAR(40) CHARSET utf8 
 								) RETURNS int(11)
     NO SQL
 BEGIN 
-	DECLARE curID, StudyGroupID INT;
+	DECLARE curID, StudyGroupID, checker INT;
+	
+	SELECT departments.ID 
+	INTO checker
+	FROM `departments`
+	WHERE departments.ID = DepartmentID
+	LIMIT 1;
+	IF checker IS NULL OR checker <= 0 THEN
+		RETURN -1;
+	END IF;
+
+	SELECT degrees.ID 
+	INTO checker
+	FROM `degrees`
+	WHERE degrees.ID = DegreeID
+	LIMIT 1;
+	IF checker IS NULL OR checker <= 0 THEN
+		RETURN -1;
+	END IF;
+
 
 	IF Code IS NOT NULL THEN
 
@@ -340,15 +409,15 @@ BEGIN
 		
 		SELECT accounts.ID INTO curID
 		FROM `accounts`
-		WHERE accounts.Code = Code;
+		WHERE accounts.ActivationCode = Code;
 		
 		INSERT INTO `teachers` (	teachers.AccountID, 
 									teachers.LastName, 
 									teachers.FirstName, 
 									teachers.SecondName, 
-									teachers.Degree, 
-									teachers.FacultyID)
-		VALUES 				   (curID, Last, First, Second, Degree, FacultyID);
+									teachers.DegreeID, 
+									teachers.DepartmentID)
+		VALUES 				   (curID, Last, First, Second, DegreeID, DepartmentID);
 		RETURN 0;
 
 	END IF;
@@ -429,15 +498,10 @@ BEGIN
 						subjects.ID AS 'SubjectID', 
 						subjects.Name AS 'SubjectName', 
 						disciplines.ExamType,
-						teachers.LastName AS 'TeacherLast', 
-						teachers.FirstName AS 'TeacherFirst',
-						teachers.SecondName AS 'TeacherSecond', 
-						teachers.Degree AS 'TeacherDegree',
 						GetRateForDisc(StudentID, `disciplines`.`ID` ) AS 'Rate', 
 						GetMaxRateForDisc(StudentID, `disciplines`.`ID` ) AS 'MaxCurrentRate' 
 	FROM `disciplines`
 	INNER JOIN `subjects` 					ON 	disciplines.SubjectID = subjects.ID 
-	INNER JOIN `teachers` 					ON 	disciplines.AuthorID = teachers.ID
 	CROSS JOIN `disciplines_teachers` 		ON 	disciplines_teachers.DisciplineID = disciplines.ID
 	CROSS JOIN `lessons`					ON 	lessons.DisciplineTeacherID = disciplines_teachers.ID
 	INNER JOIN `attending_groups`			ON 	attending_groups.ID = lessons.AttendingGroupID AND 
@@ -516,7 +580,6 @@ BEGIN
 	SELECT 	disciplines.AuthorID,
 			disciplines.Grade 			AS 'DisciplineGrade',
 			disciplines.ExamType,
-			disciplines.Type 			AS 'LessonType',
 			disciplines.LectionCount,
 			disciplines.PracticeCount,
 			disciplines.SemesterID,
@@ -540,13 +603,18 @@ BEGIN
 				teachers.LastName, 
 				teachers.FirstName, 
 				teachers.SecondName, 
-				teachers.Degree, 
+				degrees.ID 				AS 'DegreeID',
+				degrees.Name 			AS 'Degree', 
+				departments.ID 			AS 'DepartmentID',
+				departments.Name 		AS 'DepartmentName',
 				faculties.ID 			AS 'FacultyID', 
 				faculties.Name 			AS 'FacultyName', 
 				faculties.Abbr 			AS 'FacultyAbbreviation'
 		FROM `disciplines_teachers`
 		INNER JOIN `teachers` ON teachers.ID = disciplines_teachers.TeacherID
-		INNER JOIN `faculties` ON teachers.FacultyID = faculties.ID
+		INNER JOIN `departments` ON departments.ID = teachers.DepartmentID
+		INNER JOIN `faculties` ON departments.FacultyID = faculties.ID
+		INNER JOIN `degrees` ON degrees.ID = teachers.DegreeID
 		WHERE disciplines_teachers.DisciplineID = DiscID;
 END //
 
@@ -961,23 +1029,44 @@ CREATE FUNCTION `AddDiscipline`(	`TeacherID` 	INT,
 									`SubjectID`		INT,
 									`ExamType`		VARCHAR(30),
 									`LectionCount`  INT,
-									`PracticeCount` INT			
+									`PracticeCount` INT,
+									`DepartmentID`	INT		
 								 ) 
 								RETURNS int(11)
     NO SQL
 BEGIN  
     DECLARE semID, checker INT; 
     SET semID = GetCurSemesterID();   
+
+    SELECT departments.ID
+    INTO checker
+    FROM `departments`
+    WHERE departments.ID = DepartmentID
+    LIMIT 1;
+    IF checker IS NULL OR checker <= 0 THEN
+    	RETURN -1;
+	END IF;
 	
 
+    SELECT subjects.ID
+    INTO checker
+    FROM `subjects`
+    WHERE subjects.ID = SubjectID
+    LIMIT 1;
+    IF checker IS NULL OR checker <= 0 THEN
+    	RETURN -1;
+	END IF;
+
+
 	INSERT INTO `disciplines` 	(	disciplines.AuthorID, 
 									disciplines.Grade, 
 									disciplines.SubjectID, 
 									disciplines.ExamType, 
 									disciplines.LectionCount, 
 									disciplines.PracticeCount,
-									disciplines.SemesterID )
-	VALUES 					( TeacherID, Grade, SubjectID, ExamType, LectionCount, PracticeCount, semID );
+									disciplines.SemesterID,
+									disciplines.DepartmentID )
+	VALUES 					( TeacherID, Grade, SubjectID, ExamType, LectionCount, PracticeCount, semID, DepartmentID );
 	
 	-- RETURN 	(	SELECT disciplines.ID
 	-- 			FROM   `disciplines`
diff --git a/media/css/base.css b/media/css/base.css
index f0b3653ccb39a38e8bf2fff28958d88729a1536a..011faa2d81e865e6b530c41f6b5558113074bb92 100644
--- a/media/css/base.css
+++ b/media/css/base.css
@@ -1,9 +1,15 @@
 *{ 
-	font-family: Arial, Tahoma, Lucida Grande, Sans-Serif, Lucida Sans;;
+	font-family: Arial, Tahoma, Lucida Grande, Sans-Serif, Lucida Sans;
+	margin: 0;
+	padding: 0;
+	border: 0;
+}
+/* Для корректного отображения окон */
+html,
+body {
+	height: 100%;
 }
 body {
-	padding: 0;
-	margin: 0;
 	background-color: #f1f1f1;
 }
 div {
@@ -90,8 +96,7 @@ a:hover {
 .main_content {
 	width: 100%;
 	position: relative;
-	padding-top: 25px;
-	padding-bottom: 20px;
+	padding: 25px 0;
 }
 
 
@@ -128,12 +133,6 @@ html>body #wrap
 	height: auto; 
 	min-height: 100%;
 }
-html,body 
-{ 
-	height: 100%;
-	padding:0; 
-	margin:0;
-}
 #footer_fixBug {
 	height: 30px;
 }
@@ -156,8 +155,12 @@ html,body
 	width: 100%;
 } 
 
-/*------------------------------------------------------------------------------------*/
-
+/*----------------------Обшие--------------------------*/
+/* Оповещение */
+p.notification{
+	margin: 10px 0;
+	text-align: center; font-size: 16px;
+}
 
 
 
diff --git a/media/css/construct.css b/media/css/construct.css
index dca75a90403f30d9735b925a675131973c11f1f0..36cbf15b070b6293f9147339700de1b3482a7a42 100644
--- a/media/css/construct.css
+++ b/media/css/construct.css
@@ -1,14 +1,21 @@
-.TopRightMessage {
-	display: none;
-	position: absolute;
-	top: 0;
-	right: 0;
-	max-width: 500px;
-	padding: 7px 18px;
-	font-size: 15px;
-	color: #ffffff;
-	border-radius: 0 0 0 5px;
+/* -- Руководство -------------------- */
+.guide {
+	background: #f3ece3;
+	padding: 10px 15px;
+	color: #363636;
 }
+	.guide p {
+		margin-top: 7px;
+		font-size: 17px;
+	}
+	.guide ol {
+		list-style-type: decimal;
+		padding: 5px 25px;
+	}
+		.guide ol li {
+			margin: 15px 0px 15px 20px;
+			font-size: 15px;
+		}
 
 .discipline {	
 	margin: 0px 25px;
@@ -80,42 +87,33 @@
 		float: right;
 		display: inline;
 	}
-		.actions .up {
-			background: url(icons/up.png) no-repeat center center;
+		.actions .icon {
 			float: right;
 			display: inline;
 			width: 20px;
 			height: 20px;
-			margin-left: 10px;
+			margin-left: 15px;
 			cursor: pointer;
 		}
+		.actions .up {
+			background: url(icons/up.png) no-repeat center center;
+		}
 		.actions .down {
 			background: url(icons/down.png) no-repeat center center;
-			float: right;
-			display: inline;
-			width: 20px;
-			height: 20px;
-			margin-left: 10px;
-			cursor: pointer;
 		}
 		.actions .add { /* Кнопка добавления мероприятия */
 			background: url(icons/add.png) no-repeat center center;
-			float: right;
-			display: inline;
-			width: 20px;
-			height: 20px;
-			margin-left: 10px;
-			cursor: pointer;
 		}
 		.actions .delete {
 			background: url(icons/delete.png) no-repeat center center;
-			float: right;
-			display: inline;
-			width: 20px;
-			height: 20px;
-			margin-left: 25px;
-			cursor: pointer;
 		}
+	.confirmDeleteDiv {
+		width: 160px;
+		float: right;
+		display: inline;
+		text-align: right;
+	}
+	
 	.inputName {
 		border: 0;
 		width: 240px;
diff --git a/media/css/settings.css b/media/css/settings.css
index 8e453053cf6e6d2644cf8f8d1a746e6208fbd85b..476868726d1f52af9bdb38638c11a9d38a0aa920 100644
--- a/media/css/settings.css
+++ b/media/css/settings.css
@@ -9,7 +9,8 @@
 	width: 500px;
 }
 	/* Подсказка */
-	.settingsSection p{
+	.settingsSection .help{
+		margin: 10px 0;
 		text-align: center; font-size: 15px;
 	}
 	.settingsSection .itemBlock {
diff --git a/media/js/construct/attach.js b/media/js/construct/attach.js
new file mode 100644
index 0000000000000000000000000000000000000000..d43933f423e5874566560515f3ffdd55d1bf1c86
--- /dev/null
+++ b/media/js/construct/attach.js
@@ -0,0 +1,16 @@
+var $ = jQuery;
+$(function() {
+	var URL = (window.location.href).split('/');
+	var DisciplineID = URL[URL.length - 1]
+
+	// Открыть окно 'Прикрепить группы'
+	$('.AttachGroups').click(function(){
+		wnd.open({title: 'Тестовое eeeeeокно', content: '<p>Theew text</p>', width: 700});
+	});
+	
+	// Открыть окно 'Прикрепить студентов'
+	$('.AttachStudents').click(function(){
+		wnd.open({title: 'Тестовое eeeeeокно', content: '<p>Theew text</p>', width: 700});
+	});
+	
+})
\ No newline at end of file
diff --git a/media/js/construct/create.js b/media/js/construct/create.js
new file mode 100644
index 0000000000000000000000000000000000000000..e7e7f882be3dc2069d141be7f38312eaff6cb8f7
--- /dev/null
+++ b/media/js/construct/create.js
@@ -0,0 +1,26 @@
+var $ = jQuery;
+$(function() {
+
+	// Изменения базовых параметров дисциплины
+    $(".AddDiscipline").click(function(){
+		$.post(
+			'/~dev_rating/handler/map/AddDiscipline',
+			{
+				'Grade': $('.SelectGrade').val(),
+				'SubjectID': $('.SelectSubject').val(),
+				'ExamType': $('input:radio[name=ExamType]:checked').val(),
+				'LectionCount': $('.InputLectionCount').val(),
+				'PracticeCount': $('.InputPracticeCount').val(),
+				'DepartmentID': $('.SelectDepartment').val()
+			},
+			function(data){
+				data = $.parseJSON(data);
+				if(data.success === true) {
+					alert('РћРє, AddDiscipline');
+					setTimeout('location.replace("/~dev_rating/map/'+data.DisciplineID+'")',5000); 
+				} else alert('Error, AddDiscipline');
+			}
+		);
+    });
+
+});
\ No newline at end of file
diff --git a/media/js/construct/edit.js b/media/js/construct/edit.js
index 4a4386447a1c15dae52935b4bc9769beb47b2027..3ab1ad1d9d7b53fa256b72b9576256ef98392e6c 100644
--- a/media/js/construct/edit.js
+++ b/media/js/construct/edit.js
@@ -3,11 +3,6 @@ $(function() {
 	var URL = (window.location.href).split('/');
 	var DisciplineID = URL[URL.length - 1]
 	
-	// Проверка на число, причем NaN не помеха
-	function isNum(v) {
-			return typeof v === 'number' && isFinite(v);
-	} 
-
 	// Шаблон мероприятия
 	function GetSubModuleTmp(){
 		return '\
@@ -18,9 +13,9 @@ $(function() {
 			<div class="currentControl"><input type="text" class="inputCredit inputCurrentControl" value="0"></div>\
 			<div class="landmarkControl"><input type="text" class="inputCredit inputLandmarkControl" value="0"></div>\
 			<div class="actions">\
-				<div class="deleteSubModule delete"></div>\
-				<div class="downSubModule down"></div>\
-				<div class="upSubModule up"></div>\
+				<div class="deleteSubModule icon delete"></div>\
+				<div class="downSubModule icon down"></div>\
+				<div class="upSubModule icon up"></div>\
 			</div>\
 		</div>\
 		';
@@ -37,10 +32,10 @@ $(function() {
 				<div class="currentControl">0</div>\
 				<div class="landmarkControl">0</div>\
 				<div class="actions">\
-					<div class="deleteModule delete"></div>\
-					<div class="downModule down"></div>\
-					<div class="upModule up"></div>\
-					<div class="addSubModule add"></div>\
+					<div class="deleteModule icon delete"></div>\
+					<div class="downModule icon down"></div>\
+					<div class="upModule icon up"></div>\
+					<div class="addSubModule icon add"></div>\
 				</div>\
 			</div>\
 			<div class="subModules">\
@@ -172,20 +167,16 @@ $(function() {
 	
 	// Изменения базовых параметров дисциплины
     $(".ChangeDiscipline").click(function(){
-		//alert(DisciplineID);
-		//alert($('.Grade').val());
-		//alert($('input:radio[name=ExamType]:checked').val());
-		//alert($('.inputLectionCount').val());
-		//alert($('.inputPracticeCount').val());
 		$.post(
 			'/~dev_rating/handler/map/ChangeDiscipline',
 			{
 				'DisciplineID': DisciplineID,
-				'Grade': $('.Grade').val(),
+				'Grade': $('.SelectGrade').val(),
 				'SubjectID': $('.SelectSubject').val(),
 				'ExamType': $('input:radio[name=ExamType]:checked').val(),
-				'LectionCount': $('.inputLectionCount').val(),
-				'PracticeCount': $('.inputPracticeCount').val()
+				'LectionCount': $('.InputLectionCount').val(),
+				'PracticeCount': $('.InputPracticeCount').val(),
+				'DepartmentID': $('.SelectDepartment').val()
 			},
 			function(data){
 				data = $.parseJSON(data);
@@ -300,8 +291,14 @@ $(function() {
 	
 	// Удалить модуль
 	$('.moduleList').on('click', '.deleteModule', function(){
-		$(this).parent('div').parent('div').parent('div').remove();
+		$(this).parent().css('display', 'none');
+		$(this).parent().parent().append('<div class="confirmDeleteDiv">Уверены? <span class="confirmDeleteModule">Да</span> <span class="cancel">Нет</span></div>');
+	});
+	
+	// Подтверждение при удаление модуля
+	$('.moduleList').on('click', '.confirmDeleteModule', function(){
 		var subModulesDIV = $(this).parent('div').parent('div').next('.subModules');
+		var CurrentModuleOrder = $(this).parent().parent().parent().index() + 1;
 		// Собираем в JSON строку ID мероприятий
 		var JSONSubmodules = '[';
 		$('.subModule', subModulesDIV).each(function(){
@@ -309,11 +306,20 @@ $(function() {
 		});
 		JSONSubmodules = JSONSubmodules.substr(0, JSONSubmodules.length - 1);
 		JSONSubmodules += ']';
+		//
+		// Собираем ID модулей, которые ниже для того, чтоб сменить их порадок на +1
+		var AttrID = $(this).parent().parent().parent().nextAll().map(function(indx, element){
+			return $(element).attr("id");
+		});
+		var ChangeOrderModulesID = '[' + AttrID.get() + ']';
+		//
 		$.post(
 			'/~dev_rating/handler/map/DeleteModule',
 			{
 				'ModuleID': $(this).parent('div').parent('div').parent('div').attr('id'),
-				'SubmodulesID': JSONSubmodules
+				'SubmodulesID': JSONSubmodules,
+				'CurrentModuleOrder': CurrentModuleOrder,
+				'ChangeOrderModulesID': ChangeOrderModulesID
 			},
 			function(data){
 				data = $.parseJSON(data);
@@ -322,18 +328,33 @@ $(function() {
 				else alert('Error, DeleteModule');
 			}
 		);
+		$(this).parent('div').parent('div').parent('div').remove();
 	});
 	
 	// Удалить мероприятие
 	$('.moduleList').on('click', '.deleteSubModule ', function(){
+		$(this).parent().css('display', 'none');
+		$(this).parent().parent().append('<div class="confirmDeleteDiv">Уверены? <span class="confirmDeleteSubModule">Да</span> <span class="cancel">Нет</span></div>');
+	});
+	
+	// Подтверждение при удаление мероприятия
+	$('.moduleList').on('click', '.confirmDeleteSubModule ', function(){
 		var subModulesDiv = $(this).parent().parent().parent();
-		$(this).parent('div').parent('div').remove();
+		var CurrentSubmoduleOrder = $(this).parent().parent().index() + 1;
 		CountCurrentControl(subModulesDiv);
 		CountLandmarkControl(subModulesDiv);
+		// Собираем ID мероприятий, которые ниже для того, чтоб сменить их порадок на +1
+		var AttrID = $(this).parent().parent().nextAll().map(function(indx, element){
+			return $(element).attr("id");
+		});
+		var ChangeOrderSubmodulesID = '[' + AttrID.get() + ']';
+		//
 		$.post(
 			'/~dev_rating/handler/map/DeleteSubmodule',
 			{
-				'SubmoduleID': $(this).parent('div').parent('div').attr('id')
+				'SubmoduleID': $(this).parent('div').parent('div').attr('id'),
+				'CurrentSubmoduleOrder': CurrentSubmoduleOrder,
+				'ChangeOrderSubmodulesID': ChangeOrderSubmodulesID
 			},
 			function(data){
 				data = $.parseJSON(data);
@@ -342,6 +363,13 @@ $(function() {
 				else alert('Error, DeleteSubmodule');
 			}
 		);
+		$(this).parent('div').parent('div').remove();
+	});
+	
+	// Отмена удаления модулей/мероприятий
+	$('.moduleList').on('click', '.cancel ', function(){
+		$(this).parent().parent().children('.actions').css('display', 'block');
+		$(this).parent().remove();
 	});
 	
 	// Поменять название модуля
@@ -412,21 +440,7 @@ $(function() {
 	
 	// В inputCredit (где баллы вводить) разрешаем вводить только цифры
 	$(".moduleList").on('keydown', '.inputCredit', function(event) {
-        // Разрешаем: backspace, delete, tab и escape
-        if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || 
-             // Разрешаем: Ctrl+A
-            (event.keyCode == 65 && event.ctrlKey === true) || 
-             // Разрешаем: home, end, влево, вправо
-            (event.keyCode >= 35 && event.keyCode <= 39)) {
-                 // Ничего не делаем
-                 return;
-        }
-        else {
-            // Убеждаемся, что это цифра, и останавливаем событие keypress
-            if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
-                event.preventDefault(); 
-            }   
-        }
+        KeyDownOnlyNumber(event);
     });
 	
 });
diff --git a/media/js/functions.js b/media/js/functions.js
new file mode 100644
index 0000000000000000000000000000000000000000..45680cc3071cd801edcadabca370f15c6a3622aa
--- /dev/null
+++ b/media/js/functions.js
@@ -0,0 +1,23 @@
+// Проверка на число, причем NaN не помеха
+function isNum(v) {
+		return typeof v === 'number' && isFinite(v);
+}
+
+// Разрешаем вводить только цифры
+function KeyDownOnlyNumber(event) {
+	// Разрешаем: backspace, delete, tab и escape
+	if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || 
+		 // Разрешаем: Ctrl+A
+		(event.keyCode == 65 && event.ctrlKey === true) || 
+		 // Разрешаем: home, end, влево, вправо
+		(event.keyCode >= 35 && event.keyCode <= 39)) {
+			 // Ничего не делаем
+			 return;
+	}
+	else {
+		// Убеждаемся, что это цифра, и останавливаем событие keypress
+		if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
+			event.preventDefault(); 
+		}   
+	}
+}
\ No newline at end of file
diff --git a/media/js/setRate.js b/media/js/setRate.js
index 20bb2de12a8afe80712abd14d179890207f133f0..49e37497f125a4b00bbfb9fc51e1765a956b12f2 100644
--- a/media/js/setRate.js
+++ b/media/js/setRate.js
@@ -97,25 +97,6 @@ $(function() {
 		tdUnFocus($(this));
 	});
 	
-	// Разрешаем вводить только цифры
-	function KeyDownOnlyNumber(event) {
-        // Разрешаем: backspace, delete, tab и escape
-        if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || 
-             // Разрешаем: Ctrl+A
-            (event.keyCode == 65 && event.ctrlKey === true) || 
-             // Разрешаем: home, end, влево, вправо
-            (event.keyCode >= 35 && event.keyCode <= 39)) {
-                 // Ничего не делаем
-                 return;
-        }
-        else {
-            // Убеждаемся, что это цифра, и останавливаем событие keypress
-            if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
-                event.preventDefault(); 
-            }   
-        }
-	}
-	
 	// В inputCredit (где баллы вводить) разрешаем вводить только цифры
 	$('.rateCell').children('input').keydown(function(event) {
 		KeyDownOnlyNumber(event);
diff --git a/media/js/sign.js b/media/js/sign.js
index f8da7055ef227a312afbe394b9d679334289428b..ab0e57c9ef69d366e931844c3db460c1fb8b979a 100644
--- a/media/js/sign.js
+++ b/media/js/sign.js
@@ -53,8 +53,13 @@ $(function()
             }
         });
     });
-    
-    
-    
+	
+	$(document).keypress(function(){
+		if(event.keyCode==13)
+		   {
+			  $('#signin_b').trigger('click');
+			  $('#signup_b').trigger('click');
+		   }
+	});
     
 });
diff --git a/media/js/wnd/close.png b/media/js/wnd/close.png
new file mode 100644
index 0000000000000000000000000000000000000000..e2d7885a6396c0f18338739e0665073e16fa8629
Binary files /dev/null and b/media/js/wnd/close.png differ
diff --git a/media/js/wnd/wnd.css b/media/js/wnd/wnd.css
new file mode 100644
index 0000000000000000000000000000000000000000..7563d252a53a03e3356d98422d64b31d6abdcbeb
--- /dev/null
+++ b/media/js/wnd/wnd.css
@@ -0,0 +1,43 @@
+.window {
+	display: none;
+	position: absolute;
+	top: 0;
+	left: 0;
+	z-index: 1000;
+	width: 100%;
+	height: 100%;
+	background-color: rgba(0,0,0,.5);
+	font-family: sans-serif;
+}
+  .window-shadow {
+		position: absolute;
+		width: 100%;
+		height: 100%;
+  }
+  .window-block {
+		position: relative;
+		z-index: 1;
+		margin: 20px auto;
+		background-color: #fff;
+  }
+    .window-title {
+		line-height: 20px;
+		font-size: 13px;
+		text-align: center;
+    }
+    .window-close {
+		position: absolute;
+		top: 0;
+		right: 0;
+		display: block;
+		width: 20px;
+		height: 20px;
+		background: url("close.png") center;
+    }
+    .window-content {
+		padding: 5px 10px;
+    }
+      .window-content p {
+			line-height: 16px;
+			font-size: 14px;
+      }
\ No newline at end of file
diff --git a/media/js/wnd/wnd.js b/media/js/wnd/wnd.js
new file mode 100644
index 0000000000000000000000000000000000000000..302449b2cebed1fa85cdf54a5acfeabb529ec043
--- /dev/null
+++ b/media/js/wnd/wnd.js
@@ -0,0 +1,40 @@
+wnd = {}
+wnd.$ = {}
+
+wnd.isShow = false;
+wnd.show = function () {
+  wnd.isShow = true;
+  wnd.scroll = $(window).scrollTop();
+  wnd.$.page.css("position", "fixed");
+  wnd.$.page.css("margin-top", -wnd.scroll);
+  wnd.$.window.css("display", "block");
+}
+wnd.hide = function () {
+  wnd.isShow = false;
+  wnd.$.page.css("position", "static");
+  wnd.$.page.css("margin-top", 0);
+  $(window).scrollTop(wnd.scroll);
+  wnd.$.window.css("display", "none");
+}
+
+wnd.open = function(data) {
+  wnd.$.title.html(data.title || '');
+  wnd.$.content.html(data.content || '');
+  wnd.$.block.width(data.width || 600)
+  
+  wnd.show();
+  
+  wnd.$.window.css("min-width", wnd.$.block.width() + 40);
+  wnd.$.window.css("min-height", wnd.$.block.height() + 40);
+}
+wnd.close = wnd.hide;
+
+$(function() {
+  // Блок окна
+  $("body").append("<div class=\"window\"><div class=\"window-shadow\" onclick=\"wnd.close()\"></div><div class=\"window-block\"><div class=\"window-title\"></div><a href=\"javascript:wnd.close()\" class=\"window-close\"></a><div class=\"window-content\"></div></div></div>");
+  wnd.$.page = $(".page");
+  wnd.$.window = $(".window");
+  wnd.$.block = $(".window-block");
+  wnd.$.title = $(".window-title");
+  wnd.$.content = $(".window-content");
+});
\ No newline at end of file