
/**********************************/
/* Input check                    */
/**********************************/

var saveRequested = 0;
function setSaveRequested () {
	saveRequested = 1;
}
function resetSaveRequested () {
	saveRequested = 0;
}

var submitDisabled = 0;
function setSubmitDisabled () {
	submitDisabled = 1;
}
function resetSubmitDisabled () {
	submitDisabled = 0;
}

function dateExists (checkyear, checkmonth, checkday) {
	var cal_date_unknown = 99;
	if (  String(checkyear) == ""  || checkyear == 0  || checkyear == cal_date_unknown
	   || String(checkmonth) == "" || checkmonth == 0 || checkmonth == cal_date_unknown
	   || String(checkday) == ""   || checkday == 0   || checkday == cal_date_unknown
	) {
		return false;
	} else {
		return true;
	}
}

function timeExists (checkhour, checkmin, checkampm) {
	var cal_time_unknown = 99;
	if (  String(checkhour) == "" || checkhour == cal_time_unknown
	   || String(checkmin) == ""  || checkmin == cal_time_unknown
	   || String(checkampm) == "" || checkampm == cal_time_unknown
	) {
		return false;
	} else {
		return true;
	}
}

function get_count_days (beginyear, beginmonth, beginday, endyear, endmonth, endday) {
	var begindate = getFieldDate(beginday, beginmonth, beginyear);
	var enddate = getFieldDate(endday, endmonth, endyear);
	var count_days = ( Math.round( (enddate.getTime() - begindate.getTime()) / (24*60*60*1000) ) * 1 );
	return count_days;
}

function estimate_min_recurring_frequency (
	recurring_month_period, recurring_month_selection_array,
	recurring_week_period, recurring_week_selection_array,
	recurring_wday_period, recurring_wday_selection_array,
	recurring_mday_use
) {
//recurring_mday_use: has no influence here, it has the same frequency as a particular weekday of a particular month

	//get counts
	var recurring_month_selection_count = getCountArraySelected (recurring_month_selection_array);
	var recurring_week_selection_count = getCountArraySelected (recurring_week_selection_array);
	var recurring_wday_selection_count = getCountArraySelected (recurring_wday_selection_array);

	//calculate
	var min_recurring_frequency = 1;
	if (recurring_wday_period != 0) {
		min_recurring_frequency = recurring_wday_period;
	} else if (recurring_wday_selection_count > 1) {
		min_recurring_frequency = 1;
	} else {
		//no weekday specified -> a weekday will be selected (see function calconvertdateinfo_todatabase); or 1 weekday specified
		if (recurring_week_period != 0) {
			min_recurring_frequency = 7 * recurring_week_period;
		} else if (recurring_week_selection_count > 1) {
			min_recurring_frequency = 7;
		} else {
			//no week specified -> a week will be selected (see function calconvertdateinfo_todatabase); or 1 week specified
			if (recurring_month_period != 0) {
				min_recurring_frequency = 30 * recurring_month_period;
			} else if (recurring_month_selection_count == 0 | recurring_month_selection_count > 1) {
				//no month specified -> will be treated as all months (see function calconvertdateinfo_todatabase); or more than 1 month specified
				min_recurring_frequency = 30;
			} else {
				min_recurring_frequency = 360;
			}
		}
	}

	//result
	return (min_recurring_frequency);
}

function get_recurring_def_complete (
	beginyear, beginmonth, beginday,
	begindate_exists,
	recurring_endyear, recurring_endmonth, recurring_endday,
	recurring_enddate_exists,
	recurring_month_period, recurring_month_selection_array,
	recurring_week_period, recurring_week_selection_array,
	recurring_wday_period, recurring_wday_selection_array,
	recurring_mday_use
) {

	//get counts
	var recurring_month_selection_count = getCountArraySelected (recurring_month_selection_array);
	var recurring_week_selection_count = getCountArraySelected (recurring_week_selection_array);
	var recurring_wday_selection_count = getCountArraySelected (recurring_wday_selection_array);

	//get iteration length
	var short_iteration_length = 0;
	if (begindate_exists != 0 && recurring_enddate_exists != 0) {
		if (get_count_days (beginyear, beginmonth, beginday, recurring_endyear, recurring_endmonth, recurring_endday) < 7) {
			short_iteration_length = 1;
		}
	}

	//evaluate
	var recurring_def_complete = 1;
	if (	recurring_mday_use == 0
	   &&	recurring_wday_period == 0 && recurring_wday_selection_count == 0
	) {
		var recurring_def_complete = 0;
	}
	if (	recurring_mday_use == 0
	   &&	recurring_wday_period == 0 && recurring_wday_selection_count != 0
	   &&	recurring_week_period == 0 && recurring_week_selection_count == 0
	) {
		var recurring_def_complete = 0;
	}
	if (	recurring_mday_use != 0
	   &&	recurring_month_period == 0 && recurring_month_selection_count == 0
	) {
		var recurring_def_complete = 0;
	}
	if (	recurring_wday_period == 0 && recurring_wday_selection_count != 0
	   &&	recurring_week_period == 0 && recurring_week_selection_count != 0
	   &&	recurring_month_period == 0 && recurring_month_selection_count == 0
	) {
		var recurring_def_complete = 0;
	}

	//result
	return (recurring_def_complete);
}

function get_event_dances_once_selected () {
	return (document.calendar.event_dances_once_selected.value);
}

function set_event_dances_once_selected () {
	document.calendar.event_dances_once_selected.value = 1;
}

function get_has_too_many_capitals (string, max_count_capitals, max_more_capitals_absolute, max_more_capitals_proportional) {
	var has_too_many_captitals = 0;
	var string_lowercase = string.replace(/[^a-z]/g, "");
	var string_uppercase = string.replace(/[^A-Z]/g, "");
	if (string_uppercase.length > max_count_capitals) {
		has_too_many_captitals = 1;
	} else if (	(string_uppercase.length > string_lowercase.length + max_more_capitals_absolute)
	          &&	(string_uppercase.length > string_lowercase.length * max_more_capitals_proportional)
	) {
		has_too_many_captitals = 1;
	}
	return (has_too_many_captitals);
}

function get_starts_with_small_letter (string) {
	var starts_with_small_letter = 0;
	if (string.search(/^\s*[a-z]/) >= 0) {
		starts_with_small_letter = 1;
	}
	return (starts_with_small_letter);
}

function get_starts_with_capital (string) {
	var starts_with_capital = 0;
	if (string.search(/^\s*[A-Z]/) >= 0) {
		starts_with_capital = 1;
	}
	return (starts_with_capital);
}

function verify_addwanted_submitter_onchange(thisObject) {

	//set addwanted
	var addwanted_submitter_array = document.getElementsByName('addwanted_submitter_array[]'); //for checkbox we have to lookup by getElementsByName

	//init output
	var warning_message = "";

	//check
	if (getCheckedCheckboxValue (thisObject) != null && getCountArraySelected (addwanted_submitter_array) == 1) {
		warning_message += "** Je geeft aan interesse te hebben in betaald adverteren. Dit is niet verplicht voor een gratis vermelding in de agenda.\nDruk op 'Cancel' of 'Annuleren' als je geen interesse hebt in betaald adverteren.\nDruk op 'Ok' of 'Doorgaan' als je inderdaad vrijblijvend contact wil hebben over betaald adverteren.\n";
	}

	//alert if warning
	if (warning_message != "") {
		var message = "";
		message += warning_message;
		var answer = confirm(message);
		if (answer) {
			setCheckedCheckboxValue (thisObject, 1);
		} else {
			setCheckedCheckboxValue (thisObject, 0);
		}
		return true; //this is a warning, so we always allow to continue
	} else {
		return true;
	}
}

function verify_relevance_onchange(thisObject) {

	//php globals
	var relevanceunknown = 801;
	var entereventonmainsitelink = 'http://salsa2.latinnet.nl/modules.php?name=Calendar&amp;file=edit&amp;op=CalendarAddEvent';

	//set relevance
	var relevance = getObjectValue (thisObject);
	var relevance_low_list = getObjectValue (document.calendar.relevance_low_list);

	//init output
	var error_message = "";

	//check
	if (relevance != 0 && relevance != relevanceunknown) {
		low_relevance = 0;
		if (relevance_low_list == "") {
			var relevance_low_array = new Array();
		} else {
			var relevance_low_array = relevance_low_list.split(";");
		}
		for (i=0; i<relevance_low_array.length && low_relevance == 0; i++) {
			if (relevance == relevance_low_array[i]) {
				low_relevance = 1;
			}
		}
		if (low_relevance != 0) {
			error_message += "Je evenement heeft een te laag gehalte aan zouk en sluit daarom onvoldoende aan bij de doelgroep van deze site.\n";
			error_message += "Mogelijk is je evenement wel geschikt voor Latinnet omdat die site een bredere doelgroep heeft.\n";
			error_message += "Druk op 'OK' om je evenement daar aan te melden.";
		}
	}

	//alert if warning
	if (error_message != "") {
		var message = "";
		message += error_message;
		var answer = confirm(message);
		if (answer) {
			window.open(entereventonmainsitelink, 'enter_event', 'toolbar=1');
		}
		return true; //this is a warning, so we always allow to continue
	} else {
		return true;
	}
}

function verify_dance_onchange (thisObject, objectType) {

	//php globals
	var danceunknown = 61;

	//set dance
	var event_dance = getObjectValue (thisObject);

	//init output
	var warning_message = "";

	//check
	if (objectType == "select") {
		if (get_event_dances_once_selected() == 0 && event_dance != 0 && event_dance != danceunknown) {
			set_event_dances_once_selected();
			warning_message += "Je hebt een dans geselecteerd. Doe dit alleen als het voor liefhebbers van deze dans echt de moeite waard is om te komen, ofwel als de dans substantieel aan de orde komt. Geef bijvoorbeeld geen zouk aan in geval van een salsafeest waar ook een keer een nummertje zouk wordt gedraaid.";
		}
	}

	//alert if warning
	if (warning_message != "") {
		var message = "";
		message += warning_message;
		alert(message);
		return true; //this is a warning, so we always allow to continue
	} else {
		return true;
	}
}

