
var daynames = Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
var global_params = Array();
function date_query_string(){
	url_string = "";
	var sep = "";
	if (global_params["m"]){
		var m = global_params["m"];
		if (m < 0){
			m = "0" + m;
		}
		url_string = "m=" + m;
		sep = '&';
	}
	if (global_params["y"]){
		url_string = url_string + sep + "y=" + global_params["y"];
		sep = '&';
	}
//	if (global_params["d"]){
//		url_string = url_string + sep + "d=" + global_params["d"];
//		sep = '&';
//	}


	return(url_string);
}
function event_date_string(){
	url_string = "";
	if (global_params["m"] && global_params["y"]){
		var y = global_params["y"];
		var m = global_params["m"];
		if (m < 0){
			m = "0" + m;
		}
		url_string = "event_month=" + y + "-" + m;
	}
	return(url_string);
}

function extra_query_string(){
	url_string = "";
	var sep = "";
//	if (global_params["m"] && global_params["y"]){
//		var y = global_params["y"];
//		var m = global_params["m"];
//		if (m < 0){
//			m = "0" + m;
//		}
//		url_string = "event_month=" + y + "-" + m;
//		sep = "&";
//	}
	if (global_params["r"]){
		url_string = url_string + sep + "r=" + global_params["r"];
		sep = "&";
	}
	if (global_params["t"]){
		url_string = url_string + sep + "t=" + global_params["t"];
		sep = "&";
	}	
	if (global_params["g"]){
		url_string = url_string + sep + "g=" + global_params["g"];
		sep = "&";
	}	
    return(url_string);
}

