void placeDropDownChange(jQueryEvent e)
		{
			//Debug("placeDropDownChange");

			int k = getK(view.PlaceDropDown);
			if (k > 0)
			{
				ObjectStub place = new ObjectStub(getK(view.PlaceDropDown), getText(view.PlaceDropDown));
				addHistory("Place", place.ToString());

				//Moved to navigatePlace
				//initialiseVenueDropDown(null);
				//initialiseDateDropDowns();
				//initialiseMusicDropDown();
			}
			else
			{
				//user has clicked on one of the description or padding items... must reset to what was previously selected.
				setIndex(view.PlaceDropDown, placeDropDownPreviouslySelectedIndex);
			}
			placeDropDownPreviouslySelectedIndex = getIndex(view.PlaceDropDown);
		}
		void brandDropDownChange(KeyStringPair e)
		{
			if (e.Value == null || e.Value.Length == 0)
				return;

			ObjectStub brand = new ObjectStub(int.Parse(e.Value, 10), e.Key);
			if (brand.K == 0)
			{
				return;
			}
			else
			{
				addHistory("Brand", brand.ToString());

				//moved to navigateBrand
				//initialiseDateDropDowns();
				//initialiseEventDropDown();
			}
		}
		void countryDropDownChange(jQueryEvent e)
		{
			ObjectStub country = new ObjectStub(getK(view.CountryDropDown), getText(view.CountryDropDown));
			if (country.K == 0)
			{
				if (Country == null)
					setIndex(view.CountryDropDown, 0);
				else
					setK(view.CountryDropDown, Country.K);
			}
			else
			{
				addHistory("Country", country.ToString());

				//moved to navigateCountry
				//initialisePlaceDropDown();
			}
		}
		public EventSelectionSpecification(ObjectStub brand, ObjectStub place, ObjectStub venue, ObjectStub music, DateStub date, bool me)
		{
			Brand = brand;
			Place = place;
			Venue = venue;
			Music = music;
			Date = date;
			Me = me;
		}
		public ObjectArgs(ObjectStub ob)
		{
			this.Object = ob;
		}
		void eventDropDownChange(jQueryEvent e)
		{
			int k = getK(view.EventListBox);
			if (k > 0)
			{
				ObjectStub _event = new ObjectStub(getK(view.EventListBox), getText(view.EventListBox));
				addHistory("Event", _event.ToString());
			}
			else
			{
				//user has clicked on one of the description or padding items... must reset to what was previously selected.
				setIndex(view.EventListBox, eventDropDownPreviouslySelectedIndex);
			}
			eventDropDownPreviouslySelectedIndex = getIndex(view.EventListBox);
		}
		void musicDropDownChange(jQueryEvent e)
		{
			if (MusicIsSelectedCurrently)
			{
				string musicTypeName = getText(view.MusicDropDown);
				if (musicTypeName.Substr(0, 4) == "... ")
					musicTypeName = musicTypeName.Substr(4);
				ObjectStub music = new ObjectStub(MusicSelectedCurrently, musicTypeName);
				addHistory("Music", music.ToString());

				//Moved to navigateMusic
				//initialiseDateDropDowns();

			}
			else
			{
				//user has clicked on one of the description or padding items... must reset to what was previously selected.
				setIndex(view.MusicDropDown, musicDropDownPreviouslySelectedIndex);
			}
			musicDropDownPreviouslySelectedIndex = getIndex(view.MusicDropDown);
		}
		void venueByLetterDropDownChange(jQueryEvent e)
		{
			if (VenueByLetterDropDownIsVenueSelectedCurrently)
			{
				ObjectStub venue = new ObjectStub(VenueByLetterDropDownVenueSelectedCurrently, getText(view.VenueByLetterDropDown));
				addHistory("Venue", venue.ToString());
				
				//Moved to navigateVenue
				//initialiseDateDropDowns();
				//initialiseEventDropDown();
			}
		}
		void venueDropDownChange(jQueryEvent e)
		{
			if (VenueDropDownIsVenueSelectedCurrently)
			{	
				ObjectStub venue = new ObjectStub(VenueDropDownVenueSelectedCurrently, getText(view.VenueDropDown));
				addHistory("Venue", venue.ToString());

				//Moved to navigateVenue
				//updateUIVenue(true); // This will update the venueByLetterDropDown if it's in the wrong visibility state...
				//initialiseDateDropDowns();
				//initialiseEventDropDown();
			}
			else if (VenueDropDownIsLetterSelectedCurrently)
			{
				string letter = VenueDropDownLetterSelectedCurrently;
				if (!venueByLetterDropDownIsInitialised || venueByLetterDropDownPlaceK != Place.K || venueByLetterDropDownLetter != letter)
				{
					venueByLetterDropDownPlaceK = Place.K;
					venueByLetterDropDownLetter = letter;
					jQuerySelectBoxes.FromObject(view.VenueByLetterDropDown).AjaxAddOption("/support/getcached.aspx?type=venuebyletter&placek=" + Place.K + "&letter=" + letter, null, false, new ActionObject(venueByLetterDropDownInitialised), null);
				}
				else
					updateUIVenue(true);
			}
			else
			{
				//user has clicked on one of the description or padding items... must reset to what was previously selected.
				setIndex(view.VenueDropDown, venueDropDownPreviouslySelectedIndex);
			}
			venueDropDownPreviouslySelectedIndex = getIndex(view.VenueDropDown);
		}
		void initialiseVenueDropDown(ObjectStub changeVenue)
		{
			//Debug("initialiseVenueDropDown changeVenue=" + (changeVenue == null ? "null" : changeVenue.ToString()));

			if (!OptionVenue)
				return;

			if (!venueDropDownIsInitialised || venueDropDownPlaceK != Place.K)
			{
				//Debug("getting venues");
				venueDropDownPlaceK = Place.K;
				jQuerySelectBoxes.FromObject(view.VenueDropDown).AjaxAddOption(
					"/support/getcached.aspx?type=venue&placek=" + Place.K, 
					null, 
					false, 
					new ActionObject(venueDropDownInitialised),
					new object[] { changeVenue }
				);
			}
			else
			{
				venueDropDownInitialised(changeVenue);
			}
		}