var days = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
var months = ["January","February","March","April","May","June","July","August","September","October","November","December"];
var param;
var element;
var progtable;
var lastMonth = -1;
var rowstyle = "stdrow";
var lastWeek = -1;

function getProgramme(param,element) {
	this.param = param.toLowerCase();
	this.element = document.getElementById(element);
	var xmlhttp = (window.XMLHttpRequest) ? new XMLHttpRequest() : ((window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : null);
	xmlhttp.open("GET","prog.txt",true);

	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
				var data = xmlhttp.responseText;
				if(data != null)
				handler(data);
		}
	}
	xmlhttp.send(null);
}

function handler(data) {
	var prog;
	var IEver = getInternetExplorerVersion();
	if (IEver < 0 || IEver >= 8.0) prog = JSON.parse(data);
	else prog = eval("(" + data + ")");
	if (element.tagName == "TABLE") progtable = element;
	else if (element.tagName == "DIV") progtable = element.appendChild(document.createElement("table"));
	if (progtable) {
		var today = new Date();
		for (var i = 0;i < prog.length;i++) {
			if (prog[i].type != "event") {
				var date = new Date(prog[i].date);
				if (date.getTime() + 43200000 >= today.getTime()) {
					var weekNumber = getWeekNumber(date);
					if (weekNumber != lastWeek) {
						if (lastWeek < 0) rowstyle = "thisweek";
						else rowstyle = (rowstyle == "stdrow" ? "altrow" : "stdrow");
						lastWeek = weekNumber;
					}
					var thisMonth = date.getMonth();
					if ((param == "all" && prog[i].type.substr(0,2) != "mw") || (param == "thisweek" && rowstyle == "thisweek")) {			
						if (param == "all" && lastMonth != thisMonth) {
							var monthRow = progtable.insertRow(progtable.rows.length);
							monthRow.className = "monthheading";
							var monthCell = monthRow.insertCell(monthRow.cells.length);
							monthCell.colSpan = 4;
							monthCell.appendChild(document.createTextNode(months[thisMonth]));
							lastMonth = thisMonth;					
						}
						var thisRow = progtable.insertRow(progtable.rows.length);
						if (param == "all") thisRow.className = rowstyle;
						var dateCell = thisRow.insertCell(thisRow.cells.length);
						dateCell.appendChild(document.createTextNode(days[date.getDay()] + " " + date.getDate() + " " + months[date.getMonth()].substr(0,3)));
						if (prog[i].type.substr(0,2) == "mw") {
							var startCell = thisRow.insertCell(thisRow.cells.length);
							startCell.colSpan = 3;
							startCell.appendChild(document.createTextNode(prog[i].start + ", see "));
							var forumlink = document.createElement("a");
							forumlink.href = "http://ramblerseastcheshire.org.uk/tinc?key=DPIRAGBg&start=-1&reverse=1";
							forumlink.target = "_blank";
							startCell.appendChild(forumlink);
							forumlink.appendChild(document.createTextNode("forum"));
							startCell.appendChild(document.createTextNode(" for details"));
						}
						else {
							dateCell.appendChild(document.createElement("br"));
							dateCell.appendChild(document.createTextNode(prog[i].time));
							var startCell = thisRow.insertCell(thisRow.cells.length);
							startCell.appendChild(document.createTextNode(prog[i].start));
							if (prog[i].web) {
								startCell.appendChild(document.createElement("br"));
								var maplink = document.createElement("a");
								maplink.href = prog[i].web;
								maplink.target = "_blank";
								startCell.appendChild(maplink);
								maplink.appendChild(document.createTextNode(prog[i].gridref));
							}
							var distCell = thisRow.insertCell(thisRow.cells.length);
							distCell.appendChild(document.createTextNode(prog[i].distance));
							var gradeCell = thisRow.insertCell(thisRow.cells.length);
							gradeCell.appendChild(document.createTextNode(prog[i].type ? prog[i].type : ""));
							gradeCell.appendChild(document.createElement("br"));
							gradeCell.appendChild(document.createTextNode(prog[i].grade));
						}
					}
				}
			}
		}
	}
}

function getWeekNumber(date) {
	var jan1 = new Date("1/1/" + date.getFullYear());
	jan1 = jan1.getTime() - (jan1.getDay() - 2 + (jan1.getDay() < 2 ? 7 : 0)) * 86400000;
	return parseInt((date.getTime() - jan1) / 604800000);
}

function getInternetExplorerVersion() {
	var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
	return re.exec(navigator.userAgent) ? parseFloat(RegExp.$1) : -1;
}

