function create_xmlHttp()
{
var xmlHttp;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    try
      {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    catch (e)
      {
      alert("Your browser does not support AJAX!");
      return false;
      }
    }
  }
  return xmlHttp;  
}

function get_agendaItems(maand, yy)
{
	var maand;
	var yy;
	
	var xml_obj = create_xmlHttp();

	xml_obj.onreadystatechange = function()
	{
		if(xml_obj.readyState==4)
		{
			var dagen = xml_obj.responseText;
			
			
			calendar(1, 'calendar', 'date_planned_id', 1, dagen, yy, maand-1);
		}
	}
	
	xml_obj.open("GET","./get_agenda.php?m="+maand,true);
	xml_obj.send(null);
	
}

function calc_weekNo(day, month, year)
{
	var year;
	year = parseInt(year);
	var month;
	month = parseInt(month);
	var day;
	day = parseInt(day);
	var year2 = year-1;
	var year3 = year+1;
	
	var myDate = new Date(year, month, day);
	var myDate2 = new Date(year2, 0, 4); // jaar eerder   4 januari
	var myDate3 = new Date(year2, 11, 31); // jaar eerder   31 december
	var myDate4 = new Date(year, 0, 4); //  4 januari voorbeeld jaar
	var myDate5 = new Date(year3, 0, 4); // jaar later   4 januari
	
	if( (year % 4) == 0)
	{
		monthDays = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	} else 
	{
		monthDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	}
	
	if( (year2 % 4) == 0)
	{
		monthDays2 = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	} else 
	{
		monthDays2 = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	}
	
	var var1 = 0; // var1 is het aantal dagen na 4 januari van het voorbeeld datum
	var1 = parseInt(var1);
	
	for(i=0; i<month; i++)
	{
		var1 += monthDays[i];
	}
	var1 = (var1+day)-4;
	
	var var2 = Math.floor(var1/7); // week nummer van voorbeeld datum
	var var3 = myDate.getDay(); // dag nummer voorbeeld datum
	if(var3 == 0)
	{
		var3 = 7;
	}
	var var4 = myDate2.getDay(); // dag nummer 4 januarie in t jaar VOOR t voorbeeld datum
	if(var4 == 0)
	{
		var4 = 7;
	}
	
	var var5 = 0; // var1 is het aantal dagen na 4 januari van het voorbeeld datum
	var5 = parseInt(var5);

	for(i=0; i<12; i++)
	{
		var5 += monthDays2[i];
	}
	var5 = var5-4; // aantal dagen van 4 jan t/m 31 dec in t jaar VOOR t voorbeeld datum
	
	var var6 = Math.floor(var5/7); // week nummer van heet jaar VOOR het voorbeeld datum
	var var7 = myDate3.getDay(); // dag nummer 31 december in t jaar VOOR t voorbeeld datum
	if(var7 == 0)
	{
		var7 = 7;
	}
	var var8 = myDate4.getDay(); // dag nummer 4 januari in t jaar van t voorbeeld datum
	if(var8 == 0)
	{
		var8 = 7;
	}
	var var9 = myDate5.getDay(); // dag nummer 4 januari in t jaar NA t voorbeeld datum
	if(var9 == 0)
	{
		var9 = 7;
	}
	
	if(var7 < var8) // weeknummer van 31 december 1 jaar VOOR het voorbeeld datum
	{
		var var10 = 1;
	} else if (var7 < var4)
	{
		var var10 = var6+2;
	} else
	{
		var var10 = var6+1;
	}
	
	if(   ((day > 0) && (day < 4)) && (month == 0)   )
	{
		if (var3 < var8)
		{
			var weeknummer = 1;
		} else
		{
			var weeknummer = var10;
		}
	} else if (         (   ((day > 28) && (day < 32)) && (month == 11)   )   &&    (var3 < var9)      )
	{
		var weeknummer = 1;
	} else if (var3 < var8)
	{
		var weeknummer = var2+2;
	} else
	{
		var weeknummer = var2+1;
	}
	
	return weeknummer;
}



