/**
 * @author Intentive GmbH
 * @copyright 2008
 */

// Berechnung aktuelle Kalenderwoche für das Highlighting
function currentCalendarWeek(j,m,t) {
  var Datum = new Date();
  if (!t) {
    j = Datum.getYear(); if (1900 > j) j +=1900;
    m = Datum.getMonth(); t = Datum.getDate();
  }
  else m--;
  Datum = new Date(j,m,t,0,0,1);
  var tag = Datum.getDay(); if (tag == 0) tag = 7;
  var d = new Date(2004,0,1).getTimezoneOffset();
  var Sommerzeit = (Date.UTC(j,m,t,0,d,1) - Number(Datum)) /3600000;
  Datum.setTime(Number(Datum) + Sommerzeit*3600000 - (tag-1)*86400000);
  var Jahr = Datum.getYear(); if (1900 > Jahr) Jahr +=1900;
  var kw = 1;
  if (new Date(Jahr,11,29) > Datum) {
    var Start = new Date(Jahr,0,1);
    Start = new Date(Number(Start) + 86400000*(8-Start.getDay()));
    if(Start.getDate() > 4) Start.setTime(Number(Start) - 604800000);
    kw = Math.ceil((Datum.getTime() - Start) /604800000);
  }
  return kw;
}

// Inhalt eines HTML-Elements aktualisieren
function updateDOM(ElementId, HtmlSrc){
	$(ElementId).update(HtmlSrc);
}

// Markiert eine Tabellenzelle -> Kalenderwoche
function highlightCalendarWeek(ElementId){
	if(undefined !== window.currentId){
		$(currentId).setStyle({
			background: currentBackground
		});
		$(currentId).removeClassName('active');
		$(currentId).addClassName(currentClass);
	}
	currentId = ElementId;	
	currentBackground = $(ElementId).readAttribute('style');
	currentClass = $(ElementId).readAttribute('class');
	$(ElementId).removeClassName(currentClass);
	$(ElementId).addClassName('active');
}

// Ajax-Request Veranstaltungen in der Kalenderwoche
function showEventList(str_CalendarWeek, str_Language, str_Elementid) {
	int_Timestamp = new Date().getTime();
	new Ajax.Request('/app/event_calendar/ajax/EventsByWeek.php5?nocache=' + int_Timestamp, {
	method: "post",
	parameters: {'Language': str_Language, 'CalendarWeek': str_CalendarWeek},
	encoding: 'UTF-8',
	requestHeaders: { 'Pragma': 'no-cache', 'Cache-Control': 'must-revalidate', 'Cache-Control':'max-age=0,no-cache,no-store,post-check=0,pre-check=0', 'Expires':'Mon, 26 Jul 1997 05:00:00 GMT'},
	onLoading: function(Element) {
		updateDOM('Events','<img class="Loading" src="/app/event_calendar/img/loading.gif" />');
	},
	onComplete: function(Element) {
					$('Events').update(Element.responseText);
					highlightCalendarWeek(str_Elementid);
   			   }
	});
}

// Stellt den Kalender dar, für die Homepage
function showEventCalendar(str_Language) {
		int_Timestamp = new Date().getTime();
		new Ajax.Request('/app/event_calendar/calendar.php5?nocache=' + int_Timestamp, {
		method: "post",
		parameters: {'Language': str_Language},
		encoding: 'UTF-8',
		requestHeaders: { 'Pragma': 'no-cache', 'Cache-Control': 'must-revalidate', 'Cache-Control':'max-age=0,no-cache,no-store,post-check=0,pre-check=0', 'Expires':'Mon, 26 Jul 1997 05:00:00 GMT'},
		onLoading: function(Element) {
			updateDOM('event-calendar','<img class="Loading" src="/app/event_calendar/img/loading.gif" />');
		},
		onComplete: function(Element) {
						$('event-calendar').update(Element.responseText);
						currentCalendarWeek = currentCalendarWeek();
	   			   }
		});
}

