var IE = document.all?true:false
if (!IE) document.captureEvents(Event.MOUSEMOVE)
//document.onmousemove = mouseTracker;

var Days = new Array("Ma","Di","Wo","Do","Vr","Za","Zo");
var Months = new Array("Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December");
var MouseX = 0;
var MouseY = 0;
var house = 0;
var jobs = new Array();

function selectDate(element){
	//Determine element
	switch(element.dType){
		case 'week':
			//alert("week " + element.fullDate);
			break;
		case 'day':
			//alert("day " + element.fullDate);
			break;
		case 'month':
			//alert("month " + element.fullDate);
			break;
	}
}
function initCalendar(elementID, th){
	var cal = document.getElementById(elementID);
	var currentTime = new Date();
	house = th;
	drawCalendar(cal, currentTime.getMonth()+1, currentTime.getFullYear());
}
function getSchedule(Month, Year){
	jobs = new Array();

	var xmlhttp = null;

	if (window.XMLHttpRequest){
		xmlhttp=new XMLHttpRequest();
	}else{
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
 
	xmlhttp.open("GET","./cal.php?month=" + Month + "&year=" + Year + "&house=" + house,false);
	xmlhttp.send();


	if(xmlhttp.status == 200){
		var tjobs = xmlhttp.responseXML.getElementsByTagName("day");

		for(var i = 0 ; i < tjobs.length ; i++){
			if(tjobs[i].childNodes[0].nodeValue == 'true'){
				jobs[i+1] = new Array("Bezet","Bezet");
			}
		}
	}
}
function addSchedule(cal){
	for(var i = 1 ; i <= 31 ; i++){
		if(jobs[i]){
			var curDayEle = document.getElementById("eigCal_day" + i);
			curDayEle.className = "eigCal_curMonthJobTD";
			var job = jobs[i];
		}
	}
}
function prevMonth(){
	alert("prev");
}
function nextMonth(){
	alert("next");
}
function setLoading(load){
	var top = document.getElementById('eigCal_top');
	
	if(load){
		//top.style.backgroundColor = "#ff0000";
	}else{
		top.style.backgroundColor = "";
	}	
	return 0;
}

function drawCalendar(cal, Month, Year){
	while(Month < 1){
		Month+=12;
		Year--;
	}
	while(Month > 12){
		Month-=12;
		Year++;
	}

	cal.innerHTML = "";
	var newTable = document.createElement("table");
	newTable.className = "eigCal_main";
	newTable.cellSpacing = "0px";
	var newTBody = document.createElement("tbody");

	var newTd = document.createElement("td");

	cal.appendChild(newTable);
	newTable.appendChild(newTBody);

	//Month and year
	var newTr = document.createElement("tr");
	var td = document.createElement("td");
	td.colSpan = "8";
	td.className = "eigCal_TopDateTD";

	var innerTable = document.createElement("table");
	innerTable.style.width = "100%";
	var innerTBody = document.createElement("tbody");
	var innerTr = document.createElement("tr");

	var innerTd = document.createElement("td");
	var button = document.createElement("img");
	innerTd.style.textAlign = "left";
	button.src="./img/lbutton.png";
	button.onclick = function(){drawCalendar(cal,Month-1,Year)};
	button.className = "eigCal_button";
	innerTd.appendChild(button);
	innerTr.appendChild(innerTd);

	var innerTd = document.createElement("td");
	innerTd.style.textAlign = "center";
	innerTd.innerHTML = "" + Year + " - " + Months[Month-1];

	innerTd.dType = "month";
	innerTd.fullDate = Year + "-" + Month;
	innerTd.onclick = function(){
						selectDate(this);
					}
	innerTr.appendChild(innerTd);
	innerTr.id = "eigCal_top";
	var innerTd = document.createElement("td");
	var button = document.createElement("img");
	innerTd.style.textAlign = "right";
	button.src="./img/rbutton.png";
	button.onclick = function(){drawCalendar(cal,Month+1,Year)};
	button.className = "eigCal_button";
	innerTd.appendChild(button);
	innerTr.appendChild(innerTd);

	innerTBody.appendChild(innerTr);
	innerTable.appendChild(innerTBody);
	td.appendChild(innerTable);

	newTr.appendChild(td);
	newTBody.appendChild(newTr);

	//Top day Description
	var newTr = document.createElement("tr");
	var td = document.createElement("td");
	newTr.appendChild(td);
	for(var i = 0 ; i < Days.length ; i++){
		var td = document.createElement("td");
		td.innerHTML = Days[i];
		td.className = "eigCal_topDescTD";
		newTr.appendChild(td);
	}
	newTBody.appendChild(newTr);


	var firstDayOfMonth = new Date(Year, Month-1, 1)
	var startDay = firstDayOfMonth.getDay()-1;
	if(startDay < 0)
		startDay+=7;
	var daysMonth = daysInMonth(Year, Month);
	var daysMonthPrev = daysInMonth(Year, Month-1);
	var day = 1;
	for(var j = 0 ; j < 6 ; j++){
		var newTr = document.createElement("tr");
		var td = document.createElement("td");

		//Week desc
		td.innerHTML = new Date(Year, Month-1, -startDay + day).getWeek();
		td.dType = "week";
		td.fullDate = Year + "-" + td.innerHTML;
		td.onclick = function(){
							selectDate(this);
						}
		td.className = "eigCal_weekDescTD";
		newTr.appendChild(td);
		for(var i = 0 ; i < startDay ; i++){
			var td = document.createElement("td");
			td.innerHTML = daysMonthPrev - (startDay - i -1);
			td.className = "eigCal_prevMonthTD"
			newTr.appendChild(td);
		}
		for(var i = startDay ; i < 7 ; i++){
			var td = document.createElement("td");
			if(day > daysMonth){
				td.innerHTML = day - daysMonth;
				td.className = "eigCal_nextMonthTD"
			}else{
				td.innerHTML = day;
				td.id = "eigCal_day" + day;
				td.dType = "day";
				td.fullDate = Year + "-" + Month + "-" + day;
				td.onclick = function(){
							selectDate(this);
						}
				td.className = "eigCal_curMonthTD"
			}
			day++;
			newTr.appendChild(td);
		}

		newTBody.appendChild(newTr);
		startDay = 0;
	}
	setLoading(true);
	getSchedule(Month,Year);
	addSchedule(cal);
	setLoading(false);
}
function daysInMonth(iYear, iMonth){
	if(iMonth == 1 || iMonth == 3 || iMonth == 5 || iMonth == 7 || iMonth == 8 || iMonth == 10 || iMonth == 12){
		return 31;
	}else if(iMonth == 2){
		if(!(iYear % 4)){
			return 29;
		}else{
			return 28;
		}
	}else{
		return 30;
	}
}
function showJob(element){
	var job = jobs[parseInt(element.id.slice(10,element.id.length))];

	var div = document.createElement("div");
	div.className = "eigCal_jobDesc";
	var table = document.createElement("table");
	table.style.width = "100%";
	var tbody = document.createElement("tbody");
	div.appendChild(table);
	table.appendChild(tbody);

	var tr = document.createElement("tr");
	var td = document.createElement("td");
	td.onmousedown = function(){
					var div = this.parentNode.parentNode.parentNode.parentNode;
					div.isMoving = true

					moveWindow(div,MouseX-parseInt(div.style.left),MouseY-parseInt(div.style.top))
				};
	td.onmouseup = function(){
					this.parentNode.parentNode.parentNode.parentNode.isMoving = false
				};
	td.innerHTML = job[0];

	td.className = "eigCal_jobTitle";
	tr.appendChild(td);
	var td = document.createElement("td");
	td.style.textAlign = "right";
	var close = document.createElement("img");
	close.src = "./close.png";
	close.alt = "X";
	close.className = "eigCal_button";
	close.style.width = "9px";
	close.onclick = function(){hideJob(div)};
	td.appendChild(close);
	tr.appendChild(td);
	tbody.appendChild(tr);

	var tr = document.createElement("tr");
	var td = document.createElement("td");
	td.colspan = "2";
	td.innerHTML = job[1];
	tr.appendChild(td);
	tbody.appendChild(tr);

	var posX = MouseX;
	if(posX > document.body.clientWidth - 300)
		posX = document.body.clientWidth - 300;
	if(posX < 0)
		posX = 0;

	div.style.left = posX + "px";
	div.style.top = MouseY + "px";

	document.body.appendChild(div);
}
function moveWindow(element,offX,offY){
	element.style.left = MouseX-offX;
	element.style.top = MouseY-offY;
	if(element.isMoving)
		setTimeout(function(){moveWindow(element,offX,offY)}, 10);
}
function hideJob(div){
	div.parentNode.removeChild(div);
}
/*function mouseTracker(e){
	if (IE) {
		tempX = event.clientX + document.body.scrollLeft
		tempY = event.clientY + document.body.scrollTop
	} else {
		tempX = e.pageX
		tempY = e.pageY
	}
	if (tempX < 0){tempX = 0}
	if (tempY < 0){tempY = 0}
	MouseX = tempX;
	MouseY = tempY;
}*/
Date.prototype.getWeek = function () {
	var target = new Date(this.valueOf());
	var dayNr = (this.getDay() + 6) % 7;

	target.setDate(target.getDate() - dayNr + 3);

	var jan4 = new Date(target.getFullYear(), 0, 4);

	var dayDiff = (target - jan4) / 86400000;

	var weekNr = 1 + Math.ceil(dayDiff / 7);

	return weekNr-1;
}

