function initializeRegistrationGuestFields(nr_total) {
	var el_id;
	var i = 1;
	var show_button0 = 1;
	while (i<=nr_total) {
		el_id = 'guest_active'+i;
		fs_id = 'registration_validation:guest'+i;
		//Hide all active flags
		document.getElementById(el_id).parentNode.parentNode.className="xo_hidden";
		if (document.getElementById(el_id).value == 0) {
			document.getElementById(fs_id).className="xo_hidden";
		} else  {
			document.getElementById(fs_id).className="form-fieldset";
			show_button0 = 0;
		}
		i = i + 1;
	}
	if (!show_button0) {
		document.getElementById('guest_button0').parentNode.parentNode.className="xo_hidden";
	} else {
		document.getElementById('guest_button0').parentNode.parentNode.className="form-item-wrapper";
	}
	
}
function updateRegistrationGuestFields(nr_visible,nr_total) {
	var i = 1;
	var el_id;
	if (nr_visible > 0) {
		document.getElementById('guest_button0').parentNode.parentNode.className="xo_hidden";
	} else {
		document.getElementById('guest_button0').parentNode.parentNode.className="form-item-wrapper";
	}
	//show all guests, that should be visible
	while (i <= nr_visible) {
		el_id = 'registration_validation:guest'+i;
		document.getElementById(el_id).className="form-fieldset";
		el_id = 'guest_active'+i;
		document.getElementById(el_id).value=1;
		el_id = 'guest_button'+i;
		if (i != nr_visible) {
			//If not the last visible, hide add_guest button
			document.getElementById(el_id).parentNode.parentNode.className="xo_hidden";
		} else {
			document.getElementById(el_id).parentNode.parentNode.className="form-item-wrapper";
		}
		
		i = i + 1;
	}
	//hide all further guests
	while (i <= nr_total) {
		el_id = 'registration_validation:guest'+i;
		document.getElementById(el_id).className="xo_hidden";
		el_id = 'guest_active'+i;
		document.getElementById(el_id).value=0;
		i = i + 1;
	}
}
function updateUserChoice() {
	if (document.event_edit_form.reg_needs_approval_p[0].checked) {
		document.event_edit_form.user_choice_p[0].parentNode.parentNode.parentNode.className="form-item-wrapper";
		if (document.event_edit_form.user_choice_p[0].checked) {
			document.event_edit_form.max_approvals.parentNode.parentNode.parentNode.className="form-item-wrapper";
			document.event_edit_form.min_required_approvals.parentNode.parentNode.parentNode.className="form-item-wrapper";
		} else {
			document.event_edit_form.max_approvals.parentNode.parentNode.parentNode.className="xo_hidden";
			document.event_edit_form.min_required_approvals.parentNode.parentNode.parentNode.className="xo_hidden";
		}
	} else {
		document.event_edit_form.user_choice_p[0].parentNode.parentNode.parentNode.className="xo_hidden";
		document.event_edit_form.max_approvals.parentNode.parentNode.parentNode.className="xo_hidden";
		document.event_edit_form.min_required_approvals.parentNode.parentNode.parentNode.className="xo_hidden";
	}
}
function updateGuestFields() {
	if (document.event_edit_form.allow_guests_p[0] && document.event_edit_form.allow_guests_p[0].checked) {
		document.event_edit_form.max_guests.parentNode.parentNode.parentNode.className="form-item-wrapper";
	} else {
		document.event_edit_form.max_guests.parentNode.parentNode.parentNode.className="xo_hidden";
	}
}

function updateDates() {
	//If start_time is changed, update end_time and reg_deadline, if they're still set to now()
}
function loadXMLDoc(url) {
	// in der Variablen req wird der Request aufgebaut und gesendet. Sie beinhalte auch die Antwort.
	// mit einer lokalen Variable stellen wir sicher, dass jede Antwort zugeordnet ankommt.
	// bei einer globalen könnten sich die Antworten in der Variablen gegenseitig überschreiben.
	var req

	// eine locale Callback Handler Funktion - diese soll auf die lokale Variable req zugreifen:
	var processReqChange = function() {
		// only if req shows "complete"
		if (req.readyState == 4) {
				// only if "OK"
				if (req.status == 200) {
								var response = req.responseXML.documentElement;
								var method = response.getElementsByTagName('method')[0].firstChild.data;
								eval(method + '(response)');

				} else {
						alert("There was a problem retrieving the XML data:\n" + x.statusText);
				}
		}
	  }
	// Hier wird der Request - ja nach Browser IE oder nicht - verschieden aufgebaut, der CallBack Handler eingetragen
	// und abgesendet
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest ) {
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		// If-Modified-Since Header damit der Browser die Antwort nicht aus dem Cache holt
		req.setRequestHeader( "If-Modified-Since", "Mon, 1 Jan 2007 00:00:00 GMT");
		req.send(null);
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			req.onreadystatechange = processReqChange;
			req.open("GET", url, true);
			req.setRequestHeader( "If-Modified-Since", "Mon, 1 Jan 2007 00:00:00 GMT");
			req.send();
		}
	}
}
function showResults(thisDate,package_id,return_url) {
	var url = "./xml_events?show_date="+thisDate+"&package_id="+package_id+"&return_url="+return_url;
	loadXMLDoc(url);
}
function refreshEvents(response) {
	document.getElementById("results").innerHTML=response.getElementsByTagName("resultlist")[0].firstChild.data;
}
function clearEvents() {
	document.getElementById("results").innerHTML='';
}
function whichButton(event) {
	if (event.keyCode == 13) {
		showResults();
	}
}
