	var map;
	var mapCentre;

	$(function()
	{
		// INITIALISE COLUMN HEADERS
	
		var table = $("#signup-grid").addClass("js");
		
		//if(table.offsetWidth > 800)
		//table.className = "js";
	
		var headers = $("#signup-grid th");
		var hIdx = 0;
		for(var h, i = 0; h = headers[i]; i++)
		{
			if(h.className != "time")
			{
				h.columnIndex = hIdx++;
				h.onclick = function()
				{
					expandDay(this.columnIndex);
				}
			}
		}
		
		headers[1].onclick();
		
		
		// INITIALISE SIGN UP FORM
		
		var form = $("#signup-form");
		form.addClass("js");
		
		form.submit(function()
		{
			var name = $("#signup-name-input").attr("value");
			var email = $("#signup-email-input").attr("value");
		
			var data = {
				"ajax" : 1,
				"name" : name ? name : "",
				"email" : email ? email : "",
				"date" : $("#signup-date-input").attr("value"),
				"time" : $("#signup-time-input").attr("value"),
				"alone" : ($("#signup-alone-input").attr("checked") ? 1 : 0)
			};
			
			$.post(form.attr("action").replace(/#.*$/, ""), data, function(response) {
				var data = eval("(" + response + ")");
				
				if(data.error)
				{
					$("#signup-form-message").html("<strong>"+data.message+"</strong>");
				}
				else
				{
					if(data.alone)
						$("#signup-grid td.signup").addClass("alone");
				
					$("#signup-grid td.signup")
						.filter(":not(.blank)")
							.append("<span>,<br/></span><span class=\"new\">"+data.name+"</span>")
							.attr("title", function(){return this.title + ", " + data.name;})
						.end()
						.filter(".blank")
							.append("<span class=\"new\">"+data.name+"</span>")
							.removeClass("blank")
							.attr("title", (data.alone ? t.prayingAloneTitle : t.prayingTitle) + " " + data.name)
						.end()
						.removeClass("signup");
					
					$("#signup-form").hide("normal");
				}
			});
			
			return false;
		});
		
		var $dateSel = $("#signup-date-input");
		var $timeSel = $("#signup-time-input");
		var dateSel = $dateSel.get(0);
		var timeSel = $timeSel.get(0);
		
		$dateSel.parent().css("display", "none");
		$timeSel.parent().css("display", "none");
		
		var fieldset = document.getElementById("signup-fieldset");
		var cancelButton = pregoCreateElement("BUTTON", t.cancelButton);
		cancelButton.onclick = function()
		{
			expandDay(expandedDay);
			return false;
		}
		fieldset.appendChild(cancelButton);
		
		var rows = $("#signup-grid tr");
		for(var r, i = 0; r = rows[i]; i++)
		{
			$("TD", r)
				.each(function(idx) 
					{
						this.rowIndex = i-1;
						this.columnIndex = idx;
					})
				.filter(":not(.closed)")
					.click(function() 
					{
						expandDay(this.columnIndex);
						
						this.className += " signup";
						
						var top = 0;
						var left = this.offsetWidth;
						var n = this;
						do
						{
							top += n.offsetTop;
							left += n.offsetLeft;
							n = n.offsetParent;
						}
						while(n);
				
						dateSel.selectedIndex = this.columnIndex;
						timeSel.selectedIndex = this.rowIndex;
						
						$("#signup-alone-input").attr("checked", "");
						
						if(/meeting/.exec(this.className))
						{
							$("#signup-form-message").html("<strong>"+t.meetingMessage+"<"+"/strong>");
							$("#signup-form input").attr("disabled", "disabled");
						}
						else if(/alone/.exec(this.className))
						{
							$("#signup-form-message").html("<strong>"+t.aloneMessage+"<"+"/strong>");
							$("#signup-form input").attr("disabled", "disabled");
						}
						else
						{
							var msg = t.signUp + " <strong>"+timeSel.options[timeSel.selectedIndex].text+"<"+"/strong> "+t.on+" <strong>"+dateSel.options[dateSel.selectedIndex].text+"<"+"/strong>";
							
							$("#signup-form input").removeAttr("disabled");
							
							if(!/blank/.exec(this.className))
							{
								msg += "<br/>("+t.otherPeople+")";
								$("#signup-alone-input").attr("disabled", "disabled");
							}
							
							$("#signup-form-message").html(msg);
						}
						
						form.css("top",top + "px");
						form.css("left",left + "px");
						$("#signup-form fieldset").css("visibility","hidden");
						form.show("normal", function()
						{
							$("#signup-form fieldset").css("visibility","visible");
							var nameInput = document.getElementById("signup-name-input");
							if(!nameInput.disabled)
								nameInput.focus();
						});
					});
		}
		
		
		// INITIALISE TABS
		
		var tabFound = false;
		$("#tabs a")
			.click(function()
			{
				selectTab(this);
				map.checkResize();
				map.setCenter(mapCentre);
			})
			.each(function()
			{
				$(this).attr("href", "#_" + this.id);
				
				if(this.parentNode.className == "selected" && !tabFound)
				{
					selectTab(this);
					tabFound = true;
				}
				else
				{
					var re = new RegExp("^#?_" + this.id + "$");
					if(re.exec(window.location.hash))
					{
						selectTab(this);
						tabFound = true;
					}
				}
			})
		
		/*
		var links = $("#tabs a");
		for(var l, i = 0; l = links[i]; i++)
		{
			l.onclick = function() {selectTab(this);}
			l.href = "#_" + l.id;
			
			var re = new RegExp("^#?_" + l.id + "$");
			if(re.exec(window.location.hash))
				alert(l.id);
		}
		*/
		
		// INITIALISE MAP
		
		if(typeof(GBrowserIsCompatible) != "undefined" && GBrowserIsCompatible() && room.location)
		{	
			window.onload = function()
			{
				$("#info-map").css("display","block");
				
				var locParts = room.location.split("/");
				mapCentre = new GLatLng(locParts[0], locParts[1]);
				
				map = new GMap2(document.getElementById("info-map"));
				map.setCenter(mapCentre, 13);
				
				map.addControl(new GSmallMapControl());
				map.addControl(new GMapTypeControl());
				
				var marker = new GMarker(mapCentre);
				map.addOverlay(marker);
			
				map.checkResize();
			}
		}
	});
	
	function selectTab(link)
	{
		var links = $("#tabs a");
	
		for(var l, i = 0; l = links[i]; i++)
		{
			var containerID = l.id.replace("-tab", "-container");
			var container = $("#"+containerID);
			
			if(l == link)
			{
				l.parentNode.className = "selected";
				container.css("display", "block");
			}
			else
			{
				l.parentNode.className = "";
				container.css("display", "none");
			}
		}
	}
	
	
	var expandedDay = null;
	function expandDay(index)
	{
		expandedDay = index;
		
		var rows = $("#signup-grid tr");
		
		for(var r, i = 0; r = rows[i]; i++)
		{
			var rIdx = 0;
			var cells = $("th,td", r);
			for(var c, j = 0; c = cells[j]; j++)
			{
				if(c.className != "time")
				{
					c.className = c.className.replace("signup", "");
				
					if(rIdx == index)
						c.className = c.className.replace("detail", "") + " detail";
					else
						c.className = c.className.replace("detail", "");
					rIdx++;
				}
			}
		}
		
		$("#signup-form").css("display", "none");
	}
