/**************************************************************************************

	PB General Variables / Functions

**************************************************************************************/


var gmaps_map = null;
var gmaps_map_visible = false;
var gmaps_geocoder = null;
var gmaps_marker = null;
var gmaps_markers = new Object();
var gmaps_info_text = new Object();
var gmaps_info_num = new Object();


/*
	Plays the about us diagram.
*/
function pb_about_diagram()
{
	var movie = new SWFObject('about.swf', 'movie_pb_about', '550', '550', '9', '#FFFFFF');
	movie.addParam('scale', 'noscale');
	movie.write('area_left_about_diagram')
	
	return false;
}


/*
        Used to clear an input.
*/
function pb_clearinput(input)
{
        input.value = '';

        return false;
}


/*
        Used to clear a textarea.
*/
function pb_cleartextarea(input)
{
        if (input.value == 'Message')
                input.value = '';

        return false;
}


/*
	Plays the homepage splash image.
*/
function pb_home_splash()
{
	var movie = new SWFObject('splash.swf', 'movie_pb_home', '712', '283', '9', '#FFFFFF');
	movie.addParam('scale', 'scale');
	movie.write('area_left_home_main_splash')
	
	return false;
}


/*
	Rotates featured and latest entries.  Parameters are arrays of entry IDs.
*/
var pb_entry_rotate_featured_ids = null;
var pb_entry_rotate_featured_index = 0;
var pb_entry_rotate_latest_ids = null;
var pb_entry_rotate_latest_index = 0;
function pb_entry_rotate(featured_ids, latest_ids)
{
	pb_entry_rotate_featured_ids = featured_ids;
	pb_entry_rotate_latest_ids = latest_ids;

	setTimeout('pb_entry_rotate_next()', 0);
	
	return false;
}
function pb_entry_rotate_next()
{
	if (pb_entry_rotate_featured_ids.length > 0)
	{
		for (var i = 0; i < pb_entry_rotate_featured_ids.length; i ++)
			document.getElementById('area_left_entry_rotating_featured_'+pb_entry_rotate_featured_ids[i]).style.display = 'none';
		Effect.Appear('area_left_entry_rotating_featured_'+pb_entry_rotate_featured_ids[pb_entry_rotate_featured_index]);
		//document.getElementById('area_left_entry_rotating_featured_'+pb_entry_rotate_featured_ids[pb_entry_rotate_featured_index]).style.display = 'block';
	
		pb_entry_rotate_featured_index++;
		if (pb_entry_rotate_featured_index == pb_entry_rotate_featured_ids.length)
			pb_entry_rotate_featured_index = 0;
	}
		
	if (pb_entry_rotate_latest_ids.length > 0)
	{
		for (var i = 0; i < pb_entry_rotate_latest_ids.length; i ++)
			document.getElementById('area_left_entry_rotating_latest_'+pb_entry_rotate_latest_ids[i]).style.display = 'none';
		Effect.Appear('area_left_entry_rotating_latest_'+pb_entry_rotate_latest_ids[pb_entry_rotate_latest_index]);
		//document.getElementById('area_left_entry_rotating_latest_'+pb_entry_rotate_latest_ids[pb_entry_rotate_latest_index]).style.display = 'block';
		
		pb_entry_rotate_latest_index++;
		if (pb_entry_rotate_latest_index == pb_entry_rotate_latest_ids.length)
			pb_entry_rotate_latest_index = 0;
	}
	
	setTimeout('pb_entry_rotate_next()', 8000);

	return false;
}


/*
	Opens up a window.
*/
function pb_open(url)
{
	window.open(url,'pb_window','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=1000,height=550');
	
	return false;
}


/*
	Used to dynamically change images on the site.
*/
function pb_changeimage(image, url)
{
	image.src = url;
}


/*
	Creates an "are you sure?" dialogue.
*/
function pb_areyousure_link(message, link)
{
	if (confirm(message))
	{
		document.location = link;
	}
	
	return false;
}


/*
	Moves the user to the top of the page.
*/
function pb_gototop()
{
	document.location.hash = 'jump_top';
	
	return false;
}


/*
	Updates the page location.
*/
function pb_location(new_location)
{
	document.location = new_location;
	
	return false;
}


/*
	Resets an input.
*/
function pb_reset_input(input_ref)
{
	input_ref.value='';
	input_ref.style.color = '#A90808';
	
	return false;
}


/*
	Shows an invoice in a new window.
*/
function pb_show_invoice(invoice_id)
{
	window.open('invoice_'+invoice_id+'.html','pb_invoice_window','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=550,height=700');
	return false;
}


/*
	Reveals the search bar.
*/
var pb_show_search_shown = false;
function pb_show_search()
{
	if (!pb_show_search_shown)
	{
		pb_show_search_shown = true;
		
		Effect.SlideDown('area_menu_search_outer', { afterFinish : function()
			{
				Effect.Appear('area_menu_search_inner');
			}
		});
	}
	
	return false;
}


/*
	Switches between location panes in the advanced search for entries.
*/
function pb_entry_advanced(pane_use)
{
	document.getElementById('area_left_entry_advanced_postcode').style.display = 'none';
	document.getElementById('area_left_entry_advanced_region').style.display = 'none';
	document.getElementById('area_left_entry_advanced_county').style.display = 'none';
	document.getElementById('area_left_entry_advanced_borough').style.display = 'none';
	
	//document.getElementById('area_left_entry_advanced_'+pane_use).style.display = 'block';
	Effect.Appear('area_left_entry_advanced_'+pane_use);
	
	return true;
}


/*
	Switches between panes in an entry area.
*/
function pb_entry_details(pane_use)
{
	document.getElementById('area_left_entry_summary').style.display = 'none';
	document.getElementById('area_left_entry_images').style.display = 'none';
	document.getElementById('area_left_entry_awards').style.display = 'none';
	document.getElementById('area_left_entry_memberships').style.display = 'none';
	document.getElementById('area_left_entry_projects').style.display = 'none';
	
	document.getElementById('area_left_entry_'+pane_use).style.display = 'block';
	//Effect.Appear('area_left_entry_'+pane_use);
	
	return false;
}


