Project

General

Profile

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-2009 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

    
31
			var dialog	= window.parent ;
32
			var oEditor	= dialog.InnerDialogLoaded() ;
33
			var FCKLang = oEditor.FCKLang;
34
			var scayt = oEditor.scayt;
35
			var scayt_control = oEditor.scayt_control;
36
			var lang_list = {};
37
            var	sLang;
38
			var	fckLang;
39
            var chosed_lang;
40
			var options;
41
			var	tabs = scayt_control.uiTags || [1,1,0,1];
42
			var	userDicActive = tabs[2] == 1;
43
			var	captions;
44
			var dic_buttons = [
45
				// [0] contains buttons for creating
46
				"dic_create,dic_restore",
47
				// [1] contains buton for manipulation
48
				"dic_rename,dic_delete"
49
			];
50

    
51
			var get =
52
				new function(){
53

    
54
					var mergeObjs = function(obj1, obj2)
55
					{
56
						for (var k in obj1)
57
							obj2[k] = obj1[k];
58

    
59
						return obj2;
60
					};
61

    
62
					var removeWhitespaces = function( s )
63
					{
64
						s = s.replace( new RegExp("^ +| +$"), '' ) ;
65
						return s ;
66
					};
67

    
68
					var addEvent = function( el ,sEventName, fTodo )
69
					{
70
						if (el.addEventListener) {
71
							el.addEventListener (sEventName,fTodo,false);
72

    
73
						} else if (el.attachEvent) {
74
							el.attachEvent ("on"+sEventName,fTodo);
75

    
76
						} else {
77
							el["on"+sEventName] = fTodo;
78
						}
79
					};
80

    
81
					var getElementsByClassName = function (node,classname ,strTag) {
82
						strTag = strTag || "*";
83
					  	node = node || document;
84
						if (node.getElementsByClassName)
85
							return node.getElementsByClassName(classname);
86
						else {
87
							var objColl = node.getElementsByTagName(strTag);
88
							if (!objColl.length &&  strTag == "*" &&  node.all) objColl = node.all;
89
							var arr = new Array();
90
							var delim = classname.indexOf('|') != -1  ? '|' : ' ';
91
							var arrClass = classname.split(delim);
92
							for (var i = 0, j = objColl.length; i < j; i++) {
93
								var arrObjClass = objColl[i].className.split(' ');
94
								if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
95
								var c = 0;
96
								comparisonLoop:
97
									for ( var k = 0, l = arrObjClass.length ; k < l ; k++ )
98
									{
99
										for ( var m = 0, n = arrClass.length ; m < n ; m++ )
100
										{
101
											if ( arrClass[m] == arrObjClass[k] )
102
												c++ ;
103

    
104
											if ( ( delim == '|' && c == 1 ) || ( delim == ' ' && c == arrClass.length ) )
105
											{
106
												arr.push( objColl[i] ) ;
107
												break comparisonLoop ;
108
											}
109
										}
110
									}
111
							}
112
							return arr;
113
						}
114
					};
115

    
116
					var hasClassName = function ( sClassName, elem ) {
117
						//.split(/\s+/);
118
						var aCnames = elem.className.split(/\s+/) || [];
119
						for (var i=0, l=aCnames.length; i<l ; i++){
120
							if (sClassName == aCnames[i])
121
								return true;
122
						}
123
						return false;
124
					}
125

    
126
					var single = {
127
						addClass 	: function ( sClassName ) {
128
							//console.info( sClassName, this.className, );
129
							if ( hasClassName(sClassName , this) )
130
								return this;
131
							var s = removeWhitespaces(this.className + " " +sClassName);
132
							this.className = s;
133
							return this;
134

    
135
						},
136
						removeClass : function ( sClassName ) {
137
							var s = removeWhitespaces(this.className.replace(sClassName,""));
138
							this.className = s;
139
							return this;
140
						},
141
						setStyle : function( oStyles )
142
						{
143
							for ( var style in oStyles )
144
							{
145
								this.style[style] = oStyles[style] ;
146
							}
147
							return this ;
148
						},
149
						bindOnclick		: function ( handler ) {
150
							//addEvent( this, "click" , handler);
151
							this.onclick = handler;
152
							return this;
153
						},
154
						bindOnchange	: function ( handler ) {
155
							//addEvent( this, "change" , handler);
156
							this.onchange = handler;
157
							return this;
158
						},
159
						getAttr : function ( sAttrName )
160
						{
161
							if ( !sAttrName )
162
								return null;
163

    
164
							return this[sAttrName];
165
						},
166
						setAttr : function ( sAttrName , attrVal )
167
						{
168
							if ( !sAttrName || !attrVal )
169
								return null;
170

    
171
							this[sAttrName] = attrVal;
172

    
173
							return this;
174
						},
175
						remAttr : function ( sAttrName )
176
						{
177
							if ( !sAttrName )
178
								return null;
179
						}
180
					};
181

    
182
					var singleCaller = function ( sMethod,args ) {
183
						for ( var i=0, l=this.length; i<l ; i++ ){
184
							var oItem = mergeObjs( single, this[i] );
185
							oItem[sMethod].apply(this[i],args);
186
						}
187
					};
188

    
189

    
190
					var collection = {
191

    
192
						addClass 	: function ( sClassName ){
193
							singleCaller.call(this, "addClass", [sClassName])
194
							return this;
195
						},
196
						removeClass 	: function ( sClassName ) {
197
							singleCaller.call(this, "removeClass", [sClassName])
198
							return this;
199
						},
200
						setStyle		: function ( oStyles ) {
201
							singleCaller.call(this, "setStyle", [oStyles])
202
							return this;
203
						},
204
						bindOnclick		: function ( f ) {
205
							singleCaller.call(this, "bindOnclick", [f])
206
							return this;
207
						},
208
						bindOnchange	: function ( f ) {
209
							singleCaller.call(this, "bindOnchange", [f])
210
							return this;
211
						},
212

    
213
						forEach : function ( fTodo ) {
214
							//el,i
215
							for (var i=0, l=this.length; i<l ; i++){
216
								fTodo.apply(this[i], [this[i],i ]);
217
							}
218
							return this;
219
						}
220

    
221
					};
222

    
223

    
224

    
225
					this.byClass = function( sClassName ){
226
						var o = getElementsByClassName(document, sClassName );
227
						return o ? mergeObjs( collection, o ) : o;
228
					};
229

    
230
					this.byId = function( sId ){
231
						var o = document.getElementById( sId );
232
						return o ? mergeObjs( single, o ) : o;
233
					};
234

    
235
					this.gup = function ( name ){
236
				        name = name.replace( /[\[]/, '\\\[' ).replace( /[\]]/, '\\\]' ) ;
237
				        var regexS = '[\\?&]' + name + '=([^&#]*)' ;
238
				        var regex = new RegExp( regexS ) ;
239
				        var results = regex.exec( window.location.href ) ;
240

    
241
				        if( results == null )
242
				            return '' ;
243
				        else
244
				            return results[ 1 ] ;
245
					};
246
					this.wrap = function ( o ) {
247
						return o ? mergeObjs( single, o ) : o;
248
					};
249
					this.forEach = function ( oScope, fTodo ){
250
						collection.forEach.apply( oScope,[fTodo] );
251
					};
252

    
253
				 };
