diff --git a/src/main/java/org/olat/commons/calendar/_content/indexWeekly.html b/src/main/java/org/olat/commons/calendar/_content/indexWeekly.html
index bc514402169b17be32fe636ca7d6f2c389f657c4..3af271b93eb14099b33305bacd4dbaaca11fe324 100644
--- a/src/main/java/org/olat/commons/calendar/_content/indexWeekly.html
+++ b/src/main/java/org/olat/commons/calendar/_content/indexWeekly.html
@@ -5,10 +5,15 @@
 		<div class="b_subcolumns">
 			<div class="b_c25l">
 			  <div class="b_subcl">
-			  <!-- TODO:gs:a refactor to use normal link component -->
+				$r.render("cal.thisweek")
+				$r.render("cal.prevweek")
+				$r.render("cal.nextweek")
+				
+			  <!-- TODO:gs:a refactor to use normal link component 
 				<a href="$r.commandURIbg("pw")" $r.bgTarget() title="$r.translateInAttribute("cal.previousweek")" class="o_cal_wv_prev" onclick="return o2cl()" onkeypress="return o2cl()"></a>
 				<a href="$r.commandURIbg("nw")" $r.bgTarget() title="$r.translateInAttribute("cal.nextweek")" class="o_cal_wv_next" onclick="return o2cl()" onkeypress="return o2cl()"></a>
-				$r.render("cal.thisweek")
+				-->
+				
 			  </div>
 			</div>
 			<div class="b_c50l">
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/arrow_left_big.png b/src/main/java/org/olat/commons/calendar/_static/css/arrow_left_big.png
new file mode 100644
index 0000000000000000000000000000000000000000..cdf1fb0779ff9026f51754c767f4a654bf2b7e88
Binary files /dev/null and b/src/main/java/org/olat/commons/calendar/_static/css/arrow_left_big.png differ
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/arrow_right_big.png b/src/main/java/org/olat/commons/calendar/_static/css/arrow_right_big.png
new file mode 100644
index 0000000000000000000000000000000000000000..1799620988456b4fd515e7550988bd337404d5fc
Binary files /dev/null and b/src/main/java/org/olat/commons/calendar/_static/css/arrow_right_big.png differ
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/calendar--arrow.png b/src/main/java/org/olat/commons/calendar/_static/css/calendar--arrow.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b0fbd280043444e0167dba01f8ae743d25aced6
Binary files /dev/null and b/src/main/java/org/olat/commons/calendar/_static/css/calendar--arrow.png differ
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/calendar--plus.png b/src/main/java/org/olat/commons/calendar/_static/css/calendar--plus.png
new file mode 100644
index 0000000000000000000000000000000000000000..a20f5fc31b1c501b853950681a89328243e925ac
Binary files /dev/null and b/src/main/java/org/olat/commons/calendar/_static/css/calendar--plus.png differ
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/calendar.css b/src/main/java/org/olat/commons/calendar/_static/css/calendar.css
index b6aab21950c0fbe14788501f68de658163dfec07..4020dff1d7dc00a709f60d7ebd6061e2b0a9f045 100644
--- a/src/main/java/org/olat/commons/calendar/_static/css/calendar.css
+++ b/src/main/java/org/olat/commons/calendar/_static/css/calendar.css
@@ -8,9 +8,6 @@
 }
 
 #o_cal_config_below_cal_container {
-	font-size: 80%;
-	background: #F2F2F2;
-	border: 1px solid #BFBFBF;
 	padding: 6px;
 	position: relative;
 	overflow: hidden;
@@ -49,27 +46,19 @@
 	float: left; display: inline;
 	position: absolute; top: 5px; left: 5px;
 }
