var calendar_enableDebug = false;

var currentToolTip = null;

var contextMenu_events = new Array();

function calendar_tooltip(e,dayNum) {
	if(!e) e = window.event;

	if(currentToolTip) {
		if(dayNum) {
			var currentDayNum = currentToolTip.getAttribute("tooltip_dayNum");
			if(dayNum == currentDayNum) return false;
		}
		currentToolTip.style.display = "none";
		currentToolTip = null;
	}

	if(!dayNum) return false;

	currentToolTip = document.getElementById("tooltip_"+dayNum);
	if(currentToolTip) {
		// Selvitetään hiiren koordinaatit suhteessa KOKO dokumentin yläkulmaan ()
		if (e.pageX || e.pageY) {
			mouseX = e.pageX;
			mouseY = e.pageY;
		} else if(e.clientX || e.clientY) {
			mouseX = e.clientX;
			mouseY = e.clientY;
			mouseX += document.body.scrollLeft;
			mouseY += document.body.scrollTop;
		}

		currentToolTip.style.left = mouseX + 16;
		currentToolTip.style.top = mouseY + 2;
		currentToolTip.style.display = "block";
		currentToolTip.onmousemove = calendar_positionToolTip;
	}

	return false;
}

function calendar_positionToolTip(e) {
	if(!e) e = window.event;

	if(!currentToolTip) return false;

	// Selvitetään hiiren koordinaatit suhteessa KOKO dokumentin yläkulmaan ()
	if (e.pageX || e.pageY) {
		mouseX = e.pageX;
		mouseY = e.pageY;
	} else if(e.clientX || e.clientY) {
		mouseX = e.clientX;
		mouseY = e.clientY;
		mouseX += document.body.scrollLeft;
		mouseY += document.body.scrollTop;
	}
	currentToolTip.style.left = mouseX + 16;
	currentToolTip.style.top = mouseY + 2;
}

function calendar_edit(e,calendarId,dayNum) {
	if(!e) e = window.event;

	debugPrint("calendar_edit("+calendarId+","+dayNum+")", "calendar");

	var eventList = new Array();

	var dataEl = document.getElementById("events_"+dayNum);
	if(dataEl) {
		var children = dataEl.childNodes;
		if(children) for(i=0; i<children.length; i++) {
			var child = children.item(i);
			if(child.tagName == "FORM") {
				var fields = child.childNodes;
				if(fields) for(j=0; j<fields.length; j++) {
					field = fields.item(j);
					if(field.tagName == "INPUT") {
						if(field.name == "id") eventList.push(field.value);
					}
				}
			}
		}
	}

	if(eventList.length == 0) {
		// no events in cell, add new event
		calendar_add_event(calendarId,dayNum);
	} else if(eventList.length >= 1) {
		// event(s) in cell, must choose to edit (one), or add a new event

		// tyhjennetään contextMenu_events -menu
		while(contextMenu_events.pop()) {
			// nop
		}

		// lisätään eventLististä edit_event menuitemit
		for(i = 0; i < eventList.length; i++) {
			var eventId = eventList[i];
			var eventData = document.getElementById("event_"+eventId);

			var eventName = eventData.elements.name.value;
			for(var index=0; index<eventData.elements.length; index++) {
				if(eventData.elements[index].name.substr(0,10)=="userField_") {
					eventName = eventData.elements[index].value;
					break;
				}
			}
			contextMenu_events[i] = new Array('text', locale.calendar_editEvent + " '" + eventName + "'", '', 'calendar_edit_event('+calendarId+',"'+eventId+'")');
		}
		contextMenu_events[i] = new Array('text', locale.calendar_addEvent, '', 'calendar_add_event('+calendarId+',"'+dayNum+'")');

		if(contextMenu_events.length>0) {
			if(currentToolTip) {
				currentToolTip.style.display = "none";
				currentToolTip = null;
			}
			return contextMenu_open(e);
		}
	}

	if(e.preventDefault) e.preventDefault();
	e.cancelBubble = true;
	return false;
}

function calendar_edit_event(calendarId,eventId) {
	debugPrint("calendar_edit_event("+calendarId+","+eventId+")", "calendar");
	loadDialog("index.php?action=calendar&calendar-action=dialog&calendar-dialog=editEvent&calendar-calendarId="+calendarId+"&calendar-eventId="+eventId);
}

function calendar_add_event(calendarId,dayNum) {
	debugPrint("calendar_add_event("+calendarId+","+dayNum+")", "calendar");

	var data = "";
	var yearEl = document.getElementById("calendar_currentYear");
	data += "&calendar-year="+yearEl.value;
	var monthEl = document.getElementById("calendar_currentMonth");
	data += "&calendar-month="+monthEl.value;

	data = "action=calendar&calendar-action=dialog&calendar-dialog=editEvent&calendar-calendarId="+calendarId+"&calendar-day="+dayNum+data;

	loadDialog("index.php?"+data);
}

function calendar_save_event(form) {
	var data = "";
	data += "&calendar-eventId="+escape(form.elements.eventId.value);
	data += "&calendar-fk_calendar="+escape(form.elements.fk_calendar.value);

	data += "&calendar-pvm="+escape(form.elements.pvm.value);
	data += "&calendar-klo="+escape(form.elements.klo.value);

	var fieldList = form.elements.userFieldList.value.split(",");
	for(var i in fieldList) {
		if(fieldList[i]) {
			data += "&calendar-userField-"+fieldList[i]+"="+escape(form.elements['userField_'+fieldList[i]].value);
		}
	}

//	var data = "&calendar-name="+escape(form.elements.name.value);
//	data += "&calendar-details="+escape(form.elements.details.value);

	data = "index.php?action=calendar&calendar-action=saveEvent"+data;

	sendXMLHttp("POST",data, calendar_refresh_callback,0);

	closeDialog();
}

function calendar_delete_eventWithId(eventId) {
	var data = "";
	var yearEl = document.getElementById("calendar_currentYear");
	data += "&calendar-year="+yearEl.value;
	var monthEl = document.getElementById("calendar_currentMonth");
	data += "&calendar-month="+monthEl.value;
	data += "&calendar-eventId="+eventId;

	data = "index.php?action=calendar&calendar-action=deleteEvent"+data;

	sendXMLHttp("POST",data, calendar_refresh_callback,0);

}
function calendar_delete_event(form) {
	var data = "&calendar-eventId="+escape(form.elements.eventId.value);
	data += "&calendar-pvm="+escape(form.elements.pvm.value);

	data = "index.php?action=calendar&calendar-action=deleteEvent"+data;

	sendXMLHttp("POST",data, calendar_refresh_callback,0);
	closeDialog();
}

function calendar_refresh_callback(xmlhttp, param) {
	var cal = document.getElementById("calendar_month_container");
	cal.innerHTML = xmlhttp.responseText;
}
