Index: admin_templates/categories/edit_content.tpl
===================================================================
--- admin_templates/categories/edit_content.tpl	(revision 15437)
+++ admin_templates/categories/edit_content.tpl	(working copy)
@@ -61,6 +61,8 @@
 		}
 	);
 
+	ckeditors_apply_typekit();
+
 	$(document).ready(
 		function () {
 			$(window).resize(
Index: admin_templates/incs/header.tpl
===================================================================
--- admin_templates/incs/header.tpl	(revision 15445)
+++ admin_templates/incs/header.tpl	(working copy)
@@ -53,17 +53,19 @@
 
 <script type="text/javascript">
 TB.pathToImage = 'js/jquery/thickbox/loadingAnimation.gif';
-var t = '<inp2:m_get param="t"/>';
-var popups = '1';
-var $use_popups = <inp2:m_if check="adm_UsePopups">true<inp2:m_else/>false</inp2:m_if>;
-var $modal_windows = <inp2:m_if check="adm_UsePopups" mode="modal">true<inp2:m_else/>false</inp2:m_if>;
-var multiple_windows = '1';
-var main_title = '<inp2:m_GetConfig var="Site_Name" js_escape="1"/>';
-var tpl_changed = 0;
-var base_url = '<inp2:m_BaseURL/>';
-var $base_path = '<inp2:m_GetConst name="BASE_PATH"/>';
-var img_path = '<inp2:m_TemplatesBase module="#MODULE#"/>/img/';
 
+var	t = '<inp2:m_get param="t"/>',
+	popups = '1',
+	$use_popups = <inp2:m_if check="adm_UsePopups">true<inp2:m_else/>false</inp2:m_if>,
+	$modal_windows = <inp2:m_if check="adm_UsePopups" mode="modal">true<inp2:m_else/>false</inp2:m_if>,
+	multiple_windows = '1',
+	main_title = '<inp2:m_GetConfig var="Site_Name" js_escape="1"/>',
+	tpl_changed = 0,
+	base_url = '<inp2:m_BaseURL/>',
+	$base_path = '<inp2:m_GetConst name="BASE_PATH"/>',
+	img_path = '<inp2:m_TemplatesBase module="#MODULE#"/>/img/',
+	$typekit_id = '<inp2:m_GetConfig name="TypeKitId" js_escape="1"/>';
+
 var phrases = {
 	'la_Delete_Confirm' : '<inp2:m_Phrase label="la_Delete_Confirm" js_escape="1"/>'
 }
Index: admin_templates/js/forms.js
===================================================================
--- admin_templates/js/forms.js	(revision 15437)
+++ admin_templates/js/forms.js	(working copy)
@@ -66,8 +66,10 @@
 			function( ev ) {
 				FCKeditor_OnComplete( CKEDITOR.instances[ ev.editor.name ] );
 			}
-		)
+		);
 
+		ckeditors_apply_typekit();
+
 		for (var $editor_id in $CKEditors) {
 			CKEDITOR.replace($editor_id, $CKEditors[$editor_id]);
 		}
Index: admin_templates/js/script.js
===================================================================
--- admin_templates/js/script.js	(revision 15539)
+++ admin_templates/js/script.js	(working copy)
@@ -1,13 +1,14 @@
 if ( !( isset($init_made) && $init_made ) ) {
 	var Application = new kApplication();
-	var Grids = new Array();
-	var GridScrollers = new Array();
-	var Toolbars = new Array();
-	var $Menus = new Array();
-	var $ViewMenus = new Array();
-	var $nls_menus = new Array();
-	var $MenuNames = new Array();
 
+	var	Grids = [],
+		GridScrollers = [],
+		Toolbars = [],
+		$Menus = [],
+		$ViewMenus = [],
+		$nls_menus = [],
+		$MenuNames = [];
+
 	var $CKEditors = {}; // input name VS ck options mapping
 
 	var $form_name = 'kernel_form';
@@ -16,15 +17,16 @@
 		var $fw_menus = new Array();
 	}
 
-	var $env = '';
-	var submitted = false;
-	var unload_legal = false;
-	var $edit_mode = false;
-	var $init_made = true; // in case of double inclusion of script.js :)
+	var	$env = '',
+		submitted = false,
+		unload_legal = false,
+		$edit_mode = false,
+		$init_made = true; // in case of double inclusion of script.js :)
 
 	// hook processing
 	var hBEFORE = 1; // this is const, but including this twice causes errors
 	var hAFTER = 2; // this is const, but including this twice causes errors
+
 	replaceFireBug();
 }
 
@@ -1906,4 +1908,29 @@
 	}
 
 	return crc ^ (-1);
