/*
Events Calendar
L&S DC - 11/2006
*/

// "global" variables
var searchform; // main search form
var tab_dm; // date selection tabs
var tab_rng;
var tab_results; // search result tabs
var tab_detail;

var search_datebegin; // search parameters
var search_dateend;
var search_city;
var search_radius;
var search_park;
var search_type;
var search_keyword;

var results_container;
var results_header; // search result tbodies
var results_eventlist;
var results_detail;

var button_container; // holds buttons for event options

var tbody_caldays; // tbody for days in month
var prevyear; // month/year selection buttons
var prevmonth;
var nextyear;
var nextmonth;
var calmonth;

var SELECTED_EVENTS = []; // array to hold events that have been viewed
var SEARCH_QUERIES = []; // array to hold search url strings
var SEARCH_DATA = []; // array to hold events returned by ajax query
var STARTROW = 1; // holds results paging start row
var ENDROW = 1; // holds resutls paging end row

var NOW = new Date();
var STARTDATE; // for fullmonth calendar
var ENDDATE;

var POPUP_INVOKE = false;

// set "global" variables after page loads
addLoadEvent(function() {
		//calendar search page
		tab_dm = document.getElementById("tab_daymonth");
		tab_rng = document.getElementById("tab_daterange");
		tab_results = document.getElementById("tab_searchresults");
		tab_detail = document.getElementById("tab_searchdetail");
		
		searchform = document.getElementById("eventsearchform");
		search_datebegin = document.getElementById("date_start");
			try {
				var dd = new Date();
				search_datebegin.value = (dd.getMonth()+1)+"/"+dd.getDate()+"/"+dd.getFullYear();
			} catch(err) {
				//alert("Search Form Not Present");
			}
		search_dateend = document.getElementById("date_end");
		search_city = document.getElementById("sel_city");
		search_radius = document.getElementById("sel_radius");
		search_park = document.getElementById("sel_park");
		search_type = document.getElementById("sel_type");
		search_keyword = document.getElementById("txt_kwd");
		
		results_container = document.getElementById("resultscontainer");
		results_header = document.getElementById("results_header");
		results_eventlist = document.getElementById("results_eventlist");
		results_detail = document.getElementById("results_detail");
		
		button_container = document.getElementById("actionbuttons");
		
		// full calendar page
		tbody_caldays = document.getElementById("calendardays");
		prevyear = document.getElementById("prevyear");
		prevmonth = document.getElementById("prevmonth");
		nextyear = document.getElementById("nextyear");
		nextmonth = document.getElementById("nextmonth");
		calmonth = document.getElementById("calmonth");
		
		if(location.search.length) {
			loadqs = parseURLVarString();
			if(typeof loadqs["id"] != "undefined") {
				//alert("load event detail");
				getEventDetail(loadqs["id"]);
			} else {
				if (typeof loadqs["method"] == "undefined") {
					//alert("run default search");
					searchEvents(location.search+"&method=search");
				}
			}
		}		
	});

// control date search tabs
function toggleDateSearch(opt) {
	if(opt != "range") {
		tab_rng.src = tab_rng.src.replace(/_on\.gif/,"_off.gif");
		tab_dm.src = tab_dm.src.replace(/_off\.gif/,"_on.gif");
		setSearchEndDate("");
		toggleDisplay('flatjscalendar',true);
		toggleDisplay('daterageinput',false);
	} else {
		tab_rng.src = tab_rng.src.replace(/_off\.gif/,"_on.gif");
		tab_dm.src = tab_dm.src.replace(/_on\.gif/,"_off.gif");
		toggleDisplay('flatjscalendar',false);
		toggleDisplay('daterageinput',true);
	}
}

