﻿Date.abbrDayNames = ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'];
Date.monthNames = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'];


(function($) { 
   
	function calendarWidget(el, s) { 

			var dc = function(a) { return document.createElement(a); };
			var fd = function(y,m,d) { return ('date-'+y+'-'+(m<10?'0'+m:m)+'-'+(d<10?'0'+d:d)); }
			
			s = $.extend( { month : null, year : null }, s );

			var headRow = $(dc('tr'));
			for (var i=Date.firstDayOfWeek; i<Date.firstDayOfWeek+7; i++) {
				var weekday = i%7;
				var day = Date.abbrDayNames[weekday];
				headRow.append(
					jQuery(dc('th')).attr({'scope':'col', 'abbr':day, 'class':(weekday == 0 || weekday == 6 ? 'weekend' : 'weekday')}).html(day)
				);
			}

			var calendarTable = $(dc('table')).attr({'cellspacing':1,'cellpadding':0,'className':'cowCalendar'}).append(( $(dc('thead')).append(headRow)));
			var tbody = $(dc('tbody'));

			var today = (new Date()).zeroTime();
			var month = s.month == undefined ? today.getMonth() : s.month;
			var year = s.year || today.getFullYear();
			var currentDate = new Date(year, month, 1);
			
			var firstDayOffset = Date.firstDayOfWeek - currentDate.getDay() + 1;
			if (firstDayOffset > 1) firstDayOffset -= 7;
			var weeksToDraw = Math.ceil(( (-1*firstDayOffset+1) + currentDate.getDaysInMonth() ) /7);
			currentDate.addDays(firstDayOffset-1);
			
			var doHover = function() { $(this).addClass('hover'); };
			var unHover = function() { $(this).removeClass('hover'); };
			
			var w = 0;
			while (w++<weeksToDraw) {
				var r = jQuery(dc('tr'));
				for (var i=0; i<7; i++) {
					var thisMonth = currentDate.getMonth() == month;
					var day = currentDate.getDate();
					var d = $(dc('td'))
						.text(day)
						.attr('id', (thisMonth ? fd(year,month+1,day) : ''))
						.attr('className', (thisMonth ? 'current-month ' : 'other-month ') +
							(currentDate.isWeekend() ? 'weekend ' : 'weekday ') +
							(thisMonth && currentDate.getTime() == today.getTime() ? 'today ' : '')
						)
						.hover(doHover, unHover);
					r.append(d);
					currentDate.addDays(1);
				}
				tbody.append(r);
			}
			calendarTable.append(tbody);		
			el.html(calendarTable);
	}

	$.fn.calendarWidget = function(params) {    
		calendarWidget(this, params);		
		return this; 
	}; 

})(jQuery);

initCalendar = function( month, year, cow, edit ) {

	// help functions
	var dc = function(a) { return document.createElement(a); };
	var fd = function(y,m,d) { return ('date-'+y+'-'+(m<10?'0'+m:m)+'-'+(d<10?'0'+d:d)); }
	cow = (cow == 1) ? 1 : 0;

	// constants
	var xml_handler_id = 311;

	// month count starts in JS with zero!
	month--;
	mCals = [];

	for (var i=0; i<12; i++) {
		var mTit = $(dc('h3')).html(Date.monthNames[month]+" "+year);
		var mCal = $(dc('div')).attr({'className':'cowCalendarContainer'});
		$(mCal).calendarWidget( { month:month, year:year } );
		$(mCal).prepend(mTit);
		mCals.push(mCal);
		month++;
		if (month==12) { month=0; year++; }
	}

	// get reserved dates
	$.ajax({ type: "GET", url: "/__/frontend/handler/document.php", data: "id=" + xml_handler_id + "&type=44&cow=" + cow + "&preventCache=" + new Date().valueOf(), dataType: "xml", success: function(xml){
		$("#cowPlugin").html("");
		for (var i=0; i<12; i++) $("#cowPlugin").append(mCals[i]);

		$("items > item", xml).each( function() {
			var dstr = $("datum", this).text();
			var dobj = new Date(dstr.substr(0,4), dstr.substr(5,2)-1, dstr.substr(8,2));
			for (var i=0; i<$("dauer", this).text(); i++) {
				var id = $("id", this).text();
				var td=$("#"+fd(dobj.getFullYear(),1+dobj.getMonth(),dobj.getDate())).addClass( $("status", this).text() == 0 ? 'pending' : 'reserved' );
				if (edit==1) {
					$(td).css("cursor","pointer").click(
						function() {
							var dl=""+document.location;
							if (url = dl.match("^([^?]+)")) document.location = url[1]+'?nid='+id;
						}
					);
				}
				dobj.addDays(1);
			}
		});
	}});
}

deleteEntry = function( nid ) {
	if (confirm('Möchten Sie diesen Eintrag wirklich löschen?')) {
		var dl = url = ""+document.location;
		if (url = dl.match("^([^?]+)")) {
			url = url[1];
		}
		// delete action hardcoded here
		document.location = url + '?_action=173&did=' + nid + "&preventCache=" + new Date().valueOf();
	}
}

