English spelling check no dictionary
This program accept user defined words at [Box 3, Aux.Words]
Delete repeat lines   alphabet counter   index   update 2012-08-18
Zipped file with dictionary en fr es de ec ; doc en fr es de ec
dict000a.htm has spelling check codes, but do not have dictionary.
You find dictionary words, put in "Box 5, Dictionary" program
should work. Please see document and How to get dictionary
pickdata.htm extract /*documents*/ and //comments and <!--doc-->.
<a name="lanLink"> Language link
Here is language link section. Today 2012-04-26 only English
uploaded. Since dict000a.htm is capable for other language,
Liu,Hsinhan hope other author modify dict000a.htm for other
language and upload to internet. Please add link here. Suggest
upload zipped file, let user download whole dictionary once
and work in his/her own computer. Reduce internet flow load.
Each update, file size change. File size is not accurate.
dict000a.htm 96kbytes, spell check code only, no dictionary.
dict67en.zip 1,879kbytes, English dictionary 670207 words.
Please add other language link here. LiuHH 2012-04-26-19-57
You can add to your page upload to your domain.
If you want to add link to freeman2.com/dict000a.htm
Please mail to liu.hsinhan_aO_Gmail_dot_com
dict34fr.zip 912KBytes, French dictionary 338989 words.
dict25es.zip 653KBytes, Spanish dictionary 247049 words.
dict53de.zip 1,780KBytes, German dictionary 532319 words.
dict67ec.zip English dictionary, Chinese page.
<a name="whyUse">
2012-07-14-18-02 start
Why use dict000a.htm, dict67en.zip and
dict34fr.zip,dict25es.zip, dict53de.zip?
A1: hide your little tail (spelling error)
      from public watch.
A2: reduce Internet traffic load.
A3: box3 accept user words as correct.
A4: dict000a.htm is free.
D1: no suggestion for correction.
D2: if box5 dictionary is not complete,
      you need to search online for a
      complete dictionary.
2012-07-14-18-09 stop
Program environment:Window 7; MSIE 9.0.8112.16421; Acer Aspire 5750Z-4830
2012-03-30-13-25 LiuHH use HP WinXP computer unable to open dict67en.htm
If program not work, refresh page, at page bottom, click "allow".
If program not work, Box 5 no dictionary. How to get dictionary

One word spelling check, not cut at ' '. (Box 1 data will cut)

If box 5 Dictionary is sorted, click FAST. otherwise click SLOW.
box 3 is Aux.Words. User put his own every day use words to box 3.
box 3 sorted or not, no difference. Program assume box 3 not sorted.
Box 1 input, Box 2 Output. Words are case sensitive.   fast/slow
[Spell check Box 1, FAST] is faster. 2012-02-29-09-37
slow: each word begin at index=0
fast: "zoo" begin at zo_=669098
Box1 Input
Box2 Output h29
box2 output   docA162
; ; ; ;
Box3 Aux.Words
Box4 Aux.Out h28
Delete repeat lines. Box 5 sorted input, Box 2 non-sorted input.
Box 5 to Box 6 h65 ; Box 2 to Box 6

Box5 Dictionary ;
Box6 Debug
Find Box 5 Dictionary words, 2012-02-25-17-01 LiuHH access
; ; ; ;
boxc06.value='string' //Above run button, below document.
indexWord ;   oneByte ;   newline to ',' ;   byteCount ;   update
If Box 7 definition has ['] then [family's album] "family's" is one word.
Box7 Alphabeta definition h22 h23 h25 'h'=help

If modified Box 7 value, please click [update] button.
Bx8 in, Bx9 out. 'wo' is 'words' byte 1&2. h60
Use other program sort Box 9 data , put sorted words back to Box 9.
Bx9 in, Bx5 out. OR
Box 5 has better sorted dictionary ;
Next buttons reveal memory data h82
Box8 words
Box9 119111rds
Box 8 default value is LiuHH computer sort.exe result. Which is not
compatible with ANSI sequence. Box 7 comply with ANSI sequence
LiuHH write code to do correct sort. 2012-03-11-09-42 h60
Test split('\r\n') In Box8, out Box9. One split insert
one '_' at string end. only.split("\r\n") do right job. string.split("\n")
keep '\r' become newline. string.split("\n\r") no split. Last byte is '_'.

