var client_width = $(window).width();

function fb_showCalendar() {
	events = new Array;
	fb_loadEvents();
	var calHeight = ((21 * document.getElementById('cal_hours').getElementsByTagName('div').length) + 10);
	$('#cal_container').height(calHeight);
	$('.cal_week').css('visibility', 'visible');
}

function fb_hideCalendar() {
	fb_removeEvents();
	$('.cal_week').css('visibility', 'hidden');
}

function fb_removeEvents() {
	for (var i = 0; i < events.length; i++) {
		$('#' + events[i]).remove();
	}
}

function fb_resetCalendar() {
	fb_hideCalendar();
	fb_showCalendar();
}

function fb_resizeCalendar() {
	if ($(window).width() != client_width) {
		fb_resetCalendar();
	}
}

function fb_makeSelectable(id) {
	$('#' + id).Selectable({
		accept : id,
		opacity : 0.2,
		selectedclass : 'selected',
		helperclass : 'selecthelper',
		onselect : function(serial) {
			fb_setApptTime(serial);
		}
	});
}

function fb_clearOtherSelections(id) {
	for (var i = 0; i < 7; i++) {
		if (id != '#select_' + i) {
			$('#select_' + i).selectCurrent = [];
			$('#select_' + i).children('.selected').removeClass('selected');
		}
	}
}

function fb_setApptTime(data) {
	var start = 999999999999;
	var end = 0;
	for (var i = 0; i < data.o.length; i++) {
		var block = parseInt(data.o[i].replace('select_', ''));
		if (block < start) {
			start = block;
		}
		if (block >= end) {
			end = block;
		}
	}
	var startstr = start + '';
	var endstr = end + '';
	if (endstr.substring(endstr.length - 2, endstr.length) == '00') {
		end += 30;
	}
	else {
		end += 70;
	}
	endstr = end + '';
	var appt_date = startstr.substring(0, 4) + '-' + startstr.substring(4, 6) + '-' + startstr.substring(6, 8);
	var appt_start = startstr.substring(8, 12);
	var appt_end = endstr.substring(8, 12);
	$('#date_day').html(appt_date).addClass('set');
	$('#date_time').html($('#time_' + appt_start).html() + ' - ' + $('#time_' + appt_end).html() + ' ' + $('#timezone').getValue()).addClass('set');
	$('#date_start').val(appt_date + ' ' + appt_start.substring(0, 2) + ':' + appt_start.substring(2, 4));
	$('#date_end').val(appt_date + ' ' + appt_end.substring(0, 2) + ':' + appt_end.substring(2, 4));
}

function fb_showApptForm() {
	$('#appt_link').hide('fast');
	if ($.browser.safari) {
		$('#appointment').css('display', 'block');
		fb_resetCalendar();
	}
	else {
		$('#appointment').show('fast', fb_resetCalendar);
	}
	if ($.browser.safari) {
		$('#appt_request_instructions').show();
	}
	else {
		$('#appt_request_instructions').fadeIn();
	}
	$('div.select').css('display', 'block');
}

function fb_hideApptForm() {
	$('#appt_link').css('display', 'block');
	$('div.select').css('display', 'none');	
	$('#appointment').hide('fast', fb_resetCalendar);
}

function fb_hideApptResponse() {
	$('#appointment_response').hide('fast', fb_resetCalendar);
	$('#appt_link').css('display', 'block');
}

function fb_resetApptForm() {
	$('#appointment_add').resetForm();
	$('#date_start').val('');
	$('#date_end').val('');
	$('#date_day').html('(none)').removeClass('set');
	$('#date_time').html('(none)').removeClass('set');
}

function fb_ajaxApptForm() {
	$('#appointment_add').append('<input type="hidden" name="ajax" value="1" />').submit(function() {
		$(this).ajaxSubmit({
			resetForm: true
			, beforeSubmit: function() {
				$('#appointment').css('display', 'none');
				fb_resetApptForm();
				fb_clearOtherSelections('8');
				$('#appointment_response').css('display', 'block').attr('innerHTML', '<div class="loading" style="height: 200px;"></div>');
				fb_resetCalendar();
			}
			, success: function(response) {
				var created = (response.indexOf('id="appointment"') == -1);
				if (!created) {
					$('#appointment').remove();
					$('#appointment_response').html(response);
					$('#appointment').css('display', 'block');
					fb_ajaxApptForm();
				}
				else {
					$('div.select').css('display', 'none');	
					$('#appointment_response').html(response);
				}
				fb_resetCalendar();
			}
		});
		return false;
	});
}
