function EventsSearchSelectDeselectAllEventStylesOnClick(stylesContainer, select)
{
	if (stylesContainer == null)
	{
		return;
	}

	var checkBoxes = GetCheckBoxesRecursive(stylesContainer);
	var numCheckBoxes = checkBoxes.length;
	for (var i = 0; i < numCheckBoxes; i++)
	{
		checkBoxes[i].checked = select;
	}
}

function EventsToggleSearchControls(toggleLink)
{
	var searchControlsContainers = GetElementsByClassNames(toggleLink.parentNode.parentNode, ["EventsAll_SearchControls", "EventsAll_SearchControls_Hidden"]);
	var hiddenFieldContainer = GetElementByClassNames(toggleLink.parentNode.parentNode, ["EventsAll_SearchControlsToggleLabel_HiddenFieldContainer"], 0);
	if (searchControlsContainers != null && searchControlsContainers.length != null && searchControlsContainers.length > 1)
	{
		if (searchControlsContainers[0].className != "EventsAll_SearchControls")
		{
			searchControlsContainers[0].className = "EventsAll_SearchControls";
			searchControlsContainers[1].className = "EventsAll_SearchControls_Hidden";
			if (hiddenFieldContainer != null && hiddenFieldContainer.childNodes.length > 0)
			{
				hiddenFieldContainer.childNodes[0].value = "simple";
			}
			toggleLink.innerHTML = "";
			toggleLink.appendChild(document.createTextNode("More Search Options"));
		}
		else
		{
			searchControlsContainers[0].className = "EventsAll_SearchControls_Hidden";
			searchControlsContainers[1].className = "EventsAll_SearchControls";
			if (hiddenFieldContainer != null && hiddenFieldContainer.childNodes.length > 0)
			{
				hiddenFieldContainer.childNodes[0].value = "advanced";
			}
			toggleLink.innerHTML = "";
			toggleLink.appendChild(document.createTextNode("Less Search Options"));
		}
	}
}

function EventsDisplayStyles(displayStylesLink, stylesContainer)
{
	if (displayStylesLink != null)
	{
		displayStylesLink.style.display = "none";
	}
	if (stylesContainer != null)
	{
		stylesContainer.style.display = "block";
	}
}

function GetElementsByClassNames(container, classNames)
{
	return GetElementsByClassNamesRecursive(container, classNames);
}

function GetElementByClassNames(container, classNames, index)
{
	var elements = GetElementsByClassNamesRecursive(container, classNames);
	var element = null;
	if (index >= 0 && index < elements.length)
	{
		element = elements[index];
	}
	return element;
}

function GetElementsByClassNamesRecursive(container, classNames)
{
	var elements = new Array();
	if (container != null)
	{
		for (var i = 0; i < classNames.length; i++)
		{
			if (container.className == classNames[i])
			{
				elements[elements.length] = container;
				break;
			}
		}

		var numChildNodes = container.childNodes.length;
		for (var i = 0; i < numChildNodes; i++)
		{
			elements = elements.concat(GetElementsByClassNamesRecursive(container.childNodes[i], classNames));
		}
	}
	return elements;
}

function GetCheckBoxesRecursive(container)
{
	var checkBoxes = new Array();
	if (container != null)
	{
		var numChildNodes = container.childNodes.length;
		for (var i = 0; i < numChildNodes; i++)
		{
			var childNode = container.childNodes[i];
			if (childNode.tagName == "INPUT" && childNode.type == "checkbox")
			{
				checkBoxes[checkBoxes.length] = childNode;
			}
			else
			{
				checkBoxes = checkBoxes.concat(GetCheckBoxesRecursive(childNode));
			}
		}
	}

	return checkBoxes;
}