// control search result tabs
function toggleResultDisplay(opt) {
	clearData(button_container);
	if(!POPUP_INVOKE) {
		if(opt == "detail") {
			tab_detail.src = tab_detail.src.replace(/_off\.gif/,"_on.gif");
			tab_results.src = tab_results.src.replace(/_on\.gif/,"_off.gif");
			toggleDisplay(results_header,false);
			toggleDisplay(results_eventlist,false);
			toggleDisplay(results_detail,true);
			// update button options
			if(SELECTED_EVENTS.length) {
				var img_pe = document.createElement("IMG");
					img_pe.setAttribute("src","/_com/events/images/bt_printevent.gif");
					img_pe.style.marginRight = ".5em";
					img_pe.onclick = function() { return openPopupWindow('/_com/events/_event.htm?id='+SELECTED_EVENTS[SELECTED_EVENTS.length-1]+'&method=detail'); };
					img_pe.onmouseover = function() { this.style.cursor = "pointer"; };
				button_container.appendChild(img_pe);
				var img_ee = document.createElement("IMG");
					img_ee.setAttribute("src","/_com/events/images/bt_emailevent.gif");
					img_ee.onclick = function() { return openPopupWindow('/_com/events/_email.htm?id='+SELECTED_EVENTS[SELECTED_EVENTS.length-1]+'&method=email'); };
					img_ee.onmouseover = function() { this.style.cursor = "pointer"; };
				button_container.appendChild(img_ee);
			}
		} else if(opt == "results") {
			tab_detail.src = tab_detail.src.replace(/_on\.gif/,"_off.gif");
			tab_results.src = tab_results.src.replace(/_off\.gif/,"_on.gif");
			toggleDisplay(results_header,true);
			toggleDisplay(results_eventlist,true);
			toggleDisplay(results_detail,false);
			// update button options
			if(SEARCH_QUERIES.length) {
				var img_pr = document.createElement("IMG");
					img_pr.setAttribute("src","/_com/events/images/bt_printableresults.gif");
					img_pr.onclick = function() { return openPopupWindow('/_com/events/_results.htm'+SEARCH_QUERIES[SEARCH_QUERIES.length-1]+'&detail=1'); };
					img_pr.onmouseover = function() { this.style.cursor = "pointer"; };
				button_container.appendChild(img_pr);
			}
		}
	} else {
		// POPUP WINDOW ACTIVE
		toggleDisplay(results_header,true);
		toggleDisplay(results_eventlist,true);
		toggleDisplay(results_detail,true);
	}
}

// reset the search parameters
function resetSearch() {
	searchform.reset();
}

// set search dates -- used by many functions in this document
function setSearchStartDate(txt) {
	search_datebegin.value = txt;
}
function setSearchEndDate(txt) {
	search_dateend.value = txt;
}

// gets search query_string
function getSearchQueryString() {
	var dd = new Date();
	var qs = "?timestamp="+dd.getTime();
	if(!isNaN(Date.parse(search_datebegin.value))) { qs += "&sd=" + escape(search_datebegin.value); }
	if(!isNaN(Date.parse(search_dateend.value))) { qs += "&ed=" + escape(search_dateend.value); }
	if(search_city.value.length && !isNaN(search_city.value)) { qs += "&city=" + escape(search_city.value); }
	if(search_radius.value.length && !isNaN(search_radius.value)) { qs += "&radius=" + escape(search_radius.value); }
	if(search_park.value.length && !isNaN(search_park.value)) { qs += "&park=" + escape(search_park.value); }
	if(search_type.value.length && !isNaN(search_type.value)) { qs += "&type=" + escape(search_type.value); }
	if(search_keyword.value.length) { qs += "&kwd=" + escape(trim(search_keyword.value)); }
	return qs;
}