function xml_calendar_block(xmldoc, url, styleclass, updatemode){

	var active_date = Array();

	var resurl = url.replace(/.*xcal_diary.php/g,'hdiary.php');
	var urlstub = "xcal_diary.php";

	document.getElementById("calendar").style.visibility="visible";

	document.getElementById("calendar").innerHTML = "";
//	document.getElementById("calendar").appendChild(document.createTextNode("Here..."));
		
	var xmlrows = xmldoc.getElementsByTagName("calendar");
	var text;
// alert("xmlrows " + xmlrows.length);
	var matches = false;
	for (var r=0; r < xmlrows.length; r++){

		var xmlrow = xmlrows[r];

		var monthyear = xmlrow.getAttribute("monthyear");
		var xmldays = xmlrow.getElementsByTagName("days")[0];
		var days = parseInt(xmldays.firstChild.data);
		var xmlmonth = xmlrow.getElementsByTagName("month")[0];
		var month = parseInt(xmlmonth.firstChild.data);
		var xmlyear = xmlrow.getElementsByTagName("year")[0];
		var year = parseInt(xmlyear.firstChild.data);

		global_params["y"] = year;
		global_params["m"] = month;

		var xmlstartday = xmlrow.getElementsByTagName("startday")[0];
		var start_day = parseInt(xmlstartday.firstChild.data);

		var xmlmatches = xmlrow.getElementsByTagName("matches")[0];
		var matches = parseInt(xmlmatches.firstChild.data);


 		var table = document.createElement("table");
		table.setAttribute("cellSpacing", "0");
		table.setAttribute("cellPadding", "0");
		table.setAttribute("border", "0");

		if (styleclass){
			table.className = styleclass;
		}

		var thead = document.createElement("thead");
		var header = document.createElement("tr");

		var prev = document.createElement("th");
		prev.setAttribute("class","lbarrow");

		if(prev.colSpan){
			prev.colSpan=1;
		} else {
			prev.setAttribute("colspan","1");
		}

		var xmlprevious = xmlrow.getElementsByTagName("previous")[0];
		var prevcount = parseInt(xmlprevious.firstChild.data);

		if (prevcount > 0){
			var prevanchor = document.createElement("a");
			var py = year;
			var pm = month - 1;
			if (pm <= 0){
				pm = 12;
				py = py - 1;
			}
			
			prevanchor.setAttribute("href",urlstub+"?m=" + pm + "&y=" + py + '&' + qs);
	
			prevanchor.onclick = function (){
				get_calendar(this.href, styleclass, updatemode);
				return false;
			};
	
	//		prevanchor.attachEvent("onClick","return get_calendar(this, \"" + styleclass + "\", \"" + updatemode + "\")");
			
	// now create clickable text
	
			prevanchor.appendChild(document.createTextNode("<"));
		
			prev.appendChild(prevanchor);
		} else {
			prev.appendChild(document.createTextNode("\u00a0"));
		}

		var caption = document.createElement("th");
		if (caption.colSpan){
			caption.colSpan=5;
		} else {
			caption.setAttribute("colspan","5");
		}
		caption.setAttribute("align","center");

		if (matches){
			var monthanchor = document.createElement("a");
		} else {
			var monthanchor = document.createElement("b");
		
		}
		var fmonth = month;
		if (fmonth < 10){
			fmonth = "0" + fmonth;
		}
		if (matches){
			var qs = extra_query_string();
			
			var murl = "diary.php?event_month=" + year + "-" + fmonth + '&' + qs;
	
			monthanchor.setAttribute("href", murl);
			monthanchor.appendChild(document.createTextNode(monthyear));
		} else {
			monthanchor.appendChild(document.createTextNode(monthyear));		
		}
		caption.appendChild(monthanchor);

		var next = document.createElement("th");

		if (next.colSpan){
			next.colSpan=1;		
		} else {
			next.setAttribute("colspan","1");
		}
		next.setAttribute("align","right");
		var xmlnext = xmlrow.getElementsByTagName("next")[0];
		var nextcount = parseInt(xmlnext.firstChild.data);

		if (nextcount > 0){


			var nextanchor = document.createElement("a");
			var ny = year;
			var nm = month + 1;
			if (nm > 12){
				nm = 1;
				ny = ny + 1;
			}
			nextanchor.setAttribute("href",urlstub+"?m=" + nm + "&y=" + ny + '&' + qs);
	//		nextanchor.attachEvent("onClick","return get_calendar(this, \"" + styleclass + "\", \"" + updatemode + "\")");
			nextanchor.onclick = function (){
				get_calendar(this.href, styleclass, updatemode);
				return false;
			};
					
	// now create clickable text
			nextanchor.appendChild(document.createTextNode(">"));
	
			next.appendChild(nextanchor);
		} else {
			next.appendChild(document.createTextNode("\u00a0"));
		}

		header.appendChild(prev);
		header.appendChild(caption);
		header.appendChild(next);

		thead.appendChild(header);
		table.appendChild(thead);
	
		var tbody = document.createElement("tbody");

		table.appendChild(tbody);
	
		var row = document.createElement("tr");
	
		for (var c=0;c<daynames.length;c++){
			var cell = document.createElement("td");
			
			var label = document.createElement("b");
			label.appendChild(document.createTextNode(daynames[c].substring(0,1) + "\u00a0\u00a0"));
			cell.appendChild(label);
			row.appendChild(cell);
		}
		tbody.appendChild(row);

        var mday = 1 - start_day;

		var dayrows = xmlrow.getElementsByTagName("day");			
// alert(dayrows.length);
		for (var c = 0; c < dayrows.length; c++){
			var dayrow = dayrows[c];
//			alert(dayrow);
			var daynumber = parseInt(dayrow.getAttribute("number"));
			var xmldayname = dayrow.getElementsByTagName("dayname")[0];
			var dayname = xmldayname.firstChild.data;
			var xmldayentry = dayrow.getElementsByTagName("entry")[0];
			var dayentry = xmldayentry.firstChild.data;
			if (dayentry){
				active_date[daynumber] = dayentry;
			}		
		}

		var ac=0;
		while (mday <= days){
			var row = document.createElement("tr");
			for(var wday = 0; wday < 7; wday++){
				var cell = document.createElement("td");				
				if (mday > 0 && mday <= days) {
					if (active_date[mday]){
						var dt = active_date[mday];
						anchor = document.createElement("a");
						ac++;
						var ldate = mday + " " + month + " " + year;
						var id="C" + dt;
						var eqs=extra_query_string();
						if (eqs) eqs = "&" + eqs;
						anchor.setAttribute("href","diary.php?event_date=" + dt + eqs);
						anchor.setAttribute("date",dt);
						anchor.setAttribute("id",id);
						anchor.onclick = function (){
							load_result(this.href);
							return false;
						};
						anchor.Id = id;
                        var mds = "\u00a0\u00a0" + mday + "\u00a0";
                        if (mday < 10){
                        	mds = "\u00a0\u00a0" + mds;
                        }
						anchor.appendChild(document.createTextNode(mds));
						
						cell.appendChild(anchor);

					} else {
						cell.appendChild(document.createTextNode("\u00a0\u00a0" + mday + "\u00a0"));
					}

				} else {
					cell.appendChild(document.createTextNode("\u00a0\u00a0\u00a0"));
				}
				row.appendChild(cell);
				mday++;
			}
			tbody.appendChild(row);			
		}
		var hmrow = document.createElement("tr");
		var hmcell = document.createElement("th");				
		if (next.colSpan){
			hmcell.colSpan=7;		
		} else {
			hmcell.setAttribute("colspan","7");
		}


		if (matches){
			var hmtext = document.createElement("a");
			hmtext.setAttribute("href", murl);
			hmtext.appendChild(document.createTextNode("Show Full Month"));
	
		} else {
			var hmtext = document.createElement("b");		
			hmtext.setAttribute("color", "#ff0000");

			hmtext.appendChild(document.createTextNode("No Matching Events"));

		}
		hmcell.appendChild(hmtext);
		hmrow.appendChild(hmcell);

		tbody.appendChild(hmrow);			

		document.getElementById("calendar").appendChild(table);
		
	}

	eventresults = document.getElementById("pageheading");
	if (eventresults){
		eventresults.innerHTML = " &nbsp;";
	
		eventresults = document.getElementById("EventResults");
		eventresults.innerHTML = "<div class=\"Loading\"><img src=\"Images/loading.gif\"> Loading events</div>";
	
		var request2 = HTTP.newRequest();
		request2.onreadystatechange = function() {
			if (request2.readyState==4) { 
				if (request2.status == 200){
					diary_result(request2.responseText, resurl);
				}
			}
		}
		request2.open("GET", resurl, true);
		request2.setRequestHeader("User-Agent", "XMLHttpRequest");
		request2.send(null);
	}

}