function SimpleSearch(searchPage, startCutoff, endCutoff, defaultCity, defaultStates)
{
	try
	{
		//get the simple search keywords
		var queryString = "";
		if (window.simpleSearchKeywords != null && window.simpleSearchKeywords.value != "")
		{
			queryString += "&q=" + escape(window.simpleSearchKeywords.value);
		}

		if (startCutoff != null && startCutoff != "")
		{
			queryString += "&start=" + escape(startCutoff);
		}
		
		if (endCutoff != null && endCutoff != "")
		{
			queryString += "&end=" + escape(endCutoff);
		}

		if (defaultCity != null && defaultCity != "")
		{
			queryString += "&default_city=" + escape(defaultCity);
		}

		if (defaultStates != null && defaultStates != "" && defaultStates != "ACT,NSW,NT,QLD,SA,TAS,VIC,WA")
		{
			queryString += "&default_states=" + escape(defaultStates);
		}

		if (queryString != "")
		{
			window.location.href = searchPage.replace(/\?.*/, '') + "?" + queryString.substring(1) + "#results";
			return false;
		}
	}
	catch (ex)
	{
	}

	return true;
}

function AdvancedSearch(searchPage, givenStyles, pageIndex, sortColumn, sortDirection, defaultCity, defaultStates,eventCategories)
{
	try
	{
		var queryString = "";

		//get the page index
		if (pageIndex != null && pageIndex != "")
		{
			pageIndex = parseInt(pageIndex);
			if (!isNaN(pageIndex) && pageIndex > 0)
			{
				queryString += "&p=" + pageIndex;
			}
		}
	
		//get the sort column
		if (sortColumn != null && sortColumn != "" && sortColumn != "Artists")
		{
			queryString += "&s=" + sortColumn;
		}

		//get the sort direction
		if (sortDirection != null && sortDirection != "" && sortDirection != "Ascending")
		{
			queryString += "&sd=" + sortDirection;
		}

		//get the event date option
		if (window.pastEventsOption.checked)
		{
			queryString += "&past_events=1";
		}
		else
		{
			//get the start cutoff date
			var startDate;
			if (window.startCutOffYear != null && window.startCutOffMonth != null && window.startCutOffDay != null)
			{
				var monthValue = window.startCutOffMonth.value;
				if (monthValue.length < 2)
				{
					monthValue = "0" + monthValue;
				}
				var dayValue = window.startCutOffDay.value;
				if (dayValue.length < 2)
				{
					dayValue = "0" + dayValue;
				}

				startDateString = window.startCutOffYear.value + monthValue + dayValue;
				queryString += "&start=" + startDateString;
			}

			//get the end cutoff date
			if (window.endCutOffYear != null && window.endCutOffMonth != null && window.endCutOffDay != null)
			{
				var monthValue = window.endCutOffMonth.value;
				if (monthValue.length < 2)
				{
					monthValue = "0" + monthValue;
				}
				var dayValue = window.endCutOffDay.value;
				if (dayValue.length < 2)
				{
					dayValue = "0" + dayValue;
				}

				var endDateString = window.endCutOffYear.value + monthValue + dayValue;
				if (endDateString < startDateString)
				{
					queryString += "&end=" + startDateString;
				}
				else
				{
					queryString += "&end=" + endDateString;
				}
			}
		}

		//get the advanced search keywords
		if (window.advancedSearchKeywords != null && window.advancedSearchKeywords.value != "")
		{
			queryString += "&q=" + escape(window.advancedSearchKeywords.value);
		}

		//get the event name
		if (window.eventName != null && window.eventName.value != "")
		{
			queryString += "&title=" + escape(window.eventName.value);
		}

		//get the artists
		if (window.artists != null && window.artists.value != "")
		{
			queryString += "&artists=" + escape(window.artists.value);
		}

		//get the venue
		if (window.venue != null && window.venue.value != "")
		{
			queryString += "&venue=" + escape(window.venue.value);
		}

		//get the suburb
		if (window.suburb != null && window.suburb.value != "")
		{
			queryString += "&suburb=" + escape(window.suburb.value);
		}

		//get the default city
		if (defaultCity != null && defaultCity != "")
		{
			queryString += "&default_city=" + escape(defaultCity);
		}

		//get the city
		if (window.city != null && window.city.value != "")
		{
			queryString += "&city=" + escape(window.city.value);
		}

		//get the postcode
		if (window.postcode != null && window.postcode.value != "")
		{
			queryString += "&postcode=" + escape(window.postcode.value);
		}

		//get the default states
		if (defaultStates != null && defaultStates != "")
		{
			queryString += "&default_states=" + escape(defaultStates);
		}
		
		//get the states
		var states = "";
		if (window.statesACT != null && window.statesACT.checked)
		{
			states += ",ACT";
		}
		if (window.statesNSW != null && window.statesNSW.checked)
		{
			states += ",NSW";
		}
		if (window.statesNT != null && window.statesNT.checked)
		{
			states += ",NT";
		}
		if (window.statesQLD != null && window.statesQLD.checked)
		{
			states += ",QLD";
		}
		if (window.statesSA != null && window.statesSA.checked)
		{
			states += ",SA";
		}
		if (window.statesTAS != null && window.statesTAS.checked)
		{
			states += ",TAS";
		}
		if (window.statesVIC != null && window.statesVIC.checked)
		{
			states += ",VIC";
		}
		if (window.statesWA != null && window.statesWA.checked)
		{
			states += ",WA";
		}
		if (states != "" && states != ",ACT,NSW,NT,QLD,SA,TAS,VIC,WA")
		{
			queryString += "&states=" + states.substring(1);
		}

		//get the eventCategory
		var category = "";
	
		if (window.liveEventsStylesSelectAll != null && window.liveEventsStylesSelectAll.checked && window.liveEventsStylesSelectAll.value != "") {

		    category += ",1";

		}
		if (window.danceStylesSelectAll != null && window.danceStylesSelectAll.checked && window.danceStylesSelectAll.value != "") {
		   
		    category += ",2";

		}
		if (window.artsStylesSelectAll != null && window.artsStylesSelectAll.checked && window.artsStylesSelectAll.value != "") {
	
		    category += ",3";

		}
		if (category != "")
		{
			if (category != ",1,2,3")
			{
				if (category != "0")
				{
					queryString += "&category=" + category.substring(1);
				}
			}
		}
		    
		//get the styles
		if (givenStyles != null && givenStyles != "")
		{
			queryString += "&styles=" + givenStyles;
		}
		else if (window.styleCheckBoxes != null)
		{
			var styles = "";
			var isAllChecked = true;
			for (var i = 0; i < window.styleCheckBoxes.length; i++)
			{
				var styleCheckBox = window.styleCheckBoxes[i];
				if (styleCheckBox.checked)
				{
					styles += "," + styleCheckBox.parentNode.getAttribute("styleId");
				}
				else
				{
					isAllChecked = false;
				}
			}
			
			if (!isAllChecked && styles != "")
			{
				queryString += "&styles=" + styles.substring(1);
			}
		}

		//get if recommended events only
		if (window.highlightedEventsOnly != null && window.highlightedEventsOnly.checked)
		{
			queryString += "&recommended=1";
		}

		queryString += "&a=1";
		
		if (queryString != "")
		{
			window.location.href = searchPage.replace(/\?.*/, '') + "?" + queryString.substring(1) + "#results";
			return false;
		}
	}
	catch (ex)
	{
	}

	return true;
}

jQuery(document).ready(function()
{
	jQuery("div.EventsAll").bind("keypress", function(e)
	{
		var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
		if (key == 13)
		{
			e.preventDefault();

			if (jQuery("div.EventsAll a.EventsAll_SearchControls_Submit_Simple").get(0).click)
			{
				jQuery("div.EventsAll a.EventsAll_SearchControls_Submit_Simple").get(0).click();
			}
			else
			{
				eval(jQuery("div.EventsAll a.EventsAll_SearchControls_Submit_Simple").get(0).href);
			}
		}
	});
});