/*
	Switches between images in the entry area.
	No longer used - old AJAX code.
*/
function pb_entry_image_next()
{
	// Get the current image index and the number of images.
	var image_current = document.getElementById('area_left_entry_images_current').value;
	var image_num = document.getElementById('area_left_entry_images_num').value;
	
	// Increment our index and store the new value.
	image_current++;
	document.getElementById('area_left_entry_images_current').value = image_current;
	
	// Update the image and caption.
	document.getElementById('area_left_entry_images_image').src = document.getElementById('area_left_entry_images_src_'+image_current).value;
	document.getElementById('area_left_entry_images_caption').innerHTML = document.getElementById('area_left_entry_images_caption_'+image_current).value;
	
	// Update the next and previous buttons.
	if (false)
	{
		document.getElementById('area_left_entry_images_prev').style.display = 'inline';
		if (image_current == image_num - 1)
			document.getElementById('area_left_entry_images_next').style.display = 'none';
	}
	else
	{
		// Update the next button.
		if (image_current == image_num - 1)
		{
			document.getElementById('area_left_entry_images_next').style.display = 'none';
		}
		else
		{
			document.getElementById('area_left_entry_images_next').innerHTML = "<img src=\""+document.getElementById('area_left_entry_images_small_'+(image_current + 1)).value+"\" alt=\"\" title=\"\" border=\"0\">";
			document.getElementById('area_left_entry_images_next').style.display = 'inline';
		}
		
		// Update the prev button.
		if (image_current == 0)
		{
			document.getElementById('area_left_entry_images_prev').style.display = 'none';
		}
		else
		{
			document.getElementById('area_left_entry_images_prev').innerHTML = "<img src=\""+document.getElementById('area_left_entry_images_small_'+(image_current - 1)).value+"\" alt=\"\" title=\"\" border=\"0\">";
			document.getElementById('area_left_entry_images_prev').style.display = 'inline';
		}
	}
	
	return false;
}
function pb_entry_image_prev()
{
	// Get the current image index and the number of images.
	var image_current = document.getElementById('area_left_entry_images_current').value;
	var image_num = document.getElementById('area_left_entry_images_num').value;
	
	// Decrease our index and store the new value.
	image_current--;
	document.getElementById('area_left_entry_images_current').value = image_current;
	
	// Update the image and caption.
	document.getElementById('area_left_entry_images_image').src = document.getElementById('area_left_entry_images_src_'+image_current).value;
	document.getElementById('area_left_entry_images_caption').innerHTML = document.getElementById('area_left_entry_images_caption_'+image_current).value;
	
	// Update the next and previous buttons.
	if (false)
	{
		document.getElementById('area_left_entry_images_next').style.display = 'inline';
		if (image_current == 0)
			document.getElementById('area_left_entry_images_prev').style.display = 'none';
	}
	else
	{
		// Update the next button.
		if (image_current == image_num - 1)
		{
			document.getElementById('area_left_entry_images_next').style.display = 'none';
		}
		else
		{
			document.getElementById('area_left_entry_images_next').innerHTML = "<img src=\""+document.getElementById('area_left_entry_images_small_'+(image_current + 1)).value+"\" alt=\"\" title=\"\" border=\"0\">";
			document.getElementById('area_left_entry_images_next').style.display = 'inline';
		}
		
		// Update the prev button.
		if (image_current == 0)
		{
			document.getElementById('area_left_entry_images_prev').style.display = 'none';
		}
		else
		{
			document.getElementById('area_left_entry_images_prev').innerHTML = "<img src=\""+document.getElementById('area_left_entry_images_small_'+(image_current - 1)).value+"\" alt=\"\" title=\"\" border=\"0\">";
			document.getElementById('area_left_entry_images_prev').style.display = 'inline';
		}
	}			
	
	return false;
}


/*
	Shows images in the entry area.
*/
function pb_entry_image_show(image_index)
{
	document.getElementById('area_left_entry_images_caption').innerHTML = document.getElementById('area_left_entry_images_caption_'+image_index).value;
	document.getElementById('area_left_entry_images_description').innerHTML = document.getElementById('area_left_entry_images_description_'+image_index).value;
	document.getElementById('area_left_entry_images_image').src = document.getElementById('area_left_entry_images_src_'+image_index).value;
	
	return false;
}


/*
	Switches between locations on the search bar.
*/
function pb_entry_location(location_use)
{
	document.getElementById('area_menu_search_entry_location_use').value = location_use;
	
	document.getElementById('area_menu_search_entry_location_input_postcode').style.display = 'none';
	document.getElementById('area_menu_search_entry_location_input_region').style.display = 'none';
	document.getElementById('area_menu_search_entry_location_input_county').style.display = 'none';
	document.getElementById('area_menu_search_entry_location_input_'+location_use).style.display = 'block';

	document.getElementById('area_menu_search_entry_location_select_postcode').style.backgroundImage = "url(\"media/user/images/search_tab_off.gif\")";
	document.getElementById('area_menu_search_entry_location_select_postcode').style.color = '#333333';
	document.getElementById('area_menu_search_entry_location_select_region').style.backgroundImage = "url(\"media/user/images/search_tab_off.gif\")";
	document.getElementById('area_menu_search_entry_location_select_region').style.color = '#333333';
	document.getElementById('area_menu_search_entry_location_select_county').style.backgroundImage = "url(\"media/user/images/search_tab_off.gif\")";
	document.getElementById('area_menu_search_entry_location_select_county').style.color = '#333333';
	document.getElementById('area_menu_search_entry_location_select_'+location_use).style.backgroundImage = "url(\"media/user/images/search_tab_over.gif\")";
	document.getElementById('area_menu_search_entry_location_select_'+location_use).style.color = '#FFFFFF';
		
	return false;
}


/*
	Switches between locations on the search bar.
*/
function pb_events_location(location_use)
{
	document.getElementById('area_menu_search_events_location_use').value = location_use;
	
	document.getElementById('area_menu_search_events_location_input_postcode').style.display = 'none';
	document.getElementById('area_menu_search_events_location_input_region').style.display = 'none';
	document.getElementById('area_menu_search_events_location_input_county').style.display = 'none';
	document.getElementById('area_menu_search_events_location_input_'+location_use).style.display = 'block';

	document.getElementById('area_menu_search_events_location_select_postcode').style.backgroundImage = "url(\"media/user/images/search_tab_off.gif\")";
	document.getElementById('area_menu_search_events_location_select_postcode').style.color = '#333333';
	document.getElementById('area_menu_search_events_location_select_region').style.backgroundImage = "url(\"media/user/images/search_tab_off.gif\")";
	document.getElementById('area_menu_search_events_location_select_region').style.color = '#333333';
	document.getElementById('area_menu_search_events_location_select_county').style.backgroundImage = "url(\"media/user/images/search_tab_off.gif\")";
	document.getElementById('area_menu_search_events_location_select_county').style.color = '#333333';
	document.getElementById('area_menu_search_events_location_select_'+location_use).style.backgroundImage = "url(\"media/user/images/search_tab_over.gif\")";
	document.getElementById('area_menu_search_events_location_select_'+location_use).style.color = '#FFFFFF';
		
	return false;
}


/*
	Switches between location panes in the advanced search for entries.
*/
function pb_events_advanced(pane_use)
{
	document.getElementById('area_left_events_advanced_postcode').style.display = 'none';
	document.getElementById('area_left_events_advanced_region').style.display = 'none';
	document.getElementById('area_left_events_advanced_county').style.display = 'none';
	
	Effect.Appear('area_left_events_advanced_'+pane_use);
	
	return true;
}


