getWrittenMorseDecoded = (input) ->
# Well, this shouldn't happen...
if !(input)
return null
# remove trailing whitspaces
if input.charAt input.length is " "
input.substring 0, input.length - 1
input = input.toUpperCase()
output = ""
# Return special signs
if input is "LETTERSPACE"
return "#"
else if input is "END OF WORK"
return "000101"
else if input is "ERROR"
return "00000000"
else if input is "STARTING SIGNAL"
return "10101"
else if input is "ENDING SIGNAL"
return "01010"
else if input is "UNDERSTOOD"
return "00010"
else if input is "WAIT"
return "01000"
else if input is "SOS"
return "000111000"
else if input is "LETTER SPACE"
return "#"
else if input is "WORD SPACE"
return "+"
else # the converting part
while input.length > 0
if input.charAt(0) is " "
if output.charAt(output.length) is "#"
output = output.substring 0, output.length - 1
output += "+"
input = input.substring 1
else if input.charAt(0) is "\n"
output += "
"
input = input.substring 1
else if input.charAt(0) is "A"
output += "01#"
input = input.substring 1
else if input.charAt(0) is "B"
output += "1000#"
input = input.substring 1
else if input.charAt(0) is "C"
output += "1010#"
input = input.substring 1
else if input.charAt(0) is "D"
output += "100#"
input = input.substring 1
else if input.charAt(0) is "E"
output += "0#"
input = input.substring 1
else if input.charAt(0) is "F"
output += "0010#"
input = input.substring 1
else if input.charAt(0) is "G"
output += "110#"
input = input.substring 1
else if input.charAt(0) is "H"
output += "0000#"
input = input.substring 1
else if input.charAt(0) is "I"
output += "00#"
input = input.substring 1
else if input.charAt(0) is "J"
output += "0111#"
input = input.substring 1
else if input.charAt(0) is "K"
output += "101#"
input = input.substring 1
else if input.charAt(0) is "L"
output += "0100#"
input = input.substring 1
else if input.charAt(0) is "M"
output += "11#"
input = input.substring 1
else if input.charAt(0) is "N"
output += "10#"
input = input.substring 1
else if input.charAt(0) is "O"
output += "111#"
input = input.substring 1
else if input.charAt(0) is "P"
output += "0110#"
input = input.substring 1
else if input.charAt(0) is "Q"
output += "1101#"
input = input.substring 1
else if input.charAt(0) is "R"
output += "010#"
input = input.substring 1
else if input.charAt(0) is "S"
output += "000#"
input = input.substring 1
else if input.charAt(0) is "T"
output += "1#"
input = input.substring 1
else if input.charAt(0) is "U"
output += "001#"
input = input.substring 1
else if input.charAt(0) is "V"
output += "0001#"
input = input.substring 1
else if input.charAt(0) is "W"
output += "011#"
input = input.substring 1
else if input.charAt(0) is "X"
output += "1001#"
input = input.substring 1
else if input.charAt(0) is "Y"
output += "1011#"
input = input.substring 1
else if input.charAt(0) is "Z"
output += "1100#"
input = input.substring 1
else if input.charAt(0) is "0"
output += "11111#"
input = input.substring 1
else if input.charAt(0) is "1"
output += "01111#"
input = input.substring 1
else if input.charAt(0) is "2"
output += "00111#"
input = input.substring 1
else if input.charAt(0) is "3"
output += "00011#"
input = input.substring 1
else if input.charAt(0) is "4"
output += "00001#"
input = input.substring 1
else if input.charAt(0) is "5"
output += "00000#"
input = input.substring 1
else if input.charAt(0) is "6"
output += "10000#"
input = input.substring 1
else if input.charAt(0) is "7"
output += "11000#"
input = input.substring 1
else if input.charAt(0) is "8"
output += "11100#"
input = input.substring 1
else if input.charAt(0) is "9"
output += "11110#"
input = input.substring 1
else if input.charAt(0) is "Ä"
output += "0101#"
input = input.substring 1
else if input.charAt(0) is "Ö"
output += "1110#"
input = input.substring 1
else if input.charAt(0) is "Ü"
output += "0011#"
input = input.substring 1
else if input.charAt(0) is "ß"
output += "00011000#"
input = input.substring 1
else if input.charAt(0) is "."
output += "010101#"
input = input.substring 1
else if input.charAt(0) is ","
output += "110011#"
input = input.substring 1
else if input.charAt(0) is ":"
output += "111000#"
input = input.substring 1
else if input.charAt(0) is ""
output += "101010#"
input = input.substring 1
else if input.charAt(0) is "?"
output += "001100#"
input = input.substring 1
else if input.charAt(0) is "!"
output += "101011#"
input = input.substring 1
else if input.charAt(0) is "-"
output += "100001#"
input = input.substring 1
else if input.charAt(0) is "_"
output += "001101#"
input = input.substring 1
else if input.charAt(0) is "("
output += "10110#"
input = input.substring 1
else if input.charAt(0) is ")"
output += "101101#"
input = input.substring 1
else if input.charAt(0) is "="
output += "10001#"
input = input.substring 1
else if input.charAt(0) is "+"
output += "01010#"
input = input.substring 1
else if input.charAt(0) is "/"
output += "10010#"
input = input.substring 1
else if input.charAt(0) is "@"
output += "011010#"
input = input.substring 1
else if input.charAt(0) is "'"
output += "011110#"
input = input.substring 1
else if input.charAt(0) is "$"
output += "0001001#"
input = input.substring 1
else
return "Code not listed or wrong."
if output.charAt(output.length - 1) is "#"
output = output.substring 0, output.length - 1
return output
getWrittenMorseEncoded = (input) ->
# Well, this shouldn't happen...
if !(input) then return null
# remove trailing whitspaces
while input.charAt(input.length - 1) is " "
input = input.substring 0, input.length - 1
input = input.toUpperCase()
while input.charAt(input.length - 1) is "#" or
input.charAt(input.length - 1) is "+" or
input.charAt(input.length - 1) is "\n"
input = input.substring 0, input.length - 1
if input.charAt(input.length - 1) isnt "#"
input += "#"
inputToSign = input
output = ""
while inputToSign isnt "#"
d = 0
signFull = true
sign = ""
while signFull
if inputToSign.charAt(d) is "+" or
inputToSign.charAt(d) is "#" or
inputToSign.charAt(0) is "\n"
if d is 0
if inputToSign.charAt(0) is "+"
output += " "
inputToSign = inputToSign.substring 1, inputToSign.length
if inputToSign.charAt(0) is "#"
inputToSign = inputToSign.substring 1, inputToSign.length
if inputToSign.charAt(0) is "\n"
output += "
"
inputToSign = inputToSign.substring 1, inputToSign.length
else
sign = inputToSign.substring 0, d
inputToSign = inputToSign.substring d, inputToSign.length
signFull = false
else
d++
if sign is "01"
output += "A"
else if sign is "1000"
output += "B"
else if sign is "1010"
output += "C"
else if sign is "100"
output += "D"
else if sign is "0"
output += "E"
else if sign is "0010"
output += "F"
else if sign is "110"
output += "G"
else if sign is "0000"
output += "H"
else if sign is "00"
output += "I"
else if sign is "0111"
output += "J"
else if sign is "101"
output += "K"
else if sign is "0100"
output += "L"
else if sign is "11"
output += "M"
else if sign is "10"
output += "N"
else if sign is "111"
output += "O"
else if sign is "0110"
output += "P"
else if sign is "1101"
output += "Q"
else if sign is "010"
output += "R"
else if sign is "000"
output += "S"
else if sign is "1"
output += "T"
else if sign is "001"
output += "U"
else if sign is "0001"
output += "V"
else if sign is "011"
output += "W"
else if sign is "1001"
output += "X"
else if sign is "1011"
output += "Y"
else if sign is "1100"
output += "Z"
else if sign is "11111"
output += "0"
else if sign is "01111"
output += "1"
else if sign is "00111"
output += "2"
else if sign is "00011"
output += "3"
else if sign is "00001"
output += "4"
else if sign is "00000"
output += "5"
else if sign is "10000"
output += "6"
else if sign is "11000"
output += "7"
else if sign is "11100"
output += "8"
else if sign is "11110"
output += "9"
else if sign is "0101"
output += "Ä"
else if sign is "1110"
output += "Ö"
else if sign is "0011"
output += "Ü"
else if sign is "00011000"
output += "ß"
else if sign is "1111"
output += "CH"
else if sign is "010101"
output += "."
else if sign is "110011"
output += ","
else if sign is "111000"
output += ":"
else if sign is "101010"
output += ";"
else if sign is "001100"
output += "?"
else if sign is "101011"
output += "!"
else if sign is "100001"
output += "-"
else if sign is "001101"
output += "_"
else if sign is "10110"
output += "("
else if sign is "101101"
output += ")"
else if sign is "011110"
output += "'"
else if sign is "10001"
output += "="
else if sign is "01010"
output += "+"
else if sign is "10010"
output += "/"
else if sign is "011010"
output += "@"
else if sign is "10101"
output += "Begin of the signal"
else if sign is "10001"
output += "Wait"
else if sign is "00010"
output += "Understood"
else if sign is "000101"
output += "End of work"
else if sign is "000111000"
output += "SOS"
else if sign is "00000000"
output += "Error"
else
return "Code not listed or wrong."
return output