diff --git a/~dev_rating/application/classes/Controller/Teacher/Rating.php b/~dev_rating/application/classes/Controller/Teacher/Rating.php
index 23af5318f141df73a935a2f98a13e301d56c9eec..b389f4dcf78f8620dd93fea697caebd1781bc7e0 100644
--- a/~dev_rating/application/classes/Controller/Teacher/Rating.php
+++ b/~dev_rating/application/classes/Controller/Teacher/Rating.php
@@ -92,7 +92,7 @@ class Controller_Teacher_Rating extends Controller_UserEnvi {
         }
         $twig->tableRate = $studentsHandled;
         $twig->groups = $groups;
-		
+
 		$this->response->body($twig);
     }
 }
diff --git a/~dev_rating/application/views/sign.twig b/~dev_rating/application/views/sign.twig
index 5a676933d6306ddc048970235d96d0f4388be1ed..90dcbfbfe08ece76ce3ef23852def3007612f397 100644
--- a/~dev_rating/application/views/sign.twig
+++ b/~dev_rating/application/views/sign.twig
@@ -20,9 +20,25 @@
         {{ HTML.script('media/js/jquery-1.11.1.min.js')|raw }}
         {{ HTML.script('media/js/sign.js')|raw }}
         {{ HTML.script('media/js/jquery-plugins/jquery.placeholder.js')|raw }}
+
+        {{ HTML.script('media/js/jquery-plugins/jReject/jquery.reject.js')|raw }}
+        {{ HTML.style('media/js/jquery-plugins/jReject/jquery.reject.css')|raw }}
         <script>
         $(function() {
             $('input, textarea').placeholder();
+            $.reject({ 
+                reject: {
+                    unknown:true,
+                    msie7:true,
+                    msie8:true
+                },
+                imagePath: 'media/js/jquery-plugins/jReject/images/',
+                close: false,
+                header: 'Вы используете устаревший браузер.',  
+                paragraph1: '', 
+                paragraph2: 'Чтобы использовать все возможности сайта, загрузите и установите последнею версию одного из этих браузеров:',
+                display: ['firefox','chrome','opera', 'safari']
+            });
         });
         </script>   
         <meta charset="UTF-8">
diff --git a/~dev_rating/media/css/rating.css b/~dev_rating/media/css/rating.css
index 14024295e57b92da911c93b6d52cf0663744b0e0..5d9c8c638969903e9009ab45be948ce190d3620d 100644
--- a/~dev_rating/media/css/rating.css
+++ b/~dev_rating/media/css/rating.css
@@ -10,23 +10,26 @@
 }
 .title {
 	font-size: 15px;
-	color: #363636
+	padding: 5px;
 }
 .subject {
 	text-overflow: ellipsis;
 	overflow: hidden;
 	max-width: 70px;
+	padding: 5px;
 	text-align: center;
 	font-size: 15px;
 	color: #417B9D
 } 
 .student {
-	max-width: 118px;
+	max-width: 180px;
+	padding: 0 5px;
 	text-align: left;
 	font-size: 13px;
 	color: #417B9D
 }
