function двигай_влево()
{
if($('#машина').свойство_отвечающее_за_смещение_по_X - 50 >= 0)
$('#машина').свойство_отвечающее_за_смещение_по_X -= 50;
}
function двигай_вправо()
{
if($('#машина').свойство_отвечающее_за_смещение_по_X + 50 <= 600)
$('#машина').свойство_отвечающее_за_смещение_по_X += 50;
}
function обработчик_нажатия_клавиш()
{
var код_клавиши = источник_события.КодКлавиши;
if(код_клавиши == клавиша_влево)
двигай_влево();
if(код_клавиши == клавиша_вправо)
двигай_вправо();
} function main_navigation_out(...)
{
....
}
Пробегаете его, в бегине заявке смотрите часть YYYY.MM и закидываете в новую структуру по нужному ассоциативному ключу месяца.
Считаете локальные минимумы и максимумы заявок, записываете предварительные date_begin, и date_end.
Если date_end переносится на следующий месяц, то дополнительно кидаете заявку в другой объект с другим ключом месяца (или несколько объектов, если многомесячная заявка).
Решаете как обрезать локальный максимум текущего месяца и локальный минимум следующий, если попадается такая заявка. Также у заявки нужно определить, будет ли у нее меняться date_begin, date_end, будут ли даты ложиться в рамки месяца или пусть выходят за них.