function searchEvents(_qs) {
	var qs = _qs;
	if(typeof _qs != "string") { qs = getSearchQueryString() + "&method=search"; }
	SEARCH_QUERIES.push(qs);
	var ajaxobj = new AjaxObject("get","/_com/events/ajax_switch.asp",qs,updateSearchResults);
		ajaxobj.execute();
	return false;
}
function updateSearchResults(xmlHttp) {
	SEARCH_DATA = xmlHttp.responseXML.getElementsByTagName("event");
	//alert(SEARCH_DATA.length);
	toggleResultDisplay("results");
	displaySearchResults();
}
function displaySearchResults(start) {
	var maxperpage = 12; // records per page
	if(POPUP_INVOKE) { maxperpage = SEARCH_DATA.length; }
	STARTROW = start; // record to display first
		if(typeof start == "undefined") { STARTROW = 1;}
	ENDROW = STARTROW+maxperpage-1; // last record to display
		if(ENDROW > (SEARCH_DATA.length)) { ENDROW = SEARCH_DATA.length; }
	//alert(STARTROW + "|" + ENDROW + "|" + SEARCH_DATA.length);
	clearData(results_eventlist); // empty the result set rows
	var eventrow; var datecell; var citycell; var namecell; // dom objects to be created
	var edrow; var edcell; // more dom objects for event detail
	if(SEARCH_DATA.length > 0) {
		for(var i=STARTROW-1; i<ENDROW; i++) {
			eventrow = document.createElement("tr");
			(function(i) { // closure to properly scope the iterator (i) variable for onclick method
					var i2 = i;
						eventrow.onmouseover = function() { updateClassName(this,"hover",""); this.style.cursor = "pointer"; };
						eventrow.onmouseout = function() { updateClassName(this,"","hover"); };
						if(!POPUP_INVOKE) {
							eventrow.onclick = function() { getEventDetail(SEARCH_DATA[i2].getElementsByTagName("eventid")[0].firstChild.nodeValue); };
						} else {
							eventrow.onclick = function() {
									//return openPopupWindow('/_com/events/_event.htm?id='+SEARCH_DATA[i2].getElementsByTagName("eventid")[0].firstChild.nodeValue);
									//alert("expand Detail");
									toggleDisplay("ed__"+SEARCH_DATA[i2].getElementsByTagName("eventid")[0].firstChild.nodeValue)
									updateClassName(this,"inlineactive","");
								};
						}
				})(i);
			datecell = document.createElement("td");
				updateClassName(datecell,"datecell","");
				datecell.appendChild(document.createTextNode(SEARCH_DATA[i].getElementsByTagName("eventdates")[0].firstChild.nodeValue));				
			citycell = document.createElement("td");
				citycell.appendChild(document.createTextNode(SEARCH_DATA[i].getElementsByTagName("city")[0].firstChild.nodeValue));
				updateClassName(citycell,"green","");
			namecell = document.createElement("td");
				namecell.appendChild(document.createTextNode(SEARCH_DATA[i].getElementsByTagName("eventname")[0].firstChild.nodeValue));
				updateClassName(namecell,"red","");
			eventrow.appendChild(datecell);
			eventrow.appendChild(citycell);
			eventrow.appendChild(namecell);
			results_eventlist.appendChild(eventrow);
			
			if(POPUP_INVOKE) {
				edrow = document.createElement("tr");
					edrow.setAttribute("id","ed__"+SEARCH_DATA[i].getElementsByTagName("eventid")[0].firstChild.nodeValue);
					toggleDisplay(edrow,false);
				edcell = document.createElement("td");
					edcell.setAttribute("colspan",3); edcell.colSpan = 3;
					updateClassName(edcell,"inlinedetail","");
				edcell.innerHTML = createDetailHTML(SEARCH_DATA[i]);
				edrow.appendChild(edcell);
				results_eventlist.appendChild(edrow);
			}
		}
		eventrow = document.createElement("tr");
		datecell = document.createElement("td");
			datecell.setAttribute("colspan",3); datecell.colSpan = 3;
			updateClassName(datecell,"pages","");
			var pagehtml = "Displaying (<strong>"+STARTROW+" - "+ENDROW+"</strong>) of <strong>"+SEARCH_DATA.length+"</strong> matching events.<br /><br /><span>";
				if(!POPUP_INVOKE) {
					if(STARTROW > 1) { pagehtml += '&nbsp; &lt;&lt; <a href="#first" onclick="javascript: displaySearchResults(1);">First Page</a> &nbsp;'; } else { pagehtml += '&nbsp; &lt;&lt; First Page &nbsp;'; }
					if(STARTROW > maxperpage+1) { pagehtml += '&nbsp; &lt; <a href="#prev" onclick="javascript: displaySearchResults('+(STARTROW-maxperpage)+');">Previous Page</a> &nbsp;'; } else { pagehtml += '&nbsp; &lt; Previous Page &nbsp;'; }
					if(STARTROW < SEARCH_DATA.length-(maxperpage-1)) { pagehtml += '&nbsp; <a href="#next" onclick="javascript: displaySearchResults('+(STARTROW+maxperpage)+');">Next Page</a> &gt; &nbsp; '; } else { pagehtml += '&nbsp; Next Page &gt; &nbsp; '; }
					if(ENDROW < SEARCH_DATA.length) { pagehtml += '&nbsp; <a href="#last" onclick="javascript: displaySearchResults('+(SEARCH_DATA.length-(maxperpage-1))+');">Last Page</a> &gt;&gt; &nbsp;'; } else { pagehtml += '&nbsp; Last Page &gt;&gt; &nbsp;'; }
				}
			datecell.innerHTML = "</span>" + pagehtml;
		eventrow.appendChild(datecell);
		results_eventlist.appendChild(eventrow);
	} else {
		// show empty result set
		eventrow = document.createElement("tr");
		datecell = document.createElement("td");
		datecell.setAttribute("colspan",3); datecell.colSpan = 3;
		datecell.style.padding = "10px";
		datecell.innerHTML = '<p><span style="font-weight:bold; color:#dc1649;">No events found matching your search criteria.</span></p><p>Try expanding your search criteria or selecting a wider date range.</p>';
		eventrow.appendChild(datecell);
		results_eventlist.appendChild(eventrow);
	}
	location.hash = "results";
}

