Highlightable Scheduling Calendar

This is under ongoing development, and may not always function correctly.

Click in a numbered day box to toggle between highlighted and blank. If you hold down and move to another day, it will color the rest of the boxes the new color. So if you drag on a blank box and drag over a week, all of them will become highlighted (currently highlighted ones will stay highlighted).

UPDATE: I modified the calendar to allow scrolling that dynamically draws new calendar months above and below as you mouse into the bars above and below. You can do this while you're dragging, meaning you can highlight stretches of time over several months.

This is entirely front-end, however some slight tweaks in the functions that run when you stop highlighting a segment, along with a relatively simple AJAX process, could be integrated to make this useful as an interface for a scheduling calendar.

One things to keep in mind is that the current version slows down considerably as more months are added. Normally you probably won't need to view more than a few at a time, and without a considerable amount of extra coding to track highlighted boxes in arrays or something, boxes highlighted in calendar months that 'scrolled away' (i.e. were overwritten) would be lost. A compromise might be to scroll the current way when highlighting, but to rewrite and reposition the inner screen appropriately otherwise to minimize the size of the screen, which is actually overflowing into invisibility above and below the container as new months are drawn.

While this calendar may seem to scroll relatively smoothly, it is not making any backend calls (for example, using AJAX), which is something that it actually probably would make to draw each calendar in a real-world implementation. These calls would significantly slow down the scrolling (the first time), and therefore it might be sensible to draw several month preceding and following the current month that is displayed to begin with. Otherwise there would likely be noticeable stalling every time a new month had to be generated by making a call to the server.