var initialElements = null;
var mouseDown = false;
function initSchedule(id)
{
	$('#' + id + ' td').bind('mousedown',function(event)
	{
		mouseDown = true;
		initialElement = $(this);
		if(event.shiftKey == 1)
		{
			selectRange(id,$('#' + id + ' .active'),$(this));
		} else if(event.ctrlKey == 1)
		{
			toggleSelect($(this));
			activate(id,$(this));
		} else
		{
			
		}
		return false;
	});
	$('#' + id + ' td').bind('mouseup',function(event)
	{
		mouseDown = false;
		if(event.shiftKey == 1)
		{
		
		} else if (event.ctrlKey == 1)
		{
		
		} else
		{
			if(initialElement.attr('id') == $(this).attr('id'))
			{
				clearSelection(id);
			}
			select($(this));
			activate(id,$(this));
			initialElement = null;
		}
	});
	$('#' + id + ' td').bind('mousemove',function(event)
	{
		if(mouseDown)
		{
			if(event.shitKey == 1){}
			else if(event.ctrlKey == 1)
			{
				selectRange(id,initialElement,$(this),true);
			} else
			{
				clearSelection(id);
				selectRange(id,initialElement,$(this));
			}
		}
	});
	document.onselectstart = function(){return false;};
}
function select(element)
{
	element.addClass('selected');
}
function toggleSelect(element)
{
	element.toggleClass('selected');
}
function selectRange(scheduleId, element1,element2,toggle)
{
	var array1 = element1.attr('id').split('-');
	var array2 = element2.attr('id').split('-');
	
	minDay = Math.min(array1[0],array2[0]);
	maxDay = Math.max(array1[0],array2[0]);
	minBlock = Math.min(array1[1],array2[1]);
	maxBlock = Math.max(array1[1],array2[1]);
	
	for(var day = minDay; day <= maxDay; day++)
	{
		for(var block = minBlock; block <= maxBlock; block++)
		{
			if(toggle)
			{
				select($('#' + scheduleId + ' #' + day + '-' + block));
			} else
			{
				select($('#' + scheduleId + ' #' + day + '-' + block));
			}
		}
	}
	activate(scheduleId, element2);
}
function activate(scheduleId, element)
{
	$('#' + scheduleId + ' .active').removeClass('active');
	element.addClass('active');
	element.blur();
}
function clearSelection(scheduleId)
{
	$('#' + scheduleId + ' td').removeClass('selected active');
}
function setAvailability(scheduleId,userId,state,weekOffset)
{
	var timestamps = new Array();
	var activeId = $('#' + scheduleId + ' .active').attr('id');
	$('#' + scheduleId + ' .selected span').each(function()
	{
		timestamps.push($(this).attr('id'));
	});
	timestamps = timestamps.join(",");
	ajaxModule('planning','setAvailability/' +userId + '/' + state + '/' + scheduleId + '/' + weekOffset,{'timestamps':timestamps,'activeId':activeId});
}
function setPlanned(scheduleId,userId,state,weekOffset)
{
	var timestamps = new Array();
	var activeId = $('#' + scheduleId + ' .active').attr('id');
	$('#' + scheduleId + ' .selected span').each(function()
	{
		timestamps.push($(this).attr('id'));
	});
	timestamps = timestamps.join(",");
	ajaxModule('planning','setPlanned/' +userId + '/' + state + '/' + scheduleId + '/' + weekOffset,{'timestamps':timestamps,'activeId':activeId});
}
function setLocked(scheduleId,userId,state,weekOffset)
{
	var timestamps = new Array();
	$('#' + scheduleId + ' td span').each(function()
	{
		timestamps.push($(this).attr('id'));
	});
	timestamps = timestamps.join(",");
	ajaxModule('planning','setLocked/' +userId + '/' + state + '/' + scheduleId + '/' + weekOffset,{'timestamps':timestamps});	
}