/**
 * This function locks the contact to the vacancy by replacing the form elements with hidden fields.
 * It also duplicates the form-element and reinitialises the available options.
 *
 * @param Node source
 * @return boolean false to stop propagation
 */
function vac_add_contact(source) {
	if (is_valid_contact(source)) {
		duplicate_form_segment(source)
		vac_lock_contact(source);
	}

	return false;
}

/**
 * This converts selectboxes into plain text with hidden fields and adds a remove-link.
 */
function vac_lock_contact(source) {
	contact_form = $(source).parents('.contact-segment').eq(0);

	// Turn self into plain-text with two added fields
	dat = contact_form.find('.basic-contact :selected', contact_form).eq(0);
	fieldname = contact_form.find('.basic-contact', contact_form).eq(0).attr('name');
	name = dat.text();
	val = dat.attr('value');
	
	select_field = $('.basic-contact', contact_form);
	
	$("<p class=\"contact\">"+ name +" <a href=\"#\" class=\"minus_link\" title=\"-\" onclick=\"return del_contact(this);\"></a></p>").insertBefore(select_field);
	$("<input type=\"hidden\" class=\"hidden-id contact-selected\" name=\""+ fieldname +"\" value=\""+ val +"\"/>").insertBefore(select_field);
	
	select_field.next('a.plus_link').remove();
	select_field.remove();
}

function vac_del_contact()
{
}

/**
 * locks the manager field and adds a new selectbox.
 *
 * @param source triggering element
 * @return false if everything went ok (to stop propagation)
 */
function vac_add_manager(source) {
	if (is_valid_manager(source)) {
		vac_list_manager(source);
		remove_manager_from_select(source);
	}
	
	return false;
}

function vac_list_manager(source) {
	select = $(source).prev('select').eq(0);
	option = $(':selected', select);
	
	name = option.text();
	id = option.attr('value');
	
	text = "<p class=\"manager\">"+ name +" <a href=\"#\" class=\"minus_link\" title=\"-\" onclick=\"return del_manager(this);\"></a>";
	text += "<input type=\"hidden\" name=\"vacancy_form_edit_manager[]\" class=\"manager-selected\" value=\""+ id +"\"/>";
	text += "</p>"

	$(text).insertBefore(select);
}

/**
 * This retrieves the members of a group to display in a form.
 *
 * @param Node group_element
 * @param targetElement
 */
function vacUpdateGroupMembers(group_element) {
	group_id = $(group_element).val();
	
	// Collect selected contacts
	contacts = new Array();
	$('input.contact-selected').each(function () {
		contacts.push($(this).val());
	});

	// Collect selected admins
	admins = new Array();
	$('input.manager-selected').each(function () {
		admins.push($(this).val());
	});

	$.getJSON(own_url + "pg/activity/ajax/list_group_members/" + group_id,
		function (data) {
			targets = ['#vacancy_form_edit_contact_person','#vacancy_form_edit_manager']

			for (var t=0; t<targets.length;t++) {
				targetElement = targets[t];
				defaultText = $(targetElement +' option[value=""]').remove();
				$(targetElement +' option').remove();
				$(targetElement).append(defaultText);
				for (i=0;i<data.length;i++) {
					name = data[i].name;
					id = data[i].guid;

					if (in_array(id, contacts)) {
						continue;
					}
					
					$(targetElement).append('<option value="'+ id +'">'+ name +'</option>');
				}
			}
		}
	);
}

function vac_esttime_change(source)
{
	range = $('.esttime-switch:checked').attr('value');
	if (range == "free") {
		$('#vacancy_time_needed_value').attr("disabled", "disabled");
		$('#vacancy_time_needed_unit').attr("disabled", "disabled");
	}
	else {
		$('#vacancy_time_needed_value').removeAttr('disabled');
		$('#vacancy_time_needed_unit').removeAttr('disabled');
	}
}

function vac_pubdate_change(source)
{
	range = $('.pubdate-switch:checked').attr('value');
	if (range == "direct") {
		$('#publication_date').attr("disabled", "disabled");
	}
	else {
		$('#publication_date').removeAttr('disabled');
	}
}

function vac_recdate_change(source)
{
	range = $('.recdate-switch:checked').attr('value');
	if (range == "never") {
		$('#reservation_end').attr("disabled", "disabled");
	}
	else {
		$('#reservation_end').removeAttr('disabled');
	}
}

/**
 * Opens tell a friend popup
 *
 * @param source triggering element
 * @returns bool to stop propagation
 */
function tellAFriend(source)
{
	$('.tellafriend-box').removeClass('hidden');
}

function sendInvite(source)
{
	$('.sendinvite-box').removeClass('hidden');
}

function submitManageApplicationForm(input,action)
{
	form = $(input).parent().parent();
	
	if (action == 'delete') {
		$(form).attr("action",own_url + "action/vacancy/delete_application");
	}
	
	// Hier moet nog een check of er wel iets geselecteerd is.
	var n = $("#" + form.attr('id') + " input:checked").length;
	
	if (n) {
		doen = confirm('Weet je zeker dat je de geselecteerde aanmeldingen wilt verwijderen?');
		if (doen) {
			$(form).submit();
		}
	}
	else {
		alert ('Niets geselecteerd!');
	}
}
