
function Kalender(jsObject, updateObject, parentObject, alleenDatum, timestamp)
{
	this.objectNaam = jsObject;
	this.zichtbaar = false;
	this.parentObject = parentObject;
	this.updateObject = updateObject;
	this.alleenDatum = alleenDatum;
	this.initTimestamp = timestamp;
	
	var maanden = ['Jan','Feb','Maa','Apr','Mei','Jun','Jul','Aug','Sep','Okt','Nov','Dec'];

	var dagen = ['Zo','Ma','Di','Wo','Do','Vr','Za',];
		
	this.voegToe = function()
	{
		var i, option, optionText;

		var huidigeDatum = new Date();
		huidigeDatum.setTime(this.initTimestamp * 1000);
		
		var maandSelect = document.createElement("select");
		maandSelect.setAttribute("id", this.objectNaam + "_maand");
		maandSelect.onchange = new Function(this.objectNaam + '.updateKalender();');
		for(i = 0; i < 12; i++)
		{
			option = document.createElement("option");
			optionText = document.createTextNode(maanden[i]);
			option.setAttribute("value", i);
			option.appendChild(optionText);
			if(huidigeDatum.getMonth() == i)
			{
				option.setAttribute("selected", "selected");
			}
			maandSelect.appendChild(option);
		}


		var jaarSelect = document.createElement("select");
		var datum = new Date();
		var ditJaar = datum.getFullYear();
		jaarSelect.setAttribute("id", this.objectNaam + "_jaar");
		jaarSelect.onchange = new Function(this.objectNaam + '.updateKalender();');
		for(i = (ditJaar); i < (ditJaar + 2); i++)
		{
			option = document.createElement("option");
			optionText = document.createTextNode(i);
			option.setAttribute("value", i);
			option.appendChild(optionText);
			if(huidigeDatum.getFullYear() == i)
			{
				option.setAttribute("selected", "selected");
			}
			jaarSelect.appendChild(option);
		}

				var tabelDiv = document.createElement("div");
		tabelDiv.setAttribute("id", this.objectNaam + "_tabeldiv");

				var kalenderDiv = document.createElement("div");

		var br = document.createElement("br");
		var dubbelepunt = document.createTextNode(":");

		maandSelect.style.margin="2px";
		jaarSelect.style.margin="2px";

		kalenderDiv.appendChild(maandSelect);
		kalenderDiv.appendChild(jaarSelect);
		kalenderDiv.appendChild(br);
		
		if(this.alleenDatum == 0)
		{
			var uurSelect = document.createElement("select");
			uurSelect.setAttribute("id", this.objectNaam + "_uur");
			uurSelect.onchange = new Function(this.objectNaam + '.updateTijd();');
						
			var minuutSelect = document.createElement("select");
			minuutSelect.setAttribute("id", this.objectNaam + "_minuut");
			minuutSelect.onchange = new Function(this.objectNaam + '.updateTijd();');

			for(i = 10; i < 22; i++)
			{
				option = document.createElement("option");
				optionText = document.createTextNode(i < 10 ? '0' + i : i);
				option.setAttribute("value", i < 10 ? '0' + i : i);
				option.appendChild(optionText);
				if(huidigeDatum.getHours() == i)
				{
					option.setAttribute("selected", "selected");
				}
				uurSelect.appendChild(option);
			}
			
			for(i = 0; i < 60; i = i + 15)
			{
				option = document.createElement("option");
				optionText = document.createTextNode(i < 10 ? '0' + i : i);
				option.setAttribute("value", i < 10 ? '0' + i : i);
				option.appendChild(optionText);
				if(huidigeDatum.getMinutes() == i)
				{
					option.setAttribute("selected", "selected");
				}
				minuutSelect.appendChild(option);
			}

			uurSelect.style.margin="2px";
			minuutSelect.style.margin="2px";
			
			kalenderDiv.appendChild(uurSelect);
			kalenderDiv.appendChild(dubbelepunt);
			kalenderDiv.appendChild(minuutSelect);
		}

		kalenderDiv.appendChild(tabelDiv);
		
		kalenderDiv.setAttribute("id", this.objectNaam + "_div");
		kalenderDiv.setClassName="kalender";
		kalenderDiv.style.width="200px";
		kalenderDiv.style.height="170px";
		kalenderDiv.style.visibility="hidden";
		kalenderDiv.style.zIndex=98;
		kalenderDiv.style.position="relative";
		kalenderDiv.style.top="0";
		kalenderDiv.style.left="100px";		
		kalenderDiv.style.backgroundColor="white";
		kalenderDiv.style.borderColor="#DADAD9";
		kalenderDiv.style.borderStyle="solid";
		kalenderDiv.style.borderWidth="2px";
		kalenderDiv.style.padding="5px";
		kalenderDiv.style.textAlign="center";

		// Kalenderdiv toevoegen
		var parent = document.getElementById(this.parentObject);
		parent.appendChild(kalenderDiv);		
		
		return;
	};


	this.isSchrikkeljaar = function(jaar)
	{
		if(jaar % 4 === 0)
		{
			if(jaar % 100 !== 0)
			{
				return true;
			}
			else
			{
				if(jaar % 400 === 0)
				{
					return true;
				}
			}
		}
		return false;
	};


	this.geefAantalDagenInMaand = function(maand, jaar)
	{
		var dagenInMaand = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

		if(this.isSchrikkeljaar(jaar) && maand === 1)
		{
			return 29;
		}
		
		return dagenInMaand[maand];
	};


	this.isVandaag = function(dag, maand, jaar)
	{
		var vandaag = new Date();
		return vandaag.getDate() == dag &&
			vandaag.getMonth() == maand &&
			vandaag.getFullYear() == jaar;
	};

	this.toonOfVerbergKalender = function()
	{
		var zichtbaar = document.getElementById(this.objectNaam + '_div').style.visibility;
		var hoogte;
		var overflow;

		if(zichtbaar == "hidden")
		{
			overflow = "visible";
			zichtbaar = "visible";
			hoogte = "170px";
			this.updateKalender();
		}
		else
		{
			overflow = "hidden";
			zichtbaar = "hidden";
			hoogte = 0;
		}

		document.getElementById(this.parentObject).style.overflow = overflow;
		document.getElementById(this.objectNaam + '_div').style.height = hoogte;
		document.getElementById(this.objectNaam + '_div').style.visibility = zichtbaar;
	};


	this.kiesDatum = function(dag, maand, jaar)
	{
		var tijdString = '';
		
		if(this.alleenDatum == 0)
		{
			var uur = document.getElementById(this.objectNaam + '_uur').value;
			var minuut = document.getElementById(this.objectNaam + '_minuut').value;
			
			tijdString = ' ' + uur + ':' + minuut;
		}
		
		var datumString = (dag < 10 ? '0' : '') + dag + "-" + (maand < 9 ? '0' : '') + (maand + 1) +"-" + jaar;
		document.getElementById(this.updateObject).value = datumString + tijdString;
		this.toonOfVerbergKalender();
	};

	this.updateTijd = function()
	{
		var tijdString = '';
		
		var uur = document.getElementById(this.objectNaam + '_uur').value;
		var minuut = document.getElementById(this.objectNaam + '_minuut').value;
		tijdString = ' ' + uur + ':' + minuut;
		
		var datumString = document.getElementById(this.updateObject).value.substring(0,10);
		
		document.getElementById(this.updateObject).value = datumString + tijdString;
	};


	this.updateKalender = function()
	{
				var d = document.getElementById(this.objectNaam + '_maandtabel');
		if(d !== null)
		{
			d.parentNode.removeChild(d);
		}

		var dag;
		var datum = new Date();
		var maand = document.getElementById(this.objectNaam + '_maand').value;
		var jaar = document.getElementById(this.objectNaam + '_jaar').value;

		datum.setFullYear(jaar);
		datum.setMonth(maand);
		datum.setDate(1); 
	    var datumblok 	= document.getElementById(this.objectNaam + "_tabeldiv");
	    var maandtabel	= document.createElement("table");
	    var tblbody		= document.createElement("tbody");
        var row 		= document.createElement("tr");
		var cell;
		var cellText;
		var link;
		var i;

		for(i = 0; i < 7; i++)
		{
			cell = document.createElement("th");
            cellText = document.createTextNode(dagen[i]);
            cell.appendChild(cellText);
			cell.style.width="14%";
            row.appendChild(cell);
		}		
		tblbody.appendChild(row);
		row = document.createElement("tr");

		for(dag = 0; dag < datum.getDay(); dag++)
		{
            cell = document.createElement("td");
            cellText = document.createTextNode(" ");
            cell.appendChild(cellText);
            row.appendChild(cell);
		}

		for(i = 1; i <= this.geefAantalDagenInMaand(maand, jaar); i++)
		{
			if(dag === 0)
			{
	            row = document.createElement("tr");
			}

            cell = document.createElement("td");
            cellText = document.createTextNode(i);
			link = document.createElement("a");
			link.setAttribute("href", document.location.href+"#");
			link.onclick = new Function(this.objectNaam + '.kiesDatum(' + i + ', ' + maand + ', ' + jaar + ');');
            link.appendChild(cellText);
			link.style.color="#ca5d60";
			cell.appendChild(link);

			cell.style.verticalAlign="middle";
			cell.style.padding="0";
			cell.style.backgroundColor=(dag === 0 || dag === 6) ? "#EDEDED" : "white";
			if(this.isVandaag(i, maand, jaar))
			{
				cell.style.backgroundColor="#4d4d4c";
			}
            row.appendChild(cell);
			dag++;

			if(dag === 7)
			{
				dag = 0;
	            tblbody.appendChild(row);
			}
		}

		if(dag > 0)
		{
			for(i=dag; i < 7; i++)
			{
				cell = document.createElement("td");
                cellText = document.createTextNode(" ");
                cell.appendChild(cellText);

                row.appendChild(cell);

				if(i === 6)
				{
	            	tblbody.appendChild(row);
				}
			}
		}

        maandtabel.appendChild(tblbody);        
		maandtabel.setAttribute("class", "kalender");
		maandtabel.setAttribute("id", this.objectNaam + "_maandtabel");
		maandtabel.style.textAlign="center";
		maandtabel.style.margin="0";
		maandtabel.style.backgroundColor="#d6d3ce";

		datumblok.appendChild(maandtabel);
	};
}