function verify(calendar_fields_array, calendar_user_level) {
//caution: we have to get the inherited info from the combination of actual info entered and the location/organizer info

	//php globals
	var orgunknown = 0;
	var time24hour = 1;
	var areaunknown = 1;
	var cityunknown = 1;
	var areaall = 2;
	var relevanceunknown = 801;
	var hyves_pattern = '.hyves.';
	var cal_max_count_capitals_eventtitle = 10;
	var cal_max_count_capitals_price = 2;
	var cal_max_count_capitals_loc = 8;
	var cal_max_count_capitals_sp1 = 8;
	var cal_max_count_capitals_org = 8;
	var cal_max_more_capitals_absolute = 3;
	var cal_max_more_capitals_proportional = 1.25;
	var citytitle_significant_length = 4;

	//event id
	var eid = getObjectValue (document.calendar.eid);

	//eventtitle
	var eventtitle = document.calendar.eventtitle.value;

	//set dates; we borrow a function from the date picker
	var nowday = '06'; //IE6 bugfix, use server date
	var nowmonth = '09';
	var nowyear = '2010';
	var nowdate = getFieldDate(nowday, nowmonth, nowyear);
	var beginday = getObjectValue (document.calendar.beginday);
	var beginmonth = getObjectValue (document.calendar.beginmonth);
	var beginyear = getObjectValue (document.calendar.beginyear);
	if (dateExists(beginyear, beginmonth, beginday)) {
		var begindate = getFieldDate(beginday, beginmonth, beginyear);
		var begindate_exists = 1;
	} else {
		var begindate = nowdate;
		var begindate_exists = 0;
	}
	var endday = getObjectValue (document.calendar.endday);
	var endmonth = getObjectValue (document.calendar.endmonth);
	var endyear = getObjectValue (document.calendar.endyear);
	if (dateExists(endyear, endmonth, endday)) {
		var enddate = getFieldDate(endday, endmonth, endyear);
		var enddate_exists = 1;
	} else {
		var enddate = nowdate;
		var enddate_exists = 0;
	}
	var recurring_endday = getObjectValue (document.calendar.recurring_endday);
	var recurring_endmonth = getObjectValue (document.calendar.recurring_endmonth);
	var recurring_endyear = getObjectValue (document.calendar.recurring_endyear);
	if (dateExists(recurring_endyear, recurring_endmonth, recurring_endday)) {
		var recurring_enddate = getFieldDate(recurring_endday, recurring_endmonth, recurring_endyear);
		var recurring_enddate_exists = 1;
	} else {
		var recurring_enddate = nowdate;
		var recurring_enddate_exists = 0;
	}

	//set times
	var beginhour = getObjectValue (document.calendar.beginhour);
	var beginmin = getObjectValue (document.calendar.beginmin);
	if (time24hour == 0) {
		var beginampm = getObjectValue (document.calendar.beginampm);
	} else {
		var beginampm = 0; //dummy;
	}
	if (timeExists(beginhour, beginmin, beginampm)) {
		var begintime_exists = 1;
	} else {
		var begintime_exists = 0;
	}
	var endhour = getObjectValue (document.calendar.endhour);
	var endmin = getObjectValue (document.calendar.endmin);
	if (time24hour == 0) {
		var endampm = getObjectValue (document.calendar.endampm);
	} else {
		var endampm = 0; //dummy
	}
	if (timeExists(endhour, endmin, endampm)) {
		var endtime_exists = 1;
	} else {
		var endtime_exists = 0;
	}

	//price
	var price = document.calendar.price.value;

	//sites_visibility
	var sites_visibility_own = getObjectValue (document.calendar.sites_visibility_own);
	var sites_visibility_partner = getObjectValue (document.calendar.sites_visibility_partner);

	//relevance
	var relevance = getObjectValue (document.calendar.relevance);
	var relevance_low_list = getObjectValue (document.calendar.relevance_low_list);


	//event types
	var event_types_array = document.getElementsByName('event_types_array[]'); //for checkbox we have to lookup by getElementsByName

	//recurring
	var recurring_dayperiod = document.getElementsByName('recurring_dayperiod'); //for radio we have to lookup by getElementsByName
	var recurring_dayperiod = getObjectValue(recurring_dayperiod);
	var recurring_month_period = document.calendar.recurring_month_period.value;
	var recurring_month_selection_array = document.getElementsByName('recurring_month_selection_array[]'); //for checkbox we have to lookup by getElementsByName
	var recurring_week_period = document.calendar.recurring_week_period.value;
	var recurring_week_selection_array = document.getElementsByName('recurring_week_selection_array[]'); //for checkbox we have to lookup by getElementsByName
	var recurring_wday_period = document.calendar.recurring_wday_period.value;
	var recurring_wday_selection_array = document.getElementsByName('recurring_wday_selection_array[]'); //for checkbox we have to lookup by getElementsByName
	var recurring_mday_use = document.calendar.recurring_mday_use.value;

	//email
	var event_email = document.calendar.event_email.value;
	var organizer_event_email = document.calendar.organizer_event_email.value;
	if (event_email!= "") {
		var inherited_event_email = event_email;
	} else {
		var inherited_event_email = organizer_event_email;
	}

	//phone
	var event_phone = document.calendar.event_phone.value;
	var organizer_event_phone = document.calendar.organizer_event_phone.value;
	if (event_phone!= "") {
		var inherited_event_phone = event_phone;
	} else {
		var inherited_event_phone = organizer_event_phone;
	}

	//mobile
	var event_mobile = document.calendar.event_mobile.value;
	var organizer_event_mobile = document.calendar.organizer_event_mobile.value;
	if (event_mobile!= "") {
		var inherited_event_mobile = event_mobile;
	} else {
		var inherited_event_mobile = organizer_event_mobile;
	}

	//hyves_ref
	var event_hyves_ref = getObjectValue (document.calendar.event_hyves_ref);
	var organizer_event_hyves_ref = document.calendar.organizer_event_hyves_ref.value;
	if (event_hyves_ref!= "") {
		var inherited_event_hyves_ref = event_hyves_ref;
	} else {
		var inherited_event_hyves_ref = organizer_event_hyves_ref;
	}

	//street
	var event_street = document.calendar.event_street.value;
	var location_event_street = getObjectValue (document.calendar.location_event_street);
	if (event_street!= "") {
		var inherited_event_street = event_street;
	} else {
		var inherited_event_street = location_event_street;
	}

	//housenr
	var event_housenr = document.calendar.event_housenr.value;
	var location_event_housenr = getObjectValue (document.calendar.location_event_housenr);
	if (event_housenr!= "") {
		var inherited_event_housenr = event_housenr;
	} else {
		var inherited_event_housenr = location_event_housenr;
	}

	//zipcode
	var event_zipcode = document.calendar.event_zipcode.value;
	var location_event_zipcode = getObjectValue (document.calendar.location_event_zipcode);
	if (event_zipcode != "") {
		var inherited_event_zipcode = event_zipcode;
	} else {
		var inherited_event_zipcode = location_event_zipcode;
	}

	//city
	var event_citytitle = document.calendar.event_citytitle.value;
	var event_cityid = getObjectValue(document.calendar.event_cityid);
	var event_city_citytitle = getObjectValue(document.calendar.event_city_citytitle);
	var event_city_city_rid = getObjectValue(document.calendar.event_city_city_rid);
	var location_event_citytitle = getObjectValue(document.calendar.location_event_citytitle);
	var location_event_cityid = getObjectValue(document.calendar.location_event_cityid);
	if (event_citytitle != "" | (event_cityid != 0 && event_cityid != cityunknown)) {
		var inherited_event_citytitle = event_citytitle;
		var inherited_event_cityid = event_cityid;
		if (event_cityid != 0 && event_cityid != cityunknown) {
			var event_check_citytitle = event_city_citytitle;
		} else {
			var event_check_citytitle = event_citytitle;
		}
	} else {
		var inherited_event_citytitle = location_event_citytitle;
		var inherited_event_cityid = location_event_cityid;
		var event_check_citytitle = location_event_citytitle;
	}

	//area
	var event_mainarea = getObjectValue (document.calendar.event_mainarea);
	var event_mainarea_childs_list = getObjectValue (document.calendar.event_mainarea_childs_list);
	var location_event_mainarea = getObjectValue (document.calendar.location_event_mainarea);
	if (event_mainarea != 0 && event_mainarea != areaunknown && event_mainarea != areaall) {
		var inherited_event_mainarea = event_mainarea;
	} else {
		var inherited_event_mainarea = location_event_mainarea;
	}

	//string and party values
	var loc_txt1e = document.calendar.loc_txt1e.value;
	var loc_txt2e = document.calendar.loc_txt2e.value;
	var loc_txt3e = document.calendar.loc_txt3e.value;
	var loc_txt4e = document.calendar.loc_txt4e.value;
	var loc_party1e = getObjectValue(document.calendar.loc_party1e);
	var loc_party2e = getObjectValue(document.calendar.loc_party2e);
	var loc_party3e = getObjectValue(document.calendar.loc_party3e);
	var sp1_txt1e = document.calendar.sp1_txt1e.value;
	var sp1_txt2e = document.calendar.sp1_txt2e.value;
	var sp1_txt3e = document.calendar.sp1_txt3e.value;
	var sp1_txt4e = document.calendar.sp1_txt4e.value;
	var sp1_party1e = getObjectValue(document.calendar.sp1_party1e);
	var sp1_party2e = getObjectValue(document.calendar.sp1_party2e);
	var sp1_party3e = getObjectValue(document.calendar.sp1_party3e);
	var org_txt1e = document.calendar.org_txt1e.value;
	var org_txt2e = document.calendar.org_txt2e.value;
	var org_txt3e = document.calendar.org_txt3e.value;
	var org_txt4e = document.calendar.org_txt4e.value;
	var org_party1e = getObjectValue(document.calendar.org_party1e);
	var org_party2e = getObjectValue(document.calendar.org_party2e);
	var org_party3e = getObjectValue(document.calendar.org_party3e);

	//init output
	var warning_message = "";
	var error_message = "";

	//submission allowed (no ajax call)?
	if (submitDisabled != 0) {
		resetSubmitDisabled ();
		return false;
	}

	//do we want to store into database (only then verification necessary)
	if (saveRequested == 0) {
		return true;
	}
	resetSaveRequested (); //reset for the next time

	//loop
	var field_usage = 0;
	for (var field_key in calendar_fields_array) {

		//general assign
		field_usage =  calendar_fields_array[field_key];		

		//name_submitter
		if (field_key == 'input_name_submitter' && field_usage >= 2) {
			if (document.calendar.name_submitter.value == "") {
				error_message += "** Je hebt niet je naam opgegeven.\n";
			}
		}

		//email_submitter
		if (field_key == 'input_email_submitter' && field_usage >= 2) {
			if (document.calendar.email_submitter.value == "") {
				error_message += "** Je hebt niet je e-mailadres opgegeven.\n";
			}
		}

		//phone_submitter
		if (field_key == 'input_phone_submitter' && field_usage >= 2) {
			if (document.calendar.phone_submitter.value == "") {
				error_message += "** Je hebt niet je telefoonnummer opgegeven.\n";
			}
		}

		//eventtitle
		if (field_key == 'input_eventtitle' && field_usage >= 2) {
			if (eventtitle == "") {
				error_message += "** Je hebt geen evenementnaam opgegeven.\n";
			}
		}
		if (field_key == 'input_eventtitle' && field_usage >= 1) {
			var has_too_many_capitals = get_has_too_many_capitals (eventtitle, cal_max_count_capitals_eventtitle, cal_max_more_capitals_absolute, cal_max_more_capitals_proportional);
			if (has_too_many_capitals != 0) {
				error_message += "** Je mag geen evenementnaam invoeren met veel hoofdletters.\n";
			}
		}

		//eventtitle (warning)
		if (field_key == 'input_eventtitle' && field_usage >= 1) {
			var starts_with_small_letter = get_starts_with_small_letter (eventtitle);
			if (starts_with_small_letter != 0) {
				warning_message += "** De evenementnaam begint met een kleine letter.\n";
			}
		}

		//begindate
		if (field_key == 'input_begindate' && field_usage >= 2) {
			if (begindate_exists == 0) {
				error_message += "** Je hebt geen (begin)datum opgegeven.\n";
			}
		}
		if (field_key == 'input_begindate' && field_usage >= 1) {
			if (eid == 0 && recurring_dayperiod == 0 && begindate_exists != 0 && enddate_exists == 0) {
				if (begindate < nowdate) {
					error_message += "** De evenementsdatum mag bij een eenmalig evenement niet eerder dan vandaag zijn.\n";
				}
			}
		}

		//begindate (warning)
		if (field_key == 'input_begindate' && recurring_dayperiod == 0 && field_usage >= 1) {
			if (eid != 0 && enddate_exists == 0 && begindate_exists != 0) {
				if (begindate < nowdate) {
					warning_message += "** Er is sprake van een eenmalig evenement waarvan de datum eerder is dan vandaag.\n";
				}
			}
		}
		if (field_key == 'input_begindate' && field_usage >= 1) {
			if (begindate_exists != 0) {
				if (get_count_days (nowyear, nowmonth, nowday, beginyear, beginmonth, beginday) >= 365) {
					warning_message += "** De begindatum is een jaar of meer na vandaag.\n";
				}
			}
		}

		//enddate
		if (field_key == 'input_enddate' && field_usage >= 1) {
			if (begindate_exists != 0 && enddate_exists != 0 && enddate < begindate) {
				error_message += "** De einddatum mag niet eerder dan de begindatum zijn.\n";
			}
			if (eid == 0 && recurring_dayperiod == 0 && enddate_exists != 0) {
				if (enddate < nowdate) {
					error_message += "** De evenementsdatum mag bij een eenmalig evenement niet eerder dan vandaag zijn.\n";
				}
			}
		}

		//enddate (warning)
		if (field_key == 'input_enddate' && recurring_dayperiod == 0 && field_usage >= 1) {
			if (eid != 0 && recurring_dayperiod == 0 && enddate_exists != 0) {
				if (enddate < nowdate) {
					warning_message += "** Er is sprake van een eenmalig evenement waarvan de datum eerder is dan vandaag.\n";
				}
			}
		}
		if (field_key == 'input_enddate' && field_usage >= 1) {
			if (begindate_exists == 0 && enddate_exists != 0) {
				if (get_count_days (nowyear, nowmonth, nowday, endyear, endmonth, endday) >= 365) {
					warning_message += "** De einddatum is een jaar of meer na vandaag.\n";
				}
			}
			if (begindate_exists != 0 && enddate_exists != 0) {
				if (get_count_days (beginyear, beginmonth, beginday, endyear, endmonth, endday) >= 365) {
					warning_message += "** De einddatum is een jaar of meer na de begindatum.\n";
				}
			}
		}

		//begintime
		if (field_key == 'input_begintime' && field_usage >= 2) {
			if (begintime_exists == 0) {
				error_message += "** Je hebt geen begintijd ingevuld.\n";
			}
		}

		//endtime
		if (field_key == 'input_endtime' && field_usage >= 2) {
			if (endtime_exists == 0) {
				error_message += "** Je hebt geen eindtijd ingevuld.\n";
			}
		}

		//price
		if (field_key == 'input_price' && field_usage >= 2) {
			if (price == "") {
				error_message += "** Je hebt geen entreeprijs opgeven.\n";
			}
		}
		if (field_key == 'input_price' && field_usage >= 1) {
			var has_too_many_capitals = get_has_too_many_capitals (price, cal_max_count_capitals_price, cal_max_more_capitals_absolute, cal_max_more_capitals_proportional);
			if (has_too_many_capitals != 0) {
				error_message += "** Je mag geen entreeprijs invoeren met veel hoofdletters.\n";
			}
		}

		//price (warning)
		if (field_key == 'input_price' && field_usage >= 1) {
			var starts_with_capital = get_starts_with_capital (price);
			if (starts_with_capital != 0) {
				warning_message += "** De entreeprijs begint met een hoofdletter.\n";
			}
		}


		//sites_visibility
		if (field_key == 'input_sites_visibility' && field_usage >= 1) {
			if (sites_visibility_own < 0 && sites_visibility_partner < 0) {
				error_message += "** Het evenement is op alle sites verborgen.\n";
			}
		}

		//relevance
		if (field_key == 'input_relevance' && field_usage >= 1) {
			if (relevance == 0 | relevance == relevanceunknown) {
				error_message += "** Je hebt geen type event aangegeven.\n";
			}
		}
		if (field_key == 'input_relevance' && field_usage >= 1) {
			if (relevance != 0 && relevance != relevanceunknown) {
				low_relevance = 0;
				if (relevance_low_list == "") {
					var relevance_low_array = new Array();
				} else {
					var relevance_low_array = relevance_low_list.split(";");
				}
				for (i=0; i<relevance_low_array.length && low_relevance == 0; i++) {
					if (relevance == relevance_low_array[i]) {
						low_relevance = 1;
					}
				}
				if (low_relevance != 0) {
					error_message += "** Je evenement heeft een te laag gehalte aan zouk en sluit daarom onvoldoende aan bij de doelgroep van deze site.\n";
				}
			}
		}

		//event_types
		if (field_key == 'input_event_types' && field_usage >= 2) {
			if (getCountArraySelected (event_types_array) == 0) {
				error_message += "** Je hebt geen type aangegeven.\n";
			}
		}

		//recurrency def
		if (field_key == 'input_recurring_def' && recurring_dayperiod != 0 && field_usage >= 1) {
			if (begindate_exists != 0 && enddate_exists != 0) {
				var event_duration = get_count_days (beginyear, beginmonth, beginday, endyear, endmonth, endday);
				var min_recurring_frequency = estimate_min_recurring_frequency (
					recurring_month_period, recurring_month_selection_array,
					recurring_week_period, recurring_week_selection_array,
					recurring_wday_period, recurring_wday_selection_array,
					recurring_mday_use
				);
				if (event_duration > min_recurring_frequency) {
					error_message += "** Het evenement duurt te lang gezien de herhalingsfrequentie, waardoor de voorkomens elkaar overlappen.\n";
				}
			}
		}

		//recurrency def (warning)
		if (field_key == 'input_recurring_def' && recurring_dayperiod != 0 && field_usage >= 1) {
			var recurring_def_complete = get_recurring_def_complete (
				beginyear, beginmonth, beginday,
				begindate_exists,
				recurring_endyear, recurring_endmonth, recurring_endday,
				recurring_enddate_exists,
				recurring_month_period, recurring_month_selection_array,
				recurring_week_period, recurring_week_selection_array,
				recurring_wday_period, recurring_wday_selection_array,
				recurring_mday_use
			);
			if (recurring_def_complete == 0) {
				warning_message += "** Er is niet volledig gespecificeerd hoe het evenement herhaalt.\n";
			}
		}

		//recurrency last date
		if (field_key == 'input_recurring_enddate' && recurring_dayperiod != 0 && field_usage >= 2) {
			if (recurring_enddate_exists == 0) {
				error_message += "** Je hebt geen laatste datum van de herhaling ingevuld.\n";
			}
		}
		if (field_key == 'input_recurring_enddate' && recurring_dayperiod != 0 && field_usage >= 1) {
			if (recurring_enddate_exists != 0) {
				if (begindate_exists != 0 && enddate_exists == 0 && recurring_enddate < begindate) {
					error_message += "** De laatste datum van herhaling mag niet eerder dan de begindatum zijn.\n";
				}
				if (enddate_exists != 0 && recurring_enddate < enddate) {
					error_message += "** De laatste datum van herhaling mag niet eerder dan de einddatum zijn.\n";
				}
			}
			if (eid == 0 && recurring_enddate_exists != 0) {
				if (recurring_enddate < nowdate) {
					error_message += "** De laatste datum van herhaling mag niet eerder dan vandaag zijn.\n";
				}
			}
		}

		//recurrency last date (warning)
		if (field_key == 'input_recurring_enddate' && recurring_dayperiod != 0 && field_usage == 1) {
			if (recurring_enddate_exists == 0) {
				warning_message += "** Je hebt geen laatste datum van de herhaling ingevuld.\n";
			}
		}
		if (field_key == 'input_recurring_enddate' && recurring_dayperiod != 0 && field_usage >= 1) {
			if (eid != 0 && recurring_enddate_exists != 0) {
				if (recurring_enddate < nowdate) {
					warning_message += "** De laatste datum van herhaling is eerder dan vandaag.\n";
				}
			}
		}
		if (field_key == 'input_recurring_enddate' && recurring_dayperiod != 0 && field_usage >= 1) {
			if (begindate_exists == 0 && recurring_enddate_exists != 0) {
				if (get_count_days (nowyear, nowmonth, nowday, recurring_endyear, recurring_endmonth, recurring_endday) >= 365) {
					warning_message += "** De laatste datum is een jaar of meer na vandaag.\n";
				}
			}
			if (begindate_exists != 0 && recurring_enddate_exists != 0) {
				if (get_count_days (beginyear, beginmonth, beginday, recurring_endyear, recurring_endmonth, recurring_endday) >= 365) {
					warning_message += "** De laatste datum is een jaar of meer na de begindatum.\n";
				}
			}
		}

		//email
		if (field_key == 'input_event_email' && field_usage >= 2) {
			if (inherited_event_email == "") {
				error_message += "** Je hebt geen e-mailadres van de organisator aangegeven.\n";
			}
		}

		//phone
		if (field_key == 'input_event_phone' && field_usage >= 2) {
			if (inherited_event_phone == "") {
				error_message += "** Je hebt geen telefoonnummer van de organisator aangegeven.\n";
			}
		}

		//mobile
		if (field_key == 'input_event_mobile' && field_usage >= 2) {
			if (inherited_event_mobile == "") {
				error_message += "** Je hebt geen mobiel nummer van de organisator aangegeven.\n";
			}
		}

		//hyves_ref
		if (field_key == 'input_event_hyves_ref' && field_usage >= 2) {
			if (inherited_event_hyves_ref == "") {
				error_message += "** Je hebt geen Hyvesnaam gegeven.\n";
			}
		}
		if (field_key == 'input_event_hyves_ref' && field_usage >= 1) {
			if (event_hyves_ref.indexOf('://') >= 0 && event_hyves_ref.toLowerCase().indexOf(hyves_pattern.toLowerCase()) < 0) {
				error_message += "** _CAL_ERRORINVALIDHYVESREF\n";
			}
		}

		//street
		if (field_key == 'input_event_street' && field_usage >= 2) {
			if (inherited_event_street == "") {
				error_message += "** Je hebt geen straat aangegeven.\n";
			}
		}

		//street (warning)
		if (field_key == 'input_event_street' && field_usage >= 1) {
			var starts_with_small_letter = get_starts_with_small_letter (inherited_event_street);
			if (starts_with_small_letter != 0) {
				warning_message += "** De straat begint met een kleine letter.\n";
			}
		}

		//housenr
		if (field_key == 'input_event_housenr' && field_usage >= 2) {
			if (inherited_event_housenr == "") {
				error_message += "** Je hebt geen huisnummer aangegeven.\n";
			}
		}

		//housenr (warning)
		if (field_key == 'input_event_housenr' && field_usage == 1 && calendar_fields_array['input_event_street'] >= 2) {
			if (inherited_event_housenr == "") {
				warning_message += "** Je hebt geen huisnummer aangegeven.\n";
			}
		}

		//zipcode
		if (field_key == 'input_event_zipcode' && field_usage >= 2) {
			if (inherited_event_zipcode == "") {
				error_message += "** Je hebt geen postcode aangegeven.\n";
			}
		}

		//city
		if (field_key == 'input_event_city' && field_usage >= 2) {
			if (inherited_event_citytitle == "" && (inherited_event_cityid == 0 | inherited_event_cityid == cityunknown)) {
				error_message += "** Je hebt geen stad aangegeven.\n";
			}
		}
		if (field_key == 'input_event_city' && field_usage >= 1) {
			if	(	(event_cityid != 0 && event_cityid != cityunknown)
				&&	(location_event_cityid != 0 && location_event_cityid != cityunknown)
				&&	(event_cityid != location_event_cityid)
			) {
				error_message += "** De gekozen locatie ligt niet in de opgegeven stad.\n";
			} else if (	((!(event_cityid != 0 && event_cityid != cityunknown)) && event_citytitle != "")
				&&	(location_event_citytitle != "")
				&&	(event_citytitle != location_event_citytitle)
			) {
				error_message += "** De gekozen locatie ligt niet in de opgegeven stad.\n";
			}
		}

		//city (warning)
		if (field_key == 'input_event_city' && field_usage >= 1) {
			var starts_with_small_letter = get_starts_with_small_letter (inherited_event_citytitle);
			if (starts_with_small_letter != 0) {
				warning_message += "** De stad begint met een kleine letter.\n";
			}
		}

		//event_mainarea
		if (field_key == 'input_event_mainarea' && field_usage >= 2) {
			if (inherited_event_mainarea == 0 | inherited_event_mainarea == areaunknown) {
				if (	event_cityid != 0 && event_cityid != cityunknown
				   &&	event_city_city_rid != 0 && event_city_city_rid != areaunknown
				) {
					//we can take the area from the city
				} else {
					error_message += "** Je hebt geen gebied aangegeven.\n";
				}
			}
		}
		if (field_key == 'input_event_mainarea' && field_usage >= 1) {
			if	(	(event_mainarea != 0 && event_mainarea != areaunknown && event_mainarea != areaall)
				&&	(location_event_mainarea != 0 && location_event_mainarea != areaunknown && location_event_mainarea != areaall)
			) {
				if (event_mainarea_childs_list == "") {
					var event_mainarea_childs_array = new Array();
				} else {
					var event_mainarea_childs_array = event_mainarea_childs_list.split(";");
				}
				loc_in_area = 0;
				if (location_event_mainarea == event_mainarea) {
					loc_in_area = 1;
				}
				for (i=0; i<event_mainarea_childs_array.length && loc_in_area == 0; i++) {
					if (location_event_mainarea == event_mainarea_childs_array[i]) {
						loc_in_area = 1;
					}
				}
				if (loc_in_area == 0) {
					error_message += "** De gekozen locatie ligt niet in het opgegeven gebied.\n";
				}
			}
			if	(	(event_mainarea != 0 && event_mainarea != areaunknown && event_mainarea != areaall)
				&&	(event_cityid != 0 && event_cityid != cityunknown)
			) {
				if (event_mainarea_childs_list == "") {
					var event_mainarea_childs_array = new Array();
				} else {
					var event_mainarea_childs_array = event_mainarea_childs_list.split(";");
				}
				city_in_area = 0;
				if (event_city_city_rid == event_mainarea) {
					city_in_area = 1;
				}
				for (i=0; i<event_mainarea_childs_array.length && city_in_area == 0; i++) {
					if (event_city_city_rid == event_mainarea_childs_array[i]) {
						city_in_area = 1;
					}
				}
				if (city_in_area == 0) {
					error_message += "** De gekozen stad ligt niet in het opgegeven gebied.\n";
				}
			}
		}

		//location
		if (field_key == 'input_loc' && field_usage >= 2) {
			if (
				trim(loc_txt1e) == "" && (loc_party1e == 0 | loc_party1e == orgunknown) &&
				trim(loc_txt2e) == "" && (loc_party2e == 0 | loc_party2e == orgunknown) &&
				trim(loc_txt3e) == "" && (loc_party3e == 0 | loc_party3e == orgunknown) &&
				trim(loc_txt4e) == ""
			) {
				error_message += "** Je hebt geen locatie opgeven.\n";
			}
		}
		if (field_key == 'input_loc' && field_usage >= 1) {
			var has_too_many_capitals = get_has_too_many_capitals (loc_txt1e, cal_max_count_capitals_loc, cal_max_more_capitals_absolute, cal_max_more_capitals_proportional);
			if (has_too_many_capitals != 0) {
				error_message += "** Je mag geen locatie invoeren met veel hoofdletters.\n";
			}
		}

		//location (warning)
		if (field_key == 'input_loc' && field_usage >= 1) {
			var starts_with_small_letter = get_starts_with_small_letter (loc_txt1e);
			if (starts_with_small_letter != 0) {
				warning_message += "** De locatie begint met een kleine letter.\n";
			}
			if (
				trim(loc_txt1e) != "" && (loc_party1e != 0 && loc_party1e != orgunknown)
			) {
				warning_message += "** Je hebt locatie mogelijk dubbel ingevoerd: zowel ingetypt als gekozen uit de lijst.\n";
			}
			if (event_check_citytitle.length >= citytitle_significant_length && loc_txt1e.toLowerCase().search(event_check_citytitle.toLowerCase()) >= 0) {
				warning_message += "** Je hebt mogelijk de naam van de stad herhaald in de locatie.\n";
			}
		}

		//special party
		if (field_key == 'input_sp1' && field_usage >= 2) {
			if (
				trim(sp1_txt1e) == "" && (sp1_party1e == 0 | sp1_party1e == orgunknown) &&
				trim(sp1_txt2e) == "" && (sp1_party2e == 0 | sp1_party2e == orgunknown) &&
				trim(sp1_txt3e) == "" && (sp1_party3e == 0 | sp1_party3e == orgunknown) &&
				trim(sp1_txt4e) == ""
			) {
				error_message += "** Je hebt geen dj opgeven.\n";
			}
		}
		if (field_key == 'input_sp1' && field_usage >= 1) {
			var has_too_many_capitals = get_has_too_many_capitals (sp1_txt1e, cal_max_count_capitals_sp1, cal_max_more_capitals_absolute, cal_max_more_capitals_proportional);
			if (has_too_many_capitals != 0) {
				error_message += "** Je mag geen dj invoeren met veel hoofdletters.\n";
			}
		}

		//special party (warning)
		if (field_key == 'input_sp1' && field_usage >= 1) {
			var starts_with_small_letter = get_starts_with_small_letter (sp1_txt1e);
			if (starts_with_small_letter != 0) {
				warning_message += "** De dj begint met een kleine letter.\n";
			}
			if (
				trim(sp1_txt1e) != "" && (sp1_party1e != 0 && sp1_party1e != orgunknown)
			) {
				warning_message += "** Je hebt dj mogelijk dubbel ingevoerd: zowel ingetypt als gekozen uit de lijst.\n";
			}
			if (event_check_citytitle.length >= citytitle_significant_length && sp1_txt1e.toLowerCase().search(event_check_citytitle.toLowerCase()) >= 0) {
				warning_message += "** Je hebt mogelijk de naam van de stad herhaald in de dj.\n";
			}
		}

		//organizer
		if (field_key == 'input_org' && field_usage >= 2) {
			if (
				trim(org_txt1e) == "" && (org_party1e == 0 | org_party1e == orgunknown) &&
				trim(org_txt2e) == "" && (org_party2e == 0 | org_party2e == orgunknown) &&
				trim(org_txt3e) == "" && (org_party3e == 0 | org_party3e == orgunknown) &&
				trim(org_txt4e) == ""
			) {
				error_message += "** Je hebt geen organisator opgeven.\n";
			}
		}
		if (field_key == 'input_org' && field_usage >= 1) {
			var has_too_many_capitals = get_has_too_many_capitals (org_txt1e, cal_max_count_capitals_org, cal_max_more_capitals_absolute, cal_max_more_capitals_proportional);
			if (has_too_many_capitals != 0) {
				error_message += "** Je mag geen organisator invoeren met veel hoofdletters.\n";
			}
		}

		//organizer (warning)
		if (field_key == 'input_org' && field_usage >= 1) {
			var starts_with_small_letter = get_starts_with_small_letter (org_txt1e);
			if (starts_with_small_letter != 0) {
				warning_message += "** De organisator begint met een kleine letter.\n";
			}
			if (
				trim(org_txt1e) != "" && (org_party1e != 0 && org_party1e != orgunknown)
			) {
				warning_message += "** Je hebt organisator mogelijk dubbel ingevoerd: zelf ingetypt als gekozen uit de lijst.\n";
			}
			if (event_check_citytitle.length >= citytitle_significant_length && org_txt1e.toLowerCase().search(event_check_citytitle.toLowerCase()) >= 0) {
				warning_message += "** Je hebt mogelijk de naam van de stad herhaald in de organisator.\n";
			}
		}
	}

	//check security
	if (calendar_user_level < 1) {
		if (document.calendar.gfx_check.value == "") {
			error_message += "** Je hebt niet de 'anti-spamcode' overgetypt.\n";
		}
	}

	//alert if error
	if (error_message != "") {
		var message = "";
		message += "Er werden fouten gevonden bij het controleren van deze inzending!\n";
		message += "\n";
		message += error_message;
		message += "\n";
		if (warning_message != "") {
			message += "Verder heb je waarschijnlijk andere invoerfouten gemaakt:\n";
			message += "\n";
			message += warning_message;
			message += "\n";
		}
		message += "Verbeter de fouten voordat je het evenement inzendt.\n";
		alert(message);
		return false; //not ok, so prevent submission, etc.
	} else if (warning_message != "") {
		var message = "";
		message += "Je hebt waarschijnlijk een of meer invoerfouten gemaakt.\n";
		message += "\n";
		message += warning_message;
		message += "\n";
		message += "Mogelijk wil je verbeteringen aanbrengen voordat je het evenement inzendt.\nDruk op 'OK' als je toch meteen wilt doorgaan met inzenden van het evenement.\nDruk op 'Cancel' of 'Annuleren' als je eerst gegevens wilt wijzigen.\n";
		var answer = confirm(message);
		if (answer) {
			return true; //user wants to continue
		} else {
			return false; //user wants to change input
		}
	} else {
		return true;
	}
}