254

    
255

    
256

    
257
			// Add the dialog tabs.
258
			tabs[0] == 1 && dialog.AddTab( 'options', 'Options' ) ;
259
			tabs[1] == 1 && dialog.AddTab( 'langs', 'Languages' ) ;
260
			tabs[2] == 1 && dialog.AddTab( 'dictionary', 'Dictionary' ) ;
261
			tabs[3] == 1 && dialog.AddTab( 'about', 'About' ) ;
262

    
263
			// Function called when a dialog tab is selected.
264
			function OnDialogTabChange( tabCode )
265
			{
266
				ShowE('inner_options'	, ( tabCode == 'options' ) ) ;
267
				ShowE('inner_langs'	, ( tabCode == 'langs' ) ) ;
268
				ShowE('inner_dictionary'		, ( tabCode == 'dictionary' ) ) ;
269
				ShowE('inner_about'	, ( tabCode == 'about' ) ) ;
270
			}
271

    
272

    
273

    
274

    
275

    
276
			window.onload = function()
277
			{
278
				// Things to do when the page is loaded.
279

    
280
				if ( document.location.search.length )
281
					dialog.SetSelectedTab( document.location.search.substr(1) ) ;
282

    
283
				dialog.SetOkButton( true ) ;
284

    
285

    
286
	                if (!scayt) throw "SCAYT is undefined";
287
	                if (!scayt_control) throw "SCAYT_CONTROL is undefined";
288

    
289
					// show alowed tabs
290
					tabs = scayt_control.uiTags || [1,1,1,0];
291

    
292

    
293
					sLang = scayt_control.getLang();
294
	                fckLang = "en";
295
					options = scayt_control.option();
296
					// apply captions
297
					scayt.getCaption( fckLang, function( caps )
298
					{
299
						//console.info( "scayt.getCaption runned" )
300
						captions = caps;
301
						apllyCaptions();
302
						//lang_list = scayt.getLangList();
303
		                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"}};
304

    
305

    
306

    
307

    
308
		                // ** animate options
309
		                get.byClass("_scayt_option").forEach(function(el,i){
310

    
311
							if ('undefined' != typeof(options[el.name])) {
312
		                        // *** set default values
313

    
314
		                        if ( 1 == options[ el.name ] ){
315
		                           //el.setAttribute("checked","true");
316
								   get.wrap(el).setAttr("checked" ,true)
317
								   //document.all_options[el.name].checked = "true";
318
								   //el.checked = true;
319
								   //alert( options[ dojo.attr(el ,'name') ] + " el " )
320
		                        }
321
								//console.info(options)
322
		                        // *** bind events
323
		                        get.wrap(el).bindOnclick( function(ev){
324

    
325
									var that = get.wrap(this);
326
									var isCheck = that.getAttr("checked");
327
									//console.info(isCheck)
328
		                            if ( isCheck == false ) {
329

    
330
										//that.setAttr("checked",false);
331
										options[ this.name ] = 0;
332
		                            }else{
333
		                                //that.setAttr("checked",true);
334
										options[ this.name ] = 1;
335
		                            }
336
									//console.info(options)
337
		                        });
338
		                    }
339
		                });
340

    
341

    
342
		                // * Create languages tab
343
		                // ** convert langs obj to array
344
		                var lang_arr = [];
345

    
346
		                for (var k in lang_list.rtl){
347
		                    // find curent lang
348
		                    if ( k == sLang)
349
		                        chosed_lang = lang_list.rtl[k] + "::" + k;
350
		                    lang_arr[lang_arr.length] = lang_list.rtl[k] + "::" + k;
351

    
352
		                }
353
		                for (var k in lang_list.ltr){
354
		                     // find curent lang
355
		                     if ( k == sLang)
356
		                        chosed_lang = lang_list.ltr[k] + "::" + k;
357
		                    lang_arr[lang_arr.length] = lang_list.ltr[k] + "::" + k;
358
		                }
359
		                lang_arr.sort();
360

    
361
		                // ** find lang containers
362

    
363
		                var lcol = get.byId("lcolid");
364
		                var rcol = get.byId("rcolid");
365
		                // ** place langs in DOM
366

    
367
		                get.forEach(lang_arr , function( l , i ){
368

    
369
							//console.info( l,i );
370

    
371
							var l_arr = l.split('::');
372
		                    var l_name = l_arr[0];
373
		                    var l_code = l_arr[1];
374
		                    var row = document.createElement('div');
375
		                    row.id = l_code;
376
		                    row.className = "li";
377
		                    // split langs on half
378
		                    var col = ( i < lang_arr.length/2 ) ? lcol:rcol ;
379

    
380
		                    // append row
381
		                    //console.dir( col )
382
		                    col.appendChild(row);
383
		                    var row_dom = get.byId( l_code )
384
		                    row_dom.innerHTML = l_name;
385

    
386
		                    var checkActiveLang = function( id ){
387
		                        return chosed_lang.split("::")[1] == id;
388
		                    };
389
		                    // bind click
390
		                    row_dom.bindOnclick(function(ev){
391

    
392
		                        if ( checkActiveLang(this.id) ) return false;
393
		                        var elId = this.id;
394
								get.byId(this.id)
395
	                            	.addClass("Button")
396
	                            	.removeClass("DarkBackground");
397

    
398
		                        window.setTimeout( function (){ get.byId(elId).setStyle({opacity:"0.5",cursor:"no-drop"});  } ,300 );
399

    
400
		                        get.byId(chosed_lang.split("::")[1])
401
		                            .addClass("DarkBackground")
402
		                            .removeClass("Button")
403
		                            .setStyle({opacity:"1",cursor:"pointer"});
404

    
405
		                        chosed_lang = this.innerHTML + "::" + this.id;
406
		                        return true;
407
		                    })
408
							.setStyle({
409
		                        cursor:"pointer"
410
		                    });
411
		                    // select current lang
412
		                    if (l == chosed_lang)
413
		                        row_dom.addClass("Button").setStyle({opacity:"0.5",cursor:"no-drop"});
414
		                    else
415
		                        row_dom.addClass("DarkBackground").setStyle({opacity:"1"});
416

    
417
		                });
418
						// * user dictionary
419
						if ( userDicActive ){
420
							initUserDictionary()
421

    
422
						}
423
					});
424

    
425

    
426

    
427
			}