/*
	Switches between panes on the event details page.
*/
function pb_event_details(pane_use)
{
	document.getElementById('area_left_event_summary').style.display = 'none';
	document.getElementById('area_left_event_location').style.display = 'none';
	
	document.getElementById('area_left_event_'+pane_use).style.display = 'block';
	
	if (pane_use == 'location' && GBrowserIsCompatible() && !gmaps_map) 
	{
		var lat = document.getElementById('area_left_events_details_latitude').value;
		var lng = document.getElementById('area_left_events_details_longitude').value;
		
		gmaps_map = new GMap2(document.getElementById("area_left_events_details_gmap"));
		gmaps_map.addControl(new GLargeMapControl());
		gmaps_map.setCenter(new GLatLng(lat, lng));
		gmaps_map.setZoom(14);

		gmaps_marker = new GMarker(new GLatLng(lat, lng));
		gmaps_map.addOverlay(gmaps_marker);
	}	
	
	return false;
}


/*
	Switches between panes on the job details page.
*/
function pb_job_details(pane_use)
{
	document.getElementById('area_left_job_summary').style.display = 'none';
	document.getElementById('area_left_job_apply').style.display = 'none';
	
	//document.getElementById('area_left_job_'+pane_use).style.display = 'block';
	Effect.Appear('area_left_job_'+pane_use);
	
	return false;
}


/*
	Switches between panes in the My Bookmarks page.
*/
function pb_my_bookmarks(pane_use)
{
	document.getElementById('area_left_my_bookmarks_articles').style.display = 'none';
	document.getElementById('area_left_my_bookmarks_entries').style.display = 'none';
	document.getElementById('area_left_my_bookmarks_jobs').style.display = 'none';
	
	document.getElementById('area_left_my_bookmarks_'+pane_use).style.display = 'block';
	
	return false;
}


/*
	Submitting the My Bookmarks forms.
	
	form_prefix		Either "articles", "entries" or "jobs".
	form_type			Either "delete" or "message".
*/
function pb_my_bookmarks_submit(form_prefix, form_type)
{
	if (form_type == 'delete')
	{
		document.getElementById('area_left_my_bookmarks_'+form_prefix+'_command').value='my_bookmarks';
		document.getElementById('area_left_my_bookmarks_'+form_prefix+'_display').value='';
		document.getElementById('area_left_my_bookmarks_'+form_prefix+'_form').submit();
	}
	else if (form_type == 'message')
	{
		if (document.getElementById('area_left_my_bookmarks_'+form_prefix+'_numrecipients').value == 0)
		{
			alert('Please select at least one recipient.');
		}
		else if (document.getElementById('area_left_my_bookmarks_'+form_prefix+'_numrecipients').value > pb_config_setting_message_recipients_max)
		{
			alert('You may only select up to '+pb_config_setting_message_recipients_max+' recipients to message at a time.');
		}
		else
		{
			document.getElementById('area_left_my_bookmarks_'+form_prefix+'_command').value='display';
			document.getElementById('area_left_my_bookmarks_'+form_prefix+'_display').value='my_messages_new';
			document.getElementById('area_left_my_bookmarks_'+form_prefix+'_form').submit();
		}
	}
}


/*
	Increase and Decrease the My Bookmarks recipient counters.
*/
function pb_my_bookmarks_checked(checkbox_object, form_prefix)
{
	if (checkbox_object.checked)
		document.getElementById('area_left_my_bookmarks_'+form_prefix+'_numrecipients').value++;
	else
		document.getElementById('area_left_my_bookmarks_'+form_prefix+'_numrecipients').value--;
	return true;
}


/*
	Submitting the My Entries Images form.
*/
function pb_my_entries_images_submit()
{
	document.getElementById('area_left_my_entries_images_form').style.display = 'none';
	document.getElementById('area_left_my_entries_images_please').style.display = 'block';
	
	pb_gototop();

	return true;
}


/*
	Google Maps Initialise
*/
function pb_events_main_gmaps_init()
{
	if (GBrowserIsCompatible()) 
	{
		if (!gmaps_map)
		{
			gmaps_map = new GMap2(document.getElementById("area_left_events_main_gmap"));
			gmaps_map.setCenter(new GLatLng(51.5, -1), 8);
			gmaps_map.addControl(new GLargeMapControl());
			
			GEvent.addListener(gmaps_map, "moveend", function() 
				{
					pb_events_main_gmaps_refresh();
				});
			GEvent.addListener(gmaps_map, "zoomend", function(ig1, ig2) 
				{
					pb_events_main_gmaps_refresh();
				});

			pb_events_main_gmaps_refresh();
		}
	}
}


/*
	Adds a marker.
*/
function pb_events_main_marker_add(id, lat, lng, desc)
{
	if (!gmaps_markers[id])
	{
		var add_marker = true;
	
		for (key in gmaps_markers)
		{
			try
			{
				if (gmaps_markers[key].getPoint().lat() == lat && gmaps_markers[key].getPoint().lng() == lng)
				{
					if (gmaps_info_num[lat+'_'+lng] < 3)
					{
						gmaps_info_text[lat+'_'+lng] += '<br /><br />'+desc;
						gmaps_info_num[lat+'_'+lng]++;
					}
					gmaps_markers[id] = gmaps_markers[key];
					add_marker = false;
				}
			}
			catch (e) { } ;
		}
	
		if (add_marker)
		{
			// Add new marker in this position.
			var new_marker = new GMarker(new GLatLng(lat, lng));
			
			// Store info on this marker.
			gmaps_info_text[lat+'_'+lng] = desc;
			gmaps_info_num[lat+'_'+lng] = 1;
			
			// Create the info window.
			GEvent.addListener(new_marker, "click", function() 
				{
					new_marker.openInfoWindowHtml(gmaps_info_text[lat+'_'+lng]);
				});
	
			// Store a reference to this marker.
			gmaps_markers[id] = new_marker;
			
			// Add to the map.
			gmaps_map.addOverlay(new_marker);
		}
	}
}