function calendar (id, calendar_div, target, lang, dagen, yy, mm)
{
	var yy;
	var mm;
	var calendar_div; // the div containing the calendar
	var id; // unique id to use multiple calendars on a page
	var target; // the field that will get the date
	var dagen; // dagen met een agenda punt
	//get the current date
	var objDate = new Date();
	var today = objDate.getDate();
	var todayMonth = objDate.getMonth();
	var todayYear = objDate.getFullYear();
	
	if( (yy != null) && (mm != null) )
	{
		//get a preset date
		var objDate = new Date(yy, mm, today);
	}
	
	var day = objDate.getDate();
	var day_name = objDate.getDay();
	var selectedMonth = objDate.getMonth();
	var selectedYear = objDate.getFullYear();

	var weekNumber = calc_weekNo(1, selectedMonth, selectedYear); // weeknumber of the firstday of the selected month
	var maxWeekNumber = calc_weekNo(31, 11, selectedYear); // ammount of weeks selected year
	var lang; //language settings   1 = dutch  everything else is english

	// next month settings
	var nextMonth = selectedMonth +1;
	var nextYear = selectedYear;
	if (nextMonth > 11)
	{
		nextMonth = 0;
		nextYear = selectedYear +1;
	}
	
	// previous  month settings
	var previousMonth = selectedMonth -1;
	var previousYear = selectedYear;
	if (previousMonth < 0)
	{
		previousMonth = 11;
		previousYear = selectedYear -1;
	}
	
	//select dayname of the first day of the month
	var firstDayDate = new Date(selectedYear, selectedMonth, 1);
	var startpos = firstDayDate.getDay();
	
	if (selectedYear % 4 == 0)
	{
		dayAmmount = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	} else
	{
		dayAmmount = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	}
	
	if (lang == 1)
	{
		daynames = new Array("zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag");
		monthnames = new Array("Januari",  "Februari",  "Maart",  "April",  "Mei",  "Juni",  "Juli",  "Augustus",  "September",  "October",  "November",  "December");
		shortdaynames = new Array("Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo");
	} else
	{
		daynames = new Array("Sunday", "Monday", "Thuesday", "Wednesday", "Thursday", "Friday", "Saturday");
		monthnames = new Array("January",  "February",  "March",  "April",  "May",  "June",  "July",  "August",  "September",  "October",  "November",  "December");
		shortdaynames = new Array("Mo", "Th", "We", "Th", "Fr", "Sa", "Su");
	}

	function write_table()
	{
		Array.prototype.in_array = function(p_val) {
		for(var i = 0, l = this.length; i < l; i++) {
			if(this[i] == p_val) {
				return true;
			}
		}
		return false;
		}	

		var dag_arr = dagen.split("-");
	
		var table = "";
	//	table += "<table class='calendar' id='"+id+"' style='visibility: visible;' border='1'><tr class='calendar_header' align='center'><td class='calendar_arrow'><a href='#' onclick='javascript: calendar("+id+", \""+calendar_div+"\", \""+target+"\", "+lang+", \""+dagen+"\", "+previousYear+", "+previousMonth+");'><-</a></td><td class='calendar_header' colspan='6'>"+monthnames[selectedMonth]+", "+ selectedYear +"</td><td class='calendar_arrow'><a href='#' onclick='javascript: calendar("+id+", \""+calendar_div+"\", \""+target+"\", "+lang+", \""+dagen+"\", "+nextYear+", "+nextMonth+");'>-></a></td></tr>";
		table += "<table class='calendar' id='"+id+"' style='visibility: visible;' border='1'><tr class='calendar_header' align='center'><td class='calendar_arrow'><a href='#' onclick='javascript: get_agendaItems("+(previousMonth+1)+", "+previousYear+");'><-</a></td><td class='calendar_header' colspan='6'>"+monthnames[selectedMonth]+", "+ selectedYear +"</td><td class='calendar_arrow'><a href='#' onclick='javascript: get_agendaItems("+(nextMonth+1)+", "+nextYear+");'>-></a></td></tr>";
		table += "<tr class='calendar_sn'>";
		table += "<td class='calendar_sn'>&nbsp;</td>";
		// write days header
		for (i=0; i<shortdaynames.length; i++)
		{
			table += "<td class='calendar_sn'>"+shortdaynames[i]+"</td>";
		}

		table += "</tr><tr class='calendar'>";
		
		var row = 1;
		var trow = 0;
		
		if(startpos == 0) // start at sunday
		{
			startpos=7;
		}
		
		//write empy spaces first
		for (d=0; d<startpos; d++)
		{
			if(d < 1)
			{
				table += "<td class='calendar_wn'>"+weekNumber+"</td>";
				if(weekNumber >= 52)
				{
					weekNumber = 0;
				}
				trow++;
			} else
			{
				table += "<td class='calendar'></td>";
			}
			row++;
			if (row == 9)
			{
				table += "</tr><tr class='calendar'>";
				row = 2;
			}
		}
		
		//write all days
		for (i=1; i<=dayAmmount[selectedMonth]; i++)
		{
			
			if ( (i == day) && (selectedMonth == todayMonth) && (selectedYear == todayYear) )
			{
				// today
				table += "<td onmouseout=\"this.className='calendar_today';\" onmouseover=\"this.className='hoover_today';\" class='calendar_today'><a href='#' onclick='javascript: write_date(\""+target+"\", "+i+", "+selectedMonth+", "+selectedYear+");'>"+i+"</a></td>";
			} 
			else if( (dag_arr.in_array(i)) && (selectedMonth == todayMonth) )
			{
				table += "<td onmouseout=\"this.className='calendar2';\" onmouseover=\"this.className='hoover2';\" class='calendar2'><a href='#' onclick='javascript: write_date(\""+target+"\", "+i+", "+selectedMonth+", "+selectedYear+");'>"+i+"</a></td>";
			}
			else
			{
				table += "<td onmouseout=\"this.className='calendar';\" onmouseover=\"this.className='hoover';\" class='calendar'><a href='#' onclick='javascript: write_date(\""+target+"\", "+i+", "+selectedMonth+", "+selectedYear+");'>"+i+"</a></td>";
			}
			
			row++;
			if ( (row == 9) && (i<dayAmmount[selectedMonth]) )
			{
				table += "</tr><tr class='calendar'>";
				if(maxWeekNumber == 53)
				{
					table += "<td class='calendar_wn'>"+(weekNumber+trow)+"</td>";
				} else				
				{
					if( (weekNumber+trow) == 53)
					{
						table += "<td class='calendar_wn'>1</td>";
					} else
					{
						table += "<td class='calendar_wn'>"+(weekNumber+trow)+"</td>";
					}
				}
				trow++;
				row = 2;
			}
		}
		
		table += "</tr>";
		table += "</table>";
	
		document.getElementById(calendar_div).innerHTML = table;
	}
	
	write_table();
}

function write_date (target, day, month, year)
{
	//id = the id of the Calendar to hide
	//target = the ID of the field that will receive the Date
	//	day = the selected day		month = the selected month	year = the selected year
	
	var currentLang = document.getElementById("lang").value;
	var month = month+1;
	
	window.location = "?lang="+ currentLang + "&c=Agenda.php&d=" + day + "&m=" + month + "&y=" + year;
	
//	var field = document.getElementById(target);
//	var field_D = document.getElementById(target+"_D");
//	var field_WN = document.getElementById(target+"_WN");
//	var selectedWeek = calc_weekNo(day, month, year);
//	var month = month+1;
//	field.value = day+"-"+month+"-"+year+", week "+selectedWeek;
//	field_D.value = year+"-"+month+"-"+day;
//	field_WN.value = selectedWeek;
	
//	var calendar = document.getElementById(id);
//	calendar.style.visibility = "hidden";
}