428

    
429

    
430

    
431

    
432
			var buttons = [ 'dic_create','dic_delete','dic_rename','dic_restore' ];
433
			var labels  = [ 'mixedCase','mixedWithDigits','allCaps','ignoreDomainNames' ];
434

    
435

    
436
			function apllyCaptions ( )
437
			{
438

    
439
				// fill tabs headers
440
				// add missing captions
441

    
442
				get.byClass("PopupTab").forEach(function(el,i){
443

    
444
					if ( tabs[i] == 1 ){
445
						el.style.display = "block";
446
					}
447
					el.innerHTML = captions['tab_'+el.id];
448

    
449
				});
450

    
451
				// Fill options labels.
452
				for ( i in labels )
453
				{
454
					var label = 'label_' + labels[ i ],
455
						labelElement = document.getElementById( label );
456

    
457
					if (  'undefined' != typeof labelElement
458
					   && 'undefined' != typeof captions[ label ] && captions[ label ] !== ""
459
					   && 'undefined' != typeof options[labels[ i ]] )
460
					{
461
						labelElement.innerHTML = captions[ label ];
462
						var labelParent = labelElement.parentNode;
463
						labelParent.style.display = "block";
464
					}
465
				}
466
				// fill dictionary section
467
				for ( var i in buttons )
468
				{
469
					var button = buttons[ i ];
470
					get.byId( button ).innerHTML = '<span>' + captions[ 'button_' + button]  +'</span>' ;
471
				}
472
				get.byId("dname").innerHTML = captions['label_dname'];
473
				get.byId( 'dic_info' ).innerHTML = captions[ 'dic_info' ];
474

    
475
				// fill about tab
476
				var about = '<p>' + captions[ 'about_throwt_image' ] + '</p>'+
477
					'<p>' + captions[ 'version' ]  + scayt.version.toString() + '</p>' +
478
					'<p>' + captions[ 'about_throwt_copy' ] + '</p>';
479

    
480
				get.byId( 'scayt_about' ).innerHTML = about;
481

    
482
			}
