// JavaScript Document

function calendar (name,width,height,eventDays,title,months) { //(titleClass,yearClass,monthClass,dayClass,activeColor,inactiveColor,cellHeight,cellWidth) {
 this.name = name;
 this.width = width;
	this.height = height;
	this.eventDays = eventDays;
 this.title = title;
	this.months = months;
	var cookie_eventDaysMonth = readCookie(this.name+'eventDaysMonth');
	if (cookie_eventDaysMonth) { this.eventDaysMonth = parseInt(cookie_eventDaysMonth,10); } else { if (this.eventDays.length) { this.eventDaysMonth = (this.eventDays.length-1)/2; } else { this.eventDaysMonth = 0; } }
	
	/*this.titleClass = titleClass;
	this.monthClass = monthClass;
	this.dayClass = dayClass;
	this.yearClass = yearClass;
	this.activeColor = activeColor;
	this.inactiveColor = inactiveColor;
	this.cellHeight = cellHeight;
	this.cellWidth = cellWidth;*/
	
	var now = new Date();
	var cookie_month = readCookie(this.name+'month');	
	if (cookie_month) { this.month = parseInt(cookie_month,10); } else { this.month = now.getMonth(); }
	var cookie_year = readCookie(this.name+'year');	
	if (cookie_year) { this.year = parseInt(cookie_year,10); } else { this.year = now.getFullYear(); }
	
 this.init = function () {
	 var str_html = '';
  var firstDayThisMonth = new Date(this.year,this.month,1);
		var firstDayThisMonthOffset = firstDayThisMonth.getDay();
		var nextMonth = (this.month + 1) % 12;
		if (nextMonth==0) {
		 var firstDayNextMonth = new Date(this.year+1,nextMonth,1);
	 } else {
		 var firstDayNextMonth = new Date(this.year,nextMonth,1);
		}
		var firstDayNextMonthOffset = firstDayNextMonth.getDay();
  var diffOffset = (firstDayNextMonthOffset - firstDayThisMonthOffset + 7) % 7;
		if (diffOffset==0) { var lastDayThisMonth = 28; }
		if (diffOffset==1) { var lastDayThisMonth = 29; }
		if (diffOffset==2) { var lastDayThisMonth = 30; }
		if (diffOffset==3) { var lastDayThisMonth = 31; }	
		str_html=str_html+'<div style="width:'+this.width+';height:'+this.height+';"><table cellSpacing="0" cellPadding="0" border="0">';
		str_html=str_html+'<tr><td colspan="3"><div id="'+this.name+'_title" class="agenda_title">'+this.title+'</div></td><td colspan="4"><div id="'+this.name+'_month" class="agenda_month">'+this.months[this.month]+'</div></td></tr>';
		var day = 0;
		for (var row = 0; row<6; row++) {
		 str_html=str_html+'<tr>';
			for (var col = 0; col<7; col++) {
			 str_html=str_html+'<td><div id="'+this.name+'_'+row+'_'+col+'" class="agenda_day">';
				if (day<lastDayThisMonth && (row>0 || col>=firstDayThisMonthOffset)) {
				 day++;
				 if (day<10) { var dd='0'+day; } else { var dd=day; }
				 if (this.month<9) { var mm=this.month+1; mm='0'+mm } else { var mm=this.month+1; }
					if (this.eventDaysMonth>=0 && this.eventDaysMonth<this.eventDays.length && inArray(day,this.eventDays[this.eventDaysMonth])) {
					 var str_day = '<span class="agenda_day" style="cursor:hand;" onClick="'+this.name+'.savePathCookiesAndJump(\'index.php?mod=events&op=viewDate&date='+this.year+'-'+mm+'-'+dd+'\');"><b>'+dd+'</b></span>';					
					 //var str_day = '<a class="agenda_day" href="index.php?mod=events&op=viewDate&date='+this.year+'-'+mm+'-'+dd+'">'+dd+'</a>';
					} else {
					 var str_day = dd;
					}					
				 str_html=str_html+str_day;
				} else {
				 str_html=str_html+'&nbsp;';
				}
			 str_html=str_html+'</div></td>';
			}
		 str_html=str_html+'</tr>';			
		}
		str_html=str_html+'<tr><td colspan="3"><div id="'+this.name+'_year" class="agenda_year">'+this.year+'</div></td><td><img src="images/prevYear.png" style="cursor:hand;" onClick="'+this.name+'.prevYear();"></td><td><img src="images/prevMonth.png" style="cursor:hand;" onClick="'+this.name+'.prevMonth();"></td><td><img src="images/nextMonth.png" style="cursor:hand;" onClick="'+this.name+'.nextMonth();"></td><td><img src="images/nextYear.png" style="cursor:hand;" onClick="'+this.name+'.nextYear();"></td></tr>';
		str_html=str_html+'</table></div>';
		document.write(str_html);
 }
	
	 this.updateDisplay = function () {
  var firstDayThisMonth = new Date(this.year,this.month,1);
		var firstDayThisMonthOffset = firstDayThisMonth.getDay();
		var nextMonth = (this.month + 1) % 12;
		if (nextMonth==0) {
		 var firstDayNextMonth = new Date(this.year+1,0,1);
	 } else {
		 var firstDayNextMonth = new Date(this.year,nextMonth,1);
		}
		var firstDayNextMonthOffset = firstDayNextMonth.getDay();
  var diffOffset = (firstDayNextMonthOffset - firstDayThisMonthOffset + 7) % 7;
		if (diffOffset==0) { var lastDayThisMonth = 28; }
		if (diffOffset==1) { var lastDayThisMonth = 29; }
		if (diffOffset==2) { var lastDayThisMonth = 30; }
		if (diffOffset==3) { var lastDayThisMonth = 31; }
  var monthDiv = document.getElementById(this.name+'_month');
		monthDiv.innerHTML = this.months[this.month];
		var day = 0;
		for (var row = 0; row<6; row++) {
			for (var col = 0; col<7; col++) {
		  var cellDiv = document.getElementById(this.name+'_'+row+'_'+col);
				if (day<lastDayThisMonth && (row>0 || col>=firstDayThisMonthOffset)) {
				 day++;
				 if (day<10) { var dd='0'+day; } else { var dd=day; }
				 if (this.month<9) { var mm=this.month+1; mm='0'+mm } else { var mm=this.month+1; }
					if (this.eventDaysMonth>=0 && this.eventDaysMonth<this.eventDays.length && inArray(day,this.eventDays[this.eventDaysMonth])) {
					 var str_day = '<span class="agenda_day" style="cursor:hand;" onClick="'+this.name+'.savePathCookiesAndJump(\'index.php?mod=events&op=viewDate&date='+this.year+'-'+mm+'-'+dd+'\');"><b>'+dd+'</b></span>';
					} else {
					 var str_day = dd;
					}
					cellDiv.innerHTML=str_day;
				} else {
				 cellDiv.innerHTML = '&nbsp;';
				}
			}
		}
  var yearDiv = document.getElementById(this.name+'_year');
		yearDiv.innerHTML = this.year;
 }
	
	this.prevYear = function () {
	 if (this.year) { this.year = this.year - 1; this.eventDaysMonth = this.eventDaysMonth - 12; }
		writeCookie(this.name+'month',this.month);
		writeCookie(this.name+'year',this.year);
		writeCookie(this.name+'eventDaysMonth',this.eventDaysMonth);
		this.updateDisplay();
	}
	
	this.nextYear = function () {
	 this.year = this.year + 1; this.eventDaysMonth = this.eventDaysMonth + 12;
		writeCookie(this.name+'month',this.month);
		writeCookie(this.name+'year',this.year);
		writeCookie(this.name+'eventDaysMonth',this.eventDaysMonth);
		this.updateDisplay();
	}
	
	this.prevMonth = function () {
	 this.month = (this.month - 1 + 12) % 12;
		if (this.month==11) { this.year = this.year - 1; }
		this.eventDaysMonth = this.eventDaysMonth - 1;
		writeCookie(this.name+'month',this.month);
		writeCookie(this.name+'year',this.year);
		writeCookie(this.name+'eventDaysMonth',this.eventDaysMonth);
		this.updateDisplay();
	}

	this.nextMonth = function () {
	 this.month = (this.month + 1) % 12;
		if (this.month==0) { this.year = this.year + 1; }
		this.eventDaysMonth = this.eventDaysMonth + 1;
		writeCookie(this.name+'month',this.month);
		writeCookie(this.name+'year',this.year);
		writeCookie(this.name+'eventDaysMonth',this.eventDaysMonth);
		this.updateDisplay();
	}

this.path = function (id) {
 return '';
}

this.savePathCookiesAndJump = function (url) {
	writeCookie('pathState',this.name);
	writeCookie('pathState2',0);
	writeCookie('treeState',0);
	writeCookie('tree2State',0);	
	document.location.href = url;
}
	
}
