Electron Configuration Diagrams Challenge

Given an element name, output its electron configuration.

Input

Your input will be the full name of each element (the range being from Hydrogen, 1, to Calcium, 20) with some exceptions - you should be able to account for the following inputs:

Natrium - This is sodium
Kalium - This is potassium


Note that inputs "sodium" and "potassium" must still be valid.

The first letter will always be capitalised.

Output

You can refer to this webpage for guidance on how to generate an electron configuration diagram.

The following list shows the maximum number of electrons in each shell:


1st shell - 2 electrons
2nd shell - 8 electrons
3rd shell - 8 electrons
4th shell - 14 electrons (although the maximum number of electrons in this shell required is 2)


An example output of the electron configuration is the following:



In the centre of the diagram must be the element's one to two letter symbol.

Either dots or crosses may be used and where they are placed does not matter.

The output does not have to be exactly like this but it does have to be an ASCII graphic. The one thing it cannot be is in the form 2.8.8.1 or any other form like this.

The circles are not necessary

Built in functions which access the periodic table of elements or produce diagrams or electron configurations are hereby disallowed.

Winning

The shortest program in bytes wins.
Python 3, 529 bytes
thanks Thomas and Beta for pointing out some things that should've been obvious to me, saving me some bytes
massive improvement: using string slicing instead of dict lookup
s=&quot;&quot;&quot;    {18}
    {10}{14}
    {2}{6}
    {0}{1}
 {17}{9} %s {3}{11}
 {13}{5}    {7}{15}

    {8}{4}
    {16}{12}
    {19}&quot;&quot;&quot;
e=&quot;H HeLiBe B C N O F NeNaMgAlSiP S ClArK Ca&quot;
r=&quot;hydrogen   helium     lithium    beryllium  boron      carbon     nitrogen   oxygen     fluorine   neon       natrium    sodium     magnesium  aluminium  silicon    phosphoroussulfur     chlorine   argon      kalium     potassium  calcium    &quot;
n=r.find(input().lower())//11
n-=(n&gt;10)+(n&gt;18)
print(s.format(*[' *'[i&lt;=n]for i in range(20)])%e[n*2+1:n*2+3])

Not the prettiest of programs or outputs, but hey, we needed something to kick this challenge off. Try it online.