function getScrollXY() 
{
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function findPos(obj) {
	var curleft = 0;
	var curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
		return [curleft,curtop];
	}
	return false;
}

/* Calendar Functions */

function showCalendar(month_offset)
{
	hideEvent();
	if (!month_offset) month_offset=0;
	var cal_container = document.getElementById('cal_container');
	cal_container.style.display = 'block';
	ajax('calendar.inc.php?action=calendar&month_offset='+month_offset,'calendarCompleteHandler');
	cal_container.innerHTML = '<p class="loading">Loading Calendar... <a href="javascript:hideCalendar()">Cancel</a></p>';	
	positionCalendar();
}

function calendarCompleteHandler(response)
{
	var cal_container = document.getElementById('cal_container');
	cal_container.innerHTML = response;	
	positionCalendar();
}

function positionCalendar()
{
	var cal_container = document.getElementById('cal_container');
	if (cal_container.style.display == 'none') return;
	document.body.style.overflow = 'hidden';	
	var scroll = getScrollXY();
	cal_container.style.left = scroll[0] + 'px';
	cal_container.style.top = scroll[1] + 'px';
}

function hideCalendar()
{
	hideEvent();
	var cal_container = document.getElementById('cal_container');
	cal_container.blur();
	cal_container.style.display = 'none';
	document.body.style.overflow = 'auto';
}

/* event_container Functions */

function showEvent(event_id,day,month_offset,link_obj,right)
{
	hideEvent();
	ajax('calendar.inc.php?action=event&id='+event_id+'&day='+day+'&month_offset='+month_offset,'eventCompleteHandler');
	/* Position event_container */
	var link_pos = findPos(link_obj);
	var cal_container = document.getElementById('cal_container');
	var event_container = document.getElementById('event_container');
	if (right) event_container.style.left = link_pos[0]-2+100+'px';
	else event_container.style.left = link_pos[0]-2-310+'px';
	if (right) event_container.className = 'event_right';
	else event_container.className = 'event_left';
	event_container.style.top = link_pos[1]-cal_container.scrollTop+'px';
}

function eventCompleteHandler(response)
{
	var event_container = document.getElementById('event_container');
	var event = document.getElementById('event');
	event.innerHTML = response;
	event_container.style.display = 'block';
}

function hideEvent()
{
	var event_container = document.getElementById('event_container');
	event_container.style.display = 'none';
}