Path: blob/master/webroot/rsrc/js/application/calendar/behavior-month-view.js
12242 views
/**1* @provides javelin-behavior-calendar-month-view2*/3JX.behavior('calendar-month-view', function() {45var hover_nodes = [];67function get_info(e) {8var week_body = e.getNode('calendar-week-body');9if (!week_body) {10week_body = e.getNode('calendar-week-foot').previousSibling;11}1213var week_foot = week_body.nextSibling;14var day_id = JX.Stratcom.getData(e.getNode('tag:td')).dayID;1516var day_body;17var day_foot;18var body_nodes = JX.DOM.scry(week_body, 'td');19var foot_nodes = JX.DOM.scry(week_foot, 'td');20for (var ii = 0; ii < body_nodes.length; ii++) {21if (JX.Stratcom.getData(body_nodes[ii]).dayID == day_id) {22day_body = body_nodes[ii];23day_foot = foot_nodes[ii];24break;25}26}2728return {29data: JX.Stratcom.getData(week_body),30dayID: day_id,31nodes: {32week: {33body: week_body,34foot: week_foot35},36day: {37body: day_body,38foot: day_foot39}40}41};42}4344function alter_hover(enable) {45for (var ii = 0; ii < hover_nodes.length; ii++) {46JX.DOM.alterClass(hover_nodes[ii], 'calendar-hover', enable);47}48}4950JX.enableDispatch(document.body, 'mouseover');51JX.enableDispatch(document.body, 'mouseout');5253JX.Stratcom.listen('mouseover', ['calendar-week', 'tag:td'], function(e) {54if (e.getNode('calendar-event-list')) {55alter_hover(false);56hover_nodes = [];57return;58}5960var info = get_info(e);61hover_nodes = [62info.nodes.day.body,63info.nodes.day.foot64];6566alter_hover(true);67});6869JX.Stratcom.listen('mouseout', ['calendar-week', 'tag:td'], function() {70alter_hover(false);71});7273JX.Stratcom.listen('click', ['calendar-week', 'tag:td'], function(e) {74if (!e.isNormalClick()) {75return;76}7778// If this is a click in the event list or on a link, ignore it. This79// allows users to follow links to events and select text.80if (e.getNode('calendar-event-list') || e.getNode('tag:a')) {81return;82}8384var info = get_info(e);85JX.$U(info.data.actionMap[info.dayID].dayURI).go();86});8788});899091