function addSynonyms() {
	/*
	* Perönliche Führworter
	*/
	synonyms.push(new Synonym(new Array("I"," ","am"), new Array("I","'","m")));
	synonyms.push(new Synonym(new Array("you"," ","are"), new Array("you","'","re")));
	synonyms.push(new Synonym(new Array("You"," ","are"), new Array("You","'","re")));
	synonyms.push(new Synonym(new Array("He"," ","is"),new Array("He","'","s")));
	synonyms.push(new Synonym(new Array("he"," ","is"), new Array("he","'","s")));
	synonyms.push(new Synonym(new Array("She"," ","is"),new Array("She","'","s")));
	synonyms.push(new Synonym(new Array("she"," ","is"), new Array("she","'","s")));
	synonyms.push(new Synonym(new Array("It"," ","is"),new Array("It","'","s")));
	synonyms.push(new Synonym(new Array("it"," ","is"), new Array("it","'","s")));
	synonyms.push(new Synonym(new Array("We"," ","are"), new Array("We","'","re")));
	synonyms.push(new Synonym(new Array("we"," ","are"), new Array("we","'","re")));
	synonyms.push(new Synonym(new Array("They"," ","are"), new Array("They","'","re")));
	synonyms.push(new Synonym(new Array("they"," ","are"), new Array("they","'","re")));
	
	/*
	* Hilfsverben
	*/
	synonyms.push(new Synonym(new Array("Would"," ","not"), new Array("Wouldn","'","t")));
	synonyms.push(new Synonym(new Array("would"," ","not"), new Array("wouldn","'","t")));
	synonyms.push(new Synonym(new Array("Should"," ","not"), new Array("Shouldn","'","t")));
	synonyms.push(new Synonym(new Array("should"," ","not"), new Array("shouldn","'","t")));
	synonyms.push(new Synonym(new Array("Could"," ","not"), new Array("Couldn","'","t")));
	synonyms.push(new Synonym(new Array("could"," ","not"), new Array("couldn","'","t")));
	synonyms.push(new Synonym(new Array("Must"," ","not"), new Array("Mustn","'","t")));
	synonyms.push(new Synonym(new Array("must"," ","not"), new Array("mustn","'","t")));
	synonyms.push(new Synonym(new Array("Can"," ","not"), new Array("Can","'","t")));
	synonyms.push(new Synonym(new Array("can"," ","not"), new Array("can","'","t")));
	synonyms.push(new Synonym(new Array("Is"," ","not"), new Array("Isn","'","t")));
	synonyms.push(new Synonym(new Array("is"," ","not"), new Array("isn","'","t")));
	synonyms.push(new Synonym(new Array("Are"," ","not"), new Array("Aren","'","t")));
	synonyms.push(new Synonym(new Array("are"," ","not"), new Array("aren","'","t")));
	synonyms.push(new Synonym(new Array("Shall"," ","not"), new Array("Shan","'","t")));
	synonyms.push(new Synonym(new Array("shall"," ","not"), new Array("shan","'","t")));
	
	/*
	* Fragewörter
	*/
	synonyms.push(new Synonym(new Array("Where"," ","is"), new Array("Where","'","s")));
	synonyms.push(new Synonym(new Array("where"," ","is"), new Array("where","'","s")));
	synonyms.push(new Synonym(new Array("Who"," ","is"), new Array("Who","'","s")));
	synonyms.push(new Synonym(new Array("who"," ","is"), new Array("who","'","s")));
	synonyms.push(new Synonym(new Array("What"," ","is"), new Array("What","'","s")));
	synonyms.push(new Synonym(new Array("what"," ","is"), new Array("what","'","s")));
	synonyms.push(new Synonym(new Array("Why"," ","is"), new Array("Why","'","s")));
	synonyms.push(new Synonym(new Array("why"," ","is"), new Array("why","'","s")));
	synonyms.push(new Synonym(new Array("When"," ","is"), new Array("When","'","s")));
	synonyms.push(new Synonym(new Array("when"," ","is"), new Array("when","'","s")));
	synonyms.push(new Synonym(new Array("How"," ","is"), new Array("How","'","s")));
	synonyms.push(new Synonym(new Array("how"," ","is"), new Array("how","'","s")));
}

function EN() {
	this.abbreviation = new Array();
	this.splitExpr = /[;,\.\?!:]|(^and)|(^or)/;
	/**
	* Funktion doe Überprüft ob ein String mit einem Element des Arrays endet
	*/
	this.abbreviation.inArrayEndsWith = function (str) {
		for (var i=0; i < this.length; i++)	{
			if (this[i] === str.substr(str.length - this[i].length)) {
				return true;
			}
		}
	}
	/**
	* Gibt eine Expression zurück um einen Text in Sätze, bzw. Satzteile zurück, 
	* so dass diese möglichst Sinnvoll vorgelesen werden können
	*/
	this.splitText = function(str) {
		str = str.trim();
		var parts = new Array();
		pos = str.search(this.splitExpr);
		var tmp = "";
		
		while (pos >= 0 ) {
			// Punkte in Abkürzungen werden ignoriert
			if (this.abbreviation.inArrayEndsWith(str.substr(0,pos+1).trim())) {
				// String wird für den nächsten Part zwischengespeichert
				pos++;
				tmp += str.substr(0, pos).trim();
			}
			else {
				// und oder werden erkannt
				var weight = 0.3;
				if (!(str.trim().substr(pos,1) == "\"" || str.trim().substr(pos,3) == "and" || str.trim().substr(pos,4) == "or") ) {
					// Satzzeichen werden mitgenommen
					if (str.trim().substr(pos,1) == ".") {
						weight = 1;
					}
					else {
						weight = 0.6;
					}
					pos++;
				}
				
				parts.push(new Part(tmp + " " +str.substr(0,pos), weight));
				// tmp string wird zurückgesetzt
				tmp = "";
			}
			// String wird weiter verarbeitet
			str = str.substr(pos).trim();
			pos = str.search(this.splitExpr);
		}
		if (tmp != "") {
			parts.push(new Part(tmp), 1);
		}
		return parts;
	}
	
	/**
	* Ersetzt die Satzzeichen durch die entsprechenden ausgesprochenen Wörter
	*
	*/
	this.toPunctuationString = function(str) {
		str = str.replace(/\./, ". fullstop. ");
		str = str.replace(/,/, ". comma. ");
		str = str.replace(/"/, ". inverted commas. ");
		str = str.replace(/-/, ". dash. ");
		str = str.replace(/!/, ". exclamation mark. ");
		str = str.replace(/\?/, ". question mark. ");
		return str;
	}
	
	this.dictationIntro = "You will now hear the dictation in full:";
	this.dictationStart = "Start of dictation:";
	this.dictationRead = "You will hear the dictation again, to make final corrections:";
	
	this.pause = " !.!.!.! ";
}