function cab_calendar_editEntry(kal_id, calendar_ids) {
    window.open('/app/calendar/editEntry.asp?kal_id='+kal_id+"&calid="+(calendar_ids || ""), "editEntry", "width=620,height=620,menubar=no,resizable=no,status=no,toolbar=no");
   }

function cab_calendar_manageResourcePlanner() {
	var vd = document.viewport.getDimensions(),
		vso = document.viewport.getScrollOffsets(),
		pane = $("cab_calendar_planningview_pane"),
		pd = pane.getDimensions(),
		po = pane.viewportOffset(),
		no = {
			left:	vso.left + (vd.width - pd.width) / 2,
			top:	vso.top + (vd.height - pd.height) / 2
		};
	new Effect.Move(pane, { x:no.left, y:no.top, mode:"absolute", duration:0.25 });
	pane.appear({ duration:0.25 });
}

function cab_calendar_manageResourcePlanner_Options(query_string) {
	query_string = (query_string || "").gsub(/(&resources=((\d){0,}){0,}(-(\d){0,}){0,})/, "")
										.gsub(/(&attendees=((\d){0,}){0,}(-(\d){0,}){0,})/, "")
										.gsub(/(&cachebuster=(\d){0,})/, "");
	window.location.href = window.location.href.split("?").first()
							+ "?" + query_string
							+ (query_string == "" ? "" : "&") + $("cab_calendar_planningview").serialize()
							+ "&cachebuster=" + (Math.random() + "").slice(2);
}

function myOtherFunction (  ) {  }
	
function cab_calendar_pickDate ( buttonObj, inputObject, visibleAction, showTime ) {
	calendarObjForForm.setCalendarPositionByHTMLElement(inputObject, 0, inputObject.offsetHeight + 2);
	calendarObjForForm.setInitialDateFromInput(inputObject, ((showTime == true) ? "dd.mm.yyyy hh:ii" : "dd.mm.yyyy"));
	calendarObjForForm.addHtmlElementReference("myDate", inputObject);
	settingsTime = showTime;
	
	if (visibleAction != "") {
		if (visibleAction == "hide") { calendarObjForForm.hide(); }
		if (visibleAction == "show") {
			calendarObjForForm.resetViewDisplayedMonth();
			calendarObjForForm.display();
		}
	} else {
		if (calendarObjForForm.isVisible()) {
			calendarObjForForm.hide();
		} else {
			calendarObjForForm.resetViewDisplayedMonth();
			calendarObjForForm.display();
		}
	}		
	$(calendarObjForForm.divElTimeBar).setStyle({display: (showTime ? "block" : "none")});
}

function getDateFromCalendar ( inputArray ) {
	var references = calendarObjForForm.getHtmlElementReferences();
	references.myDate.value = inputArray.day + "." + inputArray.month + "." + inputArray.year + ((settingsTime == true) ? (" " + inputArray.hour + ":" + inputArray.minute) : (""));
	calendarObjForForm.hide();	
}

function calendar_isValidDateTime(dateTimeStr, hide_alert) {
	var	dateStr = "",
		timeStr = "",
		show_alert = !hide_alert;
	
	if (dateTimeStr.length > 10) {
		dateStr = dateTimeStr.substr(0, 10)
		timeStr = dateTimeStr.substr(11, 8)
		if (timeStr.length < 3) timeStr += ":00:00";
		if (timeStr.length < 6) timeStr += ":00";
	} else {
		dateStr = dateTimeStr;
	}
	if (dateStr.length == 7) { dateStr = '01.' + dateStr; }
	var datePat = /^(\d{1,2})(\/|.)(\d{1,2})\2(\d{4})$/;
	var matchArray = dateStr.match(datePat);
	if (matchArray == null) { if(show_alert) { alert(cls_138); }; return false; }
	day = matchArray[1];
	month = matchArray[3];
	year = matchArray[4];
	if (month < 1 || month > 12) { if(show_alert) { alert(cls_139); }; return false; }
	if (day < 1 || day > 31) { if(show_alert) { alert(cls_140); }; return false; }
	if ((month==4 || month==6 || month==9 || month==11) && day==31) { if(show_alert) { alert( cls_141 + " " + month+" " + cls_142); }; return false; }
	if (month == 2) {
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) { if(show_alert) { alert(cls_143 + " " + year + " " + cls_144 + " " + day + " " + cls_145); }; return false; }
	}
	if (timeStr.length > 0) {
		var timePat = /^(\d{1,2}):(\d{1,2}):(\d{1,2})$/;
		var matchArray = timeStr.match(timePat);
		if (matchArray == null) { if(show_alert) { alert(cls_65848); }; return false; }
		times = timeStr.split(":", 3);
		if (parseInt(times[0]) < 0 || parseInt(times[0]) > 23) { if(show_alert) { alert(cls_65858); }; return false; }
		if (parseInt(times[1]) < 0 || parseInt(times[1]) > 60) { if(show_alert) { alert(cls_65868); }; return false; }
		if (parseInt(times[2]) < 0 || parseInt(times[2]) > 60) { if(show_alert) { alert(cls_65878); }; return false; }
	}
	return true;
}

var cab_calendar_events_display_timer = null;
function cab_showEventsOnDate(date, calendar_ids, anker) {
	if (cab_calendar_events_display_timer != null)
		window.clearTimeout(cab_calendar_events_display_timer);
	$("cab_EventsOnDate").down("#cab_EventsOnDate_date").update("<span>" + date + "</span>");
	var content = $("cab_EventsOnDate_content").update("<div class=\"cab_general_loader\"></div>");
	new Ajax.Updater(content, "/app/calendar/ajax/getEventsOnDate.asp", {
		parameters: { calids: calendar_ids, date: date, cache_buster: ("" + Math.random()).split(2) },
		onComplete: (function () { cab_repositionEventsOnDate(date, calendar_ids, anker); }).bind(this)
	});
	cab_repositionEventsOnDate(date, calendar_ids, anker);
}
var cab_repositionEventsOnDate = (Prototype.Browser.IE && navigator.userAgent && /; MSIE (6|7).0;/gi.test(navigator.userAgent) ? function (date, calendar_ids, anker) {
	anker = $(anker);
	anker = anker.up(".cab_calendar_event") || anker;
	var eventsDisplay = $("cab_EventsOnDate"),
		dims = anker.getDimensions();
	eventsDisplay.clonePosition(anker, { setWidth: false, setHeight: false, offsetLeft: dims.width, offsetTop: dims.height });
	if (!eventsDisplay.visible())
		eventsDisplay.appear({ duration: 0.25 });
} : function (date, calendar_ids, anker) {
	anker = $(anker);
	var events_display = $("cab_EventsOnDate"),
		display_dim = events_display.getDimensions(),
		anker_dim = anker.getDimensions(),
		anker_of = anker.cumulativeOffset(),
		tempX = anker_of.left + anker_dim.width,
		tempY = anker_of.top + anker_dim.height,
		vp_dim = document.viewport.getDimensions(),
		vp_sof = document.viewport.getScrollOffsets(),
		maxX = vp_sof.left + vp_dim.width - display_dim.width,
		maxY = vp_sof.top + vp_dim.height - display_dim.height;
	events_display.setStyle({ top: (tempY > maxY ? maxY : tempY) + "px", left: (tempX > maxX ? maxX : tempX) + "px" })
	if (!events_display.visible())
		events_display.appear({ duration: 0.25 });
});
function cab_hideEventsOnDate() {
	if (cab_calendar_events_display_timer != null)
		window.clearTimeout(cab_calendar_events_display_timer);
	cab_calendar_events_display_timer = window.setTimeout(cab_hideEventsOnDate_NOW, 1000);
}
function cab_hideEventsOnDate_NOW() {
	$("cab_EventsOnDate").fade({ duration:0.25 });
}

(function() {
	new Event.observe(document, "dom:loaded", function() {
		var display = $("cab_EventsOnDate");
		if (!display)
			return;
		Element.insert(document.body, { bottom: display.remove() });
		display.observe("mouseover", function() {
			if (cab_calendar_events_display_timer != null)
				window.clearTimeout(cab_calendar_events_display_timer);
		}).observe("mouseout", cab_hideEventsOnDate);
	});
} ());