-.o_cal_wv_prev {
-	width: 20px;
-	height: 20px;
-	background: url(move_left.png);
-	background-repeat: no-repeat;
-	float: left; display: inline;
-}
-a.o_cal_wv_prev:hover {
-	background: url(move_left_over.png);
-	background-repeat: no-repeat;
-}
-.o_cal_wv_next {
-	width: 20px;
-	height: 20px;
-	background: url(move_right.png);
-	background-repeat: no-repeat;
-	float: left; display: inline;
+
+.o_cal_wv_prev, .o_cal_wv_next {margin-left:0 !important; margin-right:0 !important;}
+.o_cal_wv_prev span {
+	width:20px;
+	height:20px;
+	float:left;
+	background: transparent url(arrow_left_big.png) no-repeat center center;
 }
-a.o_cal_wv_next:hover {
-	background: url(move_right_over.png);
-	background-repeat: no-repeat;
+.o_cal_wv_next span {
+	width:20px;
+	height:20px;
+	float:left;
+	background: transparent url(arrow_right_big.png) no-repeat center center;
 }
 
 /* calendar: height = 20px (header) + 10*20px (hours) + 10*20px (half-hours) */
@@ -81,12 +70,12 @@ a.o_cal_wv_next:hover {
 #o_cal_wv_header_wrapper {
 	padding-top:10px;
 	position: relative; 
-	margin-right: 15px;
 	clear: both;
 }
 #o_cal_wv_header {
 	border: 1px solid #888;
-	position: relative; width: 99.5%; height: 20px;
+	position: relative; 
+	height: 20px;
  	margin-bottom: 2px;
  	background: #FFF;
 }
@@ -124,12 +113,12 @@ a.o_cal_wv_next:hover {
 }
 /* time column time legend rows: height = 40px = 19px (content) + 1px  (border-bottom) */
 .o_cal_wv_legend_hour { 
-	border-bottom: 1px solid #AAA;
+	border-bottom: 1px solid #DDD;
 	margin: 0; padding: 0; height: 39px; 
 }
 /* content wrapper for hour labeling*/
 .o_cal_wv_legend_hour div {
-	padding: 3px 3px 0 3px; text-align: center; color: #888; 
+	padding: 3px 3px 0 3px; text-align: center; color: #444; 
 	overflow: hidden; height: 16px; 
 }
 
@@ -152,12 +141,12 @@ a.o_cal_wv_next:hover {
 }
 /* day column hour row: height = 20px = 19px (content) + 1px  (border-bottom) */
 .o_cal_wv_hour { 
-	border-bottom: 1px dotted #AAA;
+	border-bottom: 1px dotted #DDD;
 	margin: 0; padding: 0; height: 19px; 
 }
 /* day column hour row: height = 20px = 19px (content) + 1px  (border-bottom) */
 .o_cal_wv_half_hour { 
-	border-bottom: 1px solid #AAA;
+	border-bottom: 1px solid #DDD;
 	margin: 0; padding: 0; height: 19px;
 }
 .o_cal_wv_half_hour:hover {background: #DCDDE0;}
@@ -175,7 +164,7 @@ a.o_cal_wv_next:hover {
 
 
 /* background colors of holiday days and current day */
-.o_cal_wv_holiday { background: #E9EAEF;}
+.o_cal_wv_holiday { background: #eee;}
 .o_cal_wv_today { background: #fff5cc;}
 
 /* remove right border on last day and bottom border on last hour */
@@ -214,6 +203,9 @@ a.o_cal_wv_next:hover {
 .o_cal_wv_event_content {
 	padding: 1px 2px 1px 2px;
 }
+.o_cal_gotodate {
+	margin-top:8px; /* margin-top hack ...*/
+}
 
 /* day long events */
 .o_cal_wv_devent_wrapper { 
@@ -223,8 +215,8 @@ a.o_cal_wv_next:hover {
 }
 .o_cal_wv_devent { 
 	border: 1px solid;
-	padding: 0; margin: 0; 
-	position: absolute;
+	padding: 0;
+	margin: 0; 
 	width: 100%; height:19px;
 	overflow: hidden;
 	z-index: 11;
@@ -237,8 +229,6 @@ a.o_cal_wv_next:hover {
 /* day event content */
 .o_cal_wv_devent_content {
 	padding: 1px 2px 1px 2px;
-	height: 1em;
-	overflow: hidden;
 }
 
 
@@ -289,9 +279,6 @@ a.o_cal_config_enabled:hover {
 	background: url(check_off.png) no-repeat;
 	float: left; display: inline;
 }
-a.o_cal_config_disabled:hover {
-	background: url(check_off_over.png) no-repeat;
-}
 .o_cal_config_calendar {
 	border: 1px solid;
 	padding: 0; margin: 0; 
@@ -303,42 +290,27 @@ a.o_cal_config_disabled:hover {
 .o_cal_config_chosecolor {
 	position: relative;
 	width: 20px; height: 16px;
-	background: url(color_picker.png) no-repeat 2px 0px;
+	background: url(color.png) no-repeat 2px 0px;
 	float: left; display: inline;
 }
-a.o_cal_config_chosecolor:hover {
-	background: url(color_picker_over.png) no-repeat 2px 0px;
-}
 .o_cal_config_subscribeical {
 	position: relative;
 	width: 20px; height: 16px;
 	background: url(calendar_ical_export.png) no-repeat 2px 0px;
 	float: left; display: inline;
 }	
-a.o_cal_config_subscribeical:hover {
-	width: 20px; height: 16px;
-	background: url(calendar_ical_export_over.png) no-repeat 2px 0px;
-}
 .o_cal_config_remove_subscribeical {
 	position: relative;
 	width: 20px; height: 16px;
 	background: url(calendar_ical_export_remove.png) no-repeat 0 0;
 	float: left; display: inline;		
 }
-a.o_cal_config_remove_subscribeical:hover {
-	width: 20px; height: 16px;
-	background: url(calendar_ical_export_remove_over.png) no-repeat 0 0;
-}
 a.o_cal_config_unsubscribe {
 	position: relative;
 	width: 20px; height: 16px;
 	background: url(calendar_remove.png) no-repeat 0 0;
 	float: left; display: inline;	
 }
-a.o_cal_config_unsubscribe:hover {
-	width: 20px; height: 16px;
-	background: url(calendar_remove_over.png) no-repeat 0 0;
-}
 
 .o_cal_config_regenerate_link {
 	position: relative;
@@ -346,46 +318,31 @@ a.o_cal_config_unsubscribe:hover {
 	background: url(calendar_ical_export_regen.png) no-repeat 0 0;
 	float: left; display: inline;		
 }
-a.o_cal_config_regenerate_link:hover {
-	width: 20px; height: 16px;
-	background: url(calendar_ical_export_regen_over.png) no-repeat 0 0;
-}
 .o_cal_config_remove_cal {
 	position: relative;
 	width: 20px; height: 16px;
 	background: url(delete.png) no-repeat 2px 0px;
 	float: left; display: inline;
 }
-a.o_cal_config_remove_cal:hover {
-	width: 20px; height: 16px;
-	background: url(delete_over.png) no-repeat 2px 0px;
-}
 .o_cal_config_addevent {
 	position: relative;
 	width: 20px; height: 16px;
-	background: url(calendar_add.png) no-repeat 0 0;
+	background: url(calendar--plus.png) no-repeat 0 0;
 	float: left; display: inline;
 }
-	.o_cal_config_importevent {
+.o_cal_config_importevent {
 	position: relative;
 	width: 20px; height: 16px;
-	background: url(calendar_import.png) no-repeat 0 0;
+	background: url(calendar--arrow.png) no-repeat 0 0;
 	float: left; display: inline;
 }
 .o_cal_config_readonly {
 	position: relative;
 	width: 20px; height: 16px;
-	background: url(calendar_add_dis.png) no-repeat 0 0;
+	background: url(calendar--plus.png) no-repeat 0 0;
+	opacity:0.6;
 	float: left; display: inline;	
 }
-a.o_cal_config_addevent:hover {
-	width: 20px; height: 16px;
-	background: url(calendar_add_over.png) no-repeat 0 0;
-}
-a.o_cal_config_importevent:hover {
-	width: 20px; height: 16px;
-	background: url(calendar_import_over.png) no-repeat 0 0;
-}
 
 /* colorchooser */
 #o_cal_colorchooser {
@@ -435,7 +392,7 @@ a.o_cal_config_importevent:hover {
 .o_cal_red .o_cal_wv_event_header {background: #990000;}
 .o_cal_red a { color: #FFF ! important; } 
 
-.o_cal_grey { background: #AAAAAA; border-color: #5D5D5D; color: #FFF; }
+.o_cal_grey { background: #DDDAAA; border-color: #5D5D5D; color: #FFF; }
 .o_cal_grey .o_cal_wv_event_header {background: #5D5D5D;}
 .o_cal_grey a { color: #FFF ! important; } 
 
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/calendar_add_dis.png b/src/main/java/org/olat/commons/calendar/_static/css/calendar_add_dis.png
deleted file mode 100644
index a3f4d6cc52b9dc22325d2349ca0f5a6ad43d418c..0000000000000000000000000000000000000000
Binary files a/src/main/java/org/olat/commons/calendar/_static/css/calendar_add_dis.png and /dev/null differ
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/calendar_add_over.png b/src/main/java/org/olat/commons/calendar/_static/css/calendar_add_over.png
deleted file mode 100644
index 6c1b1e74142197cfdb1c820c6cb0764130c31e6d..0000000000000000000000000000000000000000
Binary files a/src/main/java/org/olat/commons/calendar/_static/css/calendar_add_over.png and /dev/null differ
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/color.png b/src/main/java/org/olat/commons/calendar/_static/css/color.png
new file mode 100644
index 0000000000000000000000000000000000000000..0476be668a350990a4a261c50e72b4bb40710ec9
Binary files /dev/null and b/src/main/java/org/olat/commons/calendar/_static/css/color.png differ
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/color_picker.png b/src/main/java/org/olat/commons/calendar/_static/css/color_picker.png
deleted file mode 100644
index aadff09fbd1057dcf32d27df5ef8bf7b721ff449..0000000000000000000000000000000000000000
Binary files a/src/main/java/org/olat/commons/calendar/_static/css/color_picker.png and /dev/null differ
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/color_picker_dis.png b/src/main/java/org/olat/commons/calendar/_static/css/color_picker_dis.png
deleted file mode 100644
index b3cda3b7697dae98abc5122da1692bec68ad2895..0000000000000000000000000000000000000000
Binary files a/src/main/java/org/olat/commons/calendar/_static/css/color_picker_dis.png and /dev/null differ
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/color_picker_over.png b/src/main/java/org/olat/commons/calendar/_static/css/color_picker_over.png
deleted file mode 100644
index c3f3165dac0025089a93c06f45810105a254d670..0000000000000000000000000000000000000000
Binary files a/src/main/java/org/olat/commons/calendar/_static/css/color_picker_over.png and /dev/null differ
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/move_left.png b/src/main/java/org/olat/commons/calendar/_static/css/move_left.png
deleted file mode 100644
index 21beeff933d8d9d1d8b4cf78bff97c7a40c4910a..0000000000000000000000000000000000000000
Binary files a/src/main/java/org/olat/commons/calendar/_static/css/move_left.png and /dev/null differ
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/move_left_dis.png b/src/main/java/org/olat/commons/calendar/_static/css/move_left_dis.png
deleted file mode 100644
index 25b8968bde142d075ef8b2a08519401cd926c4d1..0000000000000000000000000000000000000000
Binary files a/src/main/java/org/olat/commons/calendar/_static/css/move_left_dis.png and /dev/null differ
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/move_left_over.png b/src/main/java/org/olat/commons/calendar/_static/css/move_left_over.png
deleted file mode 100644
index a4f77426a57bf6a43cee3281437ffa31e707749c..0000000000000000000000000000000000000000
Binary files a/src/main/java/org/olat/commons/calendar/_static/css/move_left_over.png and /dev/null differ
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/move_right.png b/src/main/java/org/olat/commons/calendar/_static/css/move_right.png
deleted file mode 100644
index 22a6d49b287dfa9e0da6dd43c81f2ffec0f32a8f..0000000000000000000000000000000000000000
Binary files a/src/main/java/org/olat/commons/calendar/_static/css/move_right.png and /dev/null differ
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/move_right_dis.png b/src/main/java/org/olat/commons/calendar/_static/css/move_right_dis.png
deleted file mode 100644
index 005f62028df89c7ede61b5b142aeb45e9f1a8651..0000000000000000000000000000000000000000
Binary files a/src/main/java/org/olat/commons/calendar/_static/css/move_right_dis.png and /dev/null differ
diff --git a/src/main/java/org/olat/commons/calendar/_static/css/move_right_over.png b/src/main/java/org/olat/commons/calendar/_static/css/move_right_over.png
deleted file mode 100644
index 09c8e6c0c2275f6ae2a05ffbf2417b5fc1b31ff3..0000000000000000000000000000000000000000
Binary files a/src/main/java/org/olat/commons/calendar/_static/css/move_right_over.png and /dev/null differ
diff --git a/src/main/java/org/olat/commons/calendar/ui/GotoDateCalendarsForm.java b/src/main/java/org/olat/commons/calendar/ui/GotoDateCalendarsForm.java
index caca5541c86e6608509d103ed56e7c092850990f..9eb5c35770246b354d39e95f4ace60aad4e36cd1 100644
--- a/src/main/java/org/olat/commons/calendar/ui/GotoDateCalendarsForm.java
+++ b/src/main/java/org/olat/commons/calendar/ui/GotoDateCalendarsForm.java
@@ -34,7 +34,7 @@ import org.olat.core.gui.components.form.flexible.elements.FormLink;
 import org.olat.core.gui.components.form.flexible.impl.FormBasicController;
 import org.olat.core.gui.components.form.flexible.impl.FormEvent;
 import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
-import org.olat.core.gui.components.form.flexible.impl.elements.FormLinkImpl;
+import org.olat.core.gui.components.link.Link;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
@@ -57,8 +57,7 @@ public class GotoDateCalendarsForm extends FormBasicController {
 		gotoDate = uifactory.addDateChooser("goto",null, "",horizontalL);//null because no label is desired.
 		gotoDate.setMandatory(false);
 		gotoDate.setDate(new Date());
-		gotoDateLink = new FormLinkImpl("cal.search.gotodate.button");
-		horizontalL.add(gotoDateLink);
+		gotoDateLink =  uifactory.addFormLink("cal.search.gotodate.button", horizontalL,Link.BUTTON);
 	}	
 	
 	@Override
diff --git a/src/main/java/org/olat/commons/calendar/ui/WeeklyCalendarController.java b/src/main/java/org/olat/commons/calendar/ui/WeeklyCalendarController.java
index 8aa5091115280219b4b966d2f1d8982a522117fd..58443cc2522bb01d2c8de245d3bbd161f5fbfde7 100644
--- a/src/main/java/org/olat/commons/calendar/ui/WeeklyCalendarController.java
+++ b/src/main/java/org/olat/commons/calendar/ui/WeeklyCalendarController.java
@@ -103,6 +103,8 @@ public class WeeklyCalendarController extends BasicController implements Activat
 	private Controller subscriptionController;
 	private String caller;
 	private boolean dirty = false;
+	private Link prevWeekLink;
+	private Link nextWeekLink;
 	private Link thisWeekLink;
 	private Link searchLink;
 	private Link subscribeButton;
@@ -194,11 +196,18 @@ public class WeeklyCalendarController extends BasicController implements Activat
 		
 		// main velocity controller
 		vcMain = createVelocityContainer("indexWeekly");
-		thisWeekLink = LinkFactory.createLink("cal.thisweek", vcMain, this);
+		thisWeekLink = LinkFactory.createButton("cal.thisweek", vcMain, this);
+
+		prevWeekLink = LinkFactory.createCustomLink("cal.prevweek", CMD_PREVIOUS_WEEK, "", Link.NONTRANSLATED, vcMain, this);
+		prevWeekLink.setCustomEnabledLinkCSS("b_button o_cal_wv_prev");
+		
+		nextWeekLink = LinkFactory.createCustomLink("cal.nextweek", CMD_NEXT_WEEK, "", Link.NONTRANSLATED, vcMain, this);
+		nextWeekLink.setCustomEnabledLinkCSS("b_button o_cal_wv_next");
+		
 		gotoDateForm = new GotoDateCalendarsForm(ureq, wControl, getTranslator());
 		listenTo(gotoDateForm); 
 		vcMain.put("cal.gotodate", gotoDateForm.getInitialComponent());
-		searchLink = LinkFactory.createLink("cal.search.button", vcMain, this);
+		searchLink = LinkFactory.createButton("cal.search.button", vcMain, this);
 		subscribeButton = LinkFactory.createButtonXSmall("cal.subscribe", vcMain, this);
 		unsubscribeButton = LinkFactory.createButtonXSmall("cal.unsubscribe", vcMain, this);
 		
@@ -333,12 +342,11 @@ public class WeeklyCalendarController extends BasicController implements Activat
 		} else if (event == ComponentUtil.VALIDATE_EVENT && weeklyCalendar.isDirty() && modifiedCalenderDirty  ) {
 			KalendarRenderWrapper kalendarRenderWrapper = weeklyCalendar.getKalendarRenderWrapper(modifiedCalendarId);
 			kalendarRenderWrapper.reloadKalendar();	
-		}else if (source == vcMain) {
-			if (event.getCommand().equals(CMD_PREVIOUS_WEEK)) {
-				weeklyCalendar.previousWeek();
-			} else if (event.getCommand().equals(CMD_NEXT_WEEK)) {
-				weeklyCalendar.nextWeek();
-			}
+		} else if(source == prevWeekLink){
+			weeklyCalendar.previousWeek();
+			setWeekYearInVelocityPage(vcMain, weeklyCalendar);
+		} else if(source == nextWeekLink){
+			weeklyCalendar.nextWeek();
 			setWeekYearInVelocityPage(vcMain, weeklyCalendar);
 		} else if (source == thisWeekLink){
 			Calendar cal = CalendarUtils.createCalendarInstance(ureq.getLocale());