483

    
484

    
485
			function initUserDictionary () {
486

    
487
				scayt.getNameUserDictionary(
488
					function( o )
489
					{
490
						var dic_name = o.dname;
491
						if ( dic_name )
492
						{
493
							get.byId( 'dic_name' ).value = dic_name;
494
							display_dic_buttons( dic_buttons[1] );
495
						}
496
						else
497
							display_dic_buttons( dic_buttons[0] );
498

    
499
					},
500
					function ()
501
					{
502
						get.byId( 'dic_name' ).value("");
503
						dic_error_message(captions["err_dic_enable"] || "Used dictionary are unaveilable now.")
504
					}
505
				);
506

    
507
				dic_success_message("");
508

    
509
				 // ** bind event listeners
510
                get.byClass("button").bindOnclick(function( ){
511

    
512
					// get dic name
513
					var dic_name = get.byId('dic_name').value ;
514
					// check common dictionary rules
515
					if (!dic_name) {
516
						dic_error_message(" Dictionary name should not be empty. ");
517
						return false;
518
					}
519
					//apply handler
520
					window[this.id].apply( window, [this, dic_name, dic_buttons ] );
521

    
522
					//console.info( typeof window[this.id], window[this.id].calle )
523
					return false;
524
				});
525

    
526
			}
