var xHTTP = null
var eventsToAdd = new Array()
var eventsAddedCount = ""

function eventToAdd (elementID, locationID, maxToDisplay, heading, excludeTerms, startDate, endDate, category) {
	this.elementID  = elementID
	this.locationID = locationID
	if (maxToDisplay) {
		this.maxToDisplay = maxToDisplay
	} else {
		this.maxToDisplay = 1
	}
	if (heading) {
		this.heading = heading
	} else {
		this.heading = ""
	}
	if (excludeTerms) {
		this.excludeTerms = excludeTerms
	} else {
		this.excludeTerms = ""
	}
	if (startDate) {
		this.startDate = startDate
	} else {
		this.startDate = ""
	}
	if (endDate) {
		this.endDate = endDate
	} else {
		this.endDate = ""
	}
	if (category) {
		this.category = category
	} else {
		this.category = ""
	}
}

function checkHeadings(tableID) {
	var tableElement = document.getElementById(tableID)
	var tableRows = new Array()
	var row
	var headerRow
	var headerNumber = 0
	var firstHeader = true
	var displayCount = 0

	for (var i=0; tableElement && i<tableElement.rows.length; i++) {
		row = tableElement.rows[i]
		if (row.innerHTML.toLowerCase().indexOf("<h2>") != -1) {
			if (!firstHeader) {
				if (displayCount == 0) {
					headerRow.style.display = "none"
					if (headerNumber == 1 && row.innerHTML.toLowerCase().indexOf("<br>") != -1) {
						var cell = row.cells[0]
						cell.innerHTML = cell.innerHTML.substr(4)
					}
				} else {
					headerRow.style.display = ""
					displayCount = 0
				}
			}
			else {
				firstHeader = false
			}
			headerRow = row
			headerNumber = headerNumber + 1
		} else if (row.style.display == "") {
			displayCount = displayCount + 1
		}
	}
	if (headerRow) {
		if (displayCount == 0) {
			headerRow.style.display = "none"
		} else {
			headerRow.style.display = ""
		}
	}
}

function showOrHideRows(tableID, matchingName, displayStyle) {
	var allHTMLElements = new Array()
	var matchingElement
	allHTMLElements = document.getElementsByTagName("tr")
	for (var i=0; i<allHTMLElements.length; i++) {
		matchingElement = allHTMLElements[i]
		if (matchingElement.className == matchingName) {
			matchingElement.style.display = displayStyle
		}
	}
	checkHeadings(tableID)
}

function checkXHTTP() {
	if (xHTTP && xHTTP.readyState == 4) {
		var thisEvent = eventsToAdd.shift()
		var responseText = xHTTP.responseText
		if (responseText != "" && responseText != "NO RESULTS") {
			var eventsElement = document.getElementById(thisEvent.elementID)
			if (isNaN(thisEvent.maxToDisplay)) {
				var count = responseText
				var rowElement = document.getElementById("tr" + thisEvent.elementID)
				if (!rowElement) {
					rowElement = eventsElement
				}
				var wasHidden = rowElement.style.display == "none"
				responseText = '&nbsp;(' + responseText + ')'
				if (count == 0) {
					if (!wasHidden) {
						rowElement.style.display = "none"
						showOrHideRows(thisEvent.maxToDisplay, "trn" + thisEvent.elementID, "none")
					}
				} else {
					var currentContent = eventsElement.innerHTML
					var lastChar = currentContent.charAt(currentContent.length-1)
					if (lastChar == ' ') {
						currentContent = currentContent.substr(0, currentContent.length-1)
					}
					if (count > 50) {
						responseText = '<span class="dirbig">' + currentContent + '</span><i>' + responseText + '</i>'
					} else {
						responseText = currentContent + '<span class="dircount">' + responseText + '</span>'
					}
					if (lastChar == ' ') {
						responseText += ' '
					}
					eventsElement.innerHTML = responseText
					var allHTMLElements = new Array()
					var matchingElement
					var matchingName = "n" + thisEvent.elementID
					allHTMLElements = document.getElementsByTagName("td")
					for (var i=0; i<allHTMLElements.length; i++) {
						matchingElement = allHTMLElements[i]
						if (matchingElement.className == matchingName) {
							matchingElement.innerHTML = responseText
						}
					}
					if (wasHidden) {
						rowElement.style.display = ""
						showOrHideRows(thisEvent.maxToDisplay, "trn" + thisEvent.elementID, "")
					}
				}
			}
			else {
				var moreEvents = document.createElement('moreevents' + eventsAddedCount)
				var startScriptHTML = '<script type="text/javascript">'
				var startJavaScript = responseText.toLowerCase().indexOf(startScriptHTML)
				var extraJavaScript
				if (startJavaScript != -1) {
					extraJavaScript = responseText.substr(startJavaScript + startScriptHTML.length)
					extraJavaScript = extraJavaScript.substr(0, extraJavaScript.length - 11)
					responseText = responseText.substr(0, startJavaScript)
				}
				moreEvents.innerHTML = responseText
				eventsElement.appendChild(moreEvents)
				if (eventsElement.style.display != "") {
					eventsElement.style.display = ""
				}
				if (eventsAddedCount == "") {
					eventsAddedCount = 1
				} else {
					eventsAddedCount = eventsAddedCount + 1
				}
				if (extraJavaScript) {
					eval(extraJavaScript)
				}
				eventsElement = document.getElementById('eventspoweredby')
				if (eventsElement && eventsElement.style.display != "") {
					eventsElement.style.display = ""
				}
			}
		}
		if (eventsToAdd.length > 0) {
			requestEvent()
		} else {
			delete xHTTP
			xHTTP = null
		}
	}
}