+}
+
+function ckeditors_apply_typekit() {
+	if ( $typekit_id === undefined || $typekit_id.length == 0 ) {
+		return;
+	}
+
+	CKEDITOR.on(
+		'instanceReady',
+		function (ev) {
+			setTimeout(function () {
+				var $script = document.createElement('script'),
+					$editor_instance = CKEDITOR.instances[ev.editor.name];
+
+				$script.src = '//use.typekit.com/' + $typekit_id + '.js';
+				$script.onload = function () {
+					try {
+						$editor_instance.window.$.Typekit.load();
+					} catch (e) {}
+				};
+
+				$editor_instance.document.getHead().$.appendChild($script);
+			}, 1000);
+		}
+	);
 }
\ No newline at end of file
Index: admin_templates/popups/editor.tpl
===================================================================
--- admin_templates/popups/editor.tpl	(revision 15437)
+++ admin_templates/popups/editor.tpl	(working copy)
@@ -70,6 +70,8 @@
 		}
 	);
 
+	ckeditors_apply_typekit();
+
 	$(document).ready(
 		function () {
 			$(window).resize(
Index: install/english.lang
===================================================================
--- install/english.lang	(revision 15565)
+++ install/english.lang	(working copy)
@@ -213,6 +213,7 @@
 			<PHRASE Label="la_config_ThumbnailImageHeight" Module="Core" Type="1">VGh1bWJuYWlsIEhlaWdodA==</PHRASE>
 			<PHRASE Label="la_config_ThumbnailImageWidth" Module="Core" Type="1">VGh1bWJuYWlsIFdpZHRo</PHRASE>
 			<PHRASE Label="la_config_TrimRequiredFields" Module="Core" Type="1">VHJpbSBSZXF1aXJlZCBGaWVsZHM=</PHRASE>
+			<PHRASE Label="la_config_TypeKitId" Module="Core" Type="1">VHlwZUtpdCBJRA==</PHRASE>
 			<PHRASE Label="la_config_UpdateCountersOnFilterChange" Module="Core" Type="1">VXBkYXRlIGNvdW50ZXJzIChpbiBvdGhlciBmaWx0ZXJzKSBvbiBmaWx0ZXIgY2hhbmdl</PHRASE>
 			<PHRASE Label="la_config_UseChangeLog" Module="Core" Type="1">VHJhY2sgZGF0YWJhc2UgY2hhbmdlcyB0byBjaGFuZ2UgbG9n</PHRASE>
 			<PHRASE Label="la_config_UseColumnFreezer" Module="Core" Type="1">VXNlIENvbHVtbiBGcmVlemVy</PHRASE>
Index: install/install_data.sql
===================================================================
--- install/install_data.sql	(revision 15563)
+++ install/install_data.sql	(working copy)
@@ -110,6 +110,7 @@
 INSERT INTO SystemSettings VALUES(DEFAULT, 'l_GoogleMapsAPIKey', '', 'In-Portal', 'in-portal:configure_advanced', 'la_section_Settings3rdPartyAPI', 'la_fld_LinkGoogleMapsAPIKey', 'text', NULL, NULL, 80.02, 0, 1, NULL);
 INSERT INTO SystemSettings VALUES(DEFAULT, 'CKFinderLicenseName', '', 'In-Portal', 'in-portal:configure_advanced', 'la_section_Settings3rdPartyAPI', 'la_config_CKFinderLicenseName', 'text', NULL, NULL, 80.03, 0, 0, NULL);
 INSERT INTO SystemSettings VALUES(DEFAULT, 'CKFinderLicenseKey', '', 'In-Portal', 'in-portal:configure_advanced', 'la_section_Settings3rdPartyAPI', 'la_config_CKFinderLicenseKey', 'text', NULL, NULL, 80.04, 0, 0, NULL);
+INSERT INTO SystemSettings VALUES(DEFAULT, 'TypeKitId', '', 'In-Portal', 'in-portal:configure_advanced', 'la_section_Settings3rdPartyAPI', 'la_config_TypeKitId', 'text', NULL, NULL, 80.05, 0, 1, NULL);
 
 # Section "in-portal:configure_users":
 INSERT INTO SystemSettings VALUES(DEFAULT, 'User_Allow_New', '3', 'In-Portal:Users', 'in-portal:configure_users', 'la_title_General', 'la_users_allow_new', 'radio', '', '1=la_opt_UserInstantRegistration||2=la_opt_UserNotAllowedRegistration||3=la_opt_UserUponApprovalRegistration||4=la_opt_UserEmailActivation', 10.01, 0, 1, NULL);
Index: install/upgrades.sql
===================================================================
--- install/upgrades.sql	(revision 15590)
+++ install/upgrades.sql	(working copy)
@@ -2859,3 +2859,5 @@
 
 ALTER TABLE Users ADD PasswordHashingMethod TINYINT NOT NULL DEFAULT '3' AFTER Password;
 UPDATE Users SET PasswordHashingMethod = 1;
+
+INSERT INTO SystemSettings VALUES(DEFAULT, 'TypeKitId', '', 'In-Portal', 'in-portal:configure_advanced', 'la_section_Settings3rdPartyAPI', 'la_config_TypeKitId', 'text', NULL, NULL, 80.05, 0, 1, NULL);