<a name="index">
■ Why write dict000a.htm
■ How to get dictionary
■ Select words
■ Sort words
■ Box 3 store user name
■ One word check
■ Two words or long paper
■ isAlpha(ch)
■ isBeta(ch)
■ [byteCount] button, alphabet counter
■ run first time output to Box 4
■ run second time output to Box 2
■ [indexWord] button 
■ FAST search index all words
■ FAST search codes
■ why variable aa_, ab_ has '_'?
■ [oneByte] button 
■ [newline to ','] button 
■ Box 5 must not have ["], [,], [ ]
■ [update] button 
■ [words to 119111rds] button 
■ [noRepeat26] button Delete repeat lines
doc end

<a name="docA001">
■ Why write dict000a.htm

2012-03-07-14-32 start. 
Liu,Hsinhan use a computer Acer Aspire 
5750Z-4830. It does not have a spelling 
check program. (or LiuHH did not find it)
LiuHH need to check spelling error and 
write a html file dict708a.htm which is 
DICTionary 708K words, version A .htm
708125 words take 8160 kilo bytes space.
    37,093 dict000a.htm has zero words
 8,180,158 dict708a.htm has 708125 words

<a name="docA002">
If upload dict708a.htm to internet, each 
time user check a paper. Download 8Mbytes 
once, which is not efficient. 
Online spelling check service 
do not send whole dictionary to you.

<a name="docA003">
Now upload smaller file dict000a.htm to 
user save dict000a.htm to your computer, 
user download dictionary definition files
put 708125 words into Box 5 dict000a.htm, 
then it is same as full function plain 
vanilla spelling check file dict708a.htm
Store dict708a.htm in your computer, save 
internet traffic load.

<a name="docA004">
plain vanilla spelling check 
mean it does not give you 
correction suggestion.
2012-03-07-14-59 stop 

<a name="docA005">
■ How to get dictionary

2012-03-07-17-46 start 
2012-02-25-17-01 LiuHH accessed 
which is a set dictionary word definition.

LiuHH work record as following
2012-02-25-16-46 in search engine 
search for
Dictionary words list

<a name="docA006">
2012-02-25-16-55 access

2012-02-25-16-57 access

2012-02-25-17-00 access

<a name="docA007">
2012-02-25-17-01 start download
2012-02-25-17-15 done 
02/25/2012  05:15 PM  2,515,768 Spell_Checker_Word_Lists_scowl-7.1.zip
LiuHH use dial up, slowest speed. 

<a name="docA008">
Above is LiuHH download record. You may 
go different path and get different 
dictionary. It should be the same.

<a name="docA009">
■ Select words

2012-02-25-17-17 open
md c:\$fm\receive\scowl-7
Sub-directory final\ has all words definition.
 256 File(s)      8,158,835 bytes
next command (include ALL words, more than english*.* does)
copy C:\$fm\receive\scowl-7\final\*.* C:\$fm\wk\dictionary_sum0.txt
add 256 Files to one dictionary_sum0.txt
02/25/2012  05:39 PM  8,158,836 dictionary_sum0.txt

<a name="docA010">
If you use smaller size and less words
copy c:\$fm\receive\scowl-7\final\english-words*.* c:\$fm\wk\dictionary_sum1_English.txt
or (next include more words than above)
copy c:\$fm\receive\scowl-7\final\english*.* c:\$fm\wk\dictionary_sum2_English.txt
the result page may give you a spelling error 
which is actually common used word.

in dictionary_sum0.txt deleted few words
save result as C:\$fm\sort70wanbgn.txt

<a name="docA011">
■ Sort words

Next do sort command (70wan=700,000)
sort < C:\$fm\sort70wanbgn.txt > C:\$fm\sort70wanEnd.txt

copy C:\$fm\sort70wanEnd.txt all words 
paste to dict000a.htm [Box 5, Dictionary] 
<TEXTAREA id=boxc05 rows=6 cols=38>
a... paste Dictionary words here ...zzz
<a name="docA012">
Dictionary words may have 708125 lines.
One line one word. You may have words 
more than 708125, or less than 708125.
Now dict000a.htm is a function-right page.

<a name="docA013">

There are two execution buttons 
LiuHH experience, in average 
SLOW execution time is ten times of 
FAST execution time. 

<a name="docA014">
When use slow? When use fast?
If [Box 5, Dictionary] has sorted words 
click FAST. Otherwise click SLOW.
SLOW button always start from first word,
If word is "about" SLOW and FAST be same 
If word is "zebra" SLOW or FAST be very
SLOW start from "a" to "zebra".
FAST start from "ze" at "Zea" to "zebra"
Fast search shorter time.
If user store non-sorted dictionary to 
[Box 5, Dictionary], use SLOW only.
More about FAST Spell check.

<a name="docA015">
■ Box 3 store user name

[Box 3, Aux.Words] is user name, words.
[Box 3, Aux.Words] is always non-sorted. 
Even if you sort [Box 3, Aux.Words], 
program do not use fast method to Box 3.
You can merge Box 3 to Box 5 and re-do 
sort again for new Box 5 data.

<a name="docA016">
In Box 1 put just one 'a' and 
click [Spelling check Box 1 FAST] get 
checkPaper() elapse time:
0.027sec. you clicked fast

click [Spelling check Box 1 SLOW] get
checkPaper() elapse time:
0.028sec. you clicked slow

These seconds are no load basic running 
time. //improved on 2012-03-08 at
      //a103081831 and a103081834
2012-03-07-18-47 stop

<a name="docA017">
■ One word check

2012-03-07-21-35 start
User can input one word in one word input
box as shown below.
<a name="docA018">
One word input box do not cut word. If 
you check the spelling of "Los Angeles"
 read "Los Angeles" from 
one word input box. It find answer in 
[Box 3, Aux.Words] 
<a name="docA019">
Output to one line below. Tell you 
found in main dictionary what sequence 
number word. or
found in aux. dictionary, or
not found any where and main dictionary 
total word count.

<a name="docA020">
■ Two words or long paper

For Two words or long paper, input to 
[Box 1, Input] Program read alphabeta 
definition from Box 7. If a byte match 
any one in Box 7, that byte is a part 
of word. Otherwise not, 
<a name="docA021">
All not bytes cut word. 
space ' ' is a not byte.
If input "Los Angeles" to [Box 1, Input], 
program read two words "Los", "Angeles". 
Find each one from dictionary. 

<a name="docA022">
■ isAlpha(ch)

Initially program use 
function isAlpha(ch){...}
It accept only 
and ignore

but, scowl-7.1.zip contain many  to 

<a name="docA023">
■ isBeta(ch)

Later, LiuHH change to 
function isBeta(ch){...}
Read bytes from [Box 7, Alphabeta definition]
All bytes in Box 7 accepted, but reject 
blank ' ', reject tab, reject newline.

<a name="docA024">
This function isBeta(ch){...}
design may allow non-English dictionary 
be used. It is just LiuHH guess, never 
2012-03-07-21-59 stop

<a name="docA025">
■ [byteCount] button, alphabet counter
Box 5 input, Box 6 output. ALL UNICODE OK.

2012-03-08-09-05 start
How to create [Box 7, Alphabeta definition]
Box 7 value is created by  button.
Click [byteCount] button, program read all 
bytes in [Box 5, Dictionary] and output 
to [Box 6, Debug] User copy Box 6 value 
paste to Box 7 
<TEXTAREA id=boxc07 rows=3 cols=70>
'ABC... paste new definition here ...
<a name="docA026">
//2012-03-15-14-53 a103151453 add sum number
//[byteCount] button tell you each byte used 
//how many times in [Box 5, Dictionary]
//You find answer at Box 6. All Unicode OK.
//This is alphabet counter function.

If define ['] as word byte, then words 
etc. will be found as one word. 
If delete ['] from Box 7, then ['] cut 
words, string like  
etc. will be found as two words. 

<a name="docA027">
[Box 1, Input] is input, text to be checked
[Box 2, Output]  is output, wrong spell sum
[Box 4, Aux.Out] is output, wrong spell sum
What is the difference between Box 2 and 4?

<a name="docA028">
■ run first time output to Box 4

Program run first time get output in Box 4.
Sentence first word use capital. Dictionary 
defined 'sentence' as word, but not define 
'Sentence' Box 4 output contain all capital
words which is correct. 
Search is case sensitive.

<a name="docA029">
■ run second time output to Box 2

Program run second time get output in Box 2.
Second time, program convert all uppercase 
to lowercase, redo spelling check for Box 4
words only. Box 4 output could be skipped. 
But LiuHH output the first answer to Box 4 
as reference. 
2012-03-08-09-45 stop

<a name="docA030">
Condo buyer07, agent and inspector come to 
see 14919 Normandie Ave. Apt.8 
agent name is Melodee Pelano 
inspector see house in detail and record.
Document writing stopped.

<a name="docA031">
2012-03-08-10-47 start 
There are several click buttons as next
 ;  ;  ;  ;  

Each has following function.

<a name="docA032">
■ [indexWord] button 

Input from Box 5, output to Box 4.
Box 5 is Dictionary word definition. 
LiuHH use Dictionary has 670207 words.
One line one word. How to get dictionary

<a name="docA033">
■ FAST search index all words

function indexWord(1) create index table 
for a2z[] and a3z[]. Please paste 
a sorted dictionary to box 5, then click 
[update] and click [indexWord] button. 
If dictionary is not sorted,
output is non-sense.
Box 4, Aux.Out has 
FAST search index all 670208 words 
[[ //a2z[], a3z[] table
A_ , 0 , 0
AA_ , 3 , 1
AB_ , 38 , 2
AC_ , 66 , 3
Zz_ , 152351 , 1143
Z_ , 152354 , 1144
Z_ , 152356 , 1145
a_  , 152358 , 1146
aa_ , 152362 , 1147
ab_ , 152394 , 1148
ya_ , 666405 , 1782
yb_ , 666928 , 1783
zw_ , 669838 , 1814
zy_ , 669852 , 1815
zz_ , 670085 , 1816
n_ , 670086 , 1817
s_ , 670089 , 1818
q_ , 670165 , 1828
t_ , 670168 , 1829
v_ , 670203 , 1830
a2z store left column strings.
a3z store middle column integers.
a2z[1]='AA_' ... a2z[1782]='ya_' and
a3z[1]= 3    ... a3z[1782]=666405

<a name="docA034">
2012-03-15-16-50 insert start
Older version, program treat 's_' etc. 
as variable and assign value to them. For 
example set ya_=689, I can write 
no need search ya_ start from a_, aa_ ...
Above design is good, if ALL be defined 
as global variable in 

<a name="docA034a">
Now get trouble. "Liu,ZJ" search for zj_ 
zj*** is not used in dictionary and zj_ 
is not global variable and is undefined. 
Assume user re-new Box 5 dictionary and 
assign 'zjust' be a valid word. This is 
done in function updateDict() and zj_ 
is defined in function updateDict() only.
Other function can not access zj_ value.
Because zj_ is not global variable.

<a name="docA034b">
With this difficulty, LiuHH must abort 
above method.
Current version, aa_, ya_ etc are not a 
variable. Each word, for example 'yard' 
in global array variable a2z[] search ya_ 
start from a_, aa_ ... to ya_
Has match, has words. No match, no words.

<a name="docA034c">
ya_ , 666405 , 1782
find match at a2z[1782]=='ya_', read 1782
in a3z[1782] get 666405. In dictionary  
array Dictionary[666405] is ya
[[     <==slow search start from here
A      <==dictionary first word
.....  <==fast search skip 666405 lines
ya     <==search 'yard' start from here
yabber <==from ya to yb, sorted or not 
.....  <==does not matter.
yard   <=="yard" is 666709th entry
2012-03-15-17-01 insert stop

<a name="docA035">
■ FAST search codes

If Box 1 has a string "yard sale". to 
search "yard", FAST button, program 
convert "yard" to "ya_", find 
a2z[1782]='ya_', then find a3z[1782] 
be 666405. In 
function checkFastWord(arg1,arg2)
use next code
   bgn1=a3z[i0]; //a103092132
<a name="docA036">
now bgn1=666405
and end1=666928
search code is
<a name="docA037">
FAST use narrow down range 
faster than SLOW using whole dictionary

<a name="docA038">
 button tell programmer (LiuHH) what 
value a_, ab_ ... za_ ... zz_ are defined. 
Debug purpose. User do not need worry.

If you go to Box 5 change first word from 
'sterreich' to '' (or change any word)
then click  button, 
Box 4, Aux.Out will NOT show "_ , 0 , 0"
Box 4, Aux.Out still show "s_ , 0 , 0"
<a name="docA039">
Because FAST button needed variable definition
<a name="docA040">
are done at web page start up time. 
Variable bx5Start is defined to be Box 5 
value at start up time. When you change 
Box 5 'sterreich' to '', variable 
bx5Start still keep original value. 
Box 4 output is not what you expected.
//added [update] button, solve problem.
2012-03-08-11-36 stop

<a name="docA041">
■ why variable aa_, ab_ has '_'?

2012-03-08-13-04 start
Why use variable aa_, ab_ etc?
Why not use variable aa, ab etc?
do_ , 175599 , 112
If text has a word 'door', program build 
a variable 'do' and assign a value to it. 
var do=112;
<a name="docA042">
This code line is an ERROR. Because 'do' 
is reserved word. Do loop use do 
do{ chore code } while(true)
To avoid reserved word error, add a '_' 
after each variable.
2012-03-08-13-10 here

<a name="docA043">
■ [oneByte] button 

Next see  button 
Input from Box 5, output to Box 4.
Box 5 is Dictionary word definition. 
Those word has only one byte are recorded 
to Box 4. Why one byte is a concern? 
FAST search index all 708125 words to 
variables a_, aa_, ab_, ..... 
<a name="docA044">
Most variables are two alphabet. Ony 
26+26=52 variables are one alphabet.
[oneByte] button is debug button. Make 
sure one byte variable be right. Alert 
at . If find 
'', '' etc. need be careful.
2012-03-08-13-20 here

<a name="docA045">
2012-03-15-09-57 start
■ [newline to ','] button 
Input from Box 1, output to Box 4.
[newline to ','] button change newline
to ','. This is a redundant process.
LiuHH insert newline with [+'\n'] and 
split long string at newline with code 
string.split('\n') WRONG! Newline is 
'\r\n'. Insert code [+'\n'], system auto 
change to [+'\r\n']. Split code system 
<a name="docA045a"> 
not auto drop '\r'. After .split('\n'), 
splitted string has '\r'. System change 
incomplete newline '\r' to complete 
'\r\n'. Result is splitted string has 
newline at end. To avoid this undesired 
result, LiuHH change [newline to ','], 
then split(',') It has no efficiency. 
Correct code is string.split('\r\n') 
LiuHH write js code do not have guide.
Learn from failure, learn from thinking.
2012-03-15-10-17 stop

2012-03-08-13-20 here
<a name="docA046">
Next see  button 
Read input at Box 1, Output to Box 4.
From the command
copy final\*.* dictionary_sum0.txt
dictionary_sum0.txt has next form_A
[[ form_A
<a name="docA047">
It is not next form_B
[[ form_B
<a name="docA048">
form_B can be used in code section.
form_B no need to put in Box 5 and
form_B can not put in Box 5. Must 
use text editor delete all ["], [,].

<a name="docA049">
■ Box 5 must not have ["], [,], [ ]

copy final\*.* dictionary_sum0.txt
get form_A, each word short three bytes 
["",] 708125 words save 2 MBytes space.
form_A can not be used in code section.
form_A must put in Box 5 and must not 
have ' '. "book " never valid. Since 
Box 7 reject ' '.
<a name="docA050">
From Box 5 no ["",] three bytes, change 
code compatible form_B need change new 
line bytes to ',' then split at ','. 
//If split at newline, each word has 
//a newline. Need additional work.
//If split at ',', ',' dropped.

<a name="docA051">
 button test the code 
change new line bytes to ','
be correct.
2012-03-08-13-39 stop

<a name="docA052">
2012-03-08-17-22 start
■ [update] button 
Input Box 3,5,7. No output. Update system 
 button is added. 
Without [update] button, dictionary is 
defined at start up time. If user change 
dictionary. It is not effective. User 
must modify source code to get new words.
Now modify Box 5 dictionary and click 
[update] button. New dictionary is 
effective. Not use the code line 
because user may change several times.
Wait for user click [update] button.
2012-03-08-17-27 stop

<a name="docA053">
Liu,Hsinhan is not a professional 
programmer. Code may not be efficiency.
If you buy professional program, it 
must run better than dict000a.htm

<a name="docA054">
2012-03-09-08-04 start
Today added second set 
 ;  ;  ;  ;  
between box 1,2 and box 3,4.
added 3rd  as  at Box 5
added 2nd  as  at Box 5
added 2nd  as  at Box 5
for easier access.
2012-03-09-08-09 stop

<a name="docA055">
2012-03-09-17-42 start
2012-03-09-14-17 upload this page to
2012-03-09-16-?? re-write dict000a.htm
see source find 'a1030916' and 'a1030917'
for code change. 

<a name="docA056">
Before change, box 3 user words is 
accessed at each word search. If 
paper has 1000 words, box 3 user words
analysis 1000 times. which is a waste.

<a name="docA057">
Program read variable value faster.
Program read html box value slower.
After change, box 3 user words is 
processed once, save result to variable
1000 words paper 
scan auxWord[] 1000 times which is faster
not analysis box 3 value 1000 times which
is slower. 

<a name="docA058">
Before change code, modified box 3 user 
words no need click [update] button.
After change code, modified box 3 user 
words DO need click [update] button.

Speed is first concern. Modified version 
should be better.
2012-03-09-17-51 stop

<a name="docA059">
2012-03-10-11-01 start
update 2012-03-10 add document to 
code. When write doc, also review 
program structure. Made several 
improvement. Please see source code 
find 'a103092' and 'a10310'
User interface is same as before.
2012-03-10-11-04 stop 

<a name="docA060">
2012-03-11-12-13 start
■ [words to 119111rds] button 

Program added few more click buttons.
 Bx8 in, Bx9 out. 
 Bx9 in, Bx5 out. OR 
LiuHH computer is Acer Aspire5750Z-4830
Command prompt sort.exe command do not 
comply with ANSI standard. Box 7 default 
value is in ANSI order. But sorted 
dictionary is not. LiuHH got next 
<a name="docA061">
'sorted' output
kn       <== kn begin here
kmmel   <== kn break here
knob     <== kn reappear here
know     <== never find
"know" is not found in dictionary!!
Because "kmmel" cut "kn" team.

<a name="docA062">
To solve this problem, write 
function a2d12(arg1){.....}
function d2a12(arg1){.....}

click [words to 119111rds] button 
input from Box 8, output to Box 9
use a2d12(arg1) change 
107110iving  //ansi 107='k'
107252mmel's //ansi 252=''
107110ob     //ansi 110='n'

<a name="docA063">
copy Box 9 value, save as c:\sort_bgn.txt
sort the numbered list, 
sort < c:\sort_bgn.txt > c:\sort_end.txt
paste c:\sort_end.txt back to Box 9

<a name="docA064">
click [119111rds to words] button 
input from Box 9, output to Box 5
use d2a12(arg1) change 

get right sort order, avoid no 'know' 

<a name="docA065">
2012-03-11-12-40 here
■ [noRepeat26] button Delete repeat lines

Program added next click buttons.
 not sorted Box2 in, Box6 out. 
 sorted txt Box5 in, Box6 out. 

Delete repeated lines. Lines must be 
identical. Case sensitive, no extra ' '.

<a name="docA066">
Dictionary error spelling output Box 2 
has many repeat. Sometime no need these 
repeated words. Click [noRepeat26] 
button, Box 2 is input, Box 6 output 
no repeat result. 
function noRepeat(arg1) do this job.

<a name="docA067">
Input is sorted or not sorted, make 
Input Box 2 words are not sorted, call 
noRepeat(arg1) use one parameter.
Input Box 5 words are sorted, call 
noRepeat(arg1,arg2) use two parameters.
Both output to Box 6.

<a name="docA068">
noRepeat(arg1) see one parameter, it 
exam repeat until end of list.
Above assume NOT sorted input Box2
Below assume sorted input Box5
noRepeat(arg1) see two parameters, it 
exam repeat until first mis-match.
Before use [noRepeat56] button, 
dictionary has 708125 words.
After use [noRepeat56] button, 
dictionary has 670207 words.
Reduce load. 

<a name="docA069">
scowl-7.1.zip use 256 File(s) 8,158,835 bytes
to classify words. One word may present in 
several files. copy *.* > sum.txt command 
record many repeated words.

[noRepeat56] button must use two parameters 
otherwise, exam 708125 words to end of 
list, it is nearly infinite time.
2012-03-11-12-56 stop 

<a name="docA070">
2012-03-12-10-15 start
update 2012-03-12 has one minor change.
add one line 
if(oup0[i0]==0)continue; //a103111719
to improve efficiency. 
if(oup0[i0]==0) is true, then oup0[i0] 
already checked, no need re-do.
2012-03-12-10-17 stop 

<a name="docA071">
2012-03-15-11-41 start
update 2012-03-15 add 
Delete repeat lines. Box 5 sorted input, Box 2 non-sorted input.
let delete repeat lines function more clear.
Distinguish sorted input from not sorted. 
update 2012-03-15 add function noRepeat(arg1) 
elapse time calculator. docA072 [noRepeat26]
update 2012-03-15 let user comma stand still.
update 2012-03-15 [byteCount] button accept all 
Unicode. Count each character used how many 
times. docA025 [byteCount] button
2012-03-15-11-49 stop

<a name="docA072">
2012-03-13-10-56 start
In function noRepeat(arg1) added elapse time
calculator. Box 5 dictionary start at 708125
words (has many repeats), reduce to 670207 
words (no repeat). Elapse time report spend 
0.4 sec. But LiuHH check watch, it last 6 to 
8 seconds. Why big difference?
<a name="docA073">
LiuHH guess in function noRepeat(arg1) spend 
0.4 second. Computer system look for Box 6 
memory space to store 670207 words, spend 
6-0.4=5.6 sec. This extra time is out side 
of noRepeat(arg1) and not counted. Above is 
LiuHH guess, may have other better reason.
2012-03-13-11-06 stop

<a name="docA074">
2012-03-13-13-20 start
update 2012-03-15 removed one bug. Bug code
is next line
noRepeat(boxc02.value) return an array of 
strings. The code 
say convert array of strings to string.
<a name="docA075">
to a string 
here ',' is system comma. Cut string at 
system comma and change line at ',' get 
<a name="docA076">
correct output
If whole array no single ',', above code 
is ok. 
<a name="docA077">
If above 'g' were user comma ','.
User comma and system comma are mixed.
Result will be 
which is wrong. Old code (ill code) 
var inp1=arg1.replace(/\r\n/g,','); 
convert newline to ',' confuse with 
user comma. 

<a name="docA078">
Now change code, 
not use string.split(',')
not use string.split('\n')
New code is next
Dictionary=bx5Start.split('\r\n'); //a103132219
not use system comma,
not mix with user comma.
Return array of string to calling function.
<a name="docA079">
In click button, old code (lazy code +"") 
mixed user comma and system comma. New 
code not use system comma, no trouble.
var tmp0=noRepeat(boxc02.value);
var tmp1="";//Box 2 not sorted input
for(var i0=0;i0<tmp0.length;i0++)
boxc06.value=tmp1; //a103131151
write more lines, avoid trouble.
2012-03-13-13-38 stop

<a name="docA080">
2012-03-16-18-46 start 
update 2012-03-16 add one code line 
argZ=boxc03.value; //a103161827 
without this line, user change box 3 
and click [update] button, no update.
Forget argZ=boxc03.value; that is 
LiuHH careless error. Now should be 
OK. I can not promiss error-free. 
No one proof read, proof run for me.
<a name="docA081">
Second change is 
function indexWord()
//a103161843 use isBeta()
isAlpha(ch) should not be used.
If use isAlpha(ch), then non-English 
spelling check will give wrong [indexWord]
output to Box 4.
2012-03-16-18-52 stop

<a name="docA082">
2012-03-16-20-16 start 
Today add three buttons   
Let user see CURRENT in memory data.
[mainDict] output Dictionary words to Box 8.
[aux.Word] output Aux.Words to Box 9.
[AB] output Alphabeta definition to Box 9.
2012-03-16-18-10 found if user change box 3 
and click [update] button, no update. Hope 
see what is in memory, why no update? Build 
above three buttons.
Inp Bx5, click [update],[mainDict] outp Bx8
Inp Bx3, click [update],[aux.Word] outp Bx9
Inp Bx7, click [update],[AB] output to Box9
Output and input should be identical.
2012-03-16-20-37 stop 

<a name="docA083">
2012-03-17-12-01 start
update 2012-03-17 
allow [byteCount] include tab and newlines. 
Use function indf() to simplify index link.
2012-03-17-12-05 stop

<a name="docA084">
2012-03-18-09-29 start
update 2012-03-18 made three changes.
1. array begin at [1] (wrong) change 
     to  begin at [0] (right)
2. remove redundant if()
3. change code allow [o'clock] be 

<a name="docA085">
Next is array begin correction record.
//newword=Dictionary[1];  //error
//for(i0=2;i0<size0;i0++) //error
//a103171402 i0=1, [0]
newword=Dictionary[0];    //right
for(i0=1;i0<size0;i0++)   //right
<a name="docA086">
a103171402 three changes in
if(typeof(aa_)=='undefined') //a102290923 use if, save time
function updateDict()
function indexWord()

<a name="docA087">
Next is remove redundant if() record.
a103171502 del if(typeof(aa_)=='undefined')
At first LiuHH thought use aa_ be defined 
or not defined to control page start up 
code. Actually if click button do not run 
global code. This condition make 
useless. Change to 
{{ //startUp/refresh definition body begin
..... global code here.
}} //startUp/refresh definition body end
   //use '{{' and '}}' on purpose a103181005

<a name="docA088">
Next is change code allow [o'clock] be 

in1=inWord.charAt(0)+ //above no, below ok
//a103172201 care "'", now [o'clock] OK
Because indexWord skip ['], then [o'_] 
is never defined. search [o'clock] begin 
at [o_], not begin at [o'_]. 
Error code can still find [Hadley's], 
since ['] is not second byte.

<a name="docA089">
2012-03-17-21-?? found dict000a.htm can 
not find dictionary word [o'clock]. After
a103172201 correction. Question is what 
other dictionary word can not be found? 
Paste whole dictionary from Box 5 to 
input Box 1 click [FAST] and [SLOW] get 
both not-found-list empty. (correct)

<a name="docA090">
2012-03-17-22-25 check whole 
dictionary total 670207 words
 7,689,097 Dictionary_67wan.txt
[FAST] button spend time 52sec. 
[SLOW] button spend time 70min.
SLOW time / FAST time = 81
2012-03-18-09-58 stop

<a name="docA091">
2012-03-19-10-56 start
update 2012-03-19 simplify code. 
Delete repeat codes. Please find 
'a10319' in source code.
2012-03-19-10-57 stop

<a name="docA092">
2012-03-19-11-27 start
The word "UNICODE" can not be found. 
Dictionary has "Unicode", no "unicode" 
and no "UNICODE". //case sensitive
Program search for "UNICODE" then change
to lowercase, search for "unicode", both 
no match. Report not found "UNICODE".
2012-03-19-11-30 stop

<a name="docA093">
2012-03-20-14-18 start
update 2012-03-20 add more information 
for output. On top of Fast/Slow button 
regular words is
[Spell check Box 1, FAST] is faster. 2012-02-29-09-37
If click [Fast] or [Slow] button, this 
line change to 
Total words:32 ; Box 4 not found:6 ; Box 2 not found:2
<a name="docA094">
It tell user, the total number of words 
in Box 1 and not found numbers in Box 4 
and Box 2. If click [del 1&2] reset this 
information line. 

<a name="docA095">
If user want to know the list of words in 
Box 1. Please do the following.
Delete Box 3, Box 5 value. (save them in 
a text editor) click [update]. Both main 
dictionary and user words be empty. Now 
click [Fast], all words listed in Box 2 
is the list of words in Box 1. That is 
<a name="docA096">
all words in Box 1 are not found. 
After done. Paste main dictionary and 
user words back to Box 5 and Box 3. Click
[update] return to normal function.
2012-03-20-14-31 stop

<a name="docA097">
2012-03-21-12-16 start
update 2012-03-21 fix one bug. 
Earlier suggest reader delete Box 3,5 
value, click [update] and find the list 
of words in Box 1. Output to Box 2. 
LiuHH tried this procedure and found 
that Box 3 value not update, if Box 3 
is empty. Made correction at 
auxWord=argZ.split('\r\n'); //a103210100
Now it should be OK.
2012-03-21-12-21 stop

<a name="docA098">
2012-03-22-07-59 start
update 2012-03-22 set memory array to 
empty array and begin index. Older 
version forget do so, then original 
dictionary has 1831 index 
A_ , 0 , 0
AA_ , 3 , 1
AB_ , 38 , 2
zy_ , 669852 , 1815
zz_ , 670085 , 1816
n_ , 670086 , 1817
t_ , 670168 , 1829
v_ , 670203 , 1830
END , 670207 , 1831
<a name="docA099">
Assume user put a new dictionary to 
Box 5 which dropped words begin with
The indexWord button should present 
this new contents. Total index number 
should be less than 1831. But, 
<a name="docA100">
forget "set memory array to empty array 
and begin index" the new index is still 
1831 elements. 
t_ , 330855 , 1407
v_ , 330890 , 1408  <==new end here
below error 
jt_ , 379269 , 1409  <==old not erase
ju_ , 379270 , 1410
Old index at end of array, which is wrong. 

<a name="docA101">
Code correction made at 
function indexWord()
next is KEY correction
a2z=[]; //a103212314
a3z=[]; //a103212315
Please find source code, look for key 
string "a1032123" for related change.
2012-03-22-08-08 stop 

<a name="docA102">
2012-04-26-10-08 start 
update 2012-04-26 upload both 
dict67en.zip has English dictionary 
           670207 words and work OK. 
dict000a.htm has spelling check codes, 
           but do not have dictionary
dict67en.zip has 7,765,862 dict67en.htm
dict67en.htm mean DICTionary, 
      67 (10thousand=wan):670207 words 

<a name="docA103">
Expect dict000a.htm work for non English 
if user put non English dictionary to 
source file Box 5. Click [byteCount] and 
update source file 
Box 7, Alphabeta definition. Save file.
After these process, hope program work 
for non English spelling check. But 
Liu,Hsinhan never verify.
2012-04-26-10-28 stop 

<a name="docA104">
2012-04-27-08-56 start
2012-04-27-06-12 download
Find that winedt.org sort dictionary words 
first preference is words length, second 
is alphabet order. 
The word "zoo" will be before "about", 
because "zoo" has three bytes and "about" 
has five bytes. winedt.org sort method 
can not be used in dict000a.htm. 
dict000a.htm assume sort words use only 
alphabet order. Word length is not a 

<a name="docA105">
2012-04-27 update added 
04/26/2012 05:10 PM 30,682 winedt.org_Dict-37-languages.htm 
04/26/2012 05:10 PM 16,180 wordreference.com_a10426a.htm 
to dict67en.zip
2012-04-27 update change title 
from "Plain vanilla spelling check" 
 to  "English spelling check". Because 
consider non-English spelling check 
web page is possible.
2012-04-27-09-06 stop

<a name="docA106">
2012-04-27-09-20 upstairs Apt.24 drop heavy 
object several times. Almost every day do so.
Apt.26 nine person crowded living three 
month. Recent few days not see Apt.26 in/out.
2012-04-09 Apt.20 broke door size glass.
2012-04-26 Apt.20 door size glass repaired.
2012-04-27-09-28 record

<a name="docA107">
2012-04-28-09-38 New Language detail
2012-04-28 upload French spelling check 
with dictionary 
http://freeman2.com/dict34fr.zip French
It has 338989 words, come from winedt.org 
2012-04-27-06-12 LiuHH download
<a name="docA108">
dict34fr.htm is a suggestion page.
Although it works as Liu,Hsinhan expected. 
But LiuHH do not speak French. Expect 
French-speaking author to re-write and 

<a name="docA109">
Following is how to convert winedt.org 
format to dict34fr.htm format.
Following red (#ff3333) and italic 
text is working record
2012-04-28-10-11 here

<a name="docA110">
2012-04-27-06-38 save
fr.dic as fr_dic01.txt (frWords1.txt)
total 338989 words
winedt.org sort words first requirement
is length. One byte words first group,
two bytes words second group etc. In 
each group sort words by alphabet order.
On the other hand,
dict34fr.htm require ALL words sorted by 
alphabet order, length is not a factor.
<a name="docA111">
Next re-do sort. LiuHH Acer computer 
sort result is not ansi order. Please 
see docA060
Above (below) fr_dic01.txt (frWords1.txt)
fr_dic01.txt is long file with real data.
04/27/2012  06:38 AM 4,097,891 fr_dic01.txt
04/27/2012  04:47 PM 5,453,793 fr_dic02.txt
04/27/2012  04:48 PM 5,453,793 fr_dic03.txt
04/27/2012  04:57 PM 4,097,891 fr_dic04.txt
frWords1.txt is shortened example file.
frWords1.txt to frWords4.txt are included 
in dict34fr.zip

<a name="docA112">
2012-04-27-16-47 copy paste 
fr_dic01.txt to dict000a.htm box8
click [words to 119111rds]
save as fr_dic02.txt
Above record convert all fr_dic01.txt 
"words" to "119111rds" 
first two bytes change to number. 
In ANSI code 'w' = #119 and 'o'=#111
"words" and "119111rds" are two different
expression for one word. sort.exe must 
sort number "119111rds" in right order.
Please see shortened version frWords2.txt

<a name="docA113">
sort < fr_dic02.txt > fr_dic03.txt
Above is sort.exe command. 
Output fr_dic03.txt has right order 
which fit dict000a.htm (dict34fr.htm)
correctly. Please see shortened version 

<a name="docA114">
2012-04-27-16-49 open
fr_dic03.txt save to box9
2012-04-27-16-53 click [119111rds to words]
output to Box5 
Copy fr_dic03.txt and paste to dict000a.htm 
(or dict34fr.htm same) Box 9 which is input
click [119111rds to words] to convert
fr_dic03.txt number code to ANSI alphabet 
output to dict000a.htm Box 5.

<a name="docA115">
save Box 5 as fr_dic04.txt
Above save dict000a.htm Box 5 value as
Please see shortened version frWords4.txt
Up to here, use dict000a.htm to convert 
dictionary format. Not change dict000a.htm
source code. Now merge French dictionary 
to dict000a.htm and save as dict34fr.htm
Save to where in source code? See next.

<a name="docA116">
2012-04-27-17-01 save as
Above open source code of dict000a.htm 
and find Box 5 
 name=boxc05 rows=6
copy frWords4.txt and
put long words list here
one line one word, 
total 338989 French words
save file as dict34fr.htm
let French dictionary be 
part of dict34fr.htm 
<a name="docA117">
Only update dictionary definition still 
not enough. because dict000a.htm Box 7 
define alphabet which is still English 
alphabet. Need change to French alphabet.

<a name="docA118">
2012-04-27-17-52 click [byteCount]
input is Box 5, output to Box6
French alphabet is
save to Box7 

<a name="docA119">
dict34fr.htm Box 5 is French dictionary.
Click , program read Box 5 
value and find all bytes used in Box5.
Output to Box 6. First line is French 
alphabet. Now open dict34fr.htm source 
code and find id=boxc07 next 
 name=boxc07 rows=3
<a name="docA120">
Put French alphabet to Box 7, save file 
dict34fr.htm let change be permanent.
Now dict34fr.htm is a work correctly 
French spelling check file. Again, 
dict34fr.htm is a suggestion, need 
French-speaking author to re-write and 
<a name="docA121">
dict34fr.htm (dict34fr.zip) is already 
here. French reader may not worry above 
steps. LiuHH can convert few languages, 
many other language user, please refer 
to above procedure and do it yourself.
2012-04-28-11-30 stop

<a name="docA122">
Big size zipped files not update easily.
dict000a.htm will update frequently.
Please visit
for update information.
2012-04-28-12-15 stop

<a name="docA123">
2012-04-28-14-57 start
dict34fr.htm Box 1 has French example 
text. What is its meaning? Following 
is working record.

2012-04-27-18-30 LiuHH access 
find French example text below.

<a name="docA124">
2012-04-28-00-27 access
Si c'est votre premire visite,
nous vous invitons  consulter 
la Foire Aux Questions en 
cliquant sur le lien ci-dessus.
Vous devez vous enregistrer 
avant de pouvoir poster: 
cliquez sur le lien 
d'inscription ci-dessus pour 
continuer. Pour voir les 
messages, slectionnez le forum
que vous voulez visiter depuis 
la liste ci-dessous.
<a name="docA125">
2012-04-28-00-32 translate to next
If this is your first visit,
 We invite you to visit
 Frequently Asked Questions
 clicking the link above.
 You need to register
 before you can post:
 click on the link
 Registration above for
 continue. To see the
 messages, select the forum
 you want to visit from
 the list below.
2012-04-28-15-02 stop
101,04,28,05,5? upstairs drop heavy object.
<a name="docA126">
has next files
04/28/2012  03:25 PM 4,186,639 dict34fr.htm
04/28/2012  10:18 AM    17,547 frWords1.txt
04/28/2012  10:37 AM    29,529 frWords2.txt
04/28/2012  10:41 AM    47,955 frWords3.txt
04/28/2012  10:50 AM    35,829 frWords4.txt
04/26/2012  05:10 PM    30,682 winedt.org_Dict-37-languages.htm
04/26/2012  05:10 PM    16,180 wordreference.com_a10426a.htm
2012-04-28-15-28 stop
101,04,29,09,56 to 101,04,29,10,18 upstairs move in many objects, three trip shoulder load long bars, folding tables, metal stands.
<a name="docA127">
2012-04-29-11-06 start
There are three points about build dict????
web page from winedt.org files.

First, 2012-04-27-06-12 download
open zip file find fr.dic, open fr.dic 
<a name="docA128">
find that 338989 French words all string 
to one long long line, not one word one 
line. User will find the same thing. How 
to get frWords1.txt? Which is one word 
one line. fr.dic has newline bytes but 
notepad.exe do not change line at newline 
<a name="docA129">
bytes. Copy fr.dic whole file, paste to 
101,04,29,11,11 upstairs drop object
dict34fr.htm [Box 8, words] (any box OK) 
Web page box will change line at newline 
bytes. Copy Box 8 value paste to notepad 
and save as frWords1.txt

<a name="docA130">
Second, fr.dic use 
and not use uppercase K,X,Y,Z
Similarly, es.dic use 
<a name="docA131">
Result is that Spanish 
<a name="docA132">
Because 'P' and 'O' are not Spanish 
alphabet. 'P' and 'O' are just like 
comma or like blank ' ', 'P' and 'O' 
cut words. Result is that not found
<a name="docA133">
To solve this problem, LiuHH add 
to [Box 7, Alphabeta definition]
If reader do it yourself, you may 
face same trouble. Solve problem as 
LiuHH did above. Better method is to 
find a more complete dictionary word 
list. (reader do it, not LiuHH do it)
2012-04-29-11-43 here
101,04,29,11,38 upstairs all go out. four or six person always walk away one by one. Rarely walk together. 
<a name="docA134">
Third, both fr.dic and es.dic list 
lowercase abcdefghijklmnopqrstuvwxyz
each alphabet as a word. But uppercase 
alphabet no such treatment, then in 
French dict34fr.htm, Spanish dict25es.htm 
both report "U.N." not found. 
<a name="docA135">
To solve this problem, at first step 
frWords1.txt and esWords1.txt insert 
let sort.exe put them in right place.
2012-04-29-11-58 stop 

<a name="docA136">
2012-04-29-13-00 start 
Add uppercase A,B,C, ... Z as French 
words and re-do sort. Save shortened 
record files as frWords5.txt to 
frWords8.txt and they are included in

frWords5.txt similar to frWords1.txt
frWords6.txt similar to frWords2.txt
frWords7.txt similar to frWords3.txt
frWords8.txt similar to frWords4.txt

<a name="docA137">
French dict34fr.zip has following files
04/29/2012  01:16 PM 4,190,727 dict34fr.htm
04/28/2012  10:18 AM    17,547 frWords1.txt
04/28/2012  10:37 AM    29,529 frWords2.txt
04/28/2012  10:41 AM    47,955 frWords3.txt
04/28/2012  10:50 AM    35,829 frWords4.txt
04/29/2012  12:50 PM    17,619 frWords5.txt
04/29/2012  12:52 PM    29,371 frWords6.txt
04/29/2012  12:55 PM    47,660 frWords7.txt
04/29/2012  12:58 PM    35,586 frWords8.txt
04/26/2012  05:10 PM    30,682 winedt.org_Dict-37-languages.htm
04/26/2012  05:10 PM    16,180 wordreference.com_a10426a.htm
2012-04-29-13-15 stop

<a name="docA138">
2012-04-29-13-41 start 
Next is Spanish spelling check dict25es.htm
creation record. 

Spanish  30/06/1998 ASCII [683 KB] UNICODE [793 KB]  TXT 
2012-04-27-16-05 LiuHH download 
save as es.zip

<a name="docA139">
2012-04-28-18-09 open es.zip

2012-04-28-18-12 save es.zip as es.dic

2012-04-28-18-15 save es.dic
as es_dic01.txt
total 247049 words

<a name="docA140">
2012-04-29-13-31 copy es_dic01.txt 
whole text and paste to dict000a.htm 
box8, click [words to 119111rds]
save dict000a.htm Box9 as es_dic02.txt

sort < es_dic02.txt > es_dic03.txt

<a name="docA141">
2012-04-29-13-34 open es_dic03.txt
paste es_dic03.txt all text to dict000a.htm 
2012-04-29-13-35 in dict000a.htm 
click [119111rds to words]
output to dict000a.htm Box5

<a name="docA142">
2012-04-29-13-36 save dict000a.htm Box 5 
as es_dic04.txt, its value is dict000a.htm 
compatible dictionary. Copy es_dic04.txt
paste to dict000a.htm [Box 5, Dictionary] 
<TEXTAREA id=boxc05 rows=6 cols=38>
... paste Dictionary words here ...

2012-04-29-13-38 save as dict25es.htm
Let dictionary definition be permanent.

<a name="docA143">
Next update Box 7, Alphabeta definition
It is same as docA117
Click [byteCount] button, 
Box 5 input, Box 6 output. Copy Box 6 
first line, paste to dict25es.htm
 name=boxc07 rows=3
Let alphabet definition be permanent.

<a name="docA144">
dict25es.htm is a working version of 
Spanish spelling check web page. 
dict25es.htm Box 1 has example Spanish 
text. It come from upm.es/institucional

<a name="docA145">
save as www.upm.es_institucional.htm
La UPM, la universidad ms innovadora 

Es la universidad espaola con mayor
 participacin en el Programa Marco de la
 UE y la primera por nmero de contratos
 de I+D. As lo refleja el anlisis
 elaborado por el Observatorio IUNE.
<a name="docA146">
2012-04-28-16-12 access 
The UPM, the most innovative university

 Spanish universities is more
  participation in the Framework Programme
  EU and the first by number of contracts
  R & D. This is reflected in the analysis
  prepared by the Centre Iune.
2012-04-29-14-11 stop 

<a name="docA147">
Spanish dict25es.zip has following files
04/29/2012  02:21 PM 3,009,858 dict25es.htm
04/29/2012  02:32 PM    18,500 esWords1.txt
04/29/2012  02:35 PM    30,268 esWords2.txt
04/29/2012  02:36 PM    47,504 esWords3.txt
04/29/2012  02:38 PM    35,510 esWords4.txt
04/26/2012  05:10 PM    30,682 winedt.org_Dict-37-languages.htm
04/26/2012  05:10 PM    16,180 wordreference.com_a10426a.htm

<a name="docA148">
2012-04-30-10-20 start 
Next is German dictionary words working 

2012-04-27-11-11 download

2012-04-29-17-54 start convert dictionary
04/27/2012  11:13 AM     1,182 de_neu.txt
04/27/2012  11:20 AM 2,498,394 de_neu.zip

<a name="docA149">
2012-04-29-18-19 open de_neu.zip

2012-04-29-18-20 save de_neu.zip 
as de_neu.dic
03/17/2012  05:28 PM  13,473,448 de_neu.dic

2012-04-29-18-22 save de_neu.dic
as de_dic01.txt. in de_dic01.txt delete 
next file head message. 
<a name="docA150">
% file:    de_neu.dic (de)
% version: 5 Jan 2005
% New German spelling wordlist for WinEdt (or compatible) spellcheckers
% wordcount: 532273 words
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This wordlist is free; you can redistribute it and/or modify it
% under the terms of the GNU General Public License as published by the
% Free Software Foundation; either version 2 of the License, or
% (at your option) any later version.
% SEE http://www.gnu.org/ FOR DETAILS
% Parts of this wordlist are taken from the german ISPELL dictionary
% Thanks to Robert from WinEdt.org for hunting the spellerrors

dictionary words follows
total 532273 words

<a name="docA151">
2012-04-29-18-27 delete above banner 
because above banner is not dictionary 
words. dict53de.htm Box 5 store only 
dictionary words, Box 5 NOT store doc.

add uppercase A to Z one byte one line
add lowercase a to z one byte one line
Those 26 uppercase A to Z and 26 lower
case a to z will be German words.
save as de_dic01.txt 
Only de_dic01.txt has such change,
File de_neu.dic no such change.

<a name="docA152">
Shortened sample file for de_dic01.txt 
is deWords1.txt, which is included in 

2012-04-29-18-30 copy de_dic01.txt 
whole text and paste to dict000a.htm 
box8, click [words to 119111rds]
save dict000a.htm Box9 as de_dic02.txt
Detail reason see docA060 and docA112

<a name="docA153">
sort < de_dic02.txt > de_dic03.txt
Detail reason see docA112

2012-04-29-18-34 open de_dic03.txt
paste de_dic03.txt all text to 
dict000a.htm box9

<a name="docA154">
2012-04-29-18-35 in dict000a.htm 
click [119111rds to words]
output to dict000a.htm Box5. 
Please see docA064

2012-04-29-18-36 save dict000a.htm 
Box 5 as de_dic04.txt

<a name="docA155">
Its value is dict000a.htm compatible 
dictionary. Copy de_dic04.txt and paste 
to dict000a.htm [Box 5, Dictionary] 

2012-04-29-18-39 save as dict53de.htm
Let dictionary definition be permanent.

<a name="docA156">
Next build dict53de.htm Box 1 sample 
German text.
2012-04-29-15-55 LiuHH access 
copy screen get 
Willkommen auf den 
Mathematik-Seiten von 
Arndt Brnner. Schn, 
da Sie auf meine 
Mathe-Seiten gefunden 
haben! Hier finden Sie 
allerhand zur Mathematik 
in der Schule fr die 
Sekundarstufen und auch 
darber hinaus. 
<a name="docA157">
2012-04-29-15-56 translate 
2012-04-29-18-55 add German version 
to dict53de.htm Box 1. Next is its 
English translation.
//Thank you, Arndt Brnner! a104301107
<a name="docA158">
Welcome to the math side 
of Arndt Brno. I'm glad 
you have found on my math 
pages! Here you will find 
all kinds of mathematics 
in the school for the 
secondary and beyond. 

<a name="docA159">
Next update Box 7, Alphabeta definition
click [byteCount] button 
//[byteCount] document and button
dict53de.htm Box 5 input, 
dict53de.htm Box 6 output 
In Box 6 copy first line 
paste to dict53de.htm Box 7 
save file, dict53de.htm is complete.
//earlier doc about save to Box 7.

<a name="docA160">
2012-04-29-19-07 paid attention to 
next German words are different
Key point is here treat ['] and [] 
both be German alphabet. If user delete 
['] and [] from Box 7 Alphabeta definition
then [wird's] is two words [wird] and [s].
If define [s] be German words, then no 
spelling error.
2012-04-30-11-19 doc stop

<a name="docA161">
German dict53de.zip has following files
04/30/2012  10:45 AM    17,447 deWords1.txt
04/30/2012  12:38 PM    29,395 deWords2.txt
04/30/2012  12:40 PM    56,615 deWords3.txt
04/30/2012  12:41 PM    44,565 deWords4.txt
04/30/2012  01:05 PM 7,370,941 dict53de.htm
04/26/2012  05:10 PM    30,682 winedt.org_Dict-37-languages.htm
04/26/2012  05:10 PM    16,180 wordreference.com_a10426a.htm

<a name="docA162">
update 2012-07-14 added one line //here
 box2 output no repeat
 box2 output has repeat
Before add this function, LiuHH always 
click  Box 2 to Box 6 
send no repeat error-spelling words to 
box6. Now add check box which default 
to no repeat words, I click  and 
get answer at box2. 
<a name="docA163">
If user need repeat output just once, 
click checkbox to checked 
If user need repeat output every time 
spelling check. Please open source code 
for dict000a.htm change from
<input type="checkbox"
..... // more, not important
<a name="docA164">
<input type="checkbox"
..... // more, not important
Insert "checked", then each time open 
dict000a.htm, default output repeated 
answer to box2.
2012-07-14-17-37 stop

<a name="docA165">
2012-08-18-14-16 start
update 2012-08-18 has small changes.
2012-08-18 first time upload Chinese 
version English dictionary spelling 
check dict67ec.zip (has dict67ec.htm)
When write Chinese document, modified 
page code/document. Noticeable change 
is box1 to box9 all become wider.
Because Chinese version need wider 
2012-08-18-14-28 stop

<a name="docA900"> doc end

Javascript index
http://freeman2.com/jsindex2.htm   local
Save graph code to same folder as htm files.
http://freeman2.com/jsgraph2.js   local

Plain vanilla spelling check program document
File name dict000a.htm mean
DICTionary with 000kilo words, version 'a' .htm
LiuHH use a working file dict67en.htm. It has
670207 words = 670kilo words = 67 (10kilo) words
dict67en.zip has English dictionary 670207 words and work OK.
dict000a.htm has spelling check codes, but do not have dictionary.
pickdata.htm extract /*documents*/ and //comments and <!--doc-->.
04/27/2012 09:55 AM 1,879,268 dict67en.zip; Zip has following files
04/27/2012 09:52 AM 7,769,328 dict67en.htm
04/26/2012 05:10 PM 30,682 winedt.org_Dict-37-languages.htm
04/26/2012 05:10 PM 16,180 wordreference.com_a10426a.htm

The address of this page is
http://freeman2.com/dict000a.htm no dictionary, 102kBytes
http://freeman2.com/dict67en.zip English, 1.88MBytes
http://freeman2.com/dict34fr.zip French, 880kBytes
http://freeman2.com/dict25es.zip Spanish, 654kBytes
http://freeman2.com/dict53de.zip German, 1.78MBytes
http://freeman2.com/dict67ec.zip 1.80MBytes
dict67ec has English dictionary, Chinese page.
update frequently, file size is approximate.

This page is created on 2012-02-25.
First upload on 2012-03-09.
Thank you for visit Freeman's web page.
Freeman Liu,HsinHan 劉鑫漢