glendon={};
glendon.calendar={}
glendon.calendar.dayDetailDivs = {};
glendon.calendar.requestList = new Array();
glendon.calendar.generateDcode = function(d){
	return new String(d.Date.getFullYear())+ new String(d.Date.getMonth())+new String(d.Date.getDate());
};
glendon.calendar.getDayDiv = function (dcode){
	if(typeof glendon.calendar.dayDetailDivs[dcode] =="undefined"){
		glendon.calendar.dayDetailDivs[dcode] = document.createElement('div');
	}
	return glendon.calendar.dayDetailDivs[dcode]; 
}
glendon.calendar.inited=false
glendon.calendar.init = function(){
	xGUI.LoadOverlib();
	glendon.calendar.temp=xGUI.ajax.Container.find("mywbCalendarBox", "main").addEventListener('update', glendon.calendar.onCalendarLoaded)
}
glendon.calendar.onCalendarLoaded = function(container){
	//if(glendon.calendar.inited)return;
	xGUI.console('onCalendarLoaded');
	glendon.calendar.inited=true;
	
	var c = $c('mywbCalendarMonthbox');
	if(c){
		glendon.calendar.attach();
	}else{
		xGUI.Controllers.addEventListener('ControllerRegistered', glendon.calendar.registered);
	}
}

glendon.calendar.attach = function (ctrl){
	$c("mywbCalendarMonthbox").addEventListener('dayMouseOver', glendon.calendar.onDayMouseOver);
	$c("mywbCalendarMonthbox").addEventListener('dayMouseOut', glendon.calendar.onDayMouseOut);
	xGUI.eventManager.addEventListener('dayLoaded', glendon.calendar.dayLoaded);
	
	var e=$('calendarInfo');
	if(e){
		xGUI.DOM.Window.CallWhenLoaded(glendon.calendar.loadCurrent);
	}
	
}


glendon.calendar.registered = function (ctrl){
	if(ctrl.id='mywbCalendarMonthbox'){
		glendon.calendar.attach();
	}
}

glendon.calendar.loadCurrent = function(){
	var d;
	if(d=$c("mywbCalendarMonthbox").getDay(new Date())){
		glendon.calendar.onDayMouseOver(d);
	}
}

glendon.calendar.ClosePreviousRequests=function(){
	var r; 
	while(r=glendon.calendar.requestList.shift()){
		r.Cancel();
	}
}
glendon.calendar.dayLoaded = function(args){
	var d = glendon.calendar.getDayDiv(args.dcode), e;
	d.innerHTML = args.content
	d.glendonLoaded=true;
	glendon.calendar.setInfoboxContent(args.content);
}
glendon.calendar.onDayMouseOver = function(d){
	if(!d.hasEvent()) return;
	var e=$('calendarInfo');
	if(e){
		xGUI.DOM.show(e);
		xGUI.ajax.setLoadingView('calendarInfo');
	}else{
		overlib('<div id="dayDetails"></div>');
		xGUI.ajax.setLoadingView('dayDetails');
	}
	
	var dcode = glendon.calendar.generateDcode(d);
	var details = glendon.calendar.getDayDiv(dcode); 
	if(typeof(details.glendonLoaded)!='undefined'){
		glendon.calendar.setInfoboxContent(details.innerHTML);
		return;
	}
	
	glendon.calendar.ClosePreviousRequests();
	glendon.calendar.requestList.push((new xGUI.ajax.Event('glendonCalendarAjaxApp', 'GetDayDetails', {year: d.Date.getFullYear(), day:d.Date.getDate(), month:d.Date.getMonth()+1, "dcode":dcode}, 'server', true)).send());
}

glendon.calendar.setInfoboxContent=function(content){
	var e=$('calendarInfo');
	if(e){
		e.innerHTML = content;
	}else{
		e = $('dayDetails');
		if(e)e.innerHTML = content;
	}
}
glendon.calendar.onDayMouseOut = function(d){
	var e=$('calendarInfo');
	if(e){
		//xGUI.DOM.hide(e);
	}else{
		nd();
	}
}
