fck_scayt.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
  2. <!--
  3. * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  4. * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  5. *
  6. * == BEGIN LICENSE ==
  7. *
  8. * Licensed under the terms of any of the following licenses at your
  9. * choice:
  10. *
  11. * - GNU General Public License Version 2 or later (the "GPL")
  12. * http://www.gnu.org/licenses/gpl.html
  13. *
  14. * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
  15. * http://www.gnu.org/licenses/lgpl.html
  16. *
  17. * - Mozilla Public License Version 1.1 or later (the "MPL")
  18. * http://www.mozilla.org/MPL/MPL-1.1.html
  19. *
  20. * == END LICENSE ==
  21. -->
  22. <html>
  23. <head>
  24. <title>SCAYT Properties</title>
  25. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  26. <meta content="noindex, nofollow" name="robots">
  27. <script src="common/fck_dialog_common.js" type="text/javascript"></script>
  28. <link type="text/css" href="fck_scayt/scayt_dialog.css" rel="stylesheet" />
  29. <script type="text/javascript">
  30. var dialog = window.parent ;
  31. var oEditor = dialog.InnerDialogLoaded() ;
  32. var FCKLang = oEditor.FCKLang;
  33. var scayt = oEditor.scayt;
  34. var scayt_control = oEditor.scayt_control;
  35. var lang_list = {};
  36. var sLang;
  37. var fckLang;
  38. var chosed_lang;
  39. var options;
  40. var tabs = scayt_control.uiTags || [1,1,0,1];
  41. var userDicActive = tabs[2] == 1;
  42. var captions;
  43. var dic_buttons = [
  44. // [0] contains buttons for creating
  45. "dic_create,dic_restore",
  46. // [1] contains buton for manipulation
  47. "dic_rename,dic_delete"
  48. ];
  49. var get =
  50. new function(){
  51. var mergeObjs = function(obj1, obj2)
  52. {
  53. for (var k in obj1)
  54. obj2[k] = obj1[k];
  55. return obj2;
  56. };
  57. var removeWhitespaces = function( s )
  58. {
  59. s = s.replace( new RegExp("^ +| +$"), '' ) ;
  60. return s ;
  61. };
  62. var addEvent = function( el ,sEventName, fTodo )
  63. {
  64. if (el.addEventListener) {
  65. el.addEventListener (sEventName,fTodo,false);
  66. } else if (el.attachEvent) {
  67. el.attachEvent ("on"+sEventName,fTodo);
  68. } else {
  69. el["on"+sEventName] = fTodo;
  70. }
  71. };
  72. var getElementsByClassName = function (node,classname ,strTag) {
  73. strTag = strTag || "*";
  74. node = node || document;
  75. if (node.getElementsByClassName)
  76. return node.getElementsByClassName(classname);
  77. else {
  78. var objColl = node.getElementsByTagName(strTag);
  79. if (!objColl.length && strTag == "*" && node.all) objColl = node.all;
  80. var arr = new Array();
  81. var delim = classname.indexOf('|') != -1 ? '|' : ' ';
  82. var arrClass = classname.split(delim);
  83. for (var i = 0, j = objColl.length; i < j; i++) {
  84. var arrObjClass = objColl[i].className.split(' ');
  85. if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
  86. var c = 0;
  87. comparisonLoop:
  88. for ( var k = 0, l = arrObjClass.length ; k < l ; k++ )
  89. {
  90. for ( var m = 0, n = arrClass.length ; m < n ; m++ )
  91. {
  92. if ( arrClass[m] == arrObjClass[k] )
  93. c++ ;
  94. if ( ( delim == '|' && c == 1 ) || ( delim == ' ' && c == arrClass.length ) )
  95. {
  96. arr.push( objColl[i] ) ;
  97. break comparisonLoop ;
  98. }
  99. }
  100. }
  101. }
  102. return arr;
  103. }
  104. };
  105. var hasClassName = function ( sClassName, elem ) {
  106. //.split(/\s+/);
  107. var aCnames = elem.className.split(/\s+/) || [];
  108. for (var i=0, l=aCnames.length; i<l ; i++){
  109. if (sClassName == aCnames[i])
  110. return true;
  111. }
  112. return false;
  113. }
  114. var single = {
  115. addClass : function ( sClassName ) {
  116. //console.info( sClassName, this.className, );
  117. if ( hasClassName(sClassName , this) )
  118. return this;
  119. var s = removeWhitespaces(this.className + " " +sClassName);
  120. this.className = s;
  121. return this;
  122. },
  123. removeClass : function ( sClassName ) {
  124. var s = removeWhitespaces(this.className.replace(sClassName,""));
  125. this.className = s;
  126. return this;
  127. },
  128. setStyle : function( oStyles )
  129. {
  130. for ( var style in oStyles )
  131. {
  132. this.style[style] = oStyles[style] ;
  133. }
  134. return this ;
  135. },
  136. bindOnclick : function ( handler ) {
  137. //addEvent( this, "click" , handler);
  138. this.onclick = handler;
  139. return this;
  140. },
  141. bindOnchange : function ( handler ) {
  142. //addEvent( this, "change" , handler);
  143. this.onchange = handler;
  144. return this;
  145. },
  146. getAttr : function ( sAttrName )
  147. {
  148. if ( !sAttrName )
  149. return null;
  150. return this[sAttrName];
  151. },
  152. setAttr : function ( sAttrName , attrVal )
  153. {
  154. if ( !sAttrName || !attrVal )
  155. return null;
  156. this[sAttrName] = attrVal;
  157. return this;
  158. },
  159. remAttr : function ( sAttrName )
  160. {
  161. if ( !sAttrName )
  162. return null;
  163. }
  164. };
  165. var singleCaller = function ( sMethod,args ) {
  166. for ( var i=0, l=this.length; i<l ; i++ ){
  167. var oItem = mergeObjs( single, this[i] );
  168. oItem[sMethod].apply(this[i],args);
  169. }
  170. };
  171. var collection = {
  172. addClass : function ( sClassName ){
  173. singleCaller.call(this, "addClass", [sClassName])
  174. return this;
  175. },
  176. removeClass : function ( sClassName ) {
  177. singleCaller.call(this, "removeClass", [sClassName])
  178. return this;
  179. },
  180. setStyle : function ( oStyles ) {
  181. singleCaller.call(this, "setStyle", [oStyles])
  182. return this;
  183. },
  184. bindOnclick : function ( f ) {
  185. singleCaller.call(this, "bindOnclick", [f])
  186. return this;
  187. },
  188. bindOnchange : function ( f ) {
  189. singleCaller.call(this, "bindOnchange", [f])
  190. return this;
  191. },
  192. forEach : function ( fTodo ) {
  193. //el,i
  194. for (var i=0, l=this.length; i<l ; i++){
  195. fTodo.apply(this[i], [this[i],i ]);
  196. }
  197. return this;
  198. }
  199. };
  200. this.byClass = function( sClassName ){
  201. var o = getElementsByClassName(document, sClassName );
  202. return o ? mergeObjs( collection, o ) : o;
  203. };
  204. this.byId = function( sId ){
  205. var o = document.getElementById( sId );
  206. return o ? mergeObjs( single, o ) : o;
  207. };
  208. this.gup = function ( name ){
  209. name = name.replace( /[\[]/, '\\\[' ).replace( /[\]]/, '\\\]' ) ;
  210. var regexS = '[\\?&]' + name + '=([^&#]*)' ;
  211. var regex = new RegExp( regexS ) ;
  212. var results = regex.exec( window.location.href ) ;
  213. if( results == null )
  214. return '' ;
  215. else
  216. return results[ 1 ] ;
  217. };
  218. this.wrap = function ( o ) {
  219. return o ? mergeObjs( single, o ) : o;
  220. };
  221. this.forEach = function ( oScope, fTodo ){
  222. collection.forEach.apply( oScope,[fTodo] );
  223. };
  224. };
  225. // Add the dialog tabs.
  226. tabs[0] == 1 && dialog.AddTab( 'options', 'Options' ) ;
  227. tabs[1] == 1 && dialog.AddTab( 'langs', 'Languages' ) ;
  228. tabs[2] == 1 && dialog.AddTab( 'dictionary', 'Dictionary' ) ;
  229. tabs[3] == 1 && dialog.AddTab( 'about', 'About' ) ;
  230. // Function called when a dialog tab is selected.
  231. function OnDialogTabChange( tabCode )
  232. {
  233. ShowE('inner_options' , ( tabCode == 'options' ) ) ;
  234. ShowE('inner_langs' , ( tabCode == 'langs' ) ) ;
  235. ShowE('inner_dictionary' , ( tabCode == 'dictionary' ) ) ;
  236. ShowE('inner_about' , ( tabCode == 'about' ) ) ;
  237. }
  238. window.onload = function()
  239. {
  240. // Things to do when the page is loaded.
  241. if ( document.location.search.length )
  242. dialog.SetSelectedTab( document.location.search.substr(1) ) ;
  243. dialog.SetOkButton( true ) ;
  244. if (!scayt) throw "SCAYT is undefined";
  245. if (!scayt_control) throw "SCAYT_CONTROL is undefined";
  246. // show alowed tabs
  247. tabs = scayt_control.uiTags || [1,1,1,0];
  248. sLang = scayt_control.getLang();
  249. fckLang = "en";
  250. options = scayt_control.option();
  251. // apply captions
  252. scayt.getCaption( fckLang, function( caps )
  253. {
  254. //console.info( "scayt.getCaption runned" )
  255. captions = caps;
  256. apllyCaptions();
  257. //lang_list = scayt.getLangList();
  258. lang_list = scayt.getLangList() ;//|| {ltr: {"en_US" : "English","en_GB" : "British English","pt_BR" : "Brazilian Portuguese","da_DK" : "Danish","nl_NL" : "Dutch","en_CA" : "English Canadian","fi_FI" : "Finnish","fr_FR" : "French","fr_CA" : "French Canadian","de_DE" : "German","el_GR" : "Greek","hu_HU" : "Hungarian","it_IT" : "Italian","nb_NO" : "Norwegian","pl_PL" : "Polish","pt_PT" : "Portuguese","ru_RU" : "Russian","es_ES" : "Spanish","sv_SE" : "Swedish","tr_TR" : "Turkish","uk_UA" : "Ukrainian","cy_GB" : "Welsh"},rtl: {"ar_EG" : "Arabic"}};
  259. // ** animate options
  260. get.byClass("_scayt_option").forEach(function(el,i){
  261. if ('undefined' != typeof(options[el.name])) {
  262. // *** set default values
  263. if ( 1 == options[ el.name ] ){
  264. //el.setAttribute("checked","true");
  265. get.wrap(el).setAttr("checked" ,true)
  266. //document.all_options[el.name].checked = "true";
  267. //el.checked = true;
  268. //alert( options[ dojo.attr(el ,'name') ] + " el " )
  269. }
  270. //console.info(options)
  271. // *** bind events
  272. get.wrap(el).bindOnclick( function(ev){
  273. var that = get.wrap(this);
  274. var isCheck = that.getAttr("checked");
  275. //console.info(isCheck)
  276. if ( isCheck ) {
  277. //that.setAttr("checked", true);
  278. options[ this.name ] = 1;
  279. } else {
  280. //that.setAttr("checked", false);
  281. options[ this.name ] = 0;
  282. }
  283. //console.info(options)
  284. });
  285. }
  286. });
  287. // * Create languages tab
  288. // ** convert langs obj to array
  289. var lang_arr = [];
  290. for (var k in lang_list.rtl){
  291. // find curent lang
  292. if ( k == sLang)
  293. chosed_lang = lang_list.rtl[k] + "::" + k;
  294. lang_arr[lang_arr.length] = lang_list.rtl[k] + "::" + k;
  295. }
  296. for (var k in lang_list.ltr){
  297. // find curent lang
  298. if ( k == sLang)
  299. chosed_lang = lang_list.ltr[k] + "::" + k;
  300. lang_arr[lang_arr.length] = lang_list.ltr[k] + "::" + k;
  301. }
  302. lang_arr.sort();
  303. // ** find lang containers
  304. var lcol = get.byId("lcolid");
  305. var rcol = get.byId("rcolid");
  306. // ** place langs in DOM
  307. get.forEach(lang_arr , function( l , i ){
  308. //console.info( l,i );
  309. var l_arr = l.split('::');
  310. var l_name = l_arr[0];
  311. var l_code = l_arr[1];
  312. var row = document.createElement('div');
  313. row.id = l_code;
  314. row.className = "li";
  315. // split langs on half
  316. var col = ( i < lang_arr.length/2 ) ? lcol:rcol ;
  317. // append row
  318. //console.dir( col )
  319. col.appendChild(row);
  320. var row_dom = get.byId( l_code )
  321. row_dom.innerHTML = l_name;
  322. var checkActiveLang = function( id ){
  323. return chosed_lang.split("::")[1] == id;
  324. };
  325. // bind click
  326. row_dom.bindOnclick(function(ev){
  327. if ( checkActiveLang(this.id) ) return false;
  328. var elId = this.id;
  329. get.byId(this.id)
  330. .addClass("Button")
  331. .removeClass("DarkBackground");
  332. window.setTimeout( function (){ get.byId(elId).setStyle({opacity:"0.5",cursor:"no-drop"}); } ,300 );
  333. get.byId(chosed_lang.split("::")[1])
  334. .addClass("DarkBackground")
  335. .removeClass("Button")
  336. .setStyle({opacity:"1",cursor:"pointer"});
  337. chosed_lang = this.innerHTML + "::" + this.id;
  338. return true;
  339. })
  340. .setStyle({
  341. cursor:"pointer"
  342. });
  343. // select current lang
  344. if (l == chosed_lang)
  345. row_dom.addClass("Button").setStyle({opacity:"0.5",cursor:"no-drop"});
  346. else
  347. row_dom.addClass("DarkBackground").setStyle({opacity:"1"});
  348. });
  349. // * user dictionary
  350. if ( userDicActive ){
  351. initUserDictionary()
  352. }
  353. });
  354. }
  355. var buttons = [ 'dic_create','dic_delete','dic_rename','dic_restore' ];
  356. var labels = [ 'mixedCase','mixedWithDigits','allCaps','ignoreDomainNames' ];
  357. function apllyCaptions ( )
  358. {
  359. // fill tabs headers
  360. // add missing captions
  361. get.byClass("PopupTab").forEach(function(el,i){
  362. if ( tabs[i] == 1 ){
  363. el.style.display = "block";
  364. }
  365. el.innerHTML = captions['tab_'+el.id];
  366. });
  367. // Fill options labels.
  368. for ( i in labels )
  369. {
  370. var label = 'label_' + labels[ i ],
  371. labelElement = document.getElementById( label );
  372. if ( 'undefined' != typeof labelElement
  373. && 'undefined' != typeof captions[ label ] && captions[ label ] !== ""
  374. && 'undefined' != typeof options[labels[ i ]] )
  375. {
  376. labelElement.innerHTML = captions[ label ];
  377. var labelParent = labelElement.parentNode;
  378. labelParent.style.display = "block";
  379. }
  380. }
  381. // fill dictionary section
  382. for ( var i in buttons )
  383. {
  384. var button = buttons[ i ];
  385. get.byId( button ).innerHTML = '<span>' + captions[ 'button_' + button] +'</span>' ;
  386. }
  387. get.byId("dname").innerHTML = captions['label_dname'];
  388. get.byId( 'dic_info' ).innerHTML = captions[ 'dic_info' ];
  389. // fill about tab
  390. var about = '<p>' + captions[ 'about_throwt_image' ] + '</p>'+
  391. '<p>' + captions[ 'version' ] + scayt.version.toString() + '</p>' +
  392. '<p>' + captions[ 'about_throwt_copy' ] + '</p>';
  393. get.byId( 'scayt_about' ).innerHTML = about;
  394. }
  395. function initUserDictionary () {
  396. scayt.getNameUserDictionary(
  397. function( o )
  398. {
  399. var dic_name = o.dname;
  400. if ( dic_name )
  401. {
  402. get.byId( 'dic_name' ).value = dic_name;
  403. display_dic_buttons( dic_buttons[1] );
  404. }
  405. else
  406. display_dic_buttons( dic_buttons[0] );
  407. },
  408. function ()
  409. {
  410. get.byId( 'dic_name' ).value("");
  411. dic_error_message(captions["err_dic_enable"] || "Used dictionary are unaveilable now.")
  412. }
  413. );
  414. dic_success_message("");
  415. // ** bind event listeners
  416. get.byClass("button").bindOnclick(function( ){
  417. // get dic name
  418. var dic_name = get.byId('dic_name').value ;
  419. // check common dictionary rules
  420. if (!dic_name) {
  421. dic_error_message(" Dictionary name should not be empty. ");
  422. return false;
  423. }
  424. //apply handler
  425. window[this.id].apply( window, [this, dic_name, dic_buttons ] );
  426. //console.info( typeof window[this.id], window[this.id].calle )
  427. return false;
  428. });
  429. }
  430. dic_create = function( el, dic_name , dic_buttons )
  431. {
  432. // comma separated button's ids include repeats if exists
  433. var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
  434. var err_massage = captions["err_dic_create"];
  435. var suc_massage = captions["succ_dic_create"];
  436. //console.info("--plugin ");
  437. scayt.createUserDictionary(dic_name,
  438. function(arg)
  439. {
  440. //console.info( "dic_create callback called with args" , arg );
  441. hide_dic_buttons ( all_buttons );
  442. display_dic_buttons ( dic_buttons[1] );
  443. suc_massage = suc_massage.replace("%s" , arg.dname );
  444. dic_success_message (suc_massage);
  445. },
  446. function(arg)
  447. {
  448. //console.info( "dic_create errorback called with args" , arg )
  449. err_massage = err_massage.replace("%s" ,arg.dname );
  450. dic_error_message ( err_massage + "( "+ (arg.message || "") +")");
  451. });
  452. };
  453. dic_rename = function( el, dic_name , dic_buttons )
  454. {
  455. //
  456. // try to rename dictionary
  457. // @TODO: rename dict
  458. //console.info ( captions["err_dic_rename"] )
  459. var err_massage = captions["err_dic_rename"] || "";
  460. var suc_massage = captions["succ_dic_rename"] || "";
  461. scayt.renameUserDictionary(dic_name,
  462. function(arg)
  463. {
  464. //console.info( "dic_rename callback called with args" , arg );
  465. suc_massage = suc_massage.replace("%s" , arg.dname );
  466. set_dic_name( dic_name );
  467. dic_success_message ( suc_massage );
  468. },
  469. function(arg)
  470. {
  471. //console.info( "dic_rename errorback called with args" , arg )
  472. err_massage = err_massage.replace("%s" , arg.dname );
  473. set_dic_name( dic_name );
  474. dic_error_message( err_massage + "( " + ( arg.message || "" ) + " )" );
  475. });
  476. };
  477. dic_delete = function ( el, dic_name , dic_buttons )
  478. {
  479. var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
  480. var err_massage = captions["err_dic_delete"];
  481. var suc_massage = captions["succ_dic_delete"];
  482. // try to delete dictionary
  483. // @TODO: delete dict
  484. scayt.deleteUserDictionary(
  485. function(arg)
  486. {
  487. //console.info( "dic_delete callback " , dic_name ,arg );
  488. suc_massage = suc_massage.replace("%s" , arg.dname );
  489. hide_dic_buttons ( all_buttons );
  490. display_dic_buttons ( dic_buttons[0] );
  491. set_dic_name( "" ); // empty input field
  492. dic_success_message( suc_massage );
  493. },
  494. function(arg)
  495. {
  496. //console.info( " dic_delete errorback called with args" , arg )
  497. err_massage = err_massage.replace("%s" , arg.dname );
  498. dic_error_message(err_massage);
  499. });
  500. };
  501. dic_restore = dialog.dic_restore || function ( el, dic_name , dic_buttons )
  502. {
  503. // try to restore existing dictionary
  504. var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
  505. var err_massage = captions["err_dic_restore"];
  506. var suc_massage = captions["succ_dic_restore"];
  507. scayt.restoreUserDictionary(dic_name,
  508. function(arg)
  509. {
  510. //console.info( "dic_restore callback called with args" , arg );
  511. suc_massage = suc_massage.replace("%s" , arg.dname );
  512. hide_dic_buttons ( all_buttons );
  513. display_dic_buttons(dic_buttons[1]);
  514. dic_success_message( suc_massage );
  515. },
  516. function(arg)
  517. {
  518. //console.info( " dic_restore errorback called with args" , arg )
  519. err_massage = err_massage.replace("%s" , arg.dname );
  520. dic_error_message( err_massage );
  521. });
  522. };
  523. function dic_error_message( m )
  524. {
  525. if ( !m )
  526. return ;
  527. get.byId('dic_message').innerHTML = '<span class="error">' + m + '</span>' ;
  528. }
  529. function dic_success_message( m )
  530. {
  531. if ( !m )
  532. return ;
  533. get.byId('dic_message').innerHTML = '<span class="success">' + m + '</span>' ;
  534. }
  535. function display_dic_buttons ( sIds ){
  536. sIds = new String( sIds );
  537. get.forEach( sIds.split(','), function ( id,i) {
  538. get.byId(id).setStyle({display:"inline"});
  539. });
  540. }
  541. function hide_dic_buttons ( sIds ){
  542. sIds = new String( sIds );
  543. get.forEach( sIds.split(','), function ( id,i) {
  544. get.byId(id).setStyle({display:"none"});
  545. });
  546. }
  547. function set_dic_name ( dic_name ) {
  548. get.byId('dic_name').value = dic_name;
  549. }
  550. function display_dic_tab () {
  551. get.byId("dic_tab").style.display = "block";
  552. }
  553. function Ok()
  554. {
  555. // Things to do when the Ok button is clicked.
  556. var c = 0;
  557. // set upp options if any was set
  558. var o = scayt_control.option();
  559. //console.info(options)
  560. for ( var oN in options ) {
  561. if ( o[oN] != options[oN] && c == 0){
  562. //console.info( "set option " )
  563. scayt_control.option( options );
  564. c++;
  565. }
  566. }
  567. //setup languge if it was change
  568. var csLang = chosed_lang.split("::")[1];
  569. if ( csLang && sLang != csLang ){
  570. scayt_control.setLang( csLang );
  571. //console.info(sLang+" -> "+csLang , scayt_control)
  572. c++;
  573. }
  574. if ( c > 0 ) scayt_control.refresh();
  575. return dialog.Cancel();
  576. }
  577. </script>
  578. <style type="text/css">
  579. body, td, input, textarea, select, label { font-family: Arial, Verdana, Geneva, helvetica, sans-serif; font-size: 11px; }
  580. </style>
  581. </head>
  582. <body style="OVERFLOW: hidden" scroll="no">
  583. <div class="tab_container" id="inner_options">
  584. <ul id="scayt_options">
  585. <li class="_scayt_options">
  586. <input class="_scayt_option" type="checkbox" value="0" name="allCaps" />
  587. <label for="allCaps" id="label_allCaps"></label>
  588. </li>
  589. <li>
  590. <input class="_scayt_option" type="checkbox" value="0" name="ignoreDomainNames" />
  591. <label for="ignoreDomainNames" id="label_ignoreDomainNames"></label>
  592. </li>
  593. <li>
  594. <input class="_scayt_option" type="checkbox" value="0" name="mixedCase" />
  595. <label for="mixedCase" id="label_mixedCase"></label>
  596. </li>
  597. <li>
  598. <input class="_scayt_option" type="checkbox" value="0" name="mixedWithDigits" />
  599. <label for="mixedWithDigits" id="label_mixedWithDigits"></label>
  600. </li>
  601. </ul>
  602. </div>
  603. <div class="tab_container" id="inner_langs">
  604. <div class="lcol" id="lcolid"></div>
  605. <div class="rcol" id="rcolid"></div>
  606. </div>
  607. <div class="tab_container" id="inner_dictionary">
  608. <div id="dic_message"></div>
  609. <div id="_off_dic_tab" class="dictionary" >
  610. <div style="padding-left:10px;">
  611. <label id="dname" for="dname"></label>
  612. <input type="text" size="14" maxlength="15" value="" id="dic_name" name="dic_name"/>
  613. </div>
  614. <div class="dic_buttons">
  615. <a href="#" id="dic_create" class="button"> </a>
  616. <a href="#" id="dic_delete" class="button"> </a>
  617. <a href="#" id="dic_rename" class="button"> </a>
  618. <a href="#" id="dic_restore" class="button"> </a>
  619. </div>
  620. <div id="dic_info"></div>
  621. </div>
  622. </div>
  623. <div id="inner_about" class="tab_container">
  624. <div id="scayt_about"></div>
  625. </div>
  626. </body>
  627. </html>