function getEventDetail(_id,_qs) {
	var qs;
	SELECTED_EVENTS.push(_id);
	if(typeof _qs == "string") { qs = _qs; }
	else { qs = "?id="+_id+"&method=detail"; }
	var ajaxobj = new AjaxObject("get","/_com/events/ajax_switch.asp",qs,updateSearchDetail);
		ajaxobj.execute();
	return false;
}

function updateSearchDetail(xmlHttp) {
	var events = xmlHttp.responseXML.getElementsByTagName("event");
	for(var c=0; c<events[0].childNodes.length; c++) { if(!events[0].childNodes[c].hasChildNodes()) { events[0].childNodes[c].appendChild(document.createTextNode("")); } }
	clearData(results_detail);
	toggleResultDisplay("detail");
	var datarow = document.createElement("tr");
	var datacell = document.createElement("td");
	datarow.appendChild(datacell);
	results_detail.appendChild(datarow);
	if(events.length < 1) {
		datacell.innerHTML = "Sorry, no data could be found for this event.<br />Please ensure that you've previously selected an event from the \"Result List\".";
		return;
	}
	
	// get and write Detail HTML
	datacell.innerHTML = createDetailHTML(events[0]);
	
	//show paging element
	var eventid = events[0].getElementsByTagName("id")[0].firstChild.nodeValue;
	if(!POPUP_INVOKE) {
		var currentrow = -1;
		//alert(STARTROW + "|" + ENDROW + "|" + SEARCH_DATA.length);
		for(var d=(STARTROW-1); d<ENDROW; d++) {
			if(eventid == SEARCH_DATA[d].getElementsByTagName("eventid")[0].firstChild.nodeValue) {
				currentrow = d+1;
			}
		}
		//alert("currentrow: "+currentrow);
		if(currentrow > -1) {
			navrow = document.createElement("tr");
			navcell = document.createElement("td");
				updateClassName(navcell,"pages","");
				var pagehtml = "Displaying <strong>#"+(currentrow-STARTROW+1)+"</strong> of <strong>"+(ENDROW-STARTROW+1)+"</strong> events for the current results page.<br /><br />";
					if(currentrow > STARTROW) { pagehtml += '&nbsp; &lt;&lt; <a href="#first" onclick="javascript: getEventDetail('+SEARCH_DATA[STARTROW-1].getElementsByTagName("eventid")[0].firstChild.nodeValue+');">First Event</a> &nbsp;'; } else { pagehtml += '&nbsp; &lt;&lt; First Event &nbsp;'; }
					if(currentrow > STARTROW+1) { pagehtml += '&nbsp; &lt; <a href="#prev" onclick="javascript: getEventDetail('+SEARCH_DATA[currentrow-2].getElementsByTagName("eventid")[0].firstChild.nodeValue+');">Previous Event</a> &nbsp;'; } else { pagehtml += '&nbsp; &lt; Previous Event &nbsp;'; }
					if(currentrow < (ENDROW-1)) { pagehtml += '&nbsp; <a href="#next" onclick="javascript: getEventDetail('+SEARCH_DATA[currentrow].getElementsByTagName("eventid")[0].firstChild.nodeValue+');">Next Event</a> &gt; &nbsp;'; } else { pagehtml += '&nbsp; Next Event &gt; &nbsp;'; }
					if(currentrow < (ENDROW)) { pagehtml += '&nbsp; <a href="#last" onclick="javascript: getEventDetail('+SEARCH_DATA[ENDROW-1].getElementsByTagName("eventid")[0].firstChild.nodeValue+');">Last Event</a> &gt;&gt; &nbsp;'; } else { pagehtml += '&nbsp; Last Event &gt;&gt; &nbsp;'; }
				navcell.innerHTML = pagehtml;
			navrow.appendChild(navcell);
			results_detail.appendChild(navrow);
		}
	}
}

