var calendar_ids   = Array();
var calendar_views = Array();

function bb_calendar() {
	
}

function calendar_setup() {
	// alert("calendar.class.js:calendar_setup called");
	var calendars = document.getElementsByTagName("div");
	if(calendars && calendars.length > 0) {
		for(i=0,j=0;i<calendars.length;i++) {
			// if(console && console.log) { console.log(calendars[i].getAttribute("id")); }
			if(calendars[i].getAttribute && calendars[i].getAttribute("className")) {
				if(calendars[i].getAttribute("className").toLowerCase().match("calendar")) {
					calendar_ids[j] = calendars[i].getAttribute("id");
					// if(console && console.log) { console.log("calendar_setup() found calendar: " + calendars[i].getAttribute("id")); }
					j++;
				}
			} else {
				if(calendars[i].getAttribute("class")) {
					if(calendars[i].getAttribute("class").toLowerCase().match("calendar")) {
						calendar_ids[j] = calendars[i].getAttribute("id");
						// if(console && console.log) { console.log("calendar_setup() found calendar: " + calendars[i].getAttribute("id")); }
						j++;
					}
				}
			}
		}
	}
	
	// register calendar events
	if(calendar_ids && calendar_ids.length > 0) {
		for(i=0;i<calendar_ids.length;i++) {
			if(calendar_ids[i]) {
				if(console && console.log) { console.log("calendar_setup() found calendar: " + calendar_ids[i]); }
				
				(function() { // wrap the evaluation in a localised (preevaluated) scope to prevent the variables being overwritten later
					var id    = calendar_ids[i];
					var element = document.getElementById(id);
					var year  = ((element && element.getAttribute && element.getAttribute("year"))?element.getAttribute("year"):null);
					var month = ((element && element.getAttribute && element.getAttribute("month"))?element.getAttribute("month"):null);;
					
					// register the necessary calendar month prev function
					var anchor_obj = document.getElementById(calendar_ids[i]+"_anchor_prev");
					if(anchor_obj) {
						var _id = id;
						var _year = year;
						var _month = month;
						addEvent(anchor_obj,'onclick',function() { return calendar_month_change(_id,_year,_month,-1); });
					}
					// register the necessary calendar month next function
					var anchor_obj = document.getElementById(calendar_ids[i]+"_anchor_next");
					if(anchor_obj) {
						var _id = id;
						var _year = year;
						var _month = month;
						addEvent(anchor_obj,'onclick',function() { return calendar_month_change(_id,_year,_month,+1); });
					}
					// register any date events
					var _days_in_month = calendar_month_day_count(month,year);
					// console.log("days in month: "+_days_in_month);
					for(var j=0;j<_days_in_month;j++) {
						(function() {
							// console.log("iterating days in month: "+(j+1));
							
						})();
					}
				})();
			}
		}
	}
}

function calendar_month_day_count(month,year) {
	var ret = null;
	var days = [null,31,28,31,30,31,30,31,31,30,31,30,31];
	var year = ((year && year > 0)?year:((new Date).getFullYear()));
	var leap = ((year%4==0)?((year%100!=0)?true:((year%400==0)?true:false)):false);
	if(month && (month >= 1 && month <= 12) && days[month]) {
		if(leap && month == 2) {
			ret = 29; // feb has 29 days in a leap year
		} else {
			ret = days[month];
		}
	}
	return ret;
}

function calendar_month_change(id,year,month,delta) {
	if(console) { console.log("calendar_month_change("+id+","+year+","+month+","+delta+")"); }
	
	calendar_render(id,year,month,null,null);
	
	return false;
}

function calendar_render(id,year,month,day,view) {
	var ret = false;
	var element = document.getElementById(id);
	if(element) {
		// element.innerHTML = "hello";
		alert("calendar_render("+id+","+year+","+month+","+day+","+view+")");
	}
	return ret;
}

// addEvent(window,"onload",calendar_setup);

// alert("calendar.class.js:calendar_setup called");