Index: trunk/prototype/modules/calendar/interceptors/DBMapping.php
===================================================================
--- trunk/prototype/modules/calendar/interceptors/DBMapping.php	(revision 6528)
+++ trunk/prototype/modules/calendar/interceptors/DBMapping.php	(revision 6533)
@@ -149,6 +149,8 @@
 			.'(range_start >= \'' . $start[1] . '\' AND range_start <= \'' . $end[1] . '\') OR '
 			.'(range_start <= \'' . $start[2] . '\' AND range_end >= \'' . $end[2] . '\')) '
-		.(!empty($ids) ? ' ' .'AND calendar_object.id NOT IN (\'' . implode('\',\'', $ids) . '\') ' : ' ');
-
+		.(!empty($ids) ? ' ' .'AND calendar_object.id NOT IN (\'' . implode('\',\'', $ids) . '\') ' : ' ')
+		.'AND calendar_object.dtstart NOT IN (SELECT calendar_repeat_occurrence.occurrence from calendar_repeat_occurrence, '
+		.'calendar_repeat where (calendar_repeat_occurrence.repeat_id = calendar_repeat.id) '
+		.'AND (calendar_repeat.object_id = calendar_object.id))';
 
 		$params = Controller::service('PostgreSQL')->execResultSql($sql.$where);
@@ -206,6 +208,6 @@
 	//Recurepa as execeções anteriores caso exista
 	if (isset($lastExceptions) && count($lastExceptions) && $lastExceptions)
-	    foreach ($lastExceptions as $key => $value)
-		array_push($exceptions, $lastExceptions[$key]['occurrence']);
+	    foreach ($lastExceptions as $value)
+		array_push($exceptions, $value['occurrence']);
 
 	$params = array_diff(self::decodeRepeat($repeat, $ranges[0]['rangeStart'], $ranges[0]['rangeEnd']), $exceptions);
@@ -215,5 +217,7 @@
 	if (!empty($params))
 	    Controller::service('PostgreSQL')->execResultSql("INSERT INTO calendar_repeat_occurrence(repeat_id,exception,occurrence)VALUES('" . $id . "','0','" . implode("'),('" . $id . "','0','", $params) . "')" . ( empty($exceptions) ? "" : ",('" . $id . "','1','" . implode("'),('" . $id . "','1','", $exceptions) . "')" ));
-    }
+	else if(!empty($exceptions))
+	    Controller::service('PostgreSQL')->execResultSql("INSERT INTO calendar_repeat_occurrence(repeat_id,exception,occurrence)VALUES ('" . $id . "','1','" . implode("'),('" . $id . "','1','", $exceptions) . "')" );
+    }	    
 
     public function checkOccurrences($start, $end, $calendarIds) {
Index: trunk/prototype/modules/calendar/js/calendar.contentMenu.js
===================================================================
--- trunk/prototype/modules/calendar/js/calendar.contentMenu.js	(revision 6451)
+++ trunk/prototype/modules/calendar/js/calendar.contentMenu.js	(revision 6533)
@@ -26,20 +26,17 @@
                 var schedulable = DataLayer.get('schedulable', idEvent);
 
-		var isRecurrence = DataLayer.get('repeat', schedulable.repeat).frequency;
-		
-		var top;
-		var elementId = document.getElementById("divAppbox");
-		
-		top = elementId.scrollTop;
-		
+		var isRecurrence = DataLayer.get('repeat', schedulable.repeat).frequency || false;
+
+		var top = $('#divAppbox').scrollTop();
+
 		var template = DataLayer.render( 'templates/menu_context_event.ejs', {event: schedulable.id ,
                     top: (event.clientY - 135 + top), left: (event.clientX - 445), 
-					signature: Calendar.signatureOf[idCalendar],
-                    calendars: Calendar.calendars, isRecurrence: isRecurrence == 'none' ? false : true,
+		    signature: Calendar.signatureOf[idCalendar],
+                    calendars: Calendar.calendars, isRecurrence: (!isRecurrence || isRecurrence == 'none') ? false : true,
                     idRecurrence: idRecurrence
                 });
-		
+
 		$('#context-menu-event').html(template);
-                
+
                 var method = function(value){
                     switch (value){
Index: trunk/prototype/modules/calendar/js/calendar.codecs.js
===================================================================
--- trunk/prototype/modules/calendar/js/calendar.codecs.js	(revision 6476)
+++ trunk/prototype/modules/calendar/js/calendar.codecs.js	(revision 6533)
@@ -643,5 +643,7 @@
     var formatString = User.preferences.dateFormat + " " + User.preferences.hourFormat;
 
-    patati['startTime'] = Date.parseExact( form.startDate + " "+$.trim(form.startHour) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00');
+    var date = Date.parseExact( form.startDate + " "+$.trim(form.startHour) , formatString )
+    
+    patati['startTime'] = date.toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00');
 	
     if( !patati['byday'] )