/**********************************/
/* Date Picker                    */
/**********************************/

/**
version 1.5
December 4, 2005
Julian Robichaux -- http://www.nsftools.com
Modified by this this
*/

var dayArrayShort = new Array('zo', 'ma', 'di', 'wo', 'do', 'vr', 'za');
var dayArrayMed   = new Array('zo', 'ma', 'di', 'wo', 'do', 'vr', 'za');
var dayArrayLong  = new Array('Zondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag');
var monthArrayShort = new Array('jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec');
var monthArrayMed   = new Array('jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec');
var monthArrayLong  = new Array('januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
var minYear = 2008;
var maxYear = 2010;
var weekStartsMonday = 1;
 
var autoSubmitDo = 0;
var prohibitToggle = 0;
var autoSubmitForm = '';

var use_browser_explorer = 0;


/**
This is the main function you'll call from the onClick event of a button.
Normally, you'll have something like this on your HTML page:

Start Date: <input name="StartDate">
<input type=button value="select" onclick="displayDatePicker('StartDay', 'StartMonth', 'StartYear');">

That will cause the datepicker to be displayed beneath the StartDate field and
any date that is chosen will update the value of that field. If you'd rather have the
datepicker display beneath the button that was clicked, you can code the button
like this:

<input id="Picker" type=button value="select" onclick="displayDatePicker('StartDay', 'StartMonth', 'StartYear', 'Picker');">

So, pretty much, the first argument (dateFieldName) is a string representing the
name of the field that will be modified if the user picks a date, and the second
argument (displayBelowThisObject) is optional and represents an actual node
on the HTML document that the datepicker should be displayed below.

*/
function displayDatePicker(dateFieldName1, dateFieldName2, dateFieldName3, dateFieldName4, dateFieldName5, dateFieldName6, displayObjectId, displayOffset, autoSubmitFormId, verifyFieldKey)
{
  //ids
  var displayBelowObjectId = displayObjectId+'_belowid';
  var datePickerDivID = displayObjectId+'_divid';
  var iFrameDivID = displayObjectId+'_iframeid';

  var targetDateField1 = document.getElementsByName (dateFieldName1).item(0);
  var targetDateField2 = document.getElementsByName (dateFieldName2).item(0);
  var targetDateField3 = document.getElementsByName (dateFieldName3).item(0);
  var targetDateField4 = document.getElementsByName (dateFieldName4).item(0);
  var targetDateField5 = document.getElementsByName (dateFieldName5).item(0);
  var targetDateField6 = document.getElementsByName (dateFieldName6).item(0);

  if (autoSubmitFormId != '') {
	autoSubmitForm = document.getElementById(autoSubmitFormId);
	autoSubmitDo = 1;
  }
 
  //object to update the datepicker below
  displayBelowThisObject = document.getElementById(displayBelowObjectId);
 
  //position
  if (!displayOffset) displayOffset = 0;
  var x = displayBelowThisObject.offsetLeft + displayOffset;
  var y = displayBelowThisObject.offsetTop + displayBelowThisObject.offsetHeight ;
 
  //deal with elements inside tables and such
  var parent = displayBelowThisObject;
  while (parent.offsetParent) {
    parent = parent.offsetParent;
    x += parent.offsetLeft;
    y += parent.offsetTop ;
  }

  //call function
  drawDatePicker(targetDateField1, targetDateField2, targetDateField3, targetDateField4, targetDateField5, targetDateField6, x, y, datePickerDivID, iFrameDivID, verifyFieldKey);
}


/**
Draw the datepicker object (which is just a table with calendar elements) at the
specified x and y coordinates, using the targetDateField object as the input tag
that will ultimately be populated with a date.

This function will normally be called by the displayDatePicker function.
*/
function drawDatePicker(targetDateField1, targetDateField2, targetDateField3, targetDateField4, targetDateField5, targetDateField6, x, y, datePickerDivID, iFrameDivID, verifyFieldKey)
{
  //read data; the first option is the unknown value
  if (targetDateField1.tagName == "SELECT") {
	if (targetDateField1.selectedIndex != 0) {
		var dateValue1 = targetDateField1.options[targetDateField1.selectedIndex].value;
	} else {
		var dateValue1 = "";
	}
  } else {
	var dateValue1 = targetDateField1.value;
  }
  if (targetDateField2.tagName == "SELECT") {
	if (targetDateField2.selectedIndex != 0) {
		var dateValue2 = targetDateField2.options[targetDateField2.selectedIndex].value;
	} else {
		var dateValue2 = "";
	}
  } else {
	var dateValue2 = targetDateField2.value;
  }
  if (targetDateField3.tagName == "SELECT") {
	if (targetDateField3.selectedIndex != 0) {
		var dateValue3 = targetDateField3.options[targetDateField3.selectedIndex].value;
	} else {
		var dateValue3 = "";
	}
  } else {
	var dateValue3 = targetDateField3.value;
  }
  if (targetDateField4.tagName == "SELECT") {
	if (targetDateField4.selectedIndex != 0) {
		var dateValue4 = targetDateField4.options[targetDateField4.selectedIndex].value;
	} else {
		var dateValue4 = "";
	}
  } else {
	var dateValue4 = targetDateField4.value;
  }
  if (targetDateField5.tagName == "SELECT") {
	if (targetDateField5.selectedIndex != 0) {
		var dateValue5 = targetDateField5.options[targetDateField5.selectedIndex].value;
	} else {
		var dateValue5 = "";
	}
  } else {
	var dateValue5 = targetDateField5.value;
  }
  if (targetDateField6.tagName == "SELECT") {
	if (targetDateField6.selectedIndex != 0) {
		var dateValue6 = targetDateField6.options[targetDateField6.selectedIndex].value;
	} else {
		var dateValue6 = "";
	}
  } else {
	var dateValue6 = targetDateField6.value;
  }

  //if the first does not lead to a value, try the second set
  if (dateValue1 != "" && dateValue2 != "" && dateValue3 != "") {
	var dateString1 = dateValue1;
	var dateString2 = dateValue2;
	var dateString3 = dateValue3;
	var dt = getFieldDate(dateString1, dateString2, dateString3);
  } else if (dateValue4 != "" && dateValue5 != "" && dateValue6 != "") {
	var dateString1 = dateValue4;
	var dateString2 = dateValue5;
	var dateString3 = dateValue6;
	var dt = getFieldDate(dateString1, dateString2, dateString3);
  } else {
	var dt = getFieldDate(dateString1, dateString2, dateString3); //empty
  }
 
  // the datepicker table will be drawn inside of a <div> with an ID defined by the
  // datePickerDivID variable. If such a div doesn't yet exist on the HTML
  // document we're working with, add one.
  if (!document.getElementById(datePickerDivID)) {
    // don't use innerHTML to update the body, because it can cause global variables
    // that are currently pointing to objects on the page to have bad references
    //document.body.innerHTML += "<div id='" + datePickerDivID + "' class='dpDiv'></div>";
    var newNode = document.createElement("div");
    newNode.setAttribute("id", datePickerDivID);
    newNode.setAttribute("class", "dpDiv");
    newNode.setAttribute("style", "visibility: hidden;");
    document.body.appendChild(newNode);
  }
 
  // move the datepicker div to the proper x,y coordinate and toggle the visiblity
  var pickerDiv = document.getElementById(datePickerDivID);
  pickerDiv.style.position = "absolute";
  pickerDiv.style.left = x + "px";
  pickerDiv.style.top = y + "px";
  if (use_browser_explorer == 0 | autoSubmitDo == 0 | prohibitToggle == 0) {
    pickerDiv.style.visibility = (pickerDiv.style.visibility == "visible" ? "hidden" : "visible");
  } else {
    prohibitToggle = 0; //MOD: bugfix, for a weird reason sometimes the screen goes if we try to set the visibility to hidden
  }
  pickerDiv.style.display = (pickerDiv.style.display == "block" ? "none" : "block");
  pickerDiv.style.zIndex = 10000;

  // EXTRA deal with elements inside tables and such
  if (use_browser_explorer != 0) {
    var x1 = pickerDiv.offsetLeft;
    var y1 = pickerDiv.offsetTop;
    var parent = pickerDiv;
    while (parent.offsetParent) {
      parent = parent.offsetParent;
      x1 += parent.offsetLeft;
      y1 += parent.offsetTop ;
    }
    var x2 = x + (x-x1);
    var y2 = y + (y-y1);
    pickerDiv.style.left = x2 + "px";
    pickerDiv.style.top = y2 + "px";
  }

  // draw the datepicker table
  refreshDatePicker(targetDateField1.name, targetDateField2.name, targetDateField3.name, dt.getFullYear(), dt.getMonth(), dt.getDate(), datePickerDivID, iFrameDivID, verifyFieldKey);
}


/**
This is the function that actually draws the datepicker calendar.
*/
function refreshDatePicker(dateFieldName1, dateFieldName2, dateFieldName3, year, month, day, datePickerDivID, iFrameDivID, verifyFieldKey)
{
  // if no arguments are passed, use today's date; otherwise, month and year
  // are required (if a day is passed, it will be highlighted later)
  var thisDay = new Date(2010, 09-1, 06); //IE6 bugfix, use server date
 
  if ((month >= 0) && (year > 0)) {
    thisDay = new Date(year, month, 1);
  } else {
    day = thisDay.getDate();
    thisDay.setDate(1);
  }
 
  // the calendar will be drawn as a table
  // you can customize the table elements with a global CSS style sheet,
  // or by hardcoding style and formatting elements below
  var crlf = "\r\n";
  var TABLE = "<table cols=7 class='dpTable'>" + crlf;
  var xTABLE = "</table>" + crlf;
  var TR = "<tr class='dpTR'>";
  var TR_title = "<tr class='dpTitleTR'>";
  var TR_days = "<tr class='dpDayTR'>";
  var TR_todaybutton = "<tr class='dpTodayButtonTR'>";
  var xTR = "</tr>" + crlf;
  var TD = "<td class='dpTD' onMouseOut='this.className=\"dpTD\";' onMouseOver=' this.className=\"dpTDHover\";' ";    // leave this tag open, because we'll be adding an onClick event
  var TD_title = "<td colspan=5 class='dpTitleTD'>";
  var TD_buttons = "<td class='dpButtonTD'>";
  var TD_todaybutton = "<td colspan=7 class='dpTodayButtonTD'>";
  var TD_days = "<td class='dpDayTD'>";
  var TD_selected = "<td class='dpDayHighlightTD' onMouseOut='this.className=\"dpDayHighlightTD\";' onMouseOver='this.className=\"dpTDHover\";' ";    // leave this tag open, because we'll be adding an onClick event
  var xTD = "</td>" + crlf;
  var DIV_title = "<div class='dpTitleText'>";
  var DIV_selected = "<div class='dpDayHighlight'>";
  var xDIV = "</div>";
 
  // start generating the code for the calendar table
  var html = TABLE;
 
  // this is the title bar, which displays the month and the buttons to
  // go back to a previous month or forward to the next month
  html += TR_title;
  html += TD_buttons + getButtonCode(dateFieldName1, dateFieldName2, dateFieldName3, thisDay, -1, "&lt;", datePickerDivID, iFrameDivID, verifyFieldKey) + xTD;
  html += TD_title + DIV_title + monthArrayLong[ thisDay.getMonth()] + " " + thisDay.getFullYear() + xDIV + xTD;
  html += TD_buttons + getButtonCode(dateFieldName1, dateFieldName2, dateFieldName3, thisDay, 1, "&gt;", datePickerDivID, iFrameDivID, verifyFieldKey) + xTD;
  html += xTR;
 
  // this is the row that indicates which day of the week we're on
  html += TR_days;
  if (weekStartsMonday) {
	for(i = 0; i < dayArrayShort.length; i++) {
		j=i+1; if (j == 7) j=0;
		html += TD_days + dayArrayShort[j] + xTD;
	}
  } else {
	for(i = 0; i < dayArrayShort.length; i++)
		html += TD_days + dayArrayShort[i] + xTD;
  }
  html += xTR;
 
  // now we'll start populating the table with days of the month
  html += TR;
 
  // first, the leading blanks
  if (weekStartsMonday && thisDay.getDay() == 0) {
	for (i = 0; i < 6; i++)
		html += TD + "&nbsp;" + xTD;
  } else if (weekStartsMonday) {
	for (i = 1; i < thisDay.getDay(); i++)
		html += TD + "&nbsp;" + xTD;
  } else {
	for (i = 0; i < thisDay.getDay(); i++)
		html += TD + "&nbsp;" + xTD;
  }
 
  // now, the days of the month
  do {
    dayNum = thisDay.getDate();
    TD_onclick = " onclick=\"updateDateField('" + dateFieldName1 + "', '" + dateFieldName2 + "', '" + dateFieldName3 + "', '" + getDateString1(thisDay) + "', '" + getDateString2(thisDay) + "', '" + getDateString3(thisDay) + "', '" + datePickerDivID + "', '" + iFrameDivID + "', '" + verifyFieldKey + "', 1);\">";
    
    if (dayNum == day)
      html += TD_selected + TD_onclick + DIV_selected + dayNum + xDIV + xTD;
    else
      html += TD + TD_onclick + dayNum + xTD;
    
    // if this is the end of the week
    if (weekStartsMonday) {
	if (thisDay.getDay() == 0)
		html += xTR + TR;
    } else {
	if (thisDay.getDay() == 6)
		html += xTR + TR;
    }

    // increment the day
    thisDay.setDate(thisDay.getDate() + 1);
  } while (thisDay.getDate() > 1)
 
  // fill in any trailing blanks
  thisDay.setDate(thisDay.getDate() - 1);
  if (weekStartsMonday && thisDay.getDay() == 0) {
	;
  } else if (weekStartsMonday) {
	for (i = thisDay.getDay()-1; i < 6; i++)
		html += TD + "&nbsp;" + xTD;
  } else {
	for (i = thisDay.getDay(); i < 6; i++)
		html += TD + "&nbsp;" + xTD;
  }
  html += xTR;
 
  // add a button to allow the user to easily return to today, or close the calendar
  var today = new Date();
  var todayString = "Today is " + dayArrayMed[today.getDay()] + ", " + monthArrayMed[ today.getMonth()] + " " + today.getDate();
  html += TR_todaybutton + TD_todaybutton;
  html += "<button class='dpTodayButton' onClick='refreshDatePicker(\"" + dateFieldName1 + "\", \"" + dateFieldName2 + "\", \"" + dateFieldName3 + "\", \"\", \"\", \"\", \"" + datePickerDivID + "\", \"" + iFrameDivID + "\", \"" + verifyFieldKey + "\");'>deze maand</button>";
  html += "<button class='dpTodayButton' onClick='updateDateField  (\"" + dateFieldName1 + "\", \"" + dateFieldName2 + "\", \"" + dateFieldName3 + "\", \"\", \"\", \"\", \"" + datePickerDivID + "\", \"" + iFrameDivID + "\", \"" + verifyFieldKey + "\", 0);'>sluit</button>";
  html += xTD + xTR;
 
  // and finally, close the table
  html += xTABLE;
 
  document.getElementById(datePickerDivID).innerHTML = html;
  // add an "iFrame shim" to allow the datepicker to display above selection lists
  adjustiFrame(datePickerDivID, iFrameDivID);
}


/**
Convenience function for writing the code for the buttons that bring us back or forward
a month.
*/
function getButtonCode(dateFieldName1, dateFieldName2, dateFieldName3, dateVal, adjust, label, datePickerDivID, iFrameDivID, verifyFieldKey)
{
  var newMonth = (dateVal.getMonth () + adjust) % 12;
  var newYear = dateVal.getFullYear() + parseInt((dateVal.getMonth() + adjust) / 12);
  if (newMonth < 0) {
    newMonth += 12;
    newYear += -1;
  }
  if (newYear > maxYear) {
    newMonth = 11;
    newYear = maxYear;
  }
  if (newYear < minYear) {
    newMonth = 0;
    newYear = minYear;
  }
 
  return "<button class='dpButton' onClick='refreshDatePicker(\"" + dateFieldName1 + "\", \"" + dateFieldName2 + "\", \"" + dateFieldName3 + "\", " + newYear + ", " + newMonth + ", \"\", \"" + datePickerDivID + "\", \"" + iFrameDivID + "\", \"" + verifyFieldKey + "\");'>" + label + "</button>";
}


/**
Convert a JavaScript Date object to an element
*/
function getDateString1(dateVal)
{
  var dayString = "00" + dateVal.getDate();
  dayString = dayString.substring(dayString.length - 2);
  return dayString;
}
function getDateString2(dateVal)
{
  var monthString = "00" + (dateVal.getMonth()+1);
  monthString = monthString.substring(monthString.length - 2);
  return monthString;
}
function getDateString3(dateVal)
{
  return dateVal.getFullYear();
}


/**
Convert elements to a JavaScript Date object.
*/
function getFieldDate(dateString1, dateString2, dateString3)
{
  var dateVal;
  var dArray;
  var d, m, y;
 
  try {
    if (dateString1 && dateString2 && dateString3) {
      d = dateString1; m = dateString2-1; y = dateString3;
      dateVal = new Date(y, m, d);
    } else {
      dateVal = new Date(2010, 09-1, 06); //IE6 bugfix, use server date
    }
  } catch(e) {
    dateVal = new Date(2010, 09-1, 06); //IE6 bugfix, use server date
  }
 
  return dateVal;
}


/**
Update the field with the given dateFieldName with the dateString that has been passed,
and hide the datepicker. If no dateString is passed, just close the datepicker without
changing the field value.

Also, if the page developer has defined a function called datePickerClosed anywhere on
the page or in an imported library, we will attempt to run that function with the updated
field as a parameter. This can be used for such things as date validation, setting default
values for related fields, etc. For example, you might have a function like this to validate
a start date field:

function datePickerClosed(dateField1, dateField2, dateField3, datePickerDivID, iFrameDivID)
{
  var dateObj = getFieldDate(dateField1.value, dateField2.value, dateField3.value);
  var today = new Date();
  today = new Date(today.getFullYear(), today.getMonth(), today.getDate());
 
  if (dateField1.name == "StartDay") {
    if (dateObj < today) {
      // if the date is before today, alert the user and display the datepicker again
      alert("Please enter a date that is today or later");
      dateField1.value = ""; dateField2.value = ""; dateField3.value = "";
      document.getElementById(datePickerDivID).style.visibility = "visible";
      adjustiFrame(datePickerDivID, iFrameDivID);
    } else {
      // if the date is okay, set the EndDate field to 7 days after the StartDate
      dateObj.setTime(dateObj.getTime() + (7 * 24 * 60 * 60 * 1000));
      var endDateField1 = document.getElementsByName ("EndDay").item(0);
      var endDateField2 = document.getElementsByName ("EndMonth").item(0);
      var endDateField3 = document.getElementsByName ("EndYear").item(0);
      endDateField1.value = getDateString1(dateObj);
      endDateField2.value = getDateString2(dateObj);
      endDateField3.value = getDateString3(dateObj);
    }
  }
}
*/

function updateDateField(dateFieldName1, dateFieldName2, dateFieldName3, dateString1, dateString2, dateString3, datePickerDivID, iFrameDivID, verifyFieldKey, dateSelected)
{
  var targetDateField1 = document.getElementsByName (dateFieldName1).item(0);
  var targetDateField2 = document.getElementsByName (dateFieldName2).item(0);
  var targetDateField3 = document.getElementsByName (dateFieldName3).item(0);
  if (dateString1 && dateString2 && dateString3) {

      //bugfix guard, should not be necessary
      if (dateString1.length == 0) dateString1="00"+dateString1; 
      if (dateString1.length == 1) dateString1="0"+dateString1; 
      if (dateString2.length == 0) dateString2="00"+dateString2;
      if (dateString2.length == 1) dateString2="0"+dateString2;
      //guard end

      //the first option is the onknown value
//    targetDateField1.options[dateString1].selected=true; //does not work
      targetDateField1.value = dateString1;
      targetDateField2.value = dateString2;
      targetDateField3.value = dateString3;
  }
 
  var pickerDiv = document.getElementById(datePickerDivID);
  pickerDiv.style.display = "none";
  if (use_browser_explorer == 0 | autoSubmitDo == 0 | dateSelected != 0) {
    pickerDiv.style.visibility = "hidden";
    adjustiFrame(datePickerDivID, iFrameDivID);
    prohibitToggle = 0;
  } else {
    prohibitToggle = 1; //MOD: bugfix, for a weird reason sometimes the screen goes if we try to set the visibility to hidden
  }

  if (functionExists (targetDateField1, 'focus')) { //own function for testing validity
	targetDateField1.focus();
  }

  // after the datepicker has closed, optionally run a user-defined function called
  // datePickerClosed, passing the field that was just updated as a parameter
  // (note that this will only run if the user actually selected a date from the datepicker)
  if ((dateString1 && dateString2 && dateString3) && (typeof(datePickerClosed) == "function"))
    datePickerClosed(targetDateField1, targetDateField2, targetDateField3, datePickerDivID, iFrameDivID);

  if (dateString1 && dateString2 && dateString3) {
	if (autoSubmitDo != 0 && dateSelected != 0) {
		autoSubmitForm.submit(); //set by function displayDatePicker
	}
  }
}


/**
Use an "iFrame shim" to deal with problems where the datepicker shows up behind
selection list elements, if they're below the datepicker. The problem and solution are
described at:

http://dotnetjunkies.com/WebLog/jking/archive/2003/07/21/488.aspx
http://dotnetjunkies.com/WebLog/jking/archive/2003/10/30/2975.aspx
*/
function adjustiFrame(datePickerDivID, iFrameDivID)
{
  // we know that Opera doesn't like something about this, so if we
  // think we're using Opera, don't even try
  var is_opera = (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
  if (is_opera)
    return;

  // put a try/catch block around the whole thing, just in case
  try {
    if (!document.getElementById(iFrameDivID)) {
      // don't use innerHTML to update the body, because it can cause global variables
      // that are currently pointing to objects on the page to have bad references
      //document.body.innerHTML += "<iframe id='" + iFrameDivID + "' src='javascript:false;' scrolling='no' frameborder='0'>";
      var newNode = document.createElement("iFrame");
      newNode.setAttribute("id", iFrameDivID);
      newNode.setAttribute("src", "javascript:false;");
      newNode.setAttribute("scrolling", "no");
      newNode.setAttribute ("frameborder", "0");
      document.body.appendChild(newNode);
    }
    
    pickerDiv = document.getElementById(datePickerDivID);
    iFrameDiv = document.getElementById(iFrameDivID);
    
    try {
      iFrameDiv.style.position = "absolute";
      iFrameDiv.style.width = pickerDiv.offsetWidth;
      iFrameDiv.style.height = pickerDiv.offsetHeight ;
      iFrameDiv.style.top = pickerDiv.style.top;
      iFrameDiv.style.left = pickerDiv.style.left;
      iFrameDiv.style.zIndex = pickerDiv.style.zIndex - 1;
      iFrameDiv.style.visibility = pickerDiv.style.visibility ;
      iFrameDiv.style.display = pickerDiv.style.display;

    } catch(e) {
    }
 
  } catch (ee) {
  } 
}


/**********************************/
/* Show / hide recurrency options */
/**********************************/

function setVisibilityRecurrency(recurringSelectorObj, recurrencyRowStatus, recurrencyRows) {

	//declarations
	var recurrencyRowObj, recurrencyRowVisibility;

	//visibility
	if (recurringSelectorObj == null) {
		recurrencyRowVisibility = recurrencyRowStatus;
	} else {
		var recurringSelectorValue = getCheckedRadioValue(recurringSelectorObj); //see general file
		if (recurringSelectorValue != "" && recurringSelectorValue != 0) {
			recurrencyRowVisibility = "";
		} else {
			recurrencyRowVisibility = "none";
		}
	}

	//iterate for the recurrency rows: hide them or not
	for (i=0; i<=recurrencyRows.length-1; i++) {
		recurrencyRowObj = document.getElementById(recurrencyRows[i]);
		recurrencyRowObj.style.display = recurrencyRowVisibility;
	}
}


/*********************************/
/* Show / hide party options     */
/*********************************/

function setVisibilityPartiesSearch (filterPrefix, showMode, floatMode, partiesRows) {

	//if partiesRows we do not have to hide other entries
	if (partiesRows.length == 0) {
		var partiesRows2 = new Array();
		partiesRows2[0] = filterPrefix;
	} else {
		var partiesRows2 = partiesRows;
	}

	//iterate for the party rows
	//the visibility of the one of filterPrefix will be set to showMode
	//the rest will be made hidden
	for (i=0; i<=partiesRows2.length-1; i++) {

		//ids
		var searchButtonId1	= partiesRows2[i] + "_search_button1";
		var searchButtonId2	= partiesRows2[i] + "_search_button2";
		var filterContainerId	= partiesRows2[i] + "_filter_container";
		var filterBeforeId1	= partiesRows2[i] + "_filter_before1";
		var filterBeforeId2	= partiesRows2[i] + "_filter_before2";
		var filterBlockId	= partiesRows2[i] + "_filter_block";
		var filterMessageId	= partiesRows2[i] + "_filter_message";

		//elements
		var searchButton1	= getObjectById(searchButtonId1);
		var searchButton2	= getObjectById(searchButtonId2);
		var filterContainer	= getObjectById(filterContainerId);
		var filterBefore1	= getObjectById(filterBeforeId1);
		var filterBefore2	= getObjectById(filterBeforeId2);
		var filterBlock		= getObjectById(filterBlockId);
		var filterMessage	= getObjectById(filterMessageId);

		//interprete negative show mode
		if (showMode == -1) {
			if (filterContainer.style.visibility != "visible") {
				var showModeApply = 1;
			} else {
				var showModeApply = 0;
			}
		} else {
			var showModeApply = showMode;
		}

		//set visibility
		if (showModeApply == 0 | filterPrefix != partiesRows2[i]) {
			searchButton1.style.visibility="visible";
			searchButton1.style.display="inline";
			searchButton2.style.visibility="visible";
			searchButton2.style.display="inline";
			filterContainer.style.visibility="hidden";
			filterContainer.style.display="none";
			filterBefore1.style.visibility="hidden";
			filterBefore1.style.display="none";
			filterBefore2.style.visibility="hidden";
			filterBefore2.style.display="none";
			filterBlock.style.visibility="hidden";
			filterBlock.style.display="none";
			filterMessage.style.visibility="hidden";
			filterMessage.style.display="none";
		} else {
			searchButton1.style.visibility="visible"; //always show
			searchButton1.style.display="inline"; //always show
			searchButton2.style.visibility="visible"; //always show
			searchButton2.style.display="inline"; //always show
			filterContainer.style.visibility="visible";
			filterContainer.style.display=""; //do not set a specific property value, because IE can not handle this
//			if (floatMode != '') {
//				filterContainer.style.styleFloat=floatMode; //IE
//				filterContainer.style.cssFloat=floatMode; //the rest of the world
//			}
			if (floatMode == 'left') {
				filterBefore1.style.visibility="hidden";
				filterBefore1.style.display="none";
				filterBefore2.style.visibility="hidden";
				filterBefore2.style.display="none";
			} else {
				filterBefore1.style.visibility="visible";
				filterBefore1.style.display=""; //do not set a specific property value, because IE can not handle this
				filterBefore2.style.visibility="visible";
				filterBefore2.style.display=""; //do not set a specific property value, because IE can not handle this
			}
			filterBlock.style.visibility="visible";
			filterBlock.style.display=""; //do not set a specific property value, because IE can not handle this
			filterMessage.style.visibility="visible";
			filterMessage.style.display=""; //do not set a specific property value, because IE can not handle this
		}
	}

	//result (prevent submit)
	return false;
}

function setVisibilityParties (filterPrefix) {

	//php globals
	var editpartylink = "admi83.php?op=LinksEditLink&lid=";
	var linksisadmin = 0;

	//init
	var countLines = 1;
	var divWidth = 0;

	//ids and names
	var filterTextName1e	= filterPrefix + "_txt1e";
	var filterTextName2e	= filterPrefix + "_txt2e";
	var filterTextName3e	= filterPrefix + "_txt3e";
	var filterTextName4e	= filterPrefix + "_txt4e";
	var filterPartyName1e	= filterPrefix + "_party1e";
	var filterPartyName2e	= filterPrefix + "_party2e";
	var filterPartyName3e	= filterPrefix + "_party3e";
	var inputLineId1e	= filterPrefix + "_input_line1e";
	var inputLineId2e	= filterPrefix + "_input_line2e";
	var inputLineId3e	= filterPrefix + "_input_line3e";
	var inputLineId4e	= filterPrefix + "_input_line4e";
	var edit1PartyId1e	= filterPrefix + "_edit1_party1e";
	var edit2PartyId1e	= filterPrefix + "_edit2_party1e";
	var edit1PartyId2e	= filterPrefix + "_edit1_party2e";
	var edit2PartyId2e	= filterPrefix + "_edit2_party2e";
	var edit1PartyId3e	= filterPrefix + "_edit1_party3e";
	var edit2PartyId3e	= filterPrefix + "_edit2_party3e";
	var alert1PartyId1e	= filterPrefix + "_alert1_party1e";
	var alert1PartyId2e	= filterPrefix + "_alert1_party2e";
	var alert1PartyId3e	= filterPrefix + "_alert1_party3e";

	//elements
	var filterTextField1e	= document.getElementsByName (filterTextName1e).item(0);
	var filterTextField2e	= document.getElementsByName (filterTextName2e).item(0);
	var filterTextField3e	= document.getElementsByName (filterTextName3e).item(0);
	var filterTextField4e	= document.getElementsByName (filterTextName4e).item(0);
	var filterPartyField1e	= document.getElementsByName (filterPartyName1e).item(0);
	var filterPartyField2e	= document.getElementsByName (filterPartyName2e).item(0);
	var filterPartyField3e	= document.getElementsByName (filterPartyName3e).item(0);
	var inputLine1e		= getObjectById(inputLineId1e);
	var inputLine2e		= getObjectById(inputLineId2e);
	var inputLine3e		= getObjectById(inputLineId3e);
	var inputLine4e		= getObjectById(inputLineId4e);
	var edit1Party1e	= getObjectById(edit1PartyId1e);
	var edit2Party1e	= getObjectById(edit2PartyId1e);
	var edit1Party2e	= getObjectById(edit1PartyId2e);
	var edit2Party2e	= getObjectById(edit2PartyId2e);
	var edit1Party3e	= getObjectById(edit1PartyId3e);
	var edit2Party3e	= getObjectById(edit2PartyId3e);
	var alert1Party1e	= getObjectById(alert1PartyId1e);
	var alert1Party2e	= getObjectById(alert1PartyId2e);
	var alert1Party3e	= getObjectById(alert1PartyId3e);

	//selected index and value
	var filterPartySelectedIndex1e = filterPartyField1e.selectedIndex;
	var filterPartySelectedIndex2e = filterPartyField2e.selectedIndex;
	var filterPartySelectedIndex3e = filterPartyField3e.selectedIndex;
	var filterPartyValue1e = filterPartyField1e.options[filterPartySelectedIndex1e].value;
	var filterPartyValue2e = filterPartyField2e.options[filterPartySelectedIndex2e].value;
	var filterPartyValue3e = filterPartyField3e.options[filterPartySelectedIndex3e].value;

	//number of lines
	if (filterPartySelectedIndex1e != 0 | filterTextField2e.value != "") {
		countLines = 2;
	}
	if (filterPartySelectedIndex2e != 0 | filterTextField3e.value != "") {
		countLines = 3;
	}
	if (filterPartySelectedIndex3e != 0 | filterTextField4e.value != "") {
		countLines = 4;
	}

	//do we have a real alert?
	var alertStart = "javascript:alert";
	var alertStartLength = alertStart.length;

	//control visibility 1st row
	if (countLines >= 1) {
		inputLine1e.style.visibility="visible";
		inputLine1e.style.display=""; //IE does not allow to use table-row
	} else {
		inputLine1e.style.visibility="hidden";
		inputLine1e.style.display="none";
	}
	if (countLines >= 1 && linksisadmin != 0 && filterPartySelectedIndex1e != 0) {
		edit1Party1e.style.visibility="visible";
		edit1Party1e.style.display="inline";
		edit2Party1e.style.visibility="visible";
		edit2Party1e.style.display="inline";
		edit1Party1e.href=editpartylink+filterPartyValue1e;
		edit2Party1e.href=editpartylink+filterPartyValue1e;
	} else {
		edit1Party1e.style.visibility="hidden";
		edit1Party1e.style.display="none";
		edit2Party1e.style.visibility="hidden";
		edit2Party1e.style.display="none";
		edit1Party1e.href="";
		edit2Party1e.href="";
	}
	if (countLines >= 1 && linksisadmin != 0 && filterPartySelectedIndex1e != 0 && alert1Party1e.href.substr(0,alertStartLength).toLowerCase() == alertStart) {
		alert1Party1e.style.visibility="visible";
		alert1Party1e.style.display="inline";
	} else {
		alert1Party1e.style.visibility="hidden";
		alert1Party1e.style.display="none";
	}

	//control visibility 2nd row
	if (countLines >= 2) {
		inputLine2e.style.visibility="visible";
		inputLine2e.style.display=""; //IE does not allow to use table-row
	} else {
		inputLine2e.style.visibility="hidden";
		inputLine2e.style.display="none";
	}
	if (countLines >= 2 && linksisadmin != 0 && filterPartySelectedIndex2e != 0) {
		edit1Party2e.style.visibility="visible";
		edit1Party2e.style.display="inline";
		edit2Party2e.style.visibility="visible";
		edit2Party2e.style.display="inline";
		edit1Party2e.href=editpartylink+filterPartyValue2e;
		edit2Party2e.href=editpartylink+filterPartyValue2e;
	} else {
		edit1Party2e.style.visibility="hidden";
		edit1Party2e.style.display="none";
		edit2Party2e.style.visibility="hidden";
		edit2Party2e.style.display="none";
		edit1Party2e.href="";
		edit2Party2e.href="";
	}
	if (countLines >= 2 && linksisadmin != 0 && filterPartySelectedIndex2e != 0 && alert1Party2e.href.substr(0,alertStartLength).toLowerCase() == alertStart) {
		alert1Party2e.style.visibility="visible";
		alert1Party2e.style.display="inline";
	} else {
		alert1Party2e.style.visibility="hidden";
		alert1Party2e.style.display="none";
	}

	//control visibility 3rd row
	if (countLines >= 3) {
		inputLine3e.style.visibility="visible";
		inputLine3e.style.display=""; //IE does not allow to use table-row
	} else {
		inputLine3e.style.visibility="hidden";
		inputLine3e.style.display="none";
	}
	if (countLines >= 3 && linksisadmin != 0 && filterPartySelectedIndex3e != 0) {
		edit1Party3e.style.visibility="visible";
		edit1Party3e.style.display="inline";
		edit2Party3e.style.visibility="visible";
		edit2Party3e.style.display="inline";
		edit1Party3e.href=editpartylink+filterPartyValue3e;
		edit2Party3e.href=editpartylink+filterPartyValue3e;
	} else {
		edit1Party3e.style.visibility="hidden";
		edit1Party3e.style.display="none";
		edit2Party3e.style.visibility="hidden";
		edit2Party3e.style.display="none";
		edit1Party3e.href="";
		edit2Party3e.href="";
	}
	if (countLines >= 3 && linksisadmin != 0 && filterPartySelectedIndex3e != 0 && alert1Party3e.href.substr(0,alertStartLength).toLowerCase() == alertStart) {
		alert1Party3e.style.visibility="visible";
		alert1Party3e.style.display="inline";
	} else {
		alert1Party3e.style.visibility="hidden";
		alert1Party3e.style.display="none";
	}

	//control visibility 4th row
	if (countLines >= 4) {
		inputLine4e.style.visibility="visible";
		inputLine4e.style.display=""; //IE does not allow to use table-row
	} else {
		inputLine4e.style.visibility="hidden";
		inputLine4e.style.display="none";
	}
}


/****************************/
/* select parties with AJAX */
/****************************/

var CalendarAjaxSelectPartiesXmlHttpReq = null;
var CalendarAjaxSelectPartiesUrl = "modules.php?name=Calendar&file=edit&op=CalendarAjaxSelectParties";

function doSelectPartiesAction(filterPrefix, selectWidth1){

	//ids and names (filter block and message)
	var filterBlockId      = filterPrefix + "_filter_block";
	var filterMessageId    = filterPrefix + "_filter_message";
	var filterPatName      = filterPrefix + "_filter_pat";
	var filterOldName      = filterPrefix + "_filter_old";
	var filterShowName     = filterPrefix + "_filter_show"; //not used here

	//ids and names (party selections)
	var filterFillerId1e   = filterPrefix + "_select_filler1e";
	var filterFillerId2e   = filterPrefix + "_select_filler2e";
	var filterFillerId3e   = filterPrefix + "_select_filler3e";

	//open xml doc
	var xmldoc = xmlDocOpen (CalendarAjaxSelectPartiesXmlHttpReq);

	//read filter block and filter message from xml
	var filterBlockNode = xmldoc.getElementsByTagName('filter_block').item(0);
	var filterBlockData = readXmlDataFromXmlNode(filterBlockNode);
	var filterMessageNode = xmldoc.getElementsByTagName('filter_message').item(0);
	var filterMessageData = readXmlDataFromXmlNode(filterMessageNode);

	//read party data from xml
	var filterPartyNode1e = xmldoc.getElementsByTagName('filter_party_select1').item(0);
	var filterPartyData1e = readXmlDataFromXmlNode(filterPartyNode1e);
	var filterPartyNode2e = xmldoc.getElementsByTagName('filter_party_select2').item(0);
	var filterPartyData2e = readXmlDataFromXmlNode(filterPartyNode2e);
	var filterPartyNode3e = xmldoc.getElementsByTagName('filter_party_select3').item(0);
	var filterPartyData3e = readXmlDataFromXmlNode(filterPartyNode3e);

	//write party data
	//we can not write the data to the select, because for a strange reason we loose the attributes
	//so we write the whole select again
	var filterFillerField1e = document.getElementById (filterFillerId1e);
	filterFillerField1e.innerHTML = filterPartyData1e;
	var filterFillerField2e = document.getElementById (filterFillerId2e);
	filterFillerField2e.innerHTML = filterPartyData2e;
	var filterFillerField3e = document.getElementById (filterFillerId3e);
	filterFillerField3e.innerHTML = filterPartyData3e;

	//set width wider to show that there are results
	//do this at the end, because this function stores the new widths
	limitedSelectInit(filterPrefix, selectWidth1, 0, 3);

	//write filter block and filter message
	document.getElementById(filterBlockId).innerHTML = filterBlockData;
	document.getElementById(filterMessageId).innerHTML = filterMessageData;
}

function doSelectPartiesRequest (filterPrefix, showTitleFull, showAddress, selectWidth1, selectWidth2) {

	//ids and names
	var filterBlockId     = filterPrefix + "_filter_block";
	var filterMessageId   = filterPrefix + "_filter_message";
	var filterPartyName1e = filterPrefix + "_party1e";
	var filterPartyName2e = filterPrefix + "_party2e";
	var filterPartyName3e = filterPrefix + "_party3e";
	var filterPatName     = filterPrefix + "_filter_pat";
	var filterOldName     = filterPrefix + "_filter_old";
	var filterShowName    = filterPrefix + "_filter_show";

	//write message
	document.getElementById(filterMessageId).innerHTML = "Een momentje geduld. De nieuwe keuzelijst wordt opgehaald.";

	//set width smaller to show that we are looking for results
	limitedSelectInit(filterPrefix, selectWidth2, 0, 3);

	//read values of parties
	var filterPartyField1e = document.getElementsByName (filterPartyName1e).item(0);
	var party1e = filterPartyField1e.options[filterPartyField1e.selectedIndex].value;
	var filterPartyField2e = document.getElementsByName (filterPartyName2e).item(0);
	var party2e = filterPartyField2e.options[filterPartyField2e.selectedIndex].value;
	var filterPartyField3e = document.getElementsByName (filterPartyName3e).item(0);
	var party3e = filterPartyField3e.options[filterPartyField3e.selectedIndex].value;

	//read query strings
	var filterPatField = document.getElementsByName (filterPatName).item(0);
	var filterPat = encodeAjaxParData(filterPatField.value);
	var filterOldField = document.getElementsByName (filterOldName).item(0);
	var filterOld = encodeAjaxParData(filterOldField.value);

	//read start of list
	var filterShowField = document.getElementsByName (filterShowName).item(0);
	if (filterShowField.tagName == "SELECT") {
		var filterShow = filterShowField.options[filterShowField.selectedIndex].value;
	} else {
		var filterShow = filterShowField.value;
	}

	//parameters
	var CalendarAjaxSelectPartiesParameters = "filter_prefix="+filterPrefix+"&party1e="+party1e+"&party2e="+party2e+"&party3e="+party3e+"&filter_pat="+filterPat+"&filter_old="+filterOld+"&filter_show="+filterShow+"&show_title_full="+showTitleFull+"&show_address="+showAddress;

	//make object
	if (CalendarAjaxSelectPartiesXmlHttpReq ==  null) {
		CalendarAjaxSelectPartiesXmlHttpReq = xmlhttpObject();
	}

	//callback function
	var functionVar = function () {
		requestStatus = xmlhttpStatusCheck(CalendarAjaxSelectPartiesXmlHttpReq);
		if (requestStatus > 0) {
			doSelectPartiesAction(filterPrefix, selectWidth1);
		} else if (requestStatus < 0) {
			alert(
				"Het is niet gelukt de gegevens op te halen.\n" +
				"Status: " + CalendarAjaxSelectPartiesXmlHttpReq.statusText
			);
		}
	};

	//call
	xmlhttpPost(CalendarAjaxSelectPartiesUrl, CalendarAjaxSelectPartiesParameters, functionVar, CalendarAjaxSelectPartiesXmlHttpReq);

	//prevent submit
	return false;

}


/***********************************/
/* update inherited info with AJAX */
/***********************************/

var CalendarAjaxUpdateInheritedInfoXmlHttpReq = null;
var CalendarAjaxUpdateInheritedInfoUrl = "modules.php?name=Calendar&file=edit&op=CalendarAjaxUpdateInheritedInfo";

function doUpdateInheritedInfoAction(filterPrefix, calendar_fields_array){

	//php globals
	var linksisadmin = 0;

	//ids and names (warnings)
	var alert1PartyId1e	= filterPrefix + "_alert1_party1e";
	var alert1PartyId2e	= filterPrefix + "_alert1_party2e";
	var alert1PartyId3e	= filterPrefix + "_alert1_party3e";

	//elements (warnings)
	var alert1Party1e	= getObjectById(alert1PartyId1e);
	var alert1Party2e	= getObjectById(alert1PartyId2e);
	var alert1Party3e	= getObjectById(alert1PartyId3e);

	//open xml doc
	var xmldoc = xmlDocOpen (CalendarAjaxUpdateInheritedInfoXmlHttpReq);

	//read inherited data
	if (filterPrefix == 'loc') {
		var locationEventMainareaNode = xmldoc.getElementsByTagName('location_event_mainarea').item(0);
		var locationEventMainareaData = readXmlDataFromXmlNode(locationEventMainareaNode);
		var locationEventStreetNode = xmldoc.getElementsByTagName('location_event_street').item(0);
		var locationEventStreetData = readXmlDataFromXmlNode(locationEventStreetNode);
		var locationEventHousenrNode = xmldoc.getElementsByTagName('location_event_housenr').item(0);
		var locationEventHousenrData = readXmlDataFromXmlNode(locationEventHousenrNode);
		var locationEventZipcodeNode = xmldoc.getElementsByTagName('location_event_zipcode').item(0);
		var locationEventZipcodeData = readXmlDataFromXmlNode(locationEventZipcodeNode);
		var locationEventCitytitleNode = xmldoc.getElementsByTagName('location_event_citytitle').item(0);
		var locationEventCitytitleData = readXmlDataFromXmlNode(locationEventCitytitleNode);
		var locationEventCityidNode = xmldoc.getElementsByTagName('location_event_cityid').item(0);
		var locationEventCityidData = readXmlDataFromXmlNode(locationEventCityidNode);
		var locationEventMappositionNode = xmldoc.getElementsByTagName('location_event_mapposition').item(0);
		var locationEventMappositionData = readXmlDataFromXmlNode(locationEventMappositionNode);
		var locationEventMapposition2eNode = xmldoc.getElementsByTagName('location_event_mapposition2e').item(0);
		var locationEventMapposition2eData = readXmlDataFromXmlNode(locationEventMapposition2eNode);
		var messageEventMainareaNode = xmldoc.getElementsByTagName('message_event_mainarea').item(0);
		var messageEventMainareaData = readXmlDataFromXmlNode(messageEventMainareaNode);
		var messageEventStreetNode = xmldoc.getElementsByTagName('message_event_street').item(0);
		var messageEventStreetData = readXmlDataFromXmlNode(messageEventStreetNode);
		var messageEventHousenrNode = xmldoc.getElementsByTagName('message_event_housenr').item(0);
		var messageEventHousenrData = readXmlDataFromXmlNode(messageEventHousenrNode);
		var messageEventZipcodeNode = xmldoc.getElementsByTagName('message_event_zipcode').item(0);
		var messageEventZipcodeData = readXmlDataFromXmlNode(messageEventZipcodeNode);
		var messageEventCityNode = xmldoc.getElementsByTagName('message_event_city').item(0);
		var messageEventCityData = readXmlDataFromXmlNode(messageEventCityNode);
		var messageEventMappositionNode = xmldoc.getElementsByTagName('message_event_mapposition').item(0);
		var messageEventMappositionData = readXmlDataFromXmlNode(messageEventMappositionNode);
	}
	if (filterPrefix == 'org') {
		var organizerEventEmailNode = xmldoc.getElementsByTagName('organizer_event_email').item(0);
		var organizerEventEmailData = readXmlDataFromXmlNode(organizerEventEmailNode);
		var organizerEventPhoneNode = xmldoc.getElementsByTagName('organizer_event_phone').item(0);
		var organizerEventPhoneData = readXmlDataFromXmlNode(organizerEventPhoneNode);
		var organizerEventMobileNode = xmldoc.getElementsByTagName('organizer_event_mobile').item(0);
		var organizerEventMobileData = readXmlDataFromXmlNode(organizerEventMobileNode);
		var organizerEventPartnersiteSpecialHrefNode = xmldoc.getElementsByTagName('organizer_event_partnersite_special_href').item(0);
		var organizerEventPartnersiteSpecialHrefData = readXmlDataFromXmlNode(organizerEventPartnersiteSpecialHrefNode);
		var organizerEventPartnersiteInfoHrefNode = xmldoc.getElementsByTagName('organizer_event_partnersite_info_href').item(0);
		var organizerEventPartnersiteInfoHrefData = readXmlDataFromXmlNode(organizerEventPartnersiteInfoHrefNode);
		var organizerEventLogoInfoHrefNode = xmldoc.getElementsByTagName('organizer_event_logo_info_href').item(0);
		var organizerEventLogoInfoHrefData = readXmlDataFromXmlNode(organizerEventLogoInfoHrefNode);
		var organizerEventHyvesRefNode = xmldoc.getElementsByTagName('organizer_event_hyves_ref').item(0);
		var organizerEventHyvesRefData = readXmlDataFromXmlNode(organizerEventHyvesRefNode);
		var messageEventEmailNode = xmldoc.getElementsByTagName('message_event_email').item(0);
		var messageEventEmailData = readXmlDataFromXmlNode(messageEventEmailNode);
		var messageEventPhoneNode = xmldoc.getElementsByTagName('message_event_phone').item(0);
		var messageEventPhoneData = readXmlDataFromXmlNode(messageEventPhoneNode);
		var messageEventMobileNode = xmldoc.getElementsByTagName('message_event_mobile').item(0);
		var messageEventMobileData = readXmlDataFromXmlNode(messageEventMobileNode);
		var messageEventPartnersiteSpecialHrefNode = xmldoc.getElementsByTagName('message_event_partnersite_special_href').item(0);
		var messageEventPartnersiteSpecialHrefData = readXmlDataFromXmlNode(messageEventPartnersiteSpecialHrefNode);
		var messageEventPartnersiteInfoHrefNode = xmldoc.getElementsByTagName('message_event_partnersite_info_href').item(0);
		var messageEventPartnersiteInfoHrefData = readXmlDataFromXmlNode(messageEventPartnersiteInfoHrefNode);
		var messageEventLogoInfoHrefNode = xmldoc.getElementsByTagName('message_event_logo_info_href').item(0);
		var messageEventLogoInfoHrefData = readXmlDataFromXmlNode(messageEventLogoInfoHrefNode);
		var messageEventHyvesRefNode = xmldoc.getElementsByTagName('message_event_hyves_ref').item(0);
		var messageEventHyvesRefData = readXmlDataFromXmlNode(messageEventHyvesRefNode);
	}

	//read warnings
	if (1) {
		var alertPartyNode1e = xmldoc.getElementsByTagName('alert_party_href1').item(0);
		var alertPartyData1e = readXmlDataFromXmlNode(alertPartyNode1e);
		var alertPartyNode2e = xmldoc.getElementsByTagName('alert_party_href2').item(0);
		var alertPartyData2e = readXmlDataFromXmlNode(alertPartyNode2e);
		var alertPartyNode3e = xmldoc.getElementsByTagName('alert_party_href3').item(0);
		var alertPartyData3e = readXmlDataFromXmlNode(alertPartyNode3e);

	}

	//write inherited data
	if (filterPrefix == 'loc') {
		if (calendar_fields_array['input_event_mainarea'] > 0) {
			var locationEventMainareaField = document.calendar.location_event_mainarea;
			locationEventMainareaField.value = locationEventMainareaData;
			var messageEventMainareaField = document.getElementById('message_event_mainarea');
			messageEventMainareaField.innerHTML = messageEventMainareaData;
		}
		if (calendar_fields_array['input_event_street'] > 0) {
			var locationEventStreetField = document.calendar.location_event_street;
			locationEventStreetField.value = locationEventStreetData;
			var messageEventStreetField = document.getElementById('message_event_street');
			messageEventStreetField.innerHTML = messageEventStreetData;
		}
		if (calendar_fields_array['input_event_housenr'] > 0) {
			var locationEventHousenrField = document.calendar.location_event_housenr;
			locationEventHousenrField.value = locationEventHousenrData;
			var messageEventHousenrField = document.getElementById('message_event_housenr');
			messageEventHousenrField.innerHTML = messageEventHousenrData;
		}
		if (calendar_fields_array['input_event_zipcode'] > 0) {
			var locationEventZipcodeField = document.calendar.location_event_zipcode;
			locationEventZipcodeField.value = locationEventZipcodeData;
			var messageEventZipcodeField = document.getElementById('message_event_zipcode');
			messageEventZipcodeField.innerHTML = messageEventZipcodeData;
		}
		if (calendar_fields_array['input_event_city'] > 0) {
			var locationEventCitytitleField = document.calendar.location_event_citytitle;
			locationEventCitytitleField.value = locationEventCitytitleData;
			var locationEventCityidField = document.calendar.location_event_cityid;
			locationEventCityidField.value = locationEventCityidData;
			var messageEventCityField = document.getElementById('message_event_city');
			messageEventCityField.innerHTML = messageEventCityData;
		}
		if (calendar_fields_array['input_event_mapposition'] > 0) {
			var locationEventMappositionField = document.calendar.location_event_mapposition;
			locationEventMappositionField.value = locationEventMappositionData;
			var locationEventMapposition2eField = document.calendar.location_event_mapposition2e;
			locationEventMapposition2eField.value = locationEventMapposition2eData;
			var messageEventMappositionField = document.getElementById('message_event_mapposition');
			messageEventMappositionField.innerHTML = messageEventMappositionData;
		}
	}
	if (filterPrefix == 'org') {
		if (calendar_fields_array['input_event_email'] > 0) {
			var organizerEventEmailField = document.calendar.organizer_event_email;
			organizerEventEmailField.value = organizerEventEmailData;
			var messageEventEmailField = document.getElementById('message_event_email');
			messageEventEmailField.innerHTML = messageEventEmailData;
		}
		if (calendar_fields_array['input_event_phone'] > 0) {
			var organizerEventPhoneField = document.calendar.organizer_event_phone;
			organizerEventPhoneField.value = organizerEventPhoneData;
			var messageEventPhoneField = document.getElementById('message_event_phone');
			messageEventPhoneField.innerHTML = messageEventPhoneData;
		}
		if (calendar_fields_array['input_event_mobile'] > 0) {
			var organizerEventMobileField = document.calendar.organizer_event_mobile;
			organizerEventMobileField.value = organizerEventMobileData;
			var messageEventMobileField = document.getElementById('message_event_mobile');
			messageEventMobileField.innerHTML = messageEventMobileData;
		}
		if (calendar_fields_array['input_event_partnersite_special_href'] > 0) {
			var organizerEventPartnersiteSpecialHrefField = document.calendar.organizer_event_partnersite_special_href;
			organizerEventPartnersiteSpecialHrefField.value = organizerEventPartnersiteSpecialHrefData;
			var messageEventPartnersiteSpecialHrefField = document.getElementById('message_event_partnersite_special_href');
			messageEventPartnersiteSpecialHrefField.innerHTML = messageEventPartnersiteSpecialHrefData;
		}
		if (calendar_fields_array['input_event_partnersite_info_href'] > 0) {
			var organizerEventPartnersiteInfoHrefField = document.calendar.organizer_event_partnersite_info_href;
			organizerEventPartnersiteInfoHrefField.value = organizerEventPartnersiteInfoHrefData;
			var messageEventPartnersiteInfoHrefField = document.getElementById('message_event_partnersite_info_href');
			messageEventPartnersiteInfoHrefField.innerHTML = messageEventPartnersiteInfoHrefData;
		}
		if (calendar_fields_array['input_event_logo_info_href'] > 0) {
			var organizerEventLogoInfoHrefField = document.calendar.organizer_event_logo_info_href;
			organizerEventLogoInfoHrefField.value = organizerEventLogoInfoHrefData;
			var messageEventLogoInfoHrefField = document.getElementById('message_event_logo_info_href');
			messageEventLogoInfoHrefField.innerHTML = messageEventLogoInfoHrefData;
		}
		if (calendar_fields_array['input_event_hyves_ref'] > 0) {
			var organizerEventHyvesRefField = document.calendar.organizer_event_hyves_ref;
			organizerEventHyvesRefField.value = organizerEventHyvesRefData;
			var messageEventHyvesRefField = document.getElementById('message_event_hyves_ref');
			messageEventHyvesRefField.innerHTML = messageEventHyvesRefData;
		}
	}

	//write warning data
	if (1) {
		if (linksisadmin != 0 && alertPartyData1e != "") {
			alert1Party1e.style.visibility="visible";
			alert1Party1e.style.display="inline";
			alert1Party1e.href = alertPartyData1e;
		} else {
			alert1Party1e.style.visibility="hidden";
			alert1Party1e.style.display="none";
			alert1Party1e.href = "";
		}
		if (linksisadmin != 0 && alertPartyData2e != "") {
			alert1Party2e.style.visibility="visible";
			alert1Party2e.style.display="inline";
			alert1Party2e.href = alertPartyData2e;
		} else {
			alert1Party2e.style.visibility="hidden";
			alert1Party2e.style.display="none";
			alert1Party2e.href = "";
		}
		if (linksisadmin != 0 && alertPartyData3e != "") {
			alert1Party3e.style.visibility="visible";
			alert1Party3e.style.display="inline";
			alert1Party3e.href = alertPartyData3e;
		} else {
			alert1Party3e.style.visibility="hidden";
			alert1Party3e.style.display="none";
			alert1Party3e.href = "";
		}
	}
}

function doUpdateInheritedInfoRequest (filterPrefix, calendar_fields_array) {

	//check if to continue
	var continueRequest = 1; //now we always have to do the request, because we also put a warning message if necessary
	if (filterPrefix == 'loc') {
		if (calendar_fields_array['input_event_mainarea'] > 0) {
			continueRequest = 1;
		}
		if (calendar_fields_array['input_event_street'] > 0) {
			continueRequest = 1;
		}
		if (calendar_fields_array['input_event_housenr'] > 0) {
			continueRequest = 1;
		}
		if (calendar_fields_array['input_event_zipcode'] > 0) {
			continueRequest = 1;
		}
		if (calendar_fields_array['input_event_city'] > 0) {
			continueRequest = 1;
		}
		if (calendar_fields_array['input_event_mapposition'] > 0) {
			continueRequest = 1;
		}
	}
	if (filterPrefix == 'org') {
		if (calendar_fields_array['input_event_partnersite_special_href'] > 0) {
			continueRequest = 1;
		}
		if (calendar_fields_array['input_event_partnersite_info_href'] > 0) {
			continueRequest = 1;
		}
		if (calendar_fields_array['input_event_logo_info_href'] > 0) {
			continueRequest = 1;
		}
		if (calendar_fields_array['input_event_hyves_ref'] > 0) {
			continueRequest = 1;
		}
	}
	if (continueRequest == 0) {
		return;
	}

	//ids and names
	var filterPartyName1e = filterPrefix + "_party1e";
	var filterPartyName2e = filterPrefix + "_party2e";
	var filterPartyName3e = filterPrefix + "_party3e";

	//read values of parties
	var filterPartyField1e = document.getElementsByName (filterPartyName1e).item(0);
	var party1e = filterPartyField1e.options[filterPartyField1e.selectedIndex].value;
	var filterPartyField2e = document.getElementsByName (filterPartyName2e).item(0);
	var party2e = filterPartyField2e.options[filterPartyField2e.selectedIndex].value;
	var filterPartyField3e = document.getElementsByName (filterPartyName3e).item(0);
	var party3e = filterPartyField3e.options[filterPartyField3e.selectedIndex].value;

	//parameters
	var CalendarAjaxUpdateInheritedInfoParameters = "filter_prefix="+filterPrefix+"&party1e="+party1e+"&party2e="+party2e+"&party3e="+party3e;

	//make object
	if (CalendarAjaxUpdateInheritedInfoXmlHttpReq ==  null) {
		CalendarAjaxUpdateInheritedInfoXmlHttpReq = xmlhttpObject();
	}

	//callback function
	var functionVar = function () {
		requestStatus = xmlhttpStatusCheck(CalendarAjaxUpdateInheritedInfoXmlHttpReq);
		if (requestStatus > 0) {
			doUpdateInheritedInfoAction(filterPrefix, calendar_fields_array);
		} else if (requestStatus < 0) {
			alert(
				"Het is niet gelukt de gegevens op te halen.\n" +
				"Status: " + CalendarAjaxUpdateInheritedInfoXmlHttpReq.statusText
			);
		}
	};

	//call
	xmlhttpPost(CalendarAjaxUpdateInheritedInfoUrl, CalendarAjaxUpdateInheritedInfoParameters, functionVar, CalendarAjaxUpdateInheritedInfoXmlHttpReq);
}