/*
	Updates the map.
*/
function pb_events_main_gmaps_refresh()
{
	// Get information about the current map view.
	var zoom_level = gmaps_map.getZoom();
	var bounds = gmaps_map.getBounds();
	var lat_north = bounds.getNorthEast().lat();
	var lat_south = bounds.getSouthWest().lat();
	var lng_east = bounds.getNorthEast().lng();
	var lng_west = bounds.getSouthWest().lng();

	// Get the events for the current view.	
	var xml_response = pb_user_request('interface.xml', 'command=events_get&lat_north='+lat_north+'&lat_south='+lat_south+'&lng_east='+lng_east+'&lng_west='+lng_west);

	var dom = null;
	if (window.ActiveXObject) 
	{
		dom = new ActiveXObject("Microsoft.XMLDOM");
		dom.load(xml_response);
	}
	else
	{
		var xml_response_string = (new XMLSerializer()).serializeToString(xml_response);
		dom = (new DOMParser()).parseFromString(xml_response_string, "application/xml");
	}

	try
	{
		var dom_error = dom.getElementsByTagName('PBError');
		if (dom_error.length != 0)
		{
			// Output the WJError details.
			alert(dom_error[0].firstChild.data);
		}
		else
		{
			var dom_events = dom.getElementsByTagName('event');
			for (var i = 0; i < dom_events.length; i++)
			{
				var event_id = dom_events[i].attributes[0].value;
				var event_latitude = dom_events[i].attributes[1].value;
				var event_longitude = dom_events[i].attributes[2].value;
				var event_description = dom_events[i].firstChild.data;
				
				pb_events_main_marker_add(event_id, event_latitude, event_longitude, event_description);
			}
		}
	}
	catch (e)
	{
		// Output the exception information.
		alert(e);
	}
}


/*
	Sends an HTTP request and returns the resulting XML object.
*/
var request = null;
function pb_user_request(url, parameters)
{
	// Send the HTTP request.
	if (window.XMLHttpRequest) 
	{
		request = new XMLHttpRequest();
		request.open("POST", url, false);
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		request.send(parameters);
	}
	else if (window.ActiveXObject) 
	{
		request = new ActiveXObject("Microsoft.XMLHTTP");
		request.open("POST", url, false);
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		request.send(parameters);
	}

	// Process response on a successful return.
	if (request.status == 200)
	{
		var xml_response = '';
		if (window.ActiveXObject) 
		{
			xml_response = new ActiveXObject("Microsoft.XMLDOM");
			xml_response.loadXML(request.responseText);
		}
		else
		{
			xml_response = (new DOMParser()).parseFromString(request.responseText, "text/xml");
		}
		
		//alert ((new XMLSerializer()).serializeToString(xml_response));
		return xml_response;
	}
}




/**************************************************************************************

	PB Suggest For Directory/Register Search String.

**************************************************************************************/

/*
	Parameters:
	
	selected_keyword		string		If blank, ignored.
	force_close			boolean		If not forcing, will check to see if suggest pane has focus.
*/
function pb_suggest_close(selected_id, selected_keyword, force_close)
{
	if (selected_keyword != '')
	{
		document.getElementById('area_menu_search_entry_override_id').value = selected_id;
		document.getElementById('area_menu_search_entry_search_input').value = selected_keyword;
	}
	
	if (force_close)
	{
		pb_suggest_close_suggest();
	}
	else
	{
		setTimeout('pb_suggest_close_suggest()', 2000);
	}
	
	return false;
}
function pb_suggest_close_suggest()
{
	document.getElementById('area_suggest').style.display = 'none';
	
	return false;
}