527

    
528
			dic_create = function( el, dic_name , dic_buttons )
529
			{
530
				// comma separated button's ids include repeats if exists
531
				var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
532

    
533
				var err_massage = captions["err_dic_create"];
534
				var suc_massage = captions["succ_dic_create"];
535
				//console.info("--plugin ");
536

    
537
				scayt.createUserDictionary(dic_name,
538
					function(arg)
539
						{
540
							//console.info( "dic_create callback called with args" , arg );
541
							hide_dic_buttons ( all_buttons );
542
							display_dic_buttons ( dic_buttons[1] );
543
							suc_massage = suc_massage.replace("%s" , arg.dname );
544
							dic_success_message (suc_massage);
545
						},
546
					function(arg)
547
						{
548
							//console.info( "dic_create errorback called with args" , arg )
549
							err_massage = err_massage.replace("%s" ,arg.dname );
550
							dic_error_message ( err_massage + "( "+ (arg.message || "") +")");
551
						});
552

    
553
			};
554

    
555
			dic_rename = function( el, dic_name , dic_buttons )
556
			{
557
				//
558
				// try to rename dictionary
559
				// @TODO: rename dict
560
				//console.info ( captions["err_dic_rename"] )
561
				var err_massage = captions["err_dic_rename"] || "";
562
				var suc_massage = captions["succ_dic_rename"] || "";
563
				scayt.renameUserDictionary(dic_name,
564
					function(arg)
565
						{
566
							//console.info( "dic_rename callback called with args" , arg );
567
							suc_massage = suc_massage.replace("%s" , arg.dname );
568
							set_dic_name( dic_name );
569
							dic_success_message ( suc_massage );
570
						},
571
					function(arg)
572
						{
573
							//console.info( "dic_rename errorback called with args" , arg )
574
							err_massage = err_massage.replace("%s" , arg.dname  );
575
							set_dic_name( dic_name );
576
							dic_error_message( err_massage + "( " + ( arg.message || "" ) + " )" );
577
						});
578
			};
579

    
580
			dic_delete = function ( el, dic_name , dic_buttons )
581
			{
582
				var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
583
				var err_massage = captions["err_dic_delete"];
584
				var suc_massage = captions["succ_dic_delete"];
585

    
586
				// try to delete dictionary
587
				// @TODO: delete dict
588
				scayt.deleteUserDictionary(
589
					function(arg)
590
						{
591
							//console.info( "dic_delete callback " , dic_name ,arg );
592
							suc_massage = suc_massage.replace("%s" , arg.dname );
593
							hide_dic_buttons ( all_buttons );
594
							display_dic_buttons ( dic_buttons[0] );
595
							set_dic_name( "" ); // empty input field
596
							dic_success_message( suc_massage );
597
						},
598
					function(arg)
599
						{
600
							//console.info( " dic_delete errorback called with args" , arg )
601
							err_massage = err_massage.replace("%s" , arg.dname );
602
							dic_error_message(err_massage);
603
						});
604
			};
605

    
606
			dic_restore = dialog.dic_restore || function ( el, dic_name , dic_buttons )
607
			{
608
				// try to restore existing dictionary
609
				var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
610
				var err_massage = captions["err_dic_restore"];
611
				var suc_massage = captions["succ_dic_restore"];
612

    
613
				scayt.restoreUserDictionary(dic_name,
614
					function(arg)
615
						{
616
							//console.info( "dic_restore callback called with args" , arg );
617
							suc_massage = suc_massage.replace("%s" , arg.dname );
618
							hide_dic_buttons ( all_buttons );
619
							display_dic_buttons(dic_buttons[1]);
620
							dic_success_message( suc_massage );
621
						},
622
					function(arg)
623
						{
624
							//console.info( " dic_restore errorback called with args" , arg )
625
							err_massage = err_massage.replace("%s" , arg.dname );
626
							dic_error_message( err_massage );
627
						});
628
			};
629

    
630
			function dic_error_message( m )
631
			{
632
				if ( !m )
633
					return ;
634

    
635
				get.byId('dic_message').innerHTML =  '<span class="error">' + m + '</span>' ;
636
			}
637

    
638
            function dic_success_message( m )
639
            {
640
				if ( !m )
641
					return ;
642

    
643
				get.byId('dic_message').innerHTML = '<span class="success">' + m + '</span>' ;
644
			}
645

    
646
			function display_dic_buttons ( sIds ){
647
				sIds = new String( sIds );
648
				get.forEach( sIds.split(','), function ( id,i) {
649
					get.byId(id).setStyle({display:"inline"});
650
				});
651
			}
652
			function hide_dic_buttons ( sIds ){
653
				sIds = new String( sIds );
654
				get.forEach( sIds.split(','), function ( id,i) {
655
					get.byId(id).setStyle({display:"none"});
656
				});
657
			}
658
			function set_dic_name ( dic_name ) {
659
				get.byId('dic_name').value = dic_name;
660
			}
661
			function display_dic_tab () {
662
				get.byId("dic_tab").style.display = "block";
663
			}
664

    
665
			function Ok()
666
			{
667
				// Things to do when the Ok button is clicked.
668
				var c = 0;
669
			    // set upp options if any was set
670
			    var o = scayt_control.option();
671
				//console.info(options)
672
			    for ( var oN in options ) {
673

    
674
			        if ( o[oN] != options[oN] && c == 0){
675
						//console.info( "set option " )
676
			            scayt_control.option( options );
677
			            c++;
678
			        }
679
			    }
680
			    //setup languge if it was change
681
			    var csLang = chosed_lang.split("::")[1];
682
			    if ( csLang && sLang != csLang ){
683
			        scayt_control.setLang( csLang );
684
					//console.info(sLang+" -> "+csLang , scayt_control)
685
			        c++;
686
			    }
687

    
688
			    if ( c > 0 )  scayt_control.refresh();
689

    
690
			    return dialog.Cancel();
691

    
692
			}
693

    
694
		</script>
695
	</head>
696
	<body style="OVERFLOW: hidden" scroll="no">
697
		<div class="tab_container" id="inner_options">
698

    
699
           <ul id="scayt_options">
700
               <li class="_scayt_options">
701
                   <input class="_scayt_option" type="checkbox" value="0" name="allCaps" />
702
                   <label for="allCaps" id="label_allCaps"></label>
703
               </li>
704
               <li>
705
                   <input class="_scayt_option" type="checkbox" value="0" name="ignoreDomainNames" />
706
                   <label for="ignoreDomainNames" id="label_ignoreDomainNames"></label>
707
               </li>
708
               <li>
709
                   <input class="_scayt_option" type="checkbox" value="0" name="mixedCase" />
710
                   <label for="mixedCase" id="label_mixedCase"></label>
711
               </li>
712
               <li>
713
                   <input class="_scayt_option" type="checkbox" value="0" name="mixedWithDigits" />
714
                   <label for="mixedWithDigits" id="label_mixedWithDigits"></label>
715
               </li>
716
           </ul>
717
		</div>
718
		<div class="tab_container" id="inner_langs">
719

    
720
		   <div class="lcol" id="lcolid"></div>
721
           <div class="rcol" id="rcolid"></div>
722
		</div>
723
		<div class="tab_container" id="inner_dictionary">
724

    
725
		   <div id="dic_message"></div>
726
			<div id="_off_dic_tab" class="dictionary" >
727
				<div style="padding-left:10px;">
728
							<label id="dname" for="dname"></label>
729
							<input type="text" size="14" maxlength="15" value="" id="dic_name" name="dic_name"/>
730
						</div>
731
						<div class="dic_buttons">
732
							<a href="#" id="dic_create" class="button">  </a>
733
							<a href="#" id="dic_delete" class="button">  </a>
734
							<a href="#" id="dic_rename" class="button">  </a>
735
							<a href="#" id="dic_restore" class="button">  </a>
736
						</div>
737

    
738
						<div id="dic_info"></div>
739

    
740
			</div>
741
		</div>
742
		<div id="inner_about" class="tab_container">
743
		   <div id="scayt_about"></div>
744
		</div>
745
	</body>
746
</html>
(18-18/29)