// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

/* Group login */

function groupLogin(id) {
	$('group-id').value = id;
	$('group-label').innerHTML = $('group-'+id).innerHTML.replace('<br>', ' ');
	$('group-label').className = $('group-'+id).className;
	$('group-password-container').style.display = 'block';
	$('groups-list').style.display = 'none';
	$('group-password').focus();
}

function groupCancelLogin() {
	$('group-password-container').style.display = 'none';
	$('groups-list').style.display = 'block';
}

/* Bookings manager */

var deleteBookings = [];

function visitBookingsDeleteLeft() {
	deleteIfSelected('pending_bookings');
}

function visitBookingsDeleteRight() {
	deleteIfSelected('confirmed_bookings');
}

function visitBookingsMoveRight() {
	moveSelectedBookings('pending_bookings', 'confirmed_bookings');
}

function visitBookingsMoveLeft() {
	moveSelectedBookings('confirmed_bookings', 'pending_bookings');
}

function visitBookingsSave(url) {
	pending = getIdList('pending_bookings');
	confirmed = getIdList('confirmed_bookings');
	toDelete = deleteBookings.join(',');
	visit_locked = $('visit_locked').checked ? 1 : 0;
	visit_max_people = $('visit_max_people').value;
	
	new Ajax.Request(
		url,
		{
			method: 'post',
			parameters: 'pending=' + pending +
			            '&confirmed=' + confirmed +
						'&delete=' + toDelete +
						'&visit[locked]=' + visit_locked +
						'&visit[max_people]=' + visit_max_people,
			onComplete: function(o) {
				if (o.status >= 200 && o.status < 300) {
					$('progress').className = 'msg-success';
					$('progress').innerHTML = o.responseText;
				} else {
					$('progress').className = 'msg-error';
					$('progress').innerHTML = 'Sorry, there was an error: ' + o.responseText;
				}
			}
		}
	);
	
	$('progress').className = '';
	$('progress').innerHTML = 'Please wait...';
}

function moveSelectedBookings(from, to) {
	$A($(from).options).each(function(opt) {
		if (!opt.selected) return;
		
		opt.parentNode.removeChild(opt);
		
		$(to).appendChild(opt);
	});
}

function deleteIfSelected(id) {
	$A($(id).options).each(function(opt) {
		if (!opt.selected) return;
		
		opt.parentNode.removeChild(opt);
		
		deleteBookings.push(opt.value);
	});
}

function getIdList(id) {
	return $A($(id).options).collect(function(opt) {
		return opt.value;
	}).join(',');
}