/*
	New version of this function - references the pb_suggest_categories array (created in the HMTL header).
	
	Parameters:
	
	entry_type		Either "directory" or "register".  Ignored now - left in for legacy support.
	current_keyword		The current typed in search string.
*/
function pb_suggest_open(entry_type, current_keyword)
{
	document.getElementById('area_menu_search_entry_override_id').value = 'ignore';
	
	current_keyword = current_keyword.toLowerCase();
	
	var i = 0;
	var cutoff_amount = 20;
	
	var ids = new Array();
	var matches = new Array();
	//for (category_name in pb_suggest_categories)
	for (i = 0; i < pb_suggest_categories.length; i++)
	{
		if
		(!(
			pb_suggest_categories[i]['name'].toString().toLowerCase().match(current_keyword) == null
			&&
			pb_suggest_categories[i]['keywords'].toString().match(current_keyword) == null
		))
		{
			ids.push(pb_suggest_categories[i]['id'].toString());
			matches.push(pb_suggest_categories[i]['name'].toString());
		}
	}
	
	if (matches.length == 0)
	{
		// No Matches.
	}
	else
	{
		document.getElementById('area_suggest').innerHTML = '';
		for (i = 0; i < matches.length; i++)
		{
			if (i < cutoff_amount)
				document.getElementById('area_suggest').innerHTML += "<div class=\"area_suggest_option\"><a href=\"#\" onclick=\"return pb_suggest_close('"+(ids[i]).replace(/&#039;/gi, "\\'")+"', '"+(matches[i]).replace(/&#039;/gi, "\\'")+"', true);\" class=\"link_suggest\">"+String(matches[i])+"</a></div>"
			
			if (i == cutoff_amount)
				document.getElementById('area_suggest').innerHTML += "<div class=\"area_suggest_option\"><b>"+(matches.length - cutoff_amount + 1)+" more matches</b></div>"
		}
		document.getElementById('area_suggest').style.display = 'block';
	}
	
	return false;
}


/*
	Old version of this function - used the XML interface.
	Does not utilise the new override functionality.
	
	Parameters:
	
	entry_type		Either "directory" or "register".
	current_keyword		The current typed in search string.
*/
/*
function pb_suggest_open(entry_type, current_keyword)
{
	var cutoff_amount = 20;
	
	var xml_response = pb_user_request('interface.xml', 'command=categories_get&entry_type='+entry_type+'&keyword='+current_keyword);
	
	// Don't show this alert - put into a DIV or something if you need to debug!
	// This method is called onkeyup, meaning everytime you close the alert, it retriggers.
	//alert((new XMLSerializer()).serializeToString(xml_response));	

	try
	{
		var error_xml = xml_response.getElementsByTagName('PBError');
		if (error_xml.length == 0)
		{
			var xml_response_categories = null;
			var i = 0;
			
			xml_response_categories = xml_response.getElementsByTagName('category');
			if (xml_response_categories.length == 0)
			{
				// No Matches.
			}
			else
			{
				document.getElementById('area_suggest').innerHTML = '';
				for (i = 0; i < xml_response_categories.length; i++)
				{
					var xml_response_categories_id = xml_response_categories[i].getElementsByTagName('id');
					var xml_response_categories_name = xml_response_categories[i].getElementsByTagName('name');
					var xml_response_categories_type = xml_response_categories[i].getElementsByTagName('type');
					
					if (i < cutoff_amount)
						document.getElementById('area_suggest').innerHTML += "<div class=\"area_suggest_option\"><a href=\"#\" onclick=\"return pb_suggest_close('', '"+xml_response_categories_name[0].firstChild.data+"', true);\" class=\"link_suggest\">"+xml_response_categories_name[0].firstChild.data+"</a></div>"
					
					if (i == cutoff_amount)
						document.getElementById('area_suggest').innerHTML += "<div class=\"area_suggest_option\"><b>"+(xml_response_categories.length - cutoff_amount + 1)+" more matches</b></div>"
				}
				document.getElementById('area_suggest').style.display = 'block';
			}
		}
	}
	catch (e)
	{
		alert(e);
	}
	
	return false;
}
*/




/**************************************************************************************

	PB Entry Sign Up Form AJAX Functions - Non-Nationwide Locations.

**************************************************************************************/

/*
	Shows or hides the register locations fields depending on whether the entry is nationwide or not.
*/
function pb_signup_nationwide_update(decision)
{
	document.getElementById('area_left_signup_step1_locations_form').style.display = 'none';
	
	if (decision == 'no')
	{
		document.getElementById('area_left_signup_step1_locations_form').style.display = 'block';
	}
	
	return true;
}




/**************************************************************************************

	PB Payment Form AJAX Functions - Credit Cards.

**************************************************************************************/

/*
	Updates the credit cards form depending on the selected payment type.
*/
function pb_payment_method_update(decision)
{
	document.getElementById('area_payment_cc_form').style.display = 'none';
	
	if (decision == 'creditcard')
	{
		document.getElementById('area_payment_cc_form').style.display = 'block';
	}
	
	return true;
}




/**************************************************************************************

	PB Sign Up Form AJAX Functions - References

**************************************************************************************/

/*
	Updates the references form depending on the selected reference type.
*/
function pb_signup_references_update(ref_index, reference_type)
{
	document.getElementById('area_left_signup_step3_ref_'+ref_index+'_company').style.display = 'none';
	document.getElementById('area_left_signup_step3_ref_'+ref_index+'_name').style.display = 'none';
	document.getElementById('area_left_signup_step3_ref_'+ref_index+'_email').style.display = 'none';
	document.getElementById('area_left_signup_step3_ref_'+ref_index+'_address').style.display = 'none';
	document.getElementById('area_left_signup_step3_ref_'+ref_index+'_phone').style.display = 'none';
	document.getElementById('area_left_signup_step3_ref_'+ref_index+'_description').style.display = 'none';
	
	if (reference_type != 'none')
	{
		document.getElementById('area_left_signup_step3_ref_'+ref_index+'_company').style.display = 'inline';
		document.getElementById('area_left_signup_step3_ref_'+ref_index+'_name').style.display = 'inline';
		document.getElementById('area_left_signup_step3_ref_'+ref_index+'_description').style.display = 'inline';
	
		document.getElementById('area_left_signup_step3_ref_'+ref_index+'_email').style.display = 'inline';
		document.getElementById('area_left_signup_step3_ref_'+ref_index+'_address').style.display = 'inline';
		document.getElementById('area_left_signup_step3_ref_'+ref_index+'_phone').style.display = 'inline';
	}
	
	if (reference_type == 'email')
	{
		//document.getElementById('area_left_signup_step3_ref_'+ref_index+'_email').style.display = 'inline';
	}
	if (reference_type == 'letter')
	{
		//document.getElementById('area_left_signup_step3_ref_'+ref_index+'_address').style.display = 'inline';
	}
	if (reference_type == 'phone')
	{
		//document.getElementById('area_left_signup_step3_ref_'+ref_index+'_phone').style.display = 'inline';
	}
	
	return false;
}




/**************************************************************************************

	PB Related Pane AJAX Functions.

**************************************************************************************/

/*
	Switches between panes in a category box.
*/
function pb_related_pane_view_more()
{
	document.getElementById('area_right_entries_related_link').style.display = 'none';
	document.getElementById('area_right_entries_related_content').style.display = 'block';
	
	return false;
}


/**************************************************************************************

	PB Category Panes AJAX Functions

**************************************************************************************/

/*
	Switches between panes in a category box.
*/
function pb_category_pane(current_pane, next_pane)
{
	document.getElementById(current_pane).style.display = 'none';
	
	document.getElementById(next_pane).style.display = 'block';
	//Effect.Appear(next_pane);
	
	return false;
}


/*
	Called when a subcategory is checked or unchecked.
*/
function pb_category_checked(category_delimiter, input_reference, category_id, subcategory_id)
{
	if (input_reference.checked)
	{
		document.getElementById('area_left_category_'+category_id+'_selected').value++;
		document.getElementById('area_left_category_list').value += category_delimiter+subcategory_id+category_delimiter;
	}
	else
	{
		document.getElementById('area_left_category_'+category_id+'_selected').value--;
		document.getElementById('area_left_category_list').value = document.getElementById('area_left_category_list').value.replace(category_delimiter+subcategory_id+category_delimiter, '');
	}

	var num_selected = document.getElementById('area_left_category_'+category_id+'_selected').value;
	if (num_selected == 0)
		document.getElementById('area_left_category_'+category_id+'_summary').innerHTML = num_selected+' of '+document.getElementById('area_left_category_'+category_id+'_total').value+' selected.';	
	else
		document.getElementById('area_left_category_'+category_id+'_summary').innerHTML = "<span class=\"text_red\">"+num_selected+" of "+document.getElementById('area_left_category_'+category_id+'_total').value+" selected.</span>";	
			
	return true;
}




/**************************************************************************************

	PB Recommendation Form AJAX Functions.

**************************************************************************************/

/*
	Adds an extra recommendation.
*/
function pb_recommendation_add()
{
	document.getElementById('area_left_my_spread_recommend_num').value++;
	var num_recoms = document.getElementById('area_left_my_spread_recommend_num').value;

	var div_1 = document.createElement('div');
	div_1.setAttribute('class', 'standard_left_subtitle');
	div_1.innerHTML = "Business "+num_recoms;
	document.getElementById('area_left_my_spread_recommend_form').appendChild(div_1);

	var new_row = "";
	new_row += "<table style=\"position : relative; left : -7px;\" cellpadding=\"8\" cellspacing=\"0\" border=\"0\">";
		new_row += "<tr>";
			new_row += "<td valign=\"middle\" align=\"left\" width=\"140\">Business Name:</td>";
			new_row += "<td valign=\"top\" align=\"left\"><input type=\"text\" class=\"input_small\" name=\"recom_"+num_recoms+"_business_name\" /></td>";
		new_row += "</tr>";
		new_row += "<tr>";
			new_row += "<td valign=\"middle\" align=\"left\">Contact Name:</td>";
			new_row += "<td valign=\"top\" align=\"left\"><input type=\"text\" class=\"input_small\" name=\"recom_"+num_recoms+"_contact_name\" /></td>";
		new_row += "</tr>";
		new_row += "<tr>";
			new_row += "<td valign=\"middle\" align=\"left\">E-mail Address:</td>";
			new_row += "<td valign=\"top\" align=\"left\"><input type=\"text\" class=\"input_small\" name=\"recom_"+num_recoms+"_contact_email\" /></td>";
		new_row += "</tr>";
		new_row += "<tr>";
			new_row += "<td valign=\"middle\" align=\"left\">Phone Number:</td>";
			new_row += "<td valign=\"top\" align=\"left\"><input type=\"text\" class=\"input_small\" name=\"recom_"+num_recoms+"_contact_phone\" /></td>";
		new_row += "</tr>";
		new_row += "<tr>";
			new_row += "<td valign=\"middle\" align=\"left\">Suitable For:</td>";
			new_row += "<td valign=\"top\" align=\"left\">";
				new_row += "<select name=\"recom_"+num_recoms+"_type\">";
					new_row += "<option value=\"directory\">Directory</option>";
					new_row += "<option value=\"register\">Register</option>";
					new_row += "<option value=\"both\">Both</option>";
				new_row += "</select>";
			new_row += "</td>";
		new_row += "</tr>";
		new_row += "<tr>";
			new_row += "<td valign=\"middle\" align=\"left\">Business Description:</td>";
			new_row += "<td valign=\"top\" align=\"left\"><input type=\"text\" class=\"input_small\" name=\"recom_"+num_recoms+"_description\" /></td>";
		new_row += "</tr>";
	new_row += "</table>";
	var div_2 = document.createElement('div');
	div_2.setAttribute('class', 'standard_left_form');
	div_2.innerHTML = new_row;
	document.getElementById('area_left_my_spread_recommend_form').appendChild(div_2);
	
	var div_3 = document.createElement('div');
	div_3.setAttribute('class', 'standard_gap');
	div_3.innerHTML = "&nbsp;";
	document.getElementById('area_left_my_spread_recommend_form').appendChild(div_3);
	document.getElementById('area_left_my_spread_recommend_form').appendChild(div_3);
		
	return false;
}




/**************************************************************************************

	PB Event Add Form AJAX Functions.

**************************************************************************************/

/*
	Initialises the Google Map.
*/
function pb_events_add_init()
{
	if (GBrowserIsCompatible()) 
	{
		gmaps_map = new GMap2(document.getElementById("area_gmap"));
		gmaps_map.addControl(new GSmallMapControl());
	}
}


/*
	Shows the map based on the current postcode.
*/
function pb_events_add_show(postcode)
{
	gmaps_geocoder = new GClientGeocoder();
	gmaps_geocoder.getLatLng('postcode:'+postcode, pb_events_add_show_handler);
}
function pb_events_add_show_handler(location_point)
{
	if (location_point)
	{
		if (!gmaps_map_visible)
		{
			document.getElementById('area_gmap').style.display = 'block';
			gmaps_map_visible = true;
			gmaps_map.checkResize();
		}

		if (gmaps_marker)
		{
			gmaps_map.removeOverlay(gmaps_marker);
		}

		gmaps_marker = new GMarker(new GLatLng(location_point.lat(), location_point.lng()), {draggable: true});
		GEvent.addListener(gmaps_marker, "dragend", function(e)
		{
			pb_events_add_show_handler_update(e.lat(), e.lng());
		});
		pb_events_add_show_handler_update(location_point.lat(), location_point.lng());
		gmaps_map.addOverlay(gmaps_marker);
	}
}
function pb_events_add_show_handler_update(lat, lng)
{
	document.getElementById('area_left_my_events_add_latitude').value = lat;
	document.getElementById('area_left_my_events_add_longitude').value = lng;
	gmaps_map.setCenter(new GLatLng(lat, lng));
	gmaps_map.setZoom(16);
}




/**************************************************************************************

	PB Event Edit Form AJAX Functions.

**************************************************************************************/

/*
	Initialises the Google Map.
*/
function pb_events_edit_init(lat, lng)
{
	if (GBrowserIsCompatible()) 
	{
		gmaps_map = new GMap2(document.getElementById("area_gmap"));
		gmaps_map.addControl(new GSmallMapControl());
		gmaps_map_visible = true;
		gmaps_map.checkResize();
		gmaps_marker = new GMarker(new GLatLng(lat, lng), {draggable: true});
		GEvent.addListener(gmaps_marker, "dragend", function(e)
		{
			pb_events_edit_show_handler_update(e.lat(), e.lng());
		});
		pb_events_edit_show_handler_update(lat, lng);
		gmaps_map.addOverlay(gmaps_marker);
	}
}


/*
	Shows the map based on the current postcode.
*/
function pb_events_edit_show(postcode)
{
	gmaps_geocoder = new GClientGeocoder();
	gmaps_geocoder.getLatLng('postcode:'+postcode, pb_events_edit_show_handler);
}
function pb_events_edit_show_handler(location_point)
{
	if (location_point)
	{
		if (!gmaps_map_visible)
		{
			document.getElementById('area_gmap').style.display = 'block';
			gmaps_map_visible = true;
			gmaps_map.checkResize();
		}

		if (gmaps_marker)
		{
			gmaps_map.removeOverlay(gmaps_marker);
		}

		gmaps_marker = new GMarker(new GLatLng(location_point.lat(), location_point.lng()), {draggable: true});
		GEvent.addListener(gmaps_marker, "dragend", function(e)
		{
			pb_events_edit_show_handler_update(e.lat(), e.lng());
		});
		pb_events_edit_show_handler_update(location_point.lat(), location_point.lng());
		gmaps_map.addOverlay(gmaps_marker);
	}
}
function pb_events_edit_show_handler_update(lat, lng)
{
	document.getElementById('area_left_my_events_edit_latitude').value = lat;
	document.getElementById('area_left_my_events_edit_longitude').value = lng;
	gmaps_map.setCenter(new GLatLng(lat, lng));
	gmaps_map.setZoom(16);
}




/**************************************************************************************

	PB Entry Edit Form AJAX Functions - Non-Nationwide Locations.

**************************************************************************************/

/*
	Shows or hides the register locations fields depending on whether the entry is nationwide or not.
*/
function pb_edit_nationwide_update(decision)
{
	document.getElementById('area_left_my_entries_edit_locations_form').style.display = 'none';
	
	if (decision == 'no')
	{
		document.getElementById('area_left_my_entries_edit_locations_form').style.display = 'block';
	}
	
	return true;
}


/*
	Adds an extra social.
*/
function pb_edit_social_add()
{
	document.getElementById('area_left_my_entries_edit_social_num').value++;
	var num_socials = document.getElementById('area_left_my_entries_edit_social_num').value;

	var new_row = "";
	new_row += "<table style=\"position : relative; left : -7px;\" cellpadding=\"8\" cellspacing=\"0\" border=\"0\" width=\"100%\">";
		new_row += "<tr>";
			new_row += "<td valign=\"middle\" align=\"center\" width=\"10%\"><b>Add</b></td>";
			new_row += "<td valign=\"middle\" align=\"center\" width=\"30%\">";
				new_row += "<select name=\"social_"+num_socials+"_type\">";
					new_row += "<option value=\"twitter\">Twitter</option>";
					new_row += "<option value=\"facebook\">Facebook</option>";
					//new_row += "<option value=\"linkedin\">LinkedIn</option>";
					//new_row += "<option value=\"ecademy\">Ecademy</option>";
				new_row += "</select>";
			new_row += "</td>";
			
			new_row += "<td valign=\"middle\" align=\"center\" width=\"60%\"><input type=\"text\" class=\"input_large\" name=\"social_"+num_socials+"_reference\" /></td>";
		new_row += "</tr>";
	new_row += "</table>";
	var div_1 = document.createElement('div');
	div_1.innerHTML = new_row;
	document.getElementById('area_left_my_entries_edit_social_form').appendChild(div_1);
	
	var div_2 = document.createElement('div');
	div_2.setAttribute('class', 'standard_gap');
	div_2.innerHTML = "&nbsp;";
	document.getElementById('area_left_my_entries_edit_social_form').appendChild(div_2);
	document.getElementById('area_left_my_entries_edit_social_form').appendChild(div_2);
		
	return false;
}


/*
	Adds an extra membership.
*/
function pb_edit_membership_add()
{
	document.getElementById('area_left_my_entries_edit_membership_num').value++;
	var num_memberships = document.getElementById('area_left_my_entries_edit_membership_num').value;

	var new_row = "";
	new_row += "<table style=\"position : relative; left : -7px;\" cellpadding=\"8\" cellspacing=\"0\" border=\"0\" width=\"100%\">";
		new_row += "<tr>";
			new_row += "<td valign=\"middle\" align=\"center\" width=\"10%\"><b>Add</b></td>";
			new_row += "<td valign=\"middle\" align=\"center\" width=\"45%\"><input type=\"text\" class=\"input_small\" name=\"membership_"+num_memberships+"_name\" /></td>";
			new_row += "<td valign=\"middle\" align=\"center\" width=\"45%\"><input type=\"text\" class=\"input_small\" name=\"membership_"+num_memberships+"_status\" /></td>";
		new_row += "</tr>";
	new_row += "</table>";
	var div_1 = document.createElement('div');
	div_1.innerHTML = new_row;
	document.getElementById('area_left_my_entries_edit_membership_form').appendChild(div_1);
	
	var div_2 = document.createElement('div');
	div_2.setAttribute('class', 'standard_gap');
	div_2.innerHTML = "&nbsp;";
	document.getElementById('area_left_my_entries_edit_membership_form').appendChild(div_2);
	document.getElementById('area_left_my_entries_edit_membership_form').appendChild(div_2);
		
	return false;
}


/*
	Adds an extra award.
*/
function pb_edit_award_add()
{
	var year_start = 1800;
	var year_end = new Date().getFullYear();
	var year_current = year_end;
	
	document.getElementById('area_left_my_entries_edit_award_num').value++;
	var num_awards = document.getElementById('area_left_my_entries_edit_award_num').value;

	var new_row = "";
	new_row += "<table style=\"position : relative; left : -7px;\" cellpadding=\"8\" cellspacing=\"0\" border=\"0\" width=\"100%\">";
		new_row += "<tr>";
			new_row += "<td valign=\"middle\" align=\"center\" width=\"10%\"><b>Add</b></td>";
			new_row += "<td valign=\"middle\" align=\"center\" width=\"40%\"><input type=\"text\" class=\"input_small\" name=\"award_"+num_awards+"_title\" /></td>";
			new_row += "<td valign=\"middle\" align=\"center\" width=\"40%\"><input type=\"text\" class=\"input_small\" name=\"award_"+num_awards+"_description\" /></td>";
			new_row += "<td valign=\"middle\" align=\"left\" width=\"10%\">";
				new_row += "<input type=\"hidden\" name=\"award_"+num_awards+"_awarded_day\" value=\"01\" />";
				new_row += "<input type=\"hidden\" name=\"award_"+num_awards+"_awarded_month\" value=\"01\" />";
				new_row += "<select name=\"award_"+num_awards+"_awarded_year\">";
					for (var i = year_start; i <= year_end; i++)
					{
						if (year_current == i)
							new_row += "<option value=\""+i+"\" selected=\"selected\">"+i+"</option>";
						else
							new_row += "<option value=\""+i+"\">"+i+"</option>";
					}
				new_row += "</select>";
			new_row += "</td>";
		new_row += "</tr>";
	new_row += "</table>";
	var div_1 = document.createElement('div');
	div_1.innerHTML = new_row;
	document.getElementById('area_left_my_entries_edit_award_form').appendChild(div_1);
	
	var div_2 = document.createElement('div');
	div_2.setAttribute('class', 'standard_gap');
	div_2.innerHTML = "&nbsp;";
	document.getElementById('area_left_my_entries_edit_award_form').appendChild(div_2);
	document.getElementById('area_left_my_entries_edit_award_form').appendChild(div_2);
		
	return false;
}


/*
	Adds an extra project.
*/
function pb_edit_project_add()
{
	var year_start = 1800;
	var year_end = new Date().getFullYear();
	var year_current = year_end;
	
	document.getElementById('area_left_my_entries_edit_project_num').value++;
	var num_projects = document.getElementById('area_left_my_entries_edit_project_num').value;

	var new_row = "";
	new_row += "<table style=\"position : relative; left : -7px;\" cellpadding=\"8\" cellspacing=\"0\" border=\"0\" width=\"100%\">";
		new_row += "<tr>";
			new_row += "<td valign=\"middle\" align=\"left\" width=\"10%\"><b>Add</b></td>";
			new_row += "<td valign=\"middle\" align=\"left\" width=\"40%\"><input type=\"text\" class=\"input_small\" name=\"project_"+num_projects+"_title\" /></td>";
			new_row += "<td valign=\"middle\" align=\"left\" width=\"10%\">";
				new_row += "<input type=\"hidden\" name=\"project_"+num_projects+"_day\" value=\"01\" />";
				new_row += "<input type=\"hidden\" name=\"project_"+num_projects+"_month\" value=\"01\" />";
				new_row += "<select name=\"project_"+num_projects+"_year\">";
					for (var i = year_start; i <= year_end; i++)
					{
						if (year_current == i)
							new_row += "<option value=\""+i+"\" selected=\"selected\">"+i+"</option>";
						else
							new_row += "<option value=\""+i+"\">"+i+"</option>";
					}
				new_row += "</select>";
			new_row += "</td>";
			new_row += "<td valign=\"middle\" align=\"left\" width=\"40%\"><input type=\"text\" class=\"input_small\" name=\"project_"+num_projects+"_client\" /></td>";
		new_row += "</tr>";
		new_row += "<tr>";
			new_row += "<td valign=\"middle\" align=\"left\">&nbsp;</td>";
			new_row += "<td valign=\"middle\" align=\"right\"><b>Description</b></td>";
			new_row += "<td colspan=\"2\" valign=\"middle\" align=\"left\"><input type=\"text\" class=\"input_large\" name=\"project_"+num_projects+"_content\" /></td>";
		new_row += "</tr>";
		new_row += "<tr>";
			new_row += "<td valign=\"middle\" align=\"left\">&nbsp;</td>";
			new_row += "<td valign=\"middle\" align=\"right\"><b>Image</b></td>";
			new_row += "<td colspan=\"2\" valign=\"middle\" align=\"left\"><input type=\"file\" name=\"project_"+num_projects+"_image\" /></td>";
		new_row += "</tr>";
	new_row += "</table>";
	var div_1 = document.createElement('div');
	div_1.innerHTML = new_row;
	document.getElementById('area_left_my_entries_edit_project_form').appendChild(div_1);
	
	var div_2 = document.createElement('div');
	div_2.setAttribute('class', 'standard_gap');
	div_2.innerHTML = "&nbsp;";
	document.getElementById('area_left_my_entries_edit_project_form').appendChild(div_2);
	document.getElementById('area_left_my_entries_edit_project_form').appendChild(div_2);
		
	return false;
}




/**************************************************************************************

	PB Client Side Checking Functions

**************************************************************************************/

/*
	Supports client side checking of form details throughout the site.
*/
function pb_check_form(command, form_ref)
{
	var error_message = '';
	var areyousure_message = '';
		
	if (command == 'account')
	{
		if (form_ref.alias.value == '' || form_ref.email.value == '' || form_ref.contact_name.value == '')
			error_message = 'Please fill in all required fields.';
		else if (form_ref.changepass_1.value != form_ref.changepass_2.value)
			error_message = 'Your passwords do not match.';
	}
	else if (command == 'add_event')
	{
		var date_start = String(form_ref.event_date_start_year.value)+String(form_ref.event_date_start_month.value)+String(form_ref.event_date_start_day.value);
		var date_end = parseInt(String(form_ref.event_date_end_year.value)+String(form_ref.event_date_end_month.value)+String(form_ref.event_date_end_day.value));

		if (form_ref.event_name.value == '' || form_ref.event_description.value == '' || form_ref.venue_postcode.value == '')
			error_message = 'Please fill in all required fields.';
		else if (date_end < date_start)
			error_message = 'Please make sure that the end date is after the start date.';
	}
	else if (command == 'add_job')
	{
		if (form_ref.info_title.value == '' || form_ref.info_experience.value == '' || form_ref.info_location.value == '' || form_ref.info_salary.value == '' || form_ref.info_desc_short.value == '' || form_ref.info_desc_long.value == '' || form_ref.contact_name.value == '' || form_ref.contact_phone.value == '')
			error_message = 'Please fill in all required fields.';
	}
	else if (command == 'bookmark')
	{
		if (form_ref.bookmark_name.value == '')
			error_message = 'Please fill in all required fields.';
	}
	else if (command == 'comment')
	{
		if (form_ref.title.value == '' || form_ref.title.value == 'Subject')
			error_message = 'Please enter a subject for your comment.';
		else if (form_ref.content.value == '' || form_ref.content.value == 'Message')
			error_message = 'Please enter your comment.';
	}
	else if (command == 'contact_us')
	{
		if (form_ref.name.value == '' || form_ref.email.value == '' || form_ref.phone.value == '' || form_ref.message.value == '')
			error_message = 'Please fill in all fields.';
	}
	else if (command == 'newsletter')
	{
		if (form_ref.email.value == '')
			error_message = 'Please fill in your e-mail address.';
	}
	else if (command == 'reference')
	{
		if (form_ref.confirmed_email.value == '')
			error_message = 'Please fill in your e-mail address.';
	}
	else if (command == 'respond')
	{
		if (form_ref.content.value == '')
			error_message = 'Please enter a cover note.';
	}
	else if (command == 'signup')
	{
		if (form_ref.alias.value == '' || form_ref.email.value == '' || form_ref.pass_1.value == '' || form_ref.pass_2.value == '' || form_ref.contact_name.value == '')
			error_message = 'Please fill in all required fields.';
		else if (form_ref.pass_1.value != form_ref.pass_2.value)
			error_message = 'Your passwords do not match.';
		else if (!form_ref.accept_terms.checked)
			error_message = 'You must read and accept the terms and conditions in order to sign up.';
	}
	else if (command == 'signup_step1')
	{
		if (form_ref.check_account.value == 'yes' && (form_ref.account_alias.value == '' || form_ref.account_email.value == '' || form_ref.account_pass_1.value == '' || form_ref.account_pass_2.value == '' || form_ref.account_name.value == ''))
			error_message = 'Please fill in all required fields.';
		else if (form_ref.check_register.value == 'yes' && (form_ref.register_num_employees.value == '' || form_ref.register_budget_min.value == '' || form_ref.register_budget_max.value == '' || form_ref.register_trade_qualifications.value == ''))
			error_message = 'Please fill in all required fields.';
		else if (form_ref.company_name.value == '' || form_ref.company_description.value == '' || form_ref.contact_name.value == '' || form_ref.address_1.value == '' || form_ref.town.value == '' || form_ref.county.value == '' || form_ref.postcode.value == '' || form_ref.phone_day.value == '')
			error_message = 'Please fill in all required fields.';
		else if (form_ref.check_account.value == 'yes' && form_ref.account_pass_1.value != form_ref.account_pass_2.value)
			error_message = 'Your passwords do not match.';
	}
	else if (command == 'signup_step2')
	{
	}
	else if (command == 'signup_step3')
	{
		if (!form_ref.accept_terms.checked)
			error_message = 'You must read and accept the terms and conditions in order to sign up.';
		else if (!form_ref.accept_coc.checked)
			error_message = 'You must read and accept the code of conduct in order to sign up.';
		else if (document.getElementById('area_payment_cc_form_payment_method_creditcard').checked && (form_ref.cc_number.value == '' || form_ref.cc_cvv.value == ''))
			error_message = 'You must enter all your credit card details.';
		else if (form_ref.references_required.value == 'yes')
		{
			for (var i = 1; i <= 2; i++)
			{
				if (document.getElementById('input_reference_'+i+'_company').value == '')
					error_message = 'Please enter the company name for reference '+i+'.';
				else if (document.getElementById('input_reference_'+i+'_name').value == '')
					error_message = 'Please enter the contact name for reference '+i+'.';
				else if (document.getElementById('input_reference_'+i+'_phone').value == '')
					error_message = 'Please enter the phone number for reference '+i+'.';
			}
		}
	}
	else if (command == 'unsubscribe')
	{
		if (form_ref.email.value == '')
			error_message = 'Please fill in your e-mail address.';
	}
	else if (command == 'update_entry')
	{
	}
	
	if (error_message != '')
	{
		alert(error_message);
		return false;
	}
	else
	{
		if (areyousure_message != '')
		{
			return confirm(areyousure_message);
		}
		else
		{
			return true;
		}
	}
}