function load_result(resurl){

	eventresults = document.getElementById("EventResults");
	if (eventresults) {
		var resurl = resurl.replace(/.*diary.php/g,'hdiary.php');
		eventresults.innerHTML = "<div class=\"Loading\"><img src=\"Images/loading.gif\"> Loading events</div>";
		eventhdg = document.getElementById("pageheading");
		eventhdg.innerHTML = " &nbsp;";
	
		var request2 = HTTP.newRequest();
		request2.onreadystatechange = function() {
			if (request2.readyState==4) { 
				if (request2.status == 200){
					diary_result(request2.responseText, resurl);
				}
			}
		}
		request2.open("GET", resurl, true);
		request2.setRequestHeader("User-Agent", "XMLHttpRequest");
		request2.send(null);
	} else {
		document.href=result;
	}


}


function diary_result(htmltext){

	var x = htmltext.indexOf("<title");
	x = htmltext.indexOf(">", x);    
	var y = htmltext.lastIndexOf("</title>"); 
	var heading = htmltext.slice(x + 1, y);

	var x = htmltext.indexOf("<body");
	x = htmltext.indexOf(">", x);    
	var y = htmltext.lastIndexOf("</body>"); 

	var result = htmltext.slice(x + 1, y);

	var headtarget = 'pageheading';
	var restarget = 'EventResults';
	headtarget = document.getElementById(headtarget);
	headtarget.innerHTML =  heading;
	restarget = document.getElementById(restarget);
	restarget.innerHTML =  result;

}

function get_calendar(url, styleclass, updatemode){
// alert(url);
	var qs = "";
	var es = "?";
	if (url.indexOf('?') <= 0){
// alert("url index of ? = " + url.indexOf('?'));
		qs = date_query_string();
// alert("qs " + qs);
		if (qs.length){
			qs = '?' + qs;
			es = '&';
		}
	} else {
		es = '&';
	}
	eqs = extra_query_string();
// alert("eqs " + eqs);
	if (eqs.length > 0){
		qs = qs + es + eqs;
	}
	url =  url + qs;
	var request = HTTP.newRequest();
	request.onreadystatechange = function() {
		if (request.readyState==4) { 
			if (request.status == 200){
				xml_calendar_block(request.responseXML, url, styleclass, updatemode);
			}
		}
	}
	request.open("GET", url, true);
	request.setRequestHeader("User-Agent", "XMLHttpRequest");
	request.send(null);


	return(false);
}


function get_cal(form){
	var head = "";
	var calurl = "diary.php";
	if (form.g[form.g.selectedIndex].value){
		var head = head + form.g[form.g.selectedIndex].text;
		global_params["g"] = form.g[form.g.selectedIndex].value;
	} else {
		var head = head + "All";			
		global_params["g"] = "";
	}
	if (form.t[form.t.selectedIndex].value){
		var head = head + " " + form.t[form.t.selectedIndex].text;		
		global_params["t"] = form.t[form.t.selectedIndex].value;

	} else {
		var head = head + " Dance Events";			
		global_params["t"] = "";

	}
	if (form.r[form.r.selectedIndex].value){
		global_params["r"] = form.r[form.r.selectedIndex].value;
		var head = head + " in " + form.r[form.r.selectedIndex].text;		
	} else {
		global_params["r"] = "";
	}
	
	heading = document.getElementById("pageheading");
//	heading.innerHTML = head;
	heading.innerHTML = "&nbsp;";
	
	get_calendar('xcal_diary.php', 'updcal', false);	

	return(false);
}

function ExpandDates(id,text){
	document.getElementById(id).innerHTML = text;
	return(false);
}
