Author: michiel
Date: 2010-06-22 15:51:06 +0200 (Tue, 22 Jun 2010)
New Revision: 42651

Modified:
   
mmbase/trunk/contributions/calendar/src/main/webapp/mmbase/calendar/calendar.js
Log:


Modified: 
mmbase/trunk/contributions/calendar/src/main/webapp/mmbase/calendar/calendar.js
===================================================================
--- 
mmbase/trunk/contributions/calendar/src/main/webapp/mmbase/calendar/calendar.js 
    2010-06-22 13:03:26 UTC (rev 42650)
+++ 
mmbase/trunk/contributions/calendar/src/main/webapp/mmbase/calendar/calendar.js 
    2010-06-22 13:51:06 UTC (rev 42651)
@@ -1,6 +1,7 @@
 
 function MMCalendar() {
     var self = this;
+    this.lastClick = null;
     $(document).ready(function() {
                          self.init();
                      });
@@ -17,15 +18,58 @@
 };
 
 MMCalendar.prototype.init = function() {
+    var self = this;
+    $("table.mm_calendar td.same_month input[type=checkbox]").each(
+       function() {
+           if ($(this).is(":checked")) {
+               $(this).parent("td").addClass("checked");
+           }
+       }
+    );
     $("table.mm_calendar td.same_month input[type=checkbox]").click(
        function(ev) {
-
+           self.toggle($(this).parent("td")[0]);
+           var newClickValue = parseInt($(ev.target).val());
+           if (ev.shiftKey) {
+               if (self.lastClick != null) {
+                   var newSelected = self.lastClick.checked;
+                   var lastClickValue = parseInt($(self.lastClick).val());
+                   var step = newClickValue > lastClickValue ? 1 : -1;
+                   for (var i = lastClickValue; i <= newClickValue; i += step) 
{
+                       if (newSelected) {
+                           $("td.day_" + i + " 
input[type=checkbox]").attr("checked", "checked");
+                           $("td.day_" + i).addClass("checked");
+                       } else {
+                           $("td.day_" + i + " 
input[type=checkbox]").removeAttr("checked");
+                           $("td.day_" + i).removeClass("checked");
+                       }
+                   }
+               }
+               if (self.lastClick != null) {
+                   $(self.lastClick).parents("td").removeClass("selected");
+               }
+               self.lastClick = null;
+           } else {
+               if (self.lastClick != null) {
+                   $(self.lastClick).parents("td").removeClass("selected");
+               }
+               self.lastClick = ev.target;
+               $(ev.target).parents("td").addClass("selected");
+           }
        });
 
     $("table.mm_calendar td.same_month").click(
        function(ev) {
-           console.log(ev);
+           $(this).find("input[type=checkbox]").click();
        });
 };
 
+MMCalendar.prototype.toggle = function(td) {
+    if ($(td).hasClass("checked")) {
+       $(td).removeClass("checked");
+    } else {
+       $(td).addClass("checked");
+    }
+};
+
 var calendar = new MMCalendar();

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to