diff --git a/~dev_rating/media/js/discipline/edit.js b/~dev_rating/media/js/discipline/edit.js
deleted file mode 100644
index 467a11266419030e7c253dc2efd24b37d5d0fd31..0000000000000000000000000000000000000000
--- a/~dev_rating/media/js/discipline/edit.js
+++ /dev/null
@@ -1,1074 +0,0 @@
-var $ = jQuery;
-$(function() {
-	var URL = (window.location.href).split('/');
-	var DisciplineID = URL[URL.length - 1];
-	
-	// Шаблон мероприятия
-	function GetSubModuleTmp(){
-		return '\
-		<div class="subModule">\
-			<div class="name">\
-				<input type="text" class="inputName SubmoduleName" value="" placeholder="Наименование мероприятия">\
-			</div>\
-			<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 icon delete"></div>\
-				<div class="downSubModule icon down"></div>\
-				<div class="upSubModule icon up"></div>\
-			</div>\
-		</div>\
-		';
-	}
-
-	// Шаблон модуля
-	function GetModuleTmp() {
-		return '\
-		<div class="moduleGroup">\
-			<div class="moduleHead">\
-				<div class="name">\
-					<input type="text" class="inputName ModuleName" value="" placeholder="Наименование модуля">\
-				</div>\
-				<div class="currentControl">0</div>\
-				<div class="landmarkControl">0</div>\
-				<div class="actions">\
-					<div class="deleteModule icon delete"></div>\
-					<div class="downModule icon down"></div>\
-					<div class="upModule icon up"></div>\
-				</div>\
-			</div>\
-			<div class="subModules">\
-			'+GetSubModuleTmp()+'\
-			</div>\
-			<div class="addSubModule">Добавить мероприятие</div>\
-		</div>'
-	};
-
-	// Подсчет текущего контроля
-	function CountCurrentControl(subModulesDiv){
-		var maxCredits = 0;
-		$('.inputCurrentControl', subModulesDiv).each(function(){
-			var credit = parseInt($(this).val());
-			maxCredits = maxCredits + ((isNum(credit)) ? credit : 0);
-		});
-		subModulesDiv.prev().children('.currentControl').text(maxCredits);
-	}
-	// Подсчет рубежного контроля
-	function CountLandmarkControl(subModulesDiv){
-		var maxCredits = 0;
-		$('.inputLandmarkControl', subModulesDiv).each(function(){
-			var credit = parseInt($(this).val());
-			maxCredits = maxCredits + ((isNum(credit)) ? credit : 0); 
-		});
-		subModulesDiv.prev().children('.landmarkControl').text(maxCredits);
-	}
-	
-	// Изменение типа подмодуля
-	function ChangeSubmoduleControlType(ID, ControlType){
-		$.post(
-			URLdir + 'handler/map/ChangeSubmoduleControlType',
-			{
-				'SubmoduleID': ID,
-				'ControlType': ControlType
-			},
-			function(data){
-				data = $.parseJSON(data);
-				//if(data.success === true)
-				//	EventInspector_ShowMsg('Форма контроля изменена', 'success');
-				//else EventInspector_ShowMsg('Ошибка при изменение формы контроля', 'error');
-			}
-		);
-	}
-	
-	// Изменение макс. балла подмодуля
-	function ChangeSubmoduleMaxRate(ID, NewMaxRate) {
-		$.post(
-			URLdir + 'handler/map/ChangeSubmoduleMaxRate',
-			{
-				'SubmoduleID': ID,
-				'MaxRate': NewMaxRate
-			},
-			function(data){
-				data = $.parseJSON(data);
-				if(data.success === true)
-					EventInspector_ShowMsg('Max балл мероприятия изменен', 'success');
-				else EventInspector_ShowMsg('Ошибка при изменение max балла', 'error');
-			}
-		);
-	}
-	
-	// Установить новый max балл
-	function SetNewRateAndControl(thisObj, OldMaxRate) {
-		// DIV с мероприятиями для данного модуля
-		var subModulesDiv = thisObj.parent().parent().parent();
-		// ID мероприятия
-		var ID = thisObj.parent('div').parent('div').attr('id');
-		var NewMaxRate = 0;
-		if (thisObj.val() != '')
-			NewMaxRate = parseInt(thisObj.val());
-		
-		// Ограничение 100 баллов
-		var MaxSumRate = 100;
-		if ($('div').is('.ExamModule')) MaxSumRate = 60;
-		
-		var currentControl = 0;
-		$('.moduleHead .currentControl').each(function(){
-			currentControl += parseInt($(this).text());
-		});
-		var landmarkControl = 0;
-		$('.moduleHead .landmarkControl').each(function(){
-			landmarkControl += parseInt($(this).text());
-		});
-		var subtract = 0;
-		if (thisObj.parent().attr('class').indexOf('landmarkControl') + 1 > 0)
-			subtract = parseInt(thisObj.parent().siblings('.currentControl').children().val());
-		if (thisObj.parent().attr('class').indexOf('currentControl') + 1 > 0)
-			subtract = parseInt(thisObj.parent().siblings('.landmarkControl').children().val());
-		if (currentControl + landmarkControl + NewMaxRate - subtract - OldMaxRate > MaxSumRate) {
-			if (NewMaxRate == 0)
-				thisObj.val('0');
-			else {
-				EventInspector_ShowMsg('Сумма баллов превышает максимум', 'error');
-				thisObj.val(OldMaxRate);
-				return 0;
-			}
-		}
-		
-		// Меняем max балл
-		if (NewMaxRate != OldMaxRate) {
-			ChangeSubmoduleMaxRate(ID, NewMaxRate);
-			
-			// Счетчик баллов
-			var RateIndicarot = currentControl + landmarkControl + NewMaxRate - subtract - OldMaxRate;
-			if ($('div').is('.ExamModule')) RateIndicarot += 40;
-			$('.RateIndicatorDIV .RateIndicator').html(RateIndicarot);
-			if ($('div').is('.BonusModule'))
-				$('.RateIndicatorDIV .RateIndicator').append(' + 10 бонусных баллов');
-			
-			// Меняем тип
-			ControlType = 'CurrentControl'; // По-умолчанию 
-			if ((thisObj.parent().attr('class')).indexOf('landmarkControl') + 1 > 0)
-				ControlType = 'LandmarkControl';	
-			if (NewMaxRate > 0)
-				ChangeSubmoduleControlType(ID, ControlType);
-			
-			if (ControlType == 'CurrentControl')
-				thisObj.parent().parent().find('.landmarkControl').children('.inputLandmarkControl').val('0');
-				
-			if (ControlType == 'LandmarkControl')
-				thisObj.parent().parent().find('.currentControl').children('.inputCurrentControl').val('0');
-		}
-		
-		// Подсчет текущего и рубежного контроля после изменений
-		CountCurrentControl(subModulesDiv);
-		CountLandmarkControl(subModulesDiv);	
-	}
-	
-	// Поменять местами два модуля
-	function SwapModuleOrder(ModuleID1, ModuleID2) {
-		$.post(
-			URLdir + 'handler/map/SwapModuleOrder',
-			{
-				'ModuleID1': ModuleID1,
-				'ModuleID2': ModuleID2
-			},
-			function(data){
-				data = $.parseJSON(data);
-				if(data.success === true)
-					EventInspector_ShowMsg('Модули поменяли порядок', 'success');
-				else EventInspector_ShowMsg('Ошибка при изменение порядка модулей', 'error');
-			}
-		);
-	}
-	
-	// Поменять местами два мероприятия
-	function SwapSubmoduleOrder(SubmoduleID1, SubmoduleID2) {
-		$.post(
-			URLdir + 'handler/map/SwapSubmoduleOrder',
-			{
-				'SubmoduleID1': SubmoduleID1,
-				'SubmoduleID2': SubmoduleID2
-			},
-			function(data){
-				data = $.parseJSON(data);
-				if(data.success === true)
-					EventInspector_ShowMsg('Мероприятия поменяли порядок', 'success');
-				else EventInspector_ShowMsg('Ошибка при изменение порядка мероприятий', 'error');
-			}
-		);
-	}
-	
-//-------------------------------------------------------------------------------------------------------------------------------------------------
-	
-// ---- Изменения базовых параметров дисциплины ---
-	
-	// Изменение предмета
-	$('.SelectSubject').change(function(){
-		$.post(
-			URLdir + 'handler/map/ChangeDisciplineSubject',
-			{
-				'DisciplineID': DisciplineID,
-				'SubjectID': $('.SelectSubject').val()
-			},
-			function(data) {
-				data = $.parseJSON(data);
-				if(data.success === true)
-					EventInspector_ShowMsg('Предмет изменен', 'success');
-				else EventInspector_ShowMsg('Ошибка: Изменение предмета', 'error');
-			}
-		);
-	});
-	
-	// Изменение курса
-	$('.SelectDisGrade').change(function(){ // SelectGrade совпадает с другим, поэтому SelectDisGrade
- 		$.post(
-			URLdir + 'handler/map/ChangeDisciplineGrade',
-			{
-				'DisciplineID': DisciplineID,
-				'GradeID': $('.SelectDisGrade').val()
-			},
-			function(data) {
-				data = $.parseJSON(data);
-				if(data.success === true)
-					EventInspector_ShowMsg('Курс изменен', 'success');
-				else EventInspector_ShowMsg('Ошибка: Изменение курса', 'error');
-			}
-		);
-	});
-	
-	// Бонусные баллы
-	$('.BonusRate').change(function(){
-		$.post(
-			URLdir + 'handler/map/ChangeStatusBonusModule',
-			{
-				'DisciplineID': DisciplineID,
-				'BonusRate': $(".BonusRate").prop("checked")
-			},
-			function(data) {
-				data = $.parseJSON(data);
-				if(data.success === true) {
-					if (data.action == 'add')
-						EventInspector_ShowMsg('Бонусные баллы добавлены', 'success');
-					if (data.action == 'delete')
-						EventInspector_ShowMsg('Бонусные баллы удалены', 'success');
-				}
-				else EventInspector_ShowMsg('Ошибка: Бонусные баллы', 'error');
-			}
-		);
-	});
-	
-	// Изменение контроля
-	$('.ExamType').change(function(){
-		$.post(
-			URLdir + 'handler/map/ChangeDisciplineControl',
-			{
-				'DisciplineID': DisciplineID,
-				'Control': $('input:radio[name=ExamType]:checked').val()
-			},
-			function(data) {
-				data = $.parseJSON(data);
-				if(data.success === true)
-					EventInspector_ShowMsg('Форма контроля изменена', 'success');
-				else EventInspector_ShowMsg('Ошибка: Изменение формы контроля', 'error');
-			}
-		);
-	});
-	
-	// Изменение лекционных часов
-	$('.InputLectionCount').focusout(function(){
-		$.post(
-			URLdir + 'handler/map/ChangeDisciplineHours',
-			{
-				'DisciplineID': DisciplineID,
-				'Hours': $('.InputLectionCount').val(),
-				'Type': '1'
-			},
-			function(data) {
-				data = $.parseJSON(data);
-				if(data.success === true)
-					EventInspector_ShowMsg('Лекционные часы изменен', 'success');
-				else EventInspector_ShowMsg('Ошибка: Изменение лекционных часов', 'error');
-			}
-		);
-	});
-	
-	// Изменение практических часов
-	$('.InputPracticeCount').focusout(function(){
-		$.post(
-			URLdir + 'handler/map/ChangeDisciplineHours',
-			{
-				'DisciplineID': DisciplineID,
-				'Hours': $('.InputPracticeCount').val(),
-				'Type': '0'
-			},
-			function(data) {
-				data = $.parseJSON(data);
-				if(data.success === true)
-					EventInspector_ShowMsg('Практические часы изменен', 'success');
-				else EventInspector_ShowMsg('Ошибка: Изменение практических часов', 'error');
-			}
-		);
-	});
-	
-	/*
-    $(".ChangeDiscipline").click(function(){
-		$.post(
-			URLdir + '/handler/map/ChangeDiscipline',
-			{
-				'DisciplineID': DisciplineID,
-				'Grade': $('.SelectGrade').val(),
-				'SubjectID': $('.SelectSubject').val(),
-				'ExamType': $('input:radio[name=ExamType]:checked').val(),
-				'LectionCount': $('.InputLectionCount').val(),
-				'PracticeCount': $('.InputPracticeCount').val(),
-				'FacultyID': $('.SelectFaculty').val()
-			},
-			function(data){
-				data = $.parseJSON(data);
-				if(data.success === true)
-					EventInspector_ShowMsg('Базовые настройки УКД изменены', 'success');
-				else EventInspector_ShowMsg('Ошибка: Базовые настройки УКД', 'error');
-			}
-		);
-        return false
-    });
-	*/
-	
-	// Переместить вверх МОДУЛЬ
-    $(".moduleList").on('click', '.upModule', function(){
-        var parentDIV = $(this).parent('div').parent('div').parent('div');
-        parentDIV.insertBefore(parentDIV.prev('.moduleGroup'));
-		
-		var ModuleID = parentDIV.attr('id');
-		// Для того, который СТАЛ находится ниже
-		var nextModuleID = parentDIV.next('div').attr('id');
-		SwapModuleOrder(ModuleID, nextModuleID);
-		
-        return false
-    });
-	
-	// Переместить вниз МОДУЛЬ
-    $(".moduleList").on('click', '.downModule', function(){
-        var parentDIV = $(this).parent('div').parent('div').parent('div');
-		if ($('div').is(parentDIV.next('.moduleGroup'))) {
-			parentDIV.insertAfter(parentDIV.next('.moduleGroup'));
-			
-			var ModuleID = parentDIV.attr('id');
-			// Для того, который СТАЛ находится выше
-			var prevModuleID = parentDIV.prev('div').attr('id');
-			SwapModuleOrder(ModuleID, prevModuleID);
-		}
-		
-        return false
-    });
-	
-	// Переместить вверх мероприятие
-    $(".moduleList").on('click', '.upSubModule', function(){
-        var parentDIV = $(this).parent('div').parent('div');
-        parentDIV.insertBefore(parentDIV.prev());
-		
-		var SubmoduleID = parentDIV.attr('id');
-		var nextSubmoduleID = parentDIV.next('div').attr('id');
-		SwapSubmoduleOrder(SubmoduleID, nextSubmoduleID);
-		
-        return false
-    });
-	
-	// Переместить вниз мероприятие
-    $(".moduleList").on('click', '.downSubModule', function(){
-        var parentDIV = $(this).parent('div').parent('div');
-		if ($('div').is(parentDIV.next('.subModule'))) {
-			parentDIV.insertAfter(parentDIV.next());
-			
-			var SubmoduleID = parentDIV.attr('id');
-			var prevSubmoduleID = parentDIV.prev('div').attr('id');
-			SwapSubmoduleOrder(SubmoduleID, prevSubmoduleID);
-		}
-		
-        return false
-    });
-	
-	// Добавить модуль
-	$('.addModule').click(function(){
-		var OrderNum = $('.moduleGroup', '.moduleList').last().index('.moduleGroup') + 2;
-		$.post(
-			URLdir + 'handler/map/AddModule',
-			{
-				'DisciplineID': DisciplineID,
-			//	'OrderNum': OrderNum
-			},
-			function(data){
-				data = $.parseJSON(data);
-				if(data.success === true) {
-					if ($('div').is('.ExamModule'))
-						$('.ExamModule').before(GetModuleTmp());
-					else
-						$('.moduleList').append(GetModuleTmp());
-					// К добавленному модулю добавляем ID
-					var thisModuleDIV = $('.moduleGroup').eq(OrderNum - 1);
-					thisModuleDIV.attr('id', data.ModuleID);
-					// К добавленному в модуль мероприятию добавляем ID
-					thisModuleDIV.children('.subModules').children('.subModule').eq(0).attr('id', data.SubmoduleID);
-					EventInspector_ShowMsg('Модуль добавлен', 'success');
-				} else EventInspector_ShowMsg('Ошибка при добавление модуля', 'error');
-			}
-		);
-		
-		if ($('.empty').css('display') == 'block')
-			$('.empty').css('display', 'none');
-		
-	});
-	
-	/*
-	// Добавить мероприятие (старая кнопка)
-	$('.moduleList').on('click', '.addSubModule', function(){
-		$(this).parent().parent().next().append(GetSubModuleTmp());
-		var ModuleID = $(this).parent('div').parent('div').parent('div').attr('id');
-		var SubmodulesDIV = $(this).parent().parent().next('.subModules');
-		var OrderNum = SubmodulesDIV.children('.subModule').last().index() + 1;
-		$.post(
-			URLdir + '/handler/map/AddSubmodule',
-			{
-				'ModuleID': ModuleID,
-				'OrderNum': OrderNum
-			},
-			function(data){
-				data = $.parseJSON(data);
-				if(data.success === true) {
-					// К добавленному мероприятию добавляем ID
-					SubmodulesDIV.children('.subModule').eq(OrderNum - 1).attr('id', data.SubmoduleID);
-					EventInspector_ShowMsg('Мероприятие добавлено', 'success');
-				} else EventInspector_ShowMsg('Ошибка при добавление мероприятия', 'error');
-			}
-		);
-	});
-	*/
-	
-	// Добавить мероприятие
-	$('.moduleList').on('click', '.addSubModule', function(){
-		var ModuleID = $(this).parent('div').attr('id');
-		var SubmodulesDIV = $(this).siblings('.subModules');
-		var OrderNum = SubmodulesDIV.children('.subModule').last().index() + 2;
-		$.post(
-			URLdir + 'handler/map/AddSubmodule',
-			{
-				'ModuleID': ModuleID
-				//'OrderNum': OrderNum
-			},
-			function(data){
-				data = $.parseJSON(data);
-				if(data.success === true) {
-					// К добавленному мероприятию добавляем ID
-					SubmodulesDIV.append(GetSubModuleTmp());
-					SubmodulesDIV.children('.subModule').eq(OrderNum - 1).attr('id', data.SubmoduleID);
-					EventInspector_ShowMsg('Мероприятие добавлено', 'success');
-				} else EventInspector_ShowMsg('Ошибка при добавление мероприятия', 'error');
-			}
-		);
-	});
-	
-	// Удалить модуль
-	$('.moduleList').on('click', '.deleteModule', function(){
-		$(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 thisObj = $(this);
-		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(){
-			JSONSubmodules += $(this).attr('id') + ',';
-		});
-		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(
-			URLdir + 'handler/map/DeleteModule',
-			{
-				'ModuleID': $(this).parent('div').parent('div').parent('div').attr('id'),
-				'SubmodulesID': JSONSubmodules,
-				'CurrentModuleOrder': CurrentModuleOrder,
-				'ChangeOrderModulesID': ChangeOrderModulesID
-			},
-			function(data){
-				data = $.parseJSON(data);
-				if(data.success === true) {
-					thisObj.parent('div').parent('div').parent('div').remove();
-					EventInspector_ShowMsg('Модуль удален', 'success');
-				}
-				else EventInspector_ShowMsg('Ошибка при удаление модуля', 'error');
-			}
-		);
-	});
-	
-	// Удалить мероприятие
-	$('.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 thisObj = $(this);
-		var subModulesDiv = $(this).parent().parent().parent();
-		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() + ']';
-		ChangeSubmoduleMaxRate($(this).parent('div').parent('div').attr('id'), 0);
-		//
-		$.post(
-			URLdir + 'handler/map/DeleteSubmodule',
-			{
-				'SubmoduleID': $(this).parent('div').parent('div').attr('id'),
-				'CurrentSubmoduleOrder': CurrentSubmoduleOrder,
-				'ChangeOrderSubmodulesID': ChangeOrderSubmodulesID
-			},
-			function(data){
-				data = $.parseJSON(data);
-				if(data.success === true) {
-					var sub = thisObj.parent('div').parent('div');
-					var mod = sub.parent('div').parent('div').find('.moduleHead');
-					// get old submodule values
-					var dif1 = sub.find('.currentControl').find('input').val();
-					var dif2 = sub.find('.landmarkControl').find('input').val();
-					
-					// change module header
-					var old = mod.find('.currentControl').html();
-					mod.children('.currentControl').html(old - dif1);
-
-					old = mod.find('.landmarkControl').html();
-					mod.children('.landmarkControl').html(old - dif2);
-
-					// change max rate
-					old = $('.RateIndicator').html(); 
-					$('.RateIndicator').html(old - dif1 - dif2);
-					thisObj.parent('div').parent('div').remove();
-
-					EventInspector_ShowMsg('Мероприятие удалено', 'success');
-				}
-				else EventInspector_ShowMsg('Ошибка при удаление мероприятия', 'error');
-			}
-		);
-	});
-	
-	// Отмена удаления модулей/мероприятий
-	$('.moduleList').on('click', '.cancel ', function(){
-		$(this).parent().parent().children('.actions').css('display', 'block');
-		$(this).parent().remove();
-	});
-	
-	// Поменять название модуля
-	var ModuleName;
-	$('.moduleList').on('focusin', '.ModuleName', function(){
-		ModuleName = $(this).val();
-	});
-	$('.moduleList').on('focusout', '.ModuleName', function(){
-		var NewModuleName = $(this).val();
-		if (NewModuleName != '' && ModuleName != NewModuleName) {
-			var ID = $(this).parent('div').parent('div').parent('div').attr('id');
-			$.post(
-				URLdir + 'handler/map/ChangeModuleName',
-				{
-					'ModuleID': ID,
-					'ModuleName': NewModuleName
-				},
-				function(data){
-					data = $.parseJSON(data);
-					if(data.success === true)
-						EventInspector_ShowMsg('Имя модуля изменено', 'success');
-					else EventInspector_ShowMsg('Ошибка при изменение имени модуля', 'error');
-				}
-			);
-		}
-	});
-	$('.moduleList').on('keydown', '.ModuleName', function(e){
-		if(e.keyCode==13){
-			$('.ModuleName').trigger('focusout');
-		}
-	});
-	
-	// Поменять название мероприятие
-	var SubmoduleName;
-	$('.moduleList').on('focusin', '.SubmoduleName', function(){
-		SubmoduleName = $(this).val();
-	});
-	$('.moduleList').on('focusout', '.SubmoduleName', function(){
-		var NewSubmoduleName = $(this).val();
-		if (NewSubmoduleName != '' && SubmoduleName != NewSubmoduleName) {
-			var ID = $(this).parent('div').parent('div').attr('id');
-			$.post(
-				URLdir + 'handler/map/ChangeSubmoduleName',
-				{
-					'SubmoduleID': ID,
-					'SubmoduleName': NewSubmoduleName
-				},
-				function(data){
-					data = $.parseJSON(data);
-					if(data.success === true)
-						EventInspector_ShowMsg('Имя мероприятия изменено', 'success');
-					else EventInspector_ShowMsg('Ошибка при изменение имени мероприятия', 'error');
-				}
-			);
-		}
-	});
-	$('.moduleList').on('keydown', '.SubmoduleName', function(e){
-		if(e.keyCode==13){
-			$('.SubmoduleName').trigger('focusout');
-		}
-	});
-	
-	// При записи в input текущий контроль
-	// При фокусе
-	var OldMaxRate = 0;
-	$('.moduleList').on('focusin', '.inputCurrentControl', function(){
-		OldMaxRate = $(this).val();
-	});
-	// При потери фокуса
-	$('.moduleList').on('focusout', '.inputCurrentControl', function(){
-		SetNewRateAndControl($(this), OldMaxRate);
-	});
-	
-	// При записи в input рубежный контроль
-	// При фокусе
-	var OldMaxRate = 0;
-	$('.moduleList').on('focusin', '.inputLandmarkControl', function(){
-		OldMaxRate = $(this).val();
-	});
-	// При потери фокуса
-	$('.moduleList').on('focusout', '.inputLandmarkControl', function(){
-		SetNewRateAndControl($(this), OldMaxRate);
-	});
-	
-	// В inputCredit (где баллы вводить) разрешаем вводить только цифры
-	$(".moduleList").on('keydown', '.inputCredit', function(event) {
-        KeyDownOnlyNumber(event);
-    });
-	
-// ------ Прикрипление студентов/групп/преподавателей --
-
-var FacultyID = $('.HiddenInputFacultyID').val(); // Факультет, к которой привязана дисциплина
-$('.HiddenInputFacultyID').remove(); // Тут даже Шерлок Холмс бессилен
-
-function BindGroup(id, StudyGroupName){
-	return '\
-	<div class="AttachedGroup" id="'+ id +'">\
-		<div class="StudyGroupInfo">'+ StudyGroupName +'</div>\
-		<div class="UnbindGroup">Отсоединить группу</div>\
-	</div>';
-}
-
-// Прикрепить группу
-$('.AttachGroupButton').click(function(){
-	var StudyGroupID = $('.SelectStudyGroup').val();
-	var StudyGroupName = $(".SelectStudyGroup option:selected").text();
-	$.post(
-		URLdir + 'handler/map/BindGroup',
-		{
-			'StudyGroupID': StudyGroupID,
-			'DisciplineID': DisciplineID
-		},
-		function(data){
-			data = $.parseJSON(data);
-			if(data.success === true) {
-				$('.AttachedGroupsList').append(BindGroup(StudyGroupID, StudyGroupName));
-				EventInspector_ShowMsg('Группа добавлена', 'success');
-			}
-			else EventInspector_ShowMsg('Ошибка при добавление группы', 'error');
-		}
-	);
-});
-
-// Отсоединить группу
-$('.AttachedGroupsList').on('click', '.UnbindGroup', function(){
-	var StudyGroupID = $(this).parent().attr('id');
-	var GroupDIV = $(this).parent();
-	$.post(
-		URLdir + 'handler/map/UnbindGroup',
-		{
-			'StudyGroupID': StudyGroupID,
-			'DisciplineID': DisciplineID
-		},
-		function(data){
-			data = $.parseJSON(data);
-			if(data.success === true) {
-				GroupDIV.remove();
-				EventInspector_ShowMsg('Группа отсоединена', 'success');
-			}
-			else EventInspector_ShowMsg('Ошибка при отсоединение группы', 'error');
-		}
-	);
-});
-
-// Поиск студентов
-function AddStudent(ID, Name, From, GroupID, Bind){
-	if (Bind == true)
-		var Status = 'StatusBind';
-	else 
-		var Status = 'StatusUnbind';
-	var r = '\
-		<div id="'+ ID +'" class="Student '+ Status +' '+ GroupID +'">\
-			<span class="Name">'+ Name +'</span> \
-			<span class="From">'+ From +'</span>';
-	if (Bind == true)
-		r +='<span class="action Action_UnbindStudent">Отсоединить студента</span>';
-	else
-		r +='<span class="action Action_BindStudent">Прикрепить студента</span>';
-	r +=
-		'</div>';
-	return r;
-}
-
-function AddStudentInSearchBox(ID, Name, From, GroupID, Bind){
-	if (Bind == true)
-		var Status = 'StatusBind';
-	else 
-		var Status = 'StatusUnbind';
-	var r = '\
-		<div id="'+ ID +'" class="Student '+ Status +' '+ GroupID +'">\
-			<span class="Name">'+ Name +'</span> \
-			<span class="From">'+ From +'</span>';
-	if (Bind == true)
-		r +='<span class="action Action_UnbindStudent">Отсоединить студента</span>';
-	else
-		r +='<span class="action Action_BindStudentFromSearch">Прикрепить студента</span>';
-	r +=
-		'</div>';
-	return r;
-}
-
-// Поиск студентов
-function CallSearchStudents() {
-	var Name = [];
-	if ($('.InputStudentName').val().length > 0)
-		Name = ($('.InputStudentName').val()).split(' ');
-	$.post(
-		URLdir + 'handler/map/SearchStudents',
-		{
-			'GradeID': $('.SelectGrade').val(),
-			'GroupN': $('.SelectStudyGroup').val(),
-			'FacultyID': FacultyID,
-			'Last': Name[0],
-			'First': Name[1],
-			'Second': Name[2],
-			'DisciplineID': DisciplineID
-		},
-		function(data){
-			SearchResult = $.parseJSON(data);
-			$('.SearchResult').html('');
-			if (parseInt(SearchResult.Count) > 0)
-				for(var i = 1; i <= parseInt(SearchResult.Count); i++) {
-				var ID = SearchResult[i].StudentID;
-				var Name = SearchResult[i].StudentLast +' '+  SearchResult[i].StudentFirst +' '+ SearchResult[i].StudentSecond;
-				var From = 'Курс ' + SearchResult[i].GroupGrade + ', Группа ' + SearchResult[i].GroupNum;
-				var GroupID = 'GroupID_'+SearchResult[i].GroupID
-				$('.SearchResult').append(AddStudentInSearchBox(ID, Name, From, GroupID, false));
-				}
-			else
-				$('.SearchResult').html('<p class="notification">Нет результатов... Возможно, студенты, соответствующие критериям поиска, уже прикреплены.</p>');
-		}
-	);	
-}
-
-$('.SelectGrade').change(function(){
-	$.post(
-		URLdir + 'handler/map/GetStudyGroups',
-		{
-			'FacultyID': FacultyID,
-			'GradeID': $('.SelectGrade').val()
-		},
-		function(data){
-			data = $.parseJSON(data);
-			if (data != null && data != undefined) {
-				$('.SelectStudyGroup').html('<option value="0">Выберите группу:</option>');
-				for (i = 1; i <= data.count; i++) {
-					$('.SelectStudyGroup').append('<option value="'+ data[i].GroupID +'">Группа '+ data[i].GroupNum +' - '+ data[i].SpecName +'</option>');
-				}
-				
-				if (data.count <= 0)
-					$('.SelectStudyGroup').append('<option value="0">Нет групп</option>');		
-			}
-			CallSearchStudents();
-		}
-	);
-});
-$('.SelectStudyGroup').change(function(){
-	CallSearchStudents();
-});
-$('.InputStudentName').focusout(function(){
-	CallSearchStudents();
-});
-$('.InputStudentName').keydown(function(e){
-	if(e.keyCode==13){
-		$('.InputStudentName').focusout('focusout');
-		$(this).blur();
-	}
-});
-
-$('.SelectGrade').focusout(function(){
-	$('.SelectGrade').trigger('change');
-});
-$('.SelectStudyGroup').focusout(function(){
-	$('.SelectStudyGroup').trigger('change');
-});
-
-// Если студент из поиска
-function BindStudentFromSearch(thisObj) {
-	var reg = /GroupID_\d+/;
-	var GroupID = ''+reg.exec(thisObj.parent().attr('class'));
-	var ID = thisObj.parent().attr('id');
-	var Name = thisObj.siblings('.Name').text();
-	var From = thisObj.siblings('.From').text();
-	if ($('div').is('.GroupContainer.'+GroupID) === false) {
-		$('.AttachedStudentsList').append('\
-			<div class="GradeAndGroupTitle ActionShowHideGroupContainer">\
-			<span class="info">'+From+'</span>\
-			<span class="Action">Открыть список ▼</span>\
-		</div>');
-		$('.AttachedStudentsList').append('<div class="GroupContainer '+GroupID+'" style="display: block"> </div>');
-	}
-	$('.GroupContainer.'+GroupID).append(AddStudent(ID, Name, From, GroupID, true));
-	thisObj.parent().remove();
-}
-
-// Если студент из основного потока
-function BindBackStudent(thisObj) {
-	thisObj
-		.removeClass('Action_BindStudent')
-		.addClass('Action_UnbindStudent')
-		.text('Отсоединить студента');
-	thisObj
-		.parent()
-		.removeClass('StatusUnbind')
-		.addClass('StatusBind');
-}
-
-// Прикрепить студента 
-$('.StudentsList').on('click', '.Action_BindStudent', function(){
-	var thisObj = $(this);
-	var ID = $(this).parent().attr('id');
-	$.post(
-		URLdir + 'handler/map/BindStudent',
-		{
-			'StudentID': ID,
-			'DisciplineID': DisciplineID
-		},
-		function(data){
-			data = $.parseJSON(data);
-			if(data.success === true) {
-				BindBackStudent(thisObj);
-				EventInspector_ShowMsg('Студент добавлен', 'success');
-			}
-			else EventInspector_ShowMsg('Ошибка при добавление студента', 'error');
-		}
-	);
-});
-
-// Прикрепить студента из поиска
-$('.StudentsList').on('click', '.Action_BindStudentFromSearch', function(){
-	var thisObj = $(this);
-	var ID = $(this).parent().attr('id');
-	$.post(
-		URLdir + 'handler/map/BindStudent',
-		{
-			'StudentID': ID,
-			'DisciplineID': DisciplineID
-		},
-		function(data){
-			data = $.parseJSON(data);
-			if(data.success === true) {
-				BindStudentFromSearch(thisObj);
-				EventInspector_ShowMsg('Студент добавлен', 'success');
-			}
-			else EventInspector_ShowMsg('Ошибка при добавление студента', 'error');
-		}
-	);
-});
-
-// Отсоединить студента 
-$('.StudentsList').on('click', '.Action_UnbindStudent', function(){
-	$(this)
-		.removeClass('Action_UnbindStudent')
-		.addClass('Action_BindStudent')
-		.text('Прикрепить студента');
-	$(this)
-		.parent()
-		.removeClass('StatusBind')
-		.addClass('StatusUnbind');
-	var ID = $(this).parent().attr('id');
-	$.post(
-		URLdir + 'handler/map/UnbindStudent',
-		{
-			'StudentID': ID,
-			'DisciplineID': DisciplineID
-		},
-		function(data){
-			data = $.parseJSON(data);
-			if(data.success === true)
-				EventInspector_ShowMsg('Студент отсоединен', 'success');
-			else EventInspector_ShowMsg('Ошибка при отсоединение студента', 'error');
-		}
-	);
-});
-
-$('.StudentsList').on('click', '.ActionShowHideGroupContainer', function(){
-	if ($(this).next('.GroupContainer').css('display') == 'none') {
-		$(this).children('.Action').text('Скрыть список ▲');
-		$(this).next('.GroupContainer').show();
-	}
-	else {
-		$(this).children('.Action').text('Открыть список ▼');
-		$(this).next('.GroupContainer').hide();
-	}
-});
-
-// Добавить преподавателя
-function AddTeacher(ID, Name, Action){
-	$r = '\
-		<div class="Teacher" id="'+ ID +'">\
-			<div class="Name">'+ Name +'</div>';
-	if (Action == 'Unbind')
-		$r += '<div class="Action_UnbindTeacher Action">Отсоединить</div>';
-	if (Action == 'Bind')
-		$r += '<div class="Action_BindTeacher Action">Присоединить</div>';
-	$r += '\
-		</div>';
-	return $r;
-}
-
-
-// Поиск преподавателей
-function CallSearchTeachers(){
-	var Name = [];
-	Name = ($('.InputTeacherName ').val()).split(' ');
-	$.post(
-		URLdir + 'handler/map/SearchTeachers',
-		{
-			'FacultyID': $('.SelectFaculty').val(),
-			'DepartmentID': $('.SelectDepartment').val(),
-			'Last': Name[0],
-			'First': Name[1],
-			'Second': Name[2],
-			'DisciplineID': DisciplineID
-		},
-		function(data){
-			SearchResult = $.parseJSON(data);
-			if (SearchResult != null && SearchResult != undefined) {
-				$('.SearchResult').html('');
-				if (parseInt(SearchResult.Count) > 0)
-					for(var i = 1; i <= parseInt(SearchResult.Count); i++) {
-						var Name = SearchResult[i].TeacherLast + ' ' + SearchResult[i].TeacherFirst + ' ' + SearchResult[i].TeacherSecond;
-						$('.SearchResult').append(AddTeacher(SearchResult[i].TeacherID, Name, 'Bind'));
-					}
-				else
-					$('.SearchResult').html('<p class="notification">Нет результатов... Возможно, преподаватели, соответствующие критериям поиска, уже прикреплены.</p>');
-			}
-		}
-	);
-}
-
-// Выборка кафедр
-$('.SelectFaculty').change(function(){
-	$.post(
-		URLdir + 'handler/map/GetDepartments',
-		{
-			'FacultyID': $('.SelectFaculty').val()
-		},
-		function(data){
-			data = $.parseJSON(data);
-			if (data != null && data != undefined) {
-				$('.SelectDepartment').html('<option value="0">Выберите кафедру (не обязательно)</option>');
-				for (i = 1; i <= data.count; i++) {
-					$('.SelectDepartment').append('<option value="'+ data[i].DepID +'">'+ data[i].DepName +'</option>');
-				}
-				
-				if (data.count <= 0)
-					$('.SelectDepartment').append('<option value="0">Нет кафедр</option>');		
-			}
-			CallSearchTeachers();
-		}
-	);
-});
-
-$('.SelectDepartment ').change(function(){
-	CallSearchTeachers();
-});
-$('.InputTeacherName').focusout(function(){
-	CallSearchTeachers();
-});
-$('.InputTeacherName').keydown(function(e){
-	if(e.keyCode==13){
-		$('.InputTeacherName').focusout('focusout');
-		$(this).blur();
-	}
-});
-
-$('.SelectFaculty').focusout(function(){
-	$('.SelectFaculty').trigger('change');
-});
-$('.SelectDepartment').focusout(function(){
-	$('.SelectDepartment').trigger('change');
-});
-
-// Конец поиска преподавателей
-
-// Отсоединить преподавателя
-$('.TeachersList').on('click', '.Action_UnbindTeacher', function(){
-	$(this)
-		.parent()
-		.remove();
-	var ID = $(this).parent().attr('id');
-	$.post(
-		URLdir + 'handler/map/UnbindTeacher',
-		{
-			'BindingTeacher': ID,
-			'DisciplineID': DisciplineID
-		},
-		function(data){
-			data = $.parseJSON(data);
-			if(data.success === true)
-				EventInspector_ShowMsg('Преподаватель отсоединен', 'success');
-			else EventInspector_ShowMsg('Ошибка при отсоединение преподавателя', 'error');
-		}
-	);
-});
-
-// Присоединить преподавателя
-$('.TeachersList').on('click', '.Action_BindTeacher', function(){
-	$(this)
-		.parent()
-		.remove();
-	var ID = $(this).parent().attr('id');
-	var Name = $(this).siblings('.Name').text();
-	$.post(
-		URLdir + 'handler/map/BindTeacher',
-		{
-			'BindingTeacher': ID,
-			'DisciplineID': DisciplineID
-		},
-		function(data){
-			data = $.parseJSON(data);
-			if(data.success === true) {
-				$('.BindTeachersList').append(AddTeacher(ID, Name, 'Unbind'));
-				EventInspector_ShowMsg('Преподаватель прикреплен', 'success');
-			}
-			else EventInspector_ShowMsg('Ошибка при прикрепление преподавателя', 'error');
-		}
-	);
-});
-
-});