function createDetailHTML(events) {
	var detailhtml = '<table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td width="60%" style="padding: 0; vertical-align:top;">';
	var eventid = events.getElementsByTagName("id")[0].firstChild.nodeValue;
	detailhtml += '<strong style="color:#dc1649;">' + events.getElementsByTagName("nextdatestring")[0].firstChild.nodeValue + "</strong><br />";
	detailhtml += '<span style="font-size:1.5em;">' + events.getElementsByTagName("eventname")[0].firstChild.nodeValue + "</span><br /><br />";
	detailhtml += events.getElementsByTagName("city")[0].firstChild.nodeValue;
			if(events.getElementsByTagName("park")[0].firstChild.nodeValue.length) { detailhtml += "<br />" + events.getElementsByTagName("park")[0].firstChild.nodeValue; }
	detailhtml += '</td><td width="40%" style="padding: 0; vertical-align:top;">';
	detailhtml += "<strong>Admission: </strong>";
		if(events.getElementsByTagName("adm")[0].firstChild.nodeValue == "False") { detailhtml += "Free<br />"; }
		else { detailhtml += "Yes<br />";
			if(events.getElementsByTagName("gfee")[0].firstChild.nodeValue.length) { detailhtml += "&nbsp; General: " + events.getElementsByTagName("gfee")[0].firstChild.nodeValue + "<br />"; }
			if(events.getElementsByTagName("afee")[0].firstChild.nodeValue.length) { detailhtml += "&nbsp; Adults: " + events.getElementsByTagName("afee")[0].firstChild.nodeValue + "<br />"; }
			if(events.getElementsByTagName("cfee")[0].firstChild.nodeValue.length) { detailhtml += "&nbsp; Children: " + events.getElementsByTagName("cfee")[0].firstChild.nodeValue + "<br />"; }
		}
	var tmp_handicap = events.getElementsByTagName("handicap")[0].firstChild.nodeValue;
		if(tmp_handicap.length) {
			detailhtml += "<strong>Accessible: </strong>";
			if(tmp_handicap == "False") { detailhtml += "No<br />"; }
			else { detailhtml += "Yes<br />"; }
		}
	var tmp_attendance = events.getElementsByTagName("avgatt")[0].firstChild.nodeValue;
	if(tmp_attendance.length) {
		detailhtml += "<strong>Average Attendance: </strong>" + tmp_attendance + "<br />";
	}
	if(tmp_entrance = events.getElementsByTagName("license")[0].firstChild.nodeValue == "True") {
			detailhtml += '<br /><strong style="font-size:smaller;">*State Park Entrance License Required</strong><br />';
		}
	detailhtml += '</td></tr></tbody></table>';
	
	detailhtml += "<hr />";
		if(events.getElementsByTagName("eventimageid")[0].firstChild.nodeValue.length) { detailhtml += '<img src="/_com/events/__image.asp?id='+events.getElementsByTagName("eventimageid")[0].firstChild.nodeValue+'" border="0" style="float: left; margin: 0 .5em .5em 0;" />'; }
	detailhtml += events.getElementsByTagName("desc")[0].firstChild.nodeValue + '<br style="clear:both;" /><hr />';
	
	var tmp_website = events.getElementsByTagName("website")[0].firstChild.nodeValue;
		if(tmp_website.length > 0) {
			detailhtml += '<strong>Website: </strong><a href="';
			if(tmp_website.slice(0,4) != "http") { detailhtml += "http://"; }
			detailhtml += tmp_website + '">' + tmp_website + "</a><br />";
		}
	var tmp_email = events.getElementsByTagName("email")[0].firstChild.nodeValue;
		if(tmp_email.length > 0) {
			detailhtml += '<strong>Email: </strong><a href="mailto:' + tmp_email + '">' + tmp_email + "</a><br />";
		}
	detailhtml += "<strong>Phone Number(s): </strong><br />";
	detailhtml += "&nbsp; " + events.getElementsByTagName("phone")[0].firstChild.nodeValue.replace(/;/g,"<br />&nbsp;") + "<br />";
	
	detailhtml += "<strong>Contact: </strong>" + 
		events.getElementsByTagName("org")[0].firstChild.nodeValue + ", " +
		events.getElementsByTagName("contact")[0].firstChild.nodeValue;
		if(events.getElementsByTagName("badd")[0].firstChild.nodeValue.length) {
			detailhtml += "<br />&nbsp; " + events.getElementsByTagName("badd")[0].firstChild.nodeValue + ", " +
			events.getElementsByTagName("bcity")[0].firstChild.nodeValue + ", " +
			events.getElementsByTagName("bstate")[0].firstChild.nodeValue + " " +
			events.getElementsByTagName("bzip")[0].firstChild.nodeValue;
		}
		if(events.getElementsByTagName("madd")[0].firstChild.nodeValue.length) {
			detailhtml += "<br />&nbsp; " + events.getElementsByTagName("madd")[0].firstChild.nodeValue + ", " +
			events.getElementsByTagName("mcity")[0].firstChild.nodeValue + ", " +
			events.getElementsByTagName("mstate")[0].firstChild.nodeValue + " " +
			events.getElementsByTagName("mzip")[0].firstChild.nodeValue;
		}
	return detailhtml;
}

function showResultDetails(_status) {
	var rows = results_eventlist.getElementsByTagName("tr");
	var imgtop = document.getElementById("sdtop");
	var imgbot = document.getElementById("sdbot");
	for(var i=0; i<rows.length; i++) {
		if(rows[i].id.length) {
			if(_status == false) {
				toggleDisplay(rows[i],true);
				updateClassName(rows[i-1],"inlineactive","");
				imgtop.src = imgtop.src.replace("show","hide");
				imgbot.src = imgtop.src.replace("show","hide");
			} else {
				toggleDisplay(rows[i],false);
				updateClassName(rows[i-1],"","inlineactive");
				imgtop.src = imgtop.src.replace("hide","show");
				imgbot.src = imgtop.src.replace("hide","show");
			}
		}
	}
}

// full calendar search/display functions
function setCalendarDates(_date,_reload) {
	var sdobj = NOW;
	if(typeof _date == typeof 86400000) { sdobj = new Date(_date);
	} else {
		if(!isNaN(Date.parse(_date))) {
			//alert("String Date Passed");
			sdobj = new Date(Date.parse(_date));
		}
	}
	STARTDATE = (sdobj.getMonth()+1)+"/1/"+sdobj.getFullYear();
	sdobj = new Date(Date.parse(STARTDATE));
	
	if(sdobj.getMonth() < 11) { ENDDATE = (sdobj.getMonth()+2)+"/1/"+sdobj.getFullYear(); }
	else { ENDDATE = "1/1/"+(sdobj.getFullYear()+1); }
	//alert(STARTDATE+"\n"+ENDDATE);
	
	prevyear.onclick = function() { setCalendarDates(new Date(STARTDATE).setFullYear(new Date(STARTDATE).getFullYear()-1).valueOf(),true); };
	prevyear.onmouseover = function() { this.style.cursor = "pointer"; };
	prevmonth.onclick = function() { setCalendarDates(new Date(STARTDATE).valueOf()-172800000,true); };
	prevmonth.onmouseover = function() { this.style.cursor = "pointer"; };
	nextyear.onclick = function() { setCalendarDates(new Date(STARTDATE).setFullYear(new Date(STARTDATE).getFullYear()+1).valueOf(),true); };
	nextyear.onmouseover = function() { this.style.cursor = "pointer"; };
	nextmonth.onclick = function() { setCalendarDates(new Date(STARTDATE).valueOf()+2764800000,true); };
	nextmonth.onmouseover = function() { this.style.cursor = "pointer"; };
	
	var months = ["January","February","March","April","May","June","July","August","September","October","November","December"]
	calmonth.innerHTML = months[sdobj.getMonth()] + ", " + sdobj.getFullYear();
	
	if(_reload) { searchCalendarEvents(); }
}
function getCalendarSearchQuery() {
	if(isNaN(Date.parse(STARTDATE))) { setCalendarDates(); }
	var qs = "?sd="+escape(STARTDATE)+"&ed="+escape(ENDDATE)+"&method=search";
	//alert(qs);
	return qs;
}
function searchCalendarEvents(_qs) {
	clearData(tbody_caldays);
	tbody_caldays.appendChild(document.createElement("TR"));
		tbody_caldays.rows[0].appendChild(document.createElement("TD"));
		tbody_caldays.rows[0].cells[0].setAttribute("colspan",7);
		tbody_caldays.rows[0].cells[0].colSpan = 7;
		tbody_caldays.rows[0].cells[0].innerHTML = '<p style="padding: 20px;"><strong>Loading Calendar ...</strong></p>';
	var qs = _qs;
	if(typeof _qs != "string") { qs = getCalendarSearchQuery(); }
	var ajaxobj = new AjaxObject("get","/_com/events/ajax_switch.asp",qs,updateCalendarSearchResults);
		ajaxobj.execute();
	return false;
}
function updateCalendarSearchResults(xmlHttp) {
	SEARCH_DATA = xmlHttp.responseXML.getElementsByTagName("event");
	displayCalendarSearchResults();
}
function displayCalendarSearchResults() {
	clearData(tbody_caldays); // empty the calendar
	var monthstartday = new Date(STARTDATE).getDay();
	var daysinmonth = Math.ceil((new Date(ENDDATE).valueOf() - new Date(STARTDATE).valueOf())/86400000);
	for(var before=0; before<monthstartday; before++) {
		var beforedate = new Date(new Date(STARTDATE).valueOf()-86400000*(monthstartday-before)).getDate();
		createDateCell(before,beforedate,"other",true);
	}
	for(var mdate=0; mdate<daysinmonth; mdate++) {
	//for(var mdate=0; mdate<1; mdate++) {
		createDateCell((monthstartday+mdate),mdate+1);
	}
	if((monthstartday+daysinmonth)%7 > 0) {
		var nextiter = 0;
		for(var after=((monthstartday+daysinmonth)%7); after<7; after++) {
			nextiter += 1;
			createDateCell(after,nextiter,"other",true);
		}
	}
}
function createDateCell(_dow,_heading,_class,_emptycell) {
	var heading = _heading;
	var cellclass = "";
		if(typeof _class != "undefined") { cellclass = _class+","; }
	switch(_dow%7) {
		case 0:
			tbody_caldays.appendChild(document.createElement("TR"));
			cellclass = cellclass+"weekend";
			break;
		case 6:
			cellclass = cellclass+"weekend";
			break;
	}
	var cell = document.createElement("TD");
		updateClassName(cell,cellclass,"");
	var h2date = document.createElement("H2");
		updateClassName(h2date,"date","");
	h2date.appendChild(document.createTextNode(heading));
	cell.appendChild(h2date);
	
	//check for events on this date if it's part of the current month
	if(typeof _emptycell == "undefined") {
		//alert("SEARCH_DATA.length: "+SEARCH_DATA.length);
		var eventlist = document.createElement("UL");
		var celldate = ""+parseInt(STARTDATE)+"/"+_heading+"/"+parseInt(STARTDATE.split("/")[2]);
		var dcelldate = Date.parse(celldate);
		var todays_events = 0;
		var max_per_cell = 5;
		for(var e=0; e<SEARCH_DATA.length; e++) {
		//for(var e=0; e<5; e++) {
			var datespan = SEARCH_DATA[e].getElementsByTagName("datespan")[0].firstChild.nodeValue;
			var eventdates = SEARCH_DATA[e].getElementsByTagName("eventdates")[0].firstChild.nodeValue.split(" - ");
				eventdates[0] = Date.parse(eventdates[0]);
				if(eventdates.length == 1) { eventdates[1] = eventdates[0]; }
				else { eventdates[1] = Date.parse(eventdates[1]); }
			//alert(eventdates[0]+" < "+dcelldate+" < "+eventdates[1]);
			if(datespan < 22 && dcelldate >= eventdates[0] && dcelldate <= eventdates[1]) {
				todays_events += 1;
				var eventitem = document.createElement("LI");
					if(todays_events > max_per_cell) {
						updateClassName(eventitem,"hide_toomany","");
					}
				var eventlink = document.createElement("A");
					eventitem.appendChild(eventlink);
					eventlink.appendChild(document.createTextNode(SEARCH_DATA[e].getElementsByTagName("eventname")[0].firstChild.nodeValue));
					(function(e) {
						var _id = SEARCH_DATA[e].getElementsByTagName("eventid")[0].firstChild.nodeValue;
						eventlink.setAttribute("href","#"+heading);
						eventlink.onclick = function() {
								return openPopupWindow('/_com/events/_event.htm?id='+_id+'&method=detail');
								/*results_container.style.display = "block";
								getEventDetail(_id);*/
							};
					})(e);
				eventlist.appendChild(eventitem);
			}
			cell.appendChild(eventlist);
		}
		if(todays_events > max_per_cell) {
			var toomanylink = document.createElement("A");
				toomanylink.appendChild(document.createTextNode("+ Show " + (todays_events - max_per_cell) + " More"));
				toomanylink.onclick = function() {
						var links = cell.getElementsByTagName("LI");
						for(var lnk=max_per_cell; lnk<links.length; lnk++) {
							if(links[lnk].className.indexOf("hide_toomany") > -1) {
								updateClassName(links[lnk],"show_toomany","hide_toomany");
								this.childNodes[0].nodeValue = "- Hide Events";
							}
							else {
								updateClassName(links[lnk],"hide_toomany","show_toomany");
								this.childNodes[0].nodeValue = "+ Show More";
							}
						}
					};
				toomanylink.setAttribute("href","#ext");
				updateClassName(toomanylink,"ext","");
			cell.appendChild(toomanylink);
			//updateClassName(eventitem,"hide_toomany","");
		}
		var extlink = document.createElement("A");
			extlink.appendChild(document.createTextNode("+ View All Events"));
			extlink.onclick = function() {
					return openPopupWindow('/_com/events/_results.htm?method=search&sd='+celldate+'&ed='+celldate+'&detail=1');
					/*results_container.style.display = "block";
					searchEvents("?sd="+celldate+"&method=search");*/
				};
			extlink.setAttribute("href","#ext");
			updateClassName(extlink,"ext","");
		cell.appendChild(extlink);
	}
	tbody_caldays.rows[tbody_caldays.rows.length-1].appendChild(cell);
}

// popup widow function for event buttons/links
function openPopupWindow(src) {
	var pwndw = window.open(src, "pwndw", "location=no,menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no,width=565,height=450",true);
		pwndw.focus();
	return true;
}

// trim function for strings
function trim(str) { return str.replace(/^\s+/,"").replace(/\s+$/,""); }