var requestURL
var paramCount = 0

function addParam(tag, value) {
	if (value != "") {
		if (paramCount != 0) {
			requestURL = requestURL + "&"
		}
		requestURL  = requestURL + tag + "=" + value
		paramCount = paramCount + 1
	}
}

function requestEvent() {

	var thisEvent = eventsToAdd[0]

	requestURL = "http://" + javaDomainName + "/events/get_event-V2.aspx?"
	addParam("locationID", thisEvent.locationID)
	if (thisEvent.maxToDisplay != 1) {
		addParam("maxToDisplay", thisEvent.maxToDisplay)
	}
	addParam("heading", encodeURI(thisEvent.heading))
	addParam("exclude", encodeURI(thisEvent.excludeTerms))
	addParam("startdate", thisEvent.startDate)
	addParam("enddate", thisEvent.endDate)
	addParam("categoryID", thisEvent.category)
	addParam("width", document.body.clientWidth)
	xHTTP.open("GET", requestURL, true)
	xHTTP.onreadystatechange = checkXHTTP
	xHTTP.send(null)
}

function addEventListing(elementID, locationID, maxToDisplay, heading, excludeTerms, startDate, endDate, category) {
	var thisEvent = new eventToAdd(elementID, locationID, maxToDisplay, heading, excludeTerms, startDate, endDate, category)
	eventsToAdd.push(thisEvent)
	if (eventsToAdd.length == 1 && !xHTTP) {
		if (window.XMLHttpRequest) {
			xHTTP = new XMLHttpRequest()
		} else {
			xHTTP = new ActiveXObject("Microsoft.XMLHTTP")
		}
		requestEvent()
	}
}

//----------------------------------------------

function getSelectedValue(controlID) {
	var selectControl = document.getElementById(controlID)
	return selectControl.options[selectControl.selectedIndex].value
}

function getSelectedText(controlID) {
	var selectControl = document.getElementById(controlID)
	return selectControl.options[selectControl.selectedIndex].text
}

function DatesChanged() {
	var optionText = getSelectedText("specialdates")
	var year = optionText.substr(optionText.length - 4, 4)

	var specialDate = getSelectedValue("specialdates")
	var str = window.location.href

	// Strip off current parameters
	str = str.indexOf("?") == -1 ? str : str.substring(0, str.indexOf("?"))
	if (specialDate != 0) {
		str = str + "?specialDate=" + specialDate
		str = str + "&year=" + year
	}

	window.location = str
}

function numDaysInMonth(monthNumber, year) {
	return 32 - new Date(year, monthNumber, 32).getDate()
}

function changeDayList(dayElementID, monthElementID, yearElementID) {

	var dayControl = document.getElementById(dayElementID)
	var monthNumber = getSelectedValue(monthElementID)
	var year = getSelectedValue(yearElementID)
	var eraseOnly
	if (year == 0 || monthNumber == 0) {
		if (getSelectedValue(dayElementID) == 0) {
			return
		} else {
			eraseOnly = true
		}
	}
	for (var i= dayControl.options.length-1; i>=0; i--) {
		dayControl.options[i] = null
	}
	if (eraseOnly) {
		return
	}
	var numDays = numDaysInMonth(monthNumber + 1, year)
	var weekday=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday",
	                "Friday","Saturday")
	var today = new Date(curYear + "/" + curMonth + "/" + curDay)
	var thisDate
	var newCount = 0
	for (var dayNum=1; dayNum <= numDays; dayNum++) {
		thisDate = new Date(year + "/" + monthNumber + "/" + dayNum)
		if (thisDate >= today) {
			dayControl[newCount] = new Option(weekday[thisDate.getDay()] + " " + dayNum, dayNum)
			newCount ++
		}
	}
	enableSearch()
}

function enableSearch() {
	var specialDateControl = document.getElementById("specialdates")
	specialDateControl.selectedIndex = 0
	document.getElementById("searchevents").disabled=false
}

var controlWidth

function setUpResize() {
	var dateCtrl = document.getElementById('specialdates')
	if (dateCtrl) {
		controlWidth = dateCtrl.offsetWidth
		resizeControls()
		window.onresize = resizeControls
	}
}

function resizeControls() {
	var availableWidth = document.body.clientWidth-120-5-rhsAdWidth
	if (availableWidth < 300) {
		availableWidth = 300
	}
	var dateCtrl = document.getElementById('specialdates')
	var currWidth = dateCtrl.offsetWidth
	if (currWidth != availableWidth) {
		if (availableWidth < controlWidth) {
			dateCtrl.style.width = availableWidth + "px"
		}
		else if (currWidth != controlWidth) {
			dateCtrl.style.width = controlWidth + "px"
		}
	}
}


