// Übersetzungsschlüssel entsprechen meist der deutschen Version, deshalb ist die
// deutsche Übersetzung nur scheinbar unvollständig
// Der Übersetzungscode ist in beiden Javascript-Dateien enthalten, da meist nur eine von beiden eingebunden wird.
var translations = {
	"": "de",
	de: {
		agb_gelesen_1: "Ich habe die ",
		agb_gelesen_2: "Teilnahme- und Zahlungsbedingungen",
		agb_gelesen_3: "<br>gelesen und akzeptiert.",
		"error_want_TT.MM.JJJJ": ' Please enter dates using the format DD.MM.YYYY.',
		"[de] mwst-zzgl": "zzgl. MwSt.",
		"[de] mwst-incl": "inkl. MwSt."
	},
	en: {
		agb_gelesen_1: "I've read and accepted the ",
		agb_gelesen_2: "participation and payment terms",
		agb_gelesen_3: ".",
		"error_want_TT.MM.JJJJ": ' Bitte geben Sie ein Datum im Format TT.MM.JJJJ ein.',

		Veranstaltung: "Event",
		"Zum Anmeldeformular": "Show registration form",
		Nummer: 'Number',
		Information: 'Information',
		Veranstalter: 'Organiser',
		Stoffplan: 'Subject matter plan',
		Dauer: 'Duration',
		Uhrzeit: 'Time of day',
		Uhr: "",
		Termininformation: "Event information",
		Teilnahme: "Participation",
		Veranstaltungsgebühr: "Event fee",
		Voraussetzungen: "Requirements",
		Abschluss: "Certificate",
		Förderung: "Promotion",
		Kontakt: "Contact",
		Ansprechpartner: "Contact person",
		Telefon: "Phone",
		"E-Mail": "E-mail",
		Fax: "Fax",
		Anmeldeformular: "Registration form",
		"Zurück zur Veranstaltung": "Go back to event",
		"Zur Veranstaltung anmelden": "Register for this event",
		Anrede: "Gender",
		Herr: "Male",
		Frau: "Female",
		Vorname: "Given name",
		Nachname: "Surname",
		Straße: "Street",
		PLZ: "Zip code",
		Ort: "City",
		Telefax: "Fax",
		Arbeitgeber: "Employer",
		Bemerkung: "Comment",
		Pflichtfeld: "Required field",
		
		Volltext: "Full text",
		Titel: "title",
		Zeitraum: "Period",
		"Beginn ab": "Starting from",
		"Beginn bis": "Starting until",
		"Veranstaltungsort / -PLZ": "Event city / zip code",
		Veranstaltungsort: "Location",
		Veranstaltungsnummer: "Event number",
		Suchen: "Search",
		Thema: "Topic",
		Kursnummer: "Course number",
		"Sie müssen die Teilnahme- und Zahlungsbedingungen akzeptieren!": "You need to accept the participation and payment terms first!",
		Veranstaltungstitel: "Event title",
		Beginn: "Start date",
		Seminare: "Seminars",
		Anmeldegebühr: "Registration fee",
		Kursgebühr: "Course fee",
		Prüfungsgebühr: "Exam fee",
		"zzgl. Materialkosten": "Add. material costs",
		"[de] mwst-zzgl": "plus VAT",
		"[de] mwst-incl": "incl. VAT"
	}
};

(function(){
	var language = "";

	var l=document.getElementsByTagName("meta");
	for (var i = 0; i < l.length; i++) {
		if (l[i].httpEquiv == "content-language") {
			language = l[i].content;
		}
	}

	if (translations[language] == null) {
		language = "";
	}
	
	if (typeof(translations[language]) == "string") {
		language = translations[language];
	}
	
	translations = translations[language];
})();

function translate(name) {
	return translations[name] != null ? translations[name] : name;
}

// Ende Übersetzungscode

var Ionas3SearchalyzrBuilder = Class.create(SearchalyzrBuilder, {
	
	addTabContainer: function(container, title, content) {
		container.update(title);
		container.insert(Builder.node('div', { id: 'ie_clearing' }, [ '\xA0' ]));
		container.insert(content);
	},

	createTabTitle: function($super, system, title) {
		return $super(system, translate(title));
	},
	
	updateTableHeaders: function($super, table, headers, sortable, sorting, sortFunction) {
		for (var i = 0; i < headers.length; i++) {
			if (!headers[i]._translated) {
				headers[i].label = translate(headers[i].label);
				headers[i]._translated = true;
			}
		}
		$super(table, headers, sortable, sorting, sortFunction);
	},
	
	doSearch: function(queryhash, placeholder) {
		if (queryhash.vid) {
			prepareResultView(placeholder);
			Object.keys(sa.systems).without([systemKey]).each(
				function(system) {
					sa.builder.hideTab(sa.systems[system].getTitle(), sa.systems[system].getContainer());
				}
			);
			veranstaltungDetails(null, queryhash.vid);
		} else {
			queryhash = new Hash(queryhash);
			queryhash.unset('query');
			//if (queryhash.values().without(null, undefined, '').size() > 0) {
				doExtendedSearch(queryhash, placeholder);
			//}
		}
	},

	handleData: function(data) {
		var html = '';
		var tabLabel = translate('Veranstaltung');
		var veranstaltung = resultdata2hash(data);

		sa.manager.provideTab(systemKey, tabLabel, null);

		var s = new SearchalyzrSystem(
			systemKey,
			systemKey,
			tabLabel,
			'',
			null,
			[],
			[],
			sa.manager.getTabTitleContainer(systemKey),
			sa.manager.getTabContentContainer(systemKey),
			sa.builder.createEmptyIndicator(systemKey, tabLabel, ''),
			sa.builder.createErrorMessage(systemKey)
		);

		// Empty Indicator hinzufügen
		sa.builder.addEmptyIndicator(s.getContainer(), s.emptyIndicator);

		var systemManager = new SearchalyzrSystemManager(sa, s);

		if (categoryContainer == null) {
			categoryContainer = sa.builder.createCategory('');
			sa.builder.addCategory(s.container, categoryContainer);
		}

		if (veranstaltung.vid) {
			html += '<div id="veranstaltung">' + getVeranstaltungHTML(veranstaltung) + '</div>';
			html += '<div id="anmeldung" style="display:none;">'+ getAnmeldungHTML(veranstaltung) +'</div>';

			categoryContainer.container.innerHTML = html;
			addAnmeldungEvents();
		} else {
			sa.builder.showEmptyIndicator(s.emptyIndicator);
		}
		sa.manager.activateTab(systemKey);
	},

	searchForm: function(stateParams) {
		return getSearchFormHTML();
	},

	handleConfig: function(config) {
		alert(Object.toJSON(config));
	}
});

var sourceSystemKey = 'ofcourse5_iwi';
var systemKey = 'ofcourse5-veranstaltung';
var categoryContainer = null;

function veranstaltungDetails(systemId, veranstaltungsId) {
	var searchParams = sa.getDefaultSearchParams();
	searchParams.searchQuery.terms = [];
	searchParams.searchQuery.parameterAssignments = [{
		parameterId: "vid",
		values: [''+veranstaltungsId]
	}];
	searchParams.columns = [
		"veranstaltung_mwst","kurztitel","vnr","veranstaltungstyp","veranstalter","stoffplan",
		"beginn","ende","defaultuhrzeitvon","defaultuhrzeitbis", 
		"termin_info","raum_name","raum_adresse_ort", 
		"preisangabe","gebuehrsonstiges","gebuehrlernmittel","gebuehrpruefung","gebuehr","veranstaltung_materialkosten",
		"qualifikation","abschluss","foerderung", 
		"ansprechpartner_person_anredename","ansprechpartner_person_telekommunikationdienstlich_fon",
		"ansprechpartner_person_telekommunikationdienstlich_email","ansprechpartner_person_telekommunikationdienstlich_fax",
		"veranstalter_shortname","VeranstalterEmail","vid","web_info_url"
	];
	for (var i in sa.systems) {
		if (sa.systems[i].id == sourceSystemKey) {
			sa.systems[i].manager.getSearchResultData(searchParams);
		}
	}
}

function resultdata2hash(data) {
	var dataHash = new Object();
	data.each(
		function(category) {
			var i = 0;
			category.columnDefinition.each(
				function (column) {
					dataHash[i] = column.id;
					i++;
				}
			);
			category.rows.each(
				function(row) {
					var i = 0;
					row.cells.each(
						function(cell, i) {
							dataHash[dataHash[i]] = cell.text;
							delete dataHash[i];
							i++;
						}
					);
				}
			);
		}
	);
	return dataHash;
}

function toggleView() {
	if ($('veranstaltung').visible()) {
		$('veranstaltung').hide();
		$('anmeldung').show();
	} else {
		$('anmeldung').hide();
		$('veranstaltung').show();
	}
}

function IWI_row(t,v,test,h) {
	return v && v != test
		? '<tr><th>' + translate(t) + '</th><td>'
			+ (h ? '<a href="' + h.replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;") + '">' : '')
			+ v
			+ (h ? '</a>' : '')
			+ '</td></tr>'
		: '';
}

function getVeranstaltungHTML(veranstaltung) {
	var html = '';
	var ap = 'ansprechpartner_person_';
	var apt = 'ansprechpartner_person_telekommunikationdienstlich_';
	var mwst = translate(veranstaltung['veranstaltung_mwst']);
	
	html += '\
		<h2>'+ veranstaltung['kurztitel'] +'</h2>\
		<div class="buttons"><a href="#" onclick="toggleView(); return false;">' + translate('Zum Anmeldeformular') + '</a></div>\
		<fieldset>\
			<legend>' + translate('Veranstaltung') + '</legend>\
			<table class="veranstaltung">'
				+ IWI_row('Nummer', veranstaltung['vnr'])
				+ IWI_row('Information', veranstaltung['veranstaltungstyp'])
				+ IWI_row('Veranstalter', veranstaltung['veranstalter'])
				+ IWI_row('Stoffplan', veranstaltung['stoffplan'])
				+ IWI_row('Dauer', veranstaltung['beginn'] || veranstaltung['ende'] ? veranstaltung['beginn'] +' - '+ veranstaltung['ende'] : '')
				+ IWI_row('Uhrzeit', veranstaltung['defaultuhrzeitvon'] != veranstaltung['defaultuhrzeitbis'] ? veranstaltung['defaultuhrzeitvon'] +' - '+ veranstaltung['defaultuhrzeitbis'] + ' ' + translate('Uhr') : '')
				+ IWI_row('Termininformation', veranstaltung['termin_info'])
				+ IWI_row('Veranstaltungsort',
						(veranstaltung['raum_name'] && veranstaltung['raum_adresse_ort'])
							? (veranstaltung['raum_name'] + "<br/>" + veranstaltung['raum_adresse_ort'])
							: (veranstaltung['raum_name'] || veranstaltung['raum_adresse_ort'])) + '\
			</table>\
		</fieldset>\
		<fieldset>\
			<legend>' + translate('Teilnahme') + '</legend>\
			<table class="veranstaltung">'
				+ (veranstaltung['preisangabe'] == "AUFANFRAGE"
					? IWI_row('Veranstaltungsgebühr', "auf Anfrage")
					: IWI_row('Anmeldegebühr', veranstaltung['gebuehrsonstiges'], "0,00 €")
					+ IWI_row('Kursgebühr', veranstaltung['gebuehrlernmittel'], "0,00 €")
					+ IWI_row('Prüfungsgebühr', veranstaltung['gebuehrpruefung'], "0,00 €")
					+ ( veranstaltung['gebuehrsonstiges'] != "0,00 €" ||
						veranstaltung['gebuehrlernmittel'] != "0,00 €" ||
						veranstaltung['gebuehrpruefung'] != "0,00 €"
						 ? "<tr><td></td><td style='border-bottom: 1px solid #808080;'></td></tr>" : ""
					  )
					+ IWI_row('Veranstaltungsgebühr', veranstaltung['gebuehr'], "0,00 €")
					+ (mwst ? '<tr><th></th><td>' + mwst + '</td></tr>'	: "")
	
					+ IWI_row('zzgl. Materialkosten', veranstaltung['veranstaltung_materialkosten'], "0,00 €")
				)
				+ IWI_row('Voraussetzungen', veranstaltung['qualifikation'])
				+ IWI_row('Abschluss', veranstaltung['abschluss'])
				+ IWI_row('Förderung', veranstaltung['foerderung']) + '\
			</table>\
		</fieldset>\
		<fieldset>\
			<legend>' + translate('Kontakt') + '</legend>\
			<table class="veranstaltung">'
				+ IWI_row('Ansprechpartner', veranstaltung[ap+'anredename'])
				+ IWI_row('Telefon', veranstaltung[apt+'fon'])
				+ IWI_row('E-Mail', veranstaltung[apt+'email'] && '<a href="mailto:' + veranstaltung[apt+'email'] + '">' + veranstaltung[apt+'email'] + '</a>')
				+ IWI_row('Fax', veranstaltung[apt+'fax'])
				+ IWI_row('URL', veranstaltung['web_info_url'], undefined, veranstaltung['web_info_url']) + '\
			</table>\
		</fieldset>\
		<div class="buttons"><a href="#" onclick="toggleView(); return false;">' + translate('Zum Anmeldeformular') + '</a></div>\
	';
	//html += Object.toJSON(veranstaltung);

	return html;
}

function getAnmeldungHTML(veranstaltung) {
	var html = '';

	// URL rauskriegen
	var l = document.getElementsByTagName("script");
	var test = "/Ionas3SearchalyzrBuilder.js";
	var url = null;
	for (var i = 0; i < l.length; i++) if (l[i].src.substring(l[i].src.length-test.length) == test) url = l[i].src;
	if (!url) { alert("Interner Fehler: URL nicht gefunden"); return; }
	var formurl = url.replace(/[^/]+$/, "") + "../includes/customers/iwi/courseRegistration.jspx";
	var agburl = url.replace(/[^/]+$/, "") + "../../de/Home/Teilnahme-%20und%20Zahlungsbedingungen/";
	
	html += '\
		<h2>' + translate('Anmeldeformular') + ' - '+ veranstaltung['kurztitel'] +'</h2>\
		<div class="buttons">\
			<a href="#" onclick="toggleView(); return false;">' + translate('Zurück zur Veranstaltung') + '</a>\
			<a href="#" onclick="checkform(); return false;">' + translate('Zur Veranstaltung anmelden') + '</a>\
		</div>\
		<form action="' + formurl + '" id="anmeldeformular" method="post">\
		<input name="systemid" type="hidden" value="'+ veranstaltung['veranstalter_shortname'] +'">\
		<input name="vid" type="hidden" value="'+ veranstaltung['vid'] +'">\
		<input name="recipient" type="hidden" value="'+ veranstaltung['VeranstalterEmail'] +'">\
		<table class="anmeldung">\
			<tr>\
				<th>' + translate('Anrede') + '*</th>\
				<td>\
					<input class="radio" checked="checked" id="gender1" name="gender" type="radio" value="MALE"><label for="anrede1">' + translate('Herr') + '</label>\
					<input class="radio" id="gender2" name="gender" type="radio" value="FEMALE"><label for="anrede2">' + translate('Frau') + '</label>\
				</td>\
			</tr>\
			<tr>\
				<th>' + translate('Vorname') + '*</th>\
				<td><input class="text" id="firstname" type="text" name="firstname"/></td>\
			</tr>\
			<tr>\
				<th>' + translate('Nachname') + '*</th>\
				<td><input class="text" id="lastname" type="text" name="lastname"/></td>\
			</tr>\
			<tr>\
				<th>' + translate('Straße') + '*</th>\
				<td><input class="text" id="street" type="text" name="street"/></td>\
			</tr>\
			<tr>\
				<th>' + translate('PLZ') + '*</th>\
				<td><input class="text" id="zipcode" type="text" maxlength="5" name="zipcode"/></td>\
			</tr>\
			<tr>\
				<th>' + translate('Ort') + '*</th>\
				<td><input class="text" id="city" type="text" name="city"/></td>\
			</tr>\
			<tr>\
				<th>' + translate('Telefon') + '*</th>\
				<td><input class="text" id="phone-home" type="text" name="phone-home"/></td>\
			</tr>\
			<tr>\
				<th>' + translate('Telefax') + '</th>\
				<td><input class="text" id="fax" type="text" name="fax"/></td>\
			</tr>\
			<tr>\
				<th>' + translate('E-Mail') + '*</th>\
				<td><input class="text" id="email" type="text" name="email"/></td>\
			</tr>\
			<tr>\
				<th>' + translate('Arbeitgeber') + '</th>\
				<td><input class="text" id="c_name" type="text" name="c_name"/></td>\
			</tr>\
			<tr>\
				<th>' + translate('Straße') + '</th>\
				<td><input class="text" id="c_street" type="text" name="c_street"/></td>\
			</tr>\
			<tr>\
				<th>' + translate('PLZ') + '</th>\
				<td><input class="text" id="c_zipcode" type="text" maxlength="5" name="c_zipcode"/></td>\
			</tr>\
			<tr>\
				<th>' + translate('Ort') + '</th>\
				<td><input class="text" id="c_city" type="text" name="c_city"/></td>\
			</tr>\
			<tr>\
				<th>' + translate('Telefon') + '</th>\
				<td><input class="text" id="c_phone" type="text" name="c_phone"/></td>\
			</tr>\
			<tr>\
				<th>' + translate('Bemerkung') + '</th>\
				<td><textarea class="text" id="comment" rows="5" name="comment"></textarea></td>\
			</tr>\
			<tr>\
				<th>&#160;</th>\
				<td><table style="border:none;border-collapse:collapse;width:auto;"><tr>\
					<td valign="top"><input value="1" name="conditions" type="checkbox">&nbsp;</td>\
					<td valign="top">' + translate('agb_gelesen_1') + '<a href="' + agburl + '" target="_blank">' + translate('agb_gelesen_2') + '</a>' + translate('agb_gelesen_3') + '</td>\
				</tr></table></td>\
			</tr>\
		</table>\
		<div>* ' + translate('Pflichtfeld') + '</div>\
		<div class="buttons">\
			<a href="#" onclick="toggleView(); return false;">' + translate('Zurück zur Veranstaltung') + '</a>\
			<a href="#" onclick="checkform(); return false;">' + translate('Zur Veranstaltung anmelden') + '</a>\
		</div>\
		</form>\
	';

	return html;
}

function addAnmeldungEvents() {
	var fieldIds = ['firstname', 'lastname', 'street', 'zipcode', 'city', 'phone-home', 'fax', 'email', 'c_name', 'c_street', 'c_zipcode', 'c_city', 'c_phone', 'comment'];
	fieldIds.each(
		function(id) {
			Event.observe($(id), 'focus', function() {$(id).addClassName('highlight')});
			Event.observe($(id), 'blur', function() {$(id).removeClassName('highlight')});
		}
	);
}

function checkform(){
	var f = $('anmeldeformular');
	var mandatoryFields = ['firstname', 'lastname', 'street', 'zipcode', 'city', 'phone-home', 'email'];
	var valid = 1;

	mandatoryFields.each(
		function(fieldname) {
			if (valid && f[fieldname].value.length == 0) {
				valid = 0;
				f[fieldname].focus();
			}
		}
	);

	if (valid) {
		f.request({
			onComplete: function(xhr){
				var text = xhr.responseText;
				if (text.substring(0,3) == "OK ") {
					document.getElementById("anmeldung").innerHTML = translate(text.substring(3));
				} else {
					alert(translate(text));
				}
			}
		})
	}
}