-.group {
+.group td {
+	padding: 5px;
 	text-align: center;
 }
 
@@ -68,14 +71,13 @@
 table {
 	border-top: 1px solid #ccc;
 	border-right: 1px solid #ccc;
+	color: #363636;
 }
+
 td {
 	border-left: 1px solid #ccc;
 	border-bottom: 1px solid #ccc;
-	padding: 6px;
-	
 	font-size: 13px;
-	color: #363636
 }
 	/*
 	div.tdInfo {
@@ -89,18 +91,18 @@ td {
 		line-height: 140%;
 	}
 	*/
-input {
+td input {
 	display: block;
 	margin: 0 auto;
-	width: 28px;
-	border: 1px solid #fff;
+	width: 100%;
+	height: 26px;
 	text-align: center
 }
-input:hover{
-	border: 1px solid #ccc;
+td input:hover{
+	background: #f1f1f1;
 }
-input:focus{
-	border: 1px solid #ccc;
+td input:focus{
+	background: #fff;
 	outline: none
 }
 
diff --git a/~dev_rating/media/js/jquery-plugins/jReject/images/background_browser.gif b/~dev_rating/media/js/jquery-plugins/jReject/images/background_browser.gif
new file mode 100644
index 0000000000000000000000000000000000000000..af52aad1dd39fe75990e8ab8675e434c571d8c38
Binary files /dev/null and b/~dev_rating/media/js/jquery-plugins/jReject/images/background_browser.gif differ
diff --git a/~dev_rating/media/js/jquery-plugins/jReject/images/browser_chrome.gif b/~dev_rating/media/js/jquery-plugins/jReject/images/browser_chrome.gif
new file mode 100644
index 0000000000000000000000000000000000000000..596de8a53b18f125de3fb7daf6fa4806c3af864b
Binary files /dev/null and b/~dev_rating/media/js/jquery-plugins/jReject/images/browser_chrome.gif differ
diff --git a/~dev_rating/media/js/jquery-plugins/jReject/images/browser_firefox.gif b/~dev_rating/media/js/jquery-plugins/jReject/images/browser_firefox.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2151fb67c4294b5cab0d03c98b34f8634c1f2220
Binary files /dev/null and b/~dev_rating/media/js/jquery-plugins/jReject/images/browser_firefox.gif differ
diff --git a/~dev_rating/media/js/jquery-plugins/jReject/images/browser_konqueror.gif b/~dev_rating/media/js/jquery-plugins/jReject/images/browser_konqueror.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f82da29af409864aad7f2d9eeefd4b39896677cb
Binary files /dev/null and b/~dev_rating/media/js/jquery-plugins/jReject/images/browser_konqueror.gif differ
diff --git a/~dev_rating/media/js/jquery-plugins/jReject/images/browser_msie.gif b/~dev_rating/media/js/jquery-plugins/jReject/images/browser_msie.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d548475177379a32ee5e0df33ef9b17abb92ec25
Binary files /dev/null and b/~dev_rating/media/js/jquery-plugins/jReject/images/browser_msie.gif differ
diff --git a/~dev_rating/media/js/jquery-plugins/jReject/images/browser_opera.gif b/~dev_rating/media/js/jquery-plugins/jReject/images/browser_opera.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f03436f5f3ecdd05e557f4dc03b89d0924bbfaeb
Binary files /dev/null and b/~dev_rating/media/js/jquery-plugins/jReject/images/browser_opera.gif differ
diff --git a/~dev_rating/media/js/jquery-plugins/jReject/images/browser_safari.gif b/~dev_rating/media/js/jquery-plugins/jReject/images/browser_safari.gif
new file mode 100644
index 0000000000000000000000000000000000000000..585125486dbe0ac3eeb59cc8108ec57c9fad0296
Binary files /dev/null and b/~dev_rating/media/js/jquery-plugins/jReject/images/browser_safari.gif differ
diff --git a/~dev_rating/media/js/jquery-plugins/jReject/jquery.reject.css b/~dev_rating/media/js/jquery-plugins/jReject/jquery.reject.css
new file mode 100644
index 0000000000000000000000000000000000000000..d7367249635ede8ae2199963b08800ab290266ea
--- /dev/null
+++ b/~dev_rating/media/js/jquery-plugins/jReject/jquery.reject.css
@@ -0,0 +1,114 @@
+/*!
+ * jReject (jQuery Browser Rejection Plugin)
+ * Version 1.1.x
+ * URL: http://jreject.turnwheel.com/
+ * Description: jReject is a easy method of rejecting specific browsers on your site
+ * Author: Steven Bower (TurnWheel Designs) http://turnwheel.com/
+ * Copyright: Copyright (c) 2009-2014 Steven Bower under dual MIT/GPL license.
+ */
+
+#jr_overlay {
+	top: 0;
+	left: 0;
+	padding: 0;
+	margin: 0;
+	z-index: 2147483646;
+	position: absolute;
+}
+
+#jr_wrap {
+	position: absolute;
+	width: 100%;
+	z-index: 2147483647;
+	padding: 0;
+	margin: 0;
+}
+
+#jr_inner {
+	font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, Verdana, sans-serif;
+	font-size: 12px;
+	background: #FFF;
+	border: 1px solid #CCC;
+	color: #4F4F4F;
+	margin: 0 auto;
+	height: auto;
+	padding: 20px;
+	position: relative;
+	box-sizing: content-box;
+}
+
+#jr_header {
+	display: block;
+	color: #333;
+	padding: 5px;
+	padding-bottom: 0;
+	margin: 0;
+	font-family: Helvetica, Arial, sans-serif;
+	font-weight: bold;
+	font-size: 1.3em;
+	margin-bottom: 0.5em;
+}
+
+#jr_inner p {
+	padding: 5px;
+	margin: 0;
+}
+
+#jr_inner ul {
+	list-style-image: none;
+	list-style-position: outside;
+	list-style-type: none;
+	margin: 0;
+	padding: 0;
+}
+
+#jr_inner ul li {
+	cursor: pointer;
+	float: left;
+	width: 120px;
+	height: 122px;
+	margin: 0 10px 10px 10px;
+	padding: 0;
+	text-align: center;
+}
+
+#jr_inner li a {
+	color: #333;
+	font-size: 0.8em;
+	text-decoration: none;
+	padding: 0;
+	margin: 0;
+}
+
+#jr_inner li a:hover {
+	text-decoration: underline;
+}
+
+#jr_inner .jr_icon {
+	width: 100px;
+	height: 100px;
+	margin: 1px auto;
+	padding: 0;
+	background: transparent no-repeat scroll left top;
+	cursor: pointer;
+}
+
+#jr_close {
+	clear: both;
+	padding: 0;
+	margin: 0;
+}
+
+#jr_close a {
+	color: #000;
+	display: block;
+	width: auto;
+	margin: 0;
+	padding: 0;
+	text-decoration: underline;
+}
+
+#jr_close p {
+	padding: 10px 0 0 0;
+	margin: 0;
+}
diff --git a/~dev_rating/media/js/jquery-plugins/jReject/jquery.reject.js b/~dev_rating/media/js/jquery-plugins/jReject/jquery.reject.js
new file mode 100644
index 0000000000000000000000000000000000000000..a672b81f6c910a4edd4b945b2db21023062ad15a
--- /dev/null
+++ b/~dev_rating/media/js/jquery-plugins/jReject/jquery.reject.js
@@ -0,0 +1,595 @@
+/*!
+ * jReject (jQuery Browser Rejection Plugin)
+ * Version 1.1.x
+ * URL: http://jreject.turnwheel.com/
+ * Description: jReject is a easy method of rejecting specific browsers on your site
+ * Author: Steven Bower (TurnWheel Designs) http://turnwheel.com/
+ * Copyright: Copyright (c) 2009-2014 Steven Bower under dual MIT/GPLv2 license.
+ */
+
+(function($) {
+$.reject = function(options) {
+	var opts = $.extend(true, {
+		// Specifies which browsers/versions will be blocked
+		reject : {
+			all: false, // Covers Everything (Nothing blocked)
+			msie: 6 // Covers MSIE <= 6 (Blocked by default)
+			/*
+			 * Many possible combinations.
+			 * You can specify browser (msie, chrome, firefox)
+			 * You can specify rendering engine (geko, trident)
+			 * You can specify OS (Win, Mac, Linux, Solaris, iPhone, iPad)
+			 *
+			 * You can specify versions of each.
+			 * Examples: msie9: true, firefox8: true,
+			 *
+			 * You can specify the highest number to reject.
+			 * Example: msie: 9 (9 and lower are rejected.
+			 *
+			 * There is also "unknown" that covers what isn't detected
+			 * Example: unknown: true
+			 */
+		},
+		display: [], // What browsers to display and their order (default set below)
+		browserShow: true, // Should the browser options be shown?
+		browserInfo: { // Settings for which browsers to display
+			chrome: {
+				// Text below the icon
+				text: 'Google Chrome',
+				// URL For icon/text link
+				url: 'http://www.google.com/chrome/'
+				// (Optional) Use "allow" to customized when to show this option
+				// Example: to show chrome only for IE users
+				// allow: { all: false, msie: true }
+			},
+			firefox: {
+				text: 'Mozilla Firefox',
+				url: 'http://www.mozilla.com/firefox/'
+			},
+			safari: {
+				text: 'Safari',
+				url: 'http://www.apple.com/safari/download/'
+			},
+			opera: {
+				text: 'Opera',
+				url: 'http://www.opera.com/download/'
+			},
+			msie: {
+				text: 'Internet Explorer',
+				url: 'http://www.microsoft.com/windows/Internet-explorer/'
+			}
+		},
+
+		// Pop-up Window Text
+		header: 'Did you know that your Internet Browser is out of date?',
+
+		paragraph1: 'Your browser is out of date, and may not be compatible with '+
+					'our website. A list of the most popular web browsers can be '+
+					'found below.',
+
+		paragraph2: 'Just click on the icons to get to the download page',
+
+		// Allow closing of window
+		close: true,
+
+		// Message displayed below closing link
+		closeMessage: 'By closing this window you acknowledge that your experience '+
+						'on this website may be degraded',
+		closeLink: 'Close This Window',
+		closeURL: '#',
+
+		// Allows closing of window with esc key
+		closeESC: true,
+
+		// Use cookies to remmember if window was closed previously?
+		closeCookie: false,
+		// Cookie settings are only used if closeCookie is true
+		cookieSettings: {
+			// Path for the cookie to be saved on
+			// Should be root domain in most cases
+			path: '/',
+			// Expiration Date (in seconds)
+			// 0 (default) means it ends with the current session
+			expires: 0
+		},
+
+		// Path where images are located
+		imagePath: './images/',
+		// Background color for overlay
+		overlayBgColor: '#000',
+		// Background transparency (0-1)
+		overlayOpacity: 0.8,
+
+		// Fade in time on open ('slow','medium','fast' or integer in ms)
+		fadeInTime: 'fast',
+		// Fade out time on close ('slow','medium','fast' or integer in ms)
+		fadeOutTime: 'fast',
+
+		// Google Analytics Link Tracking (Optional)
+		// Set to true to enable
+		// Note: Analytics tracking code must be added separately
+		analytics: false
+	}, options);
+
+	// Set default browsers to display if not already defined
+	if (opts.display.length < 1) {
+		opts.display = [ 'chrome','firefox','safari','opera','msie' ];
+	}
+
+	// beforeRject: Customized Function
+	if ($.isFunction(opts.beforeReject)) {
+		opts.beforeReject();
+	}
+
+	// Disable 'closeESC' if closing is disabled (mutually exclusive)
+	if (!opts.close) {
+		opts.closeESC = false;
+	}
+
+	// This function parses the advanced browser options
+	var browserCheck = function(settings) {
+		// Check 1: Look for 'all' forced setting
+		// Check 2: Browser+major version (optional) (eg. 'firefox','msie','{msie: 6}')
+		// Check 3: Browser+major version (eg. 'firefox3','msie7','chrome4')
+		// Check 4: Rendering engine+version (eg. 'webkit', 'gecko', '{webkit: 537.36}')
+		// Check 5: Operating System (eg. 'win','mac','linux','solaris','iphone')
+		var layout = settings[$.layout.name],
+			browser = settings[$.browser.name];
+		return !!(settings['all']
+			|| (browser && (browser === true || $.browser.versionNumber <= browser))
+			|| settings[$.browser.className]
+			|| (layout && (layout === true || $.layout.versionNumber <= layout))
+			|| settings[$.os.name]);
+	};
+
+	// Determine if we need to display rejection for this browser, or exit
+	if (!browserCheck(opts.reject)) {
+		// onFail: Optional Callback
+		if ($.isFunction(opts.onFail)) {
+			opts.onFail();
+		}
+
+		return false;
+	}
+
+	// If user can close and set to remmember close, initiate cookie functions
+	if (opts.close && opts.closeCookie) {
+		// Local global setting for the name of the cookie used
+		var COOKIE_NAME = 'jreject-close';
+
+		// Cookies Function: Handles creating/retrieving/deleting cookies
+		// Cookies are only used for opts.closeCookie parameter functionality
+		var _cookie = function(name, value) {
+			// Save cookie
+			if (typeof value != 'undefined') {
+				var expires = '';
+
+				// Check if we need to set an expiration date
+				if (opts.cookieSettings.expires !== 0) {
+					var date = new Date();
+					date.setTime(date.getTime()+(opts.cookieSettings.expires*1000));
+					expires = "; expires="+date.toGMTString();
+				}
+
+				// Get path from settings
+				var path = opts.cookieSettings.path || '/';
+
+				// Set Cookie with parameters
+				document.cookie = name+'='+
+					encodeURIComponent((!value) ? '' : value)+expires+
+					'; path='+path;
+
+				return true;
+			}
+			// Get cookie
+			else {
+				var cookie,val = null;
+
+				if (document.cookie && document.cookie !== '') {
+					var cookies = document.cookie.split(';');
+
+					// Loop through all cookie values
+					var clen = cookies.length;
+					for (var i = 0; i < clen; ++i) {
+						cookie = $.trim(cookies[i]);
+
+						// Does this cookie string begin with the name we want?
+						if (cookie.substring(0,name.length+1) == (name+'=')) {
+							var len = name.length;
+							val = decodeURIComponent(cookie.substring(len+1));
+							break;
+						}
+					}
+				}
+
+				// Returns cookie value
+				return val;
+			}
+		};
+
+		// If cookie is set, return false and don't display rejection
+		if (_cookie(COOKIE_NAME)) {
+			return false;
+		}
+	}
+
+	// Load background overlay (jr_overlay) + Main wrapper (jr_wrap) +
+	// Inner Wrapper (jr_inner) w/ opts.header (jr_header) +
+	// opts.paragraph1/opts.paragraph2 if set
+	var html = '<div id="jr_overlay"></div><div id="jr_wrap"><div id="jr_inner">'+
+		'<h1 id="jr_header">'+opts.header+'</h1>'+
+		(opts.paragraph1 === '' ? '' : '<p>'+opts.paragraph1+'</p>')+
+		(opts.paragraph2 === '' ? '' : '<p>'+opts.paragraph2+'</p>');
+
+	var displayNum = 0;
+	if (opts.browserShow) {
+		html += '<ul>';
+
+		// Generate the browsers to display
+		for (var x in opts.display) {
+			var browser = opts.display[x]; // Current Browser
+			var info = opts.browserInfo[browser] || false; // Browser Information
+
+			// If no info exists for this browser
+			// or if this browser is not suppose to display to this user
+			// based on "allow" flag
+			if (!info || (info['allow'] != undefined && !browserCheck(info['allow']))) {
+				continue;
+			}
+
+			var url = info.url || '#'; // URL to link text/icon to
+
+			// Generate HTML for this browser option
+			html += '<li id="jr_'+browser+'"><div class="jr_icon"></div>'+
+					'<div><a href="'+url+'">'+(info.text || 'Unknown')+'</a>'+
+					'</div></li>';
+
+			++displayNum;
+		}
+
+		html += '</ul>';
+	}
+
+	// Close list and #jr_list
+	html += '<div id="jr_close">'+
+	// Display close links/message if set
+	(opts.close ? '<a href="'+opts.closeURL+'">'+opts.closeLink+'</a>'+
+		'<p>'+opts.closeMessage+'</p>' : '')+'</div>'+
+	// Close #jr_inner and #jr_wrap
+	'</div></div>';
+
+	var element = $('<div>'+html+'</div>'); // Create element
+	var size = _pageSize(); // Get page size
+	var scroll = _scrollSize(); // Get page scroll
+
+	// This function handles closing this reject window
+	// When clicked, fadeOut and remove all elements
+	element.bind('closejr', function() {
+		// Make sure the permission to close is granted
+		if (!opts.close) {
+			return false;
+		}
+
+		// Customized Function
+		if ($.isFunction(opts.beforeClose)) {
+			opts.beforeClose();
+		}
+
+		// Remove binding function so it
+		// doesn't get called more than once
+		$(this).unbind('closejr');
+
+		// Fade out background and modal wrapper
+		$('#jr_overlay,#jr_wrap').fadeOut(opts.fadeOutTime,function() {
+			$(this).remove(); // Remove element from DOM
+
+			// afterClose: Customized Function
+			if ($.isFunction(opts.afterClose)) {
+				opts.afterClose();
+			}
+		});
+
+		// Show elements that were hidden for layering issues
+		var elmhide = 'embed.jr_hidden, object.jr_hidden, select.jr_hidden, applet.jr_hidden';
+		$(elmhide).show().removeClass('jr_hidden');
+
+		// Set close cookie for next run
+		if (opts.closeCookie) {
+			_cookie(COOKIE_NAME, 'true');
+		}
+
+		return true;
+	});
+
+	// Tracks clicks in Google Analytics (category 'External Links')
+	// only if opts.analytics is enabled
+	var analytics = function(url) {
+		if (!opts.analytics) {
+			return false;
+		}
+
+		// Get just the hostname
+		var host = url.split(/\/+/g)[1];
+
+		// Send external link event to Google Analaytics
+		// Attempts both versions of analytics code. (Newest first)
+		try {
+			// Newest analytics code
+			ga('send', 'event', 'External', 'Click', host, url);
+		} catch (e) {
+			try {
+				_gaq.push([ '_trackEvent', 'External Links',  host, url ]);
+			} catch (e) { }
+		}
+	};
+
+	// Called onClick for browser links (and icons)
+	// Opens link in new window
+	var openBrowserLinks = function(url) {
+		// Send link to analytics if enabled
+		analytics(url);
+
+		// Open window, generate random id value
+		window.open(url, 'jr_'+ Math.round(Math.random()*11));
+
+		return false;
+	};
+
+	/*
+	 * Trverse through element DOM and apply JS variables
+	 * All CSS elements that do not require JS will be in
+	 * css/jquery.jreject.css
+	 */
+
+	// Creates 'background' (div)
+	element.find('#jr_overlay').css({
+		width: size[0],
+		height: size[1],
+		background: opts.overlayBgColor,
+		opacity: opts.overlayOpacity
+	});
+
+	// Wrapper for our pop-up (div)
+	element.find('#jr_wrap').css({
+		top: scroll[1]+(size[3]/4),
+		left: scroll[0]
+	});
+
+	// Wrapper for inner centered content (div)
+	element.find('#jr_inner').css({
+		minWidth: displayNum*100,
+		maxWidth: displayNum*140,
+		// min/maxWidth not supported by IE
+		width: $.layout.name == 'trident' ? displayNum*155 : 'auto'
+	});
+
+	element.find('#jr_inner li').css({ // Browser list items (li)
+		background: 'transparent url("'+opts.imagePath+'background_browser.gif") '+
+					'no-repeat scroll left top'
+	});
+
+	element.find('#jr_inner li .jr_icon').each(function() {
+		// Dynamically sets the icon background image
+		var self = $(this);
+		self.css('background','transparent url('+opts.imagePath+'browser_'+
+				(self.parent('li').attr('id').replace(/jr_/,''))+'.gif)'+
+					' no-repeat scroll left top');
+
+		// Send link clicks to openBrowserLinks
+		self.click(function () {
+			var url = $(this).next('div').children('a').attr('href');
+			openBrowserLinks(url);
+		});
+	});
+
+	element.find('#jr_inner li a').click(function() {
+		openBrowserLinks($(this).attr('href'));
+		return false;
+	});
+
+	// Bind closing event to trigger closejr
+	// to be consistant with ESC key close function
+	element.find('#jr_close a').click(function() {
+		$(this).trigger('closejr');
+
+		// If plain anchor is set, return false so there is no page jump
+		if (opts.closeURL === '#') {
+			return false;
+		}
+	});
+
+	// Set focus (fixes ESC key issues with forms and other focus bugs)
+	$('#jr_overlay').focus();
+
+	// Hide elements that won't display properly
+	$('embed, object, select, applet').each(function() {
+		if ($(this).is(':visible')) {
+			$(this).hide().addClass('jr_hidden');
+		}
+	});
+
+	// Append element to body of document to display
+	$('body').append(element.hide().fadeIn(opts.fadeInTime));
+
+	// Handle window resize/scroll events and update overlay dimensions
+	$(window).bind('resize scroll',function() {
+		var size = _pageSize(); // Get size
+
+		// Update overlay dimensions based on page size
+		$('#jr_overlay').css({
+			width: size[0],
+			height: size[1]
+		});
+
+		var scroll = _scrollSize(); // Get page scroll
+
+		// Update modal position based on scroll
+		$('#jr_wrap').css({
+			top: scroll[1] + (size[3]/4),
+			left: scroll[0]
+		});
+	});
+
+	// Add optional ESC Key functionality
+	if (opts.closeESC) {
+		$(document).bind('keydown',function(event) {
+			// ESC = Keycode 27
+			if (event.keyCode == 27) {
+				element.trigger('closejr');
+			}
+		});
+	}
+
+	// afterReject: Customized Function
+	if ($.isFunction(opts.afterReject)) {
+		opts.afterReject();
+	}
+
+	return true;
+};
+
+// Based on compatibility data from quirksmode.com
+// This is used to help calculate exact center of the page
+var _pageSize = function() {
+	var xScroll = window.innerWidth && window.scrollMaxX ?
+				window.innerWidth + window.scrollMaxX :
+				(document.body.scrollWidth > document.body.offsetWidth ?
+				document.body.scrollWidth : document.body.offsetWidth);
+
+	var yScroll = window.innerHeight && window.scrollMaxY ?
+				window.innerHeight + window.scrollMaxY :
+				(document.body.scrollHeight > document.body.offsetHeight ?
+				document.body.scrollHeight : document.body.offsetHeight);
+
+	var windowWidth = window.innerWidth ? window.innerWidth :
+				(document.documentElement && document.documentElement.clientWidth ?
+				document.documentElement.clientWidth : document.body.clientWidth);
+
+	var windowHeight = window.innerHeight ? window.innerHeight :
+				(document.documentElement && document.documentElement.clientHeight ?
+				document.documentElement.clientHeight : document.body.clientHeight);
+
+	return [
+		xScroll < windowWidth ? xScroll : windowWidth, // Page Width
+		yScroll < windowHeight ? windowHeight : yScroll, // Page Height
+		windowWidth,windowHeight
+	];
+};
+
+
+// Based on compatibility data from quirksmode.com
+var _scrollSize = function() {
+	return [
+		// scrollSize X
+		window.pageXOffset ? window.pageXOffset : (document.documentElement &&
+				document.documentElement.scrollTop ?
+				document.documentElement.scrollLeft : document.body.scrollLeft),
+
+		// scrollSize Y
+		window.pageYOffset ? window.pageYOffset : (document.documentElement &&
+				document.documentElement.scrollTop ?
+				document.documentElement.scrollTop : document.body.scrollTop)
+	];
+};
+})(jQuery);
+
+/*
+ * jQuery Browser Plugin
+ * Version 2.4 / jReject 1.0.x
+ * URL: http://jquery.thewikies.com/browser
+ * Description: jQuery Browser Plugin extends browser detection capabilities and
+ * can assign browser selectors to CSS classes.
+ * Author: Nate Cavanaugh, Minhchau Dang, Jonathan Neal, & Gregory Waxman
+ * Updated By: Steven Bower for use with jReject plugin
+ * Copyright: Copyright (c) 2008 Jonathan Neal under dual MIT/GPL license.
+ */
+
+(function ($) {
+	$.browserTest = function (a, z) {
+		var u = 'unknown',
+			x = 'X',
+			m = function (r, h) {
+				for (var i = 0; i < h.length; i = i + 1) {
+					r = r.replace(h[i][0], h[i][1]);
+				}
+
+				return r;
+			}, c = function (i, a, b, c) {
+				var r = {
+					name: m((a.exec(i) || [u, u])[1], b)
+				};
+
+				r[r.name] = true;
+
+				if (!r.opera) {
+					r.version = (c.exec(i) || [x, x, x, x])[3];
+				}
+				else {
+					r.version = window.opera.version();
+				}
+
+				if (/safari/.test(r.name)) {
+					var safariversion = /(safari)(\/|\s)([a-z0-9\.\+]*?)(\;|dev|rel|\s|$)/;
+					var res = safariversion.exec(i);
+					if (res && res[3] && res[3] < 400) {
+						r.version = '2.0';
+					}
+				}
+
+				else if (r.name === 'presto') {
+					r.version = ($.browser.version > 9.27) ? 'futhark' : 'linear_b';
+				}
+
+				if (/msie/.test(r.name) && r.version === x) {
+					var ieVersion = /rv:(\d+\.\d+)/.exec(i);
+					r.version = ieVersion[1];
+				}
+
+				r.versionNumber = parseFloat(r.version, 10) || 0;
+				var minorStart = 1;
+
+				if (r.versionNumber < 100 && r.versionNumber > 9) {
+					minorStart = 2;
+				}
+
+				r.versionX = (r.version !== x) ? r.version.substr(0, minorStart) : x;
+				r.className = r.name + r.versionX;
+
+				return r;
+			};
+
+		a = (/Opera|Navigator|Minefield|KHTML|Chrome|CriOS/.test(a) ? m(a, [
+			[/(Firefox|MSIE|KHTML,\slike\sGecko|Konqueror)/, ''],
+			['Chrome Safari', 'Chrome'],
+			['CriOS', 'Chrome'],
+			['KHTML', 'Konqueror'],
+			['Minefield', 'Firefox'],
+			['Navigator', 'Netscape']
+		]) : a).toLowerCase();
+
+		$.browser = $.extend((!z) ? $.browser : {}, c(a,
+			/(camino|chrome|crios|firefox|netscape|konqueror|lynx|msie|trident|opera|safari)/,
+			[
+				['trident', 'msie']
+			],
+			/(camino|chrome|crios|firefox|netscape|netscape6|opera|version|konqueror|lynx|msie|rv|safari)(:|\/|\s)([a-z0-9\.\+]*?)(\;|dev|rel|\s|$)/));
+
+		$.layout = c(a, /(gecko|konqueror|msie|trident|opera|webkit)/, [
+			['konqueror', 'khtml'],
+			['msie', 'trident'],
+			['opera', 'presto']
+		], /(applewebkit|rv|konqueror|msie)(\:|\/|\s)([a-z0-9\.]*?)(\;|\)|\s)/);
+
+		$.os = {
+			name: (/(win|mac|linux|sunos|solaris|iphone|ipad)/.
+					exec(navigator.platform.toLowerCase()) || [u])[0].replace('sunos', 'solaris')
+		};
+
+		if (!z) {
+			$('html').addClass([$.os.name, $.browser.name, $.browser.className,
+				$.layout.name, $.layout.className].join(' '));
+		}
+	};
+
+	$.browserTest(navigator.userAgent);
+}(jQuery));
diff --git a/~dev_rating/media/js/rating.js b/~dev_rating/media/js/rating.js
index 1458a350f5330a1e366a07354988e2202f5bd0af..6c8621cd08be8d54c4eb1d145fe1458abc4ff3b4 100644
--- a/~dev_rating/media/js/rating.js
+++ b/~dev_rating/media/js/rating.js
@@ -41,23 +41,24 @@ $(function() {
         g_oldRateCell = jThis.children("input").val();
         $(".RatingTableSubmodulesHeadMaxRate .col_" + g_col).css("background-color", "#f1f1f1");
         $("td#" + g_col + ".rateCell").each(function(){
-            $(this).css("background-color", "#f1f1f1");
+            $(this).children('input').css("background-color", "#f1f1f1");
         });
         $("tr#" + g_row + " .rateCell").each(function(){
-       		$(this).css("background-color", "#f1f1f1");
+       		$(this).children('input').css("background-color", "#f1f1f1");
         });
         $("tr#" + g_row + " .student").css("background-color", "#f1f1f1");
         $("tr#" + g_row + " .RateResult").css("background-color", "#f1f1f1");
+        jThis.children('input').css("background-color", "#fff");
     }
     
     // Убираем подстветку
     function TdUnFocus(){
     	$(".RatingTableSubmodulesHeadMaxRate .col_" + g_col).css("background-color", "#fff");
         $("td#" + g_col + ".rateCell").each(function(){
-       		$(this).css("background-color", "#fff");
+       		$(this).children('input').css("background-color", "#fff");
         });
         $("tr#" + g_row + " .rateCell").each(function(){
-       		$(this).css("background-color", "#fff");
+       		$(this).children('input').css("background-color", "#fff");
         });
         $("tr#" + g_row + " .student").css("background-color", "#fff");
         $("tr#" + g_row + " .RateResult").css("background-color", "#fff");
@@ -137,7 +138,7 @@ $(function() {
     
     $(".rateCell").mouseleave(function(){
         if (g_isFocusCell === false)
-            TdUnFocus($(this));
+            TdUnFocus();
     });
     
     var oldRate = 0;
@@ -157,7 +158,7 @@ $(function() {
             newRate = $(this).children("input").val();
         if (newRate != oldRate)
             Rating($(this), oldRate);
-        TdUnFocus($(this));
+        TdUnFocus();
         UnsetTdInfo($(this));
     });