var Archive = {
	panel: null,
	yearlist: null,
	monthlist: null,
	
	year: null,
	
	MONTH_NAMES: [
		'January',
		'February',
		'March',
		'April',
		'May',
		'June',
		'July',
		'August',
		'September',
		'October',
		'November',
		'December'
	],

	minYear: null,
	minMonth: null,
	maxYear: null,
	maxMonth: null,
	
	init: function() {
		this.panel = $("archivepanel");
		if (this.panel.isInited) {
			return;
		}
		this.yearlist = $("yearlist");
		this.monthlist = $("monthlist");
		this.load();
	},
	
	loaded: function(text,xmlResponse) {
		var nodeMin = xmlResponse.getElementsByTagName("min")[0];
		var nodeMax = xmlResponse.getElementsByTagName("max")[0];
		this.minYear = nodeMin.getAttribute("year");
		this.minMonth = nodeMin.getAttribute("month");
		this.maxYear = nodeMax.getAttribute("year");
		this.maxMonth = nodeMax.getAttribute("month");
	
		for (var year = this.minYear; year <= this.maxYear; year++) {
			var item = document.createElement("li");
			var yearlink = document.createElement("a");
			yearlink.href = "#";
			yearlink.year = year;
			EventMan.addEvent(yearlink,"click",this.doYearClick, {scope: this});
			yearlink.innerHTML = year;
			item.appendChild(yearlink);
			if (year < this.maxYear) {
				var spacer = document.createTextNode(" - ");
				item.appendChild(spacer);
			}
			this.yearlist.appendChild(item);
		}
	},

	doError: function() {
		var txtError = document.createTextNode("Error loading archive.");
		this.panel.appendChild(txtError);
	},
	
	load: function() {
		this.panel.isInited = true;
		var ajax = new Ajax();
		ajax.params = "";
		ajax.onloaded = this.loaded.inScope(this);
		ajax.onerror = this.doError.inScope(this);
		ajax.execute("/getarchive.php");
	},

	gotoYear: function(year) {
		if (year == this.year) {
			return;
		}
		this.year = year;
		
		var links = this.yearlist.getElementsByTagName("a");
		for (var i = 0, len = links.length; i < len; i++) {
			if (links[i].year == year) {
				links[i].className = "active";
			} else {
				links[i].className = "";
			}
		}
	
		var startMonth = 0;
		var endMonth = 11;
		if (year == this.minYear) {
			startMonth = this.minMonth - 1;
		}
		if (year == this.maxYear) {
			endMonth = this.maxMonth - 1;
		}

		this.monthlist.innerHTML = "";
		for (var month = startMonth; month <= endMonth; month++) {
			var item = document.createElement("li");
			var monthlink = document.createElement("a");
			monthlink.href = "?page=home&year=" + year + "&month=" + (month + 1);
			EventMan.addEvent(monthlink,"click",doIndexLinkClick);
			monthlink.eventAdded = true;
			monthlink.innerHTML = this.MONTH_NAMES[month];
			item.appendChild(monthlink);
			this.monthlist.appendChild(item);
		}
	},
	
	doYearClick: function(e, ele) {
		this.gotoYear(ele.year);
		e.cancel();
	},
	
	show: function() {
		this.panel.style.visibility = "visible";
		this.gotoYear(this.maxYear);
	}
}
