function VeranstalterDaten() {
	var lthis = this;
	
	this.formHelp = new FormHelp()
	
	this.passOld = null;
	this.passOne = null;
	this.saveOK = null;
	this.saveOKSet = false;
	this.submit1 = null;
	this.submit2 = null;
	this.submitArrowButton = null;
	
	this.isSuperAdmin = false;

	this.initFormChecker();	
	this.registerCallbacks();
}
VeranstalterDaten.prototype = {

	registerCallbacks: function() {
		var form = document.getElementById('veranstalterForm');
		if (form == null || document.getElementById('speichernZusatzInfo') == null) {
			var lthis = this;
			window.setTimeout(function() { lthis.registerCallbacks(); }, 50);
			return;
		}
		
		var lthis = this;
		
		this.isSuperAdmin = (document.getElementById('isSuperAdmin') != null);
		
		this.passOne = document.getElementById('firstPassword');
		this.submitArrowButton = document.getElementById('submitArrowButton');
		this.submit1 = document.getElementById('submit1');
		this.submit2 = document.getElementById('submit2');
		this.submit1.onclick = function() { lthis.trySubmit(); return false;};
		this.submit2.onclick = function() { lthis.trySubmit(); return false;};

		
		var select = form.getElementsByTagName('select')[0];
		this.formChecker.elements[this.formChecker.elements.length] = select;
		this.formChecker.namesToCheck['i_v_land'] = select;
		select.onchange = function() { lthis.formChecker.inputValueChanged(this); };
		
		this.saveOK = document.getElementById('saveOK');
		if (this.saveOK != null) {
			this.formChecker.elements.push(this.saveOK);
			this.saveOK.name = 'saveOK';
			this.saveOK.onclick = function() { lthis.toggleSaveOK(); };
		}
		
		this.passOld = document.getElementById('oldPassword');
		if (this.passOld != null) {
			this.formChecker.validators['i_a_pass'] = function(s) {
						return (s.length == 0 && lthis.passOld.value.length == 0) ||
									(s.length >= 5);};
		}
		
		
		this.formChecker.setForm(form);
		
		this.formHelp.setTable(form.getElementsByTagName('table')[0]);
		this.formHelp.setTable(form.getElementsByTagName('table')[1]);
		
		var i;
		var inputs = form.getElementsByTagName('input');		
		for (i = 0; i < inputs.length; i ++) {
			inputs[i].onfocus = function() { lthis.inputFocused(this); };
		}		
	},

	initFormChecker: function() {
		var lthis = this;
		this.formChecker = new FormChecker();
		this.formChecker.validators = {
			'': function(s) { return s != '';},
			'i_a_benutzername': function(s) { return s.length >= 5;},
			'i_a_email': function(s) { return lthis.formChecker.isValidEmail(s);},
			'i_v_email': function(s) { return s == '' || lthis.formChecker.isValidEmail(s);},
			'i_a_pass_alt': function(s) { return lthis.isSuperAdmin || (s.length == 0 && lthis.passOne.value.length == 0) ||
													(s.length >= 5);},
			'i_a_pass': function(s) { return s.length >= 5;},
			'i_a_pass2': function(s) { return s == lthis.passOne.value;},
			'i_v_land': function(s) { return s != '----' && s != 'Bitte wählen' && s != '-' && s != '' && s != '--';},
			'saveOK': function(s) { return lthis.isSuperAdmin || lthis.saveOKSet; }
		};
		this.formChecker.elements = [];
		this.formChecker.namesToCheck = {
				'i_v_name': true, 'i_v_str': true, 'i_v_plz': true,
				'i_v_ort': true, 'i_v_land': true, 'i_v_email': true,
				'i_a_nachname': true, 'i_a_tel': true, 'i_a_benutzername': true, 'i_a_email': true,
				'i_a_pass': true, 'i_a_pass2': true, 'i_a_pass_alt': true,
				'saveOK': false};
		this.formChecker.canSubmitCallback = function(valid) { lthis.canSubmitCallback(valid); };
	},

	
	toggleSaveOK: function() {
		this.saveOKSet = ! this.saveOKSet;
		if (this.saveOKSet) {
			this.saveOK.innerHTML = 'x';
			this.saveOK.style.backgroundColor = '#f2f2e4';
		} else {
			this.saveOK.innerHTML = '';
			this.saveOK.style.backgroundColor = null;
		}
		this.formChecker.checkCanSubmit();
	},
	
	inputFocused: function(input) {
		this.formHelp.showInfo(input.parentNode.parentNode);
	},
	
	canSubmitCallback: function(valid) {
		this.submitArrowButton.src = valid ? '/imgs/ls.png' : '/imgs/ls_red.png';
		this.submit1.style.cursor = valid ? 'pointer' : 'default';
		this.submit2.style.cursor = valid ? 'pointer' : 'default' ;
		
		var szi = document.getElementById('speichernZusatzInfo');
		szi.innerHTML = '';
		if (!valid) {
			if (!this.saveOKSet) {
				this.saveOKSet = true;
				var wouldBeValid = this.formChecker.checkCanSubmitInner();
				this.saveOKSet = false;
				if (wouldBeValid) {
					szi.appendChild(document.createTextNode('Die Veranstalterdaten können noch ' +
							'nicht gespeichert werden. Bitte stimmen Sie zunächst ' +
							'noch der Speicherung und Veröffentlichung der ' +
							'Daten zu.'))
					return;
				}
			}
			szi.appendChild(document.createTextNode('Die Veranstalterdaten können noch ' +
						'nicht gespeichert werden. Bitte füllen Sie alle roten ' +
						'Felder aus.'))
		}
	},
	
	trySubmit: function() {
		if (this.formChecker.checkCanSubmit()) {
			document.forms['veranstalterForm'].submit();
		}
	}
	
}

var veranstalterDaten = new VeranstalterDaten();

