var d = new Date();
var currentDay = d.getDate();
var currentMonth = d.getMonth();
var currentYear = d.getFullYear();
var activeMonth = d.getMonth();
var activeYear = d.getFullYear();
var currentSelection = null;

var events = new Array();

var N = new Array("January","February","March","April","May","June","July","August","September","October","November","December");

function leapYear(y){return(y%4==0&&y%100!=0||y%400==0)?true:false;}
function numDays(m,y){return [31,(leapYear(y)?29:28),31,30,31,30,31,31,30,31,30,31][m];}
function monthName(m){return N[m];}
addClass = function(e,c){e.className=c;return e;}

function getEvents(m,y){
	for(obj in events){
		delete events[obj];
	}
	new Request("getEvent.php","month="+m+"&year="+y,fillEvents);
}

function fillEvents(eventData){
	for(obj in eventData){
		if(eventData[obj] != null){
			if(events[eventData[obj].day] == undefined){events[eventData[obj].day] = [];}
			events[eventData[obj].day].push(eventData[obj]);
		}
	}
	initCalendar(d);
}


function nextMonth(dir){
	if(activeMonth == 11 && dir == 1){
		activeMonth = 0;
		activeYear++;
	} else if(activeMonth == 0 && dir == -1){
		activeMonth = 11;
		activeYear--;
	} else{
		activeMonth+=dir;
	}
	d = new Date(activeYear,activeMonth);
	getEvents(activeMonth,activeYear);
}


closeInfo = function(box){
	box.tween.play();
	box.tween2.play();
}

function initCalendar(d){
	var c = document.getElementById('calendar');
	
	while(c.hasChildNodes()){c.removeChild(c.firstChild);}

	var u = c.appendChild(document.createElement('ul'));
	u.appendChild(document.createTextNode('\n'));
	

	
	var title = addClass(u.appendChild(document.createElement('li')),"title")
	
	var prev = title.appendChild(document.createElement('a'));
	prev.href = "#";
	prev.onclick = function(){
		nextMonth(-1);
		return false;
	}
	prev.appendChild(document.createTextNode('<< '));
	
	title.appendChild(document.createTextNode( monthName(d.getMonth())+" "+d.getFullYear() ));
	
	var next = title.appendChild(document.createElement('a'));
	next.href = "#";
	next.onclick = function(){
		nextMonth(1);
		return false;
	}
	next.appendChild(document.createTextNode(' >>'));
	
	
	addClass(u.appendChild(document.createElement('li')),"header").appendChild(document.createTextNode("Su"));
	addClass(u.appendChild(document.createElement('li')),"header").appendChild(document.createTextNode("M"));
	addClass(u.appendChild(document.createElement('li')),"header").appendChild(document.createTextNode("T"));
	addClass(u.appendChild(document.createElement('li')),"header").appendChild(document.createTextNode("W"));
	addClass(u.appendChild(document.createElement('li')),"header").appendChild(document.createTextNode("Th"));
	addClass(u.appendChild(document.createElement('li')),"header").appendChild(document.createTextNode("F"));
	addClass(u.appendChild(document.createElement('li')),"header").appendChild(document.createTextNode("Sa"));
	u.appendChild(document.createTextNode("\n"));

	var temp = new Date(d.getFullYear(), d.getMonth(),1);
	
	var days = numDays(temp.getMonth(),temp.getFullYear());
	var cn = new Array();
	var rows = Math.ceil((days+(temp.getDay()))/7);
	for(var n=0;n<rows*7;n++){
		if(n < temp.getDay() || n >= (days+temp.getDay())){
			cn.push(null);
		} else {
			cn.push(n-(temp.getDay()-1));
		}
	}
	var r = 0;

	for(var i=0;i<rows;i++){
		for(var k=0;k<7;k++){
			var ah = document.createElement('a');
			ah.href = "#";
			ah.date = (d.getMonth()+1)+"-"+cn[r]+"-"+d.getFullYear();
			ah.fullDate = N[d.getMonth()]+" "+cn[r]+", "+d.getFullYear();
			
			var box = u.appendChild(document.createElement('li'));
			if(k == 0){
				box.id="row"+i;
			}
			box.appendChild(ah);
			if(cn[r] == null){
				ah.appendChild(document.createTextNode(""));
			} else {
				ah.appendChild(document.createTextNode(cn[r]));
			}
			u.appendChild(document.createTextNode("\n"));
			
			if(events[cn[r]]){
				ah.m = d.getMonth();
				ah.y = d.getFullYear();
				ah.d = cn[r];
				
				box.rowNum = i+1;
				box.className = "event";
				
				box.a = ah;
				box.a.appendChild(document.createElement('br'));

				box.info = document.createElement('li');
				box.info.appendChild(document.createElement('h2')).appendChild(document.createTextNode(N[d.getMonth()]+", "+cn[r]));
				
				
				//box.info.appendChild(document.createElement('div')).innerHTML = events[cn[r]].content;
				
				for(e in events[cn[r]]){
					box.info.appendChild(document.createElement('p')).appendChild(document.createTextNode(events[cn[r]][e].name));
					
					var moreInfo = box.info.appendChild(document.createElement('a'));
					moreInfo.href="events.php?month="+box.a.m+"&year="+box.a.y+"#event"+events[cn[r]][e].id;
					moreInfo.appendChild(document.createTextNode("More info..."));
					box.info.appendChild(moreInfo);
				}

				box.info.className = "info";
				
				box.onclick = function(){
					//--------------------------
					if(!this.tween){
						this.parentNode.insertBefore(this.info,document.getElementById("row"+this.rowNum));		
						this.tween = new Tween(this.info,"height",0,this.info.scrollHeight,250,'px',null);
						this.tween2 = new Tween(this,"backgroundPosition",0,-300,250,'px',"0 ");
						this.info.style.height = 0;
					}
					if(currentSelection){
						closeInfo(currentSelection);
					}
					if(currentSelection == this){
						currentSelection = null;
					} else {
						currentSelection = this;
					}
					this.tween.play();
					this.tween2.play();
					//--------------------------
					return false;
				}
				
			} else {
				ah.onclick = function(){
					return false;
				}	
			}
			r++
		}
	}
}