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