	// Used by Search
	var search_keywords;

	// Used by Events
	var search_event_keywords = "";
	var search_location = "";
	var search_month = "";
	var search_year = "";
	var search_page = 1;	

	// Used by the Calendar
	var current_month;					// The current month
	var current_year;					// The current year
	var first_day;						// Day of the week of the first of the current month
	var selected_day;					// The selected day of the month

	// Used by media print functions
	var print_frame_on_load = false;

	/**
	 * Functions used by search
	 **/

	function search_init( keywords )
	{
		search_keywords = keywords;

		select_search_page( 1 );
	}

	function select_search_page( page_number )
	{
		// Rewritten to use ajax.js

		var ajax_post_data = new Array();
		var body_div;

		body_div = document.getElementById( "text" );
		body_div.innerHTML = "";

		ajax_post_data[ 'page' ] = page_number;
		ajax_post_data[ 'keywords' ] = search_keywords;

		get_ajax_data( 'includes/get-search-results.php', ajax_post_data, process_search_results );
	}

	function process_search_results( $search_results )
	{
		var body_div;

		body_div = document.getElementById( "text" );

		body_div.innerHTML = $search_results;

		window.location.hash = "#";
	}	

	/**
	 * Functions used by events
	 **/

	function do_event_search()
	{
		var ajax_post_data = new Array();

		// Build the data to send
		ajax_post_data[ 'page' ] = search_page;

		if ( search_event_keywords != "" )
		{
			ajax_post_data[ 'keywords' ] = search_event_keywords;
		}

		if ( search_location != "" )
		{
			ajax_post_data[ 'location' ] = search_location;
		}

		if ( search_month != "" )
		{
			ajax_post_data[ 'month' ] = search_month;
		}

		if ( search_year != "" )
		{
			ajax_post_data[ 'year' ] = search_year;
		}

		get_ajax_data( 'includes/get_events.php', ajax_post_data, process_event_html );
	}

	function process_event_html( event_html )
	{
		var body_div;

		body_div = document.getElementById( "text" );

		body_div.innerHTML = event_html;
	}

	function select_page( page_number )
	{
		search_page = page_number;

		do_event_search();
	}

	function submit_search()
	{
		search_month = get_combobox_value( 'month' );
		search_year = get_combobox_value( 'year' );

		search_location = document.getElementById( "location" ).value;
		search_event_keywords = document.getElementById( "event_keyword" ).value;
		
		search_page = 1;

		do_event_search();
	}

	function get_combobox_value( combobox_id )
	{
		var combobox_element;

		combobox_element = document.getElementById( combobox_id );

		return combobox_element.options[ combobox_element.selectedIndex ].value;
	}

	function get_event_details( event_id )
	{
		var ajax_post_data = new Array();

		ajax_post_data[ 'event_id' ] = event_id;

		get_ajax_data( 'includes/get_event_details.php', ajax_post_data, process_event_html );
	}

	/**
	 * Calendar functions
	 **/

	function calendar_init()
	{
		var current_date = new Date();
		var current_day;

		current_day = parseInt( document.getElementById( "selected_day" ).value );

		if ( current_day > 0 )
		{
			current_month = parseInt( document.getElementById( "selected_month" ).value );
			current_year = parseInt( document.getElementById( "selected_year" ).value );

			display_month();

			select_date( current_year, current_month, current_day );
		}
		else
		{
			current_month = current_date.getMonth();
			current_year = current_date.getFullYear();

			display_month();
		}
	}

	function display_month()
	{
		var day_counter;				// Counter through the days
		var table_cell;					// A cell in the calendar table
		var first_of_month = new Date();// Date object for the first of the month in question
		var days_in_month;				// Number of days in month

		// Clear the selected day
		select_date( -1, -1, -1 );

		// Set the title
		table_cell = document.getElementById( "Month" );
		table_cell.innerHTML = get_month_name( current_month ) + " " + String( current_year );

		// Blank out the table
		for ( day_counter = 0; day_counter < 35; day_counter++ )
		{
			table_cell = document.getElementById( "day" + String( day_counter ) );

			table_cell.innerHTML = "";
			table_cell.className = "calendar_disabled";
		}

		// Work out the day of the first of the month
		first_of_month.setFullYear( current_year );
		first_of_month.setMonth( current_month );
		first_of_month.setDate( 1 );

		first_day = first_of_month.getDay();

		// Convert to 0 = Monday
		first_day = ( first_day + 6 ) % 7;

		days_in_month = get_days_in_month( current_month, current_year );

		// Fill in the calendar
		for ( day_counter = 1; day_counter <= days_in_month; day_counter++ )
		{
			table_cell = document.getElementById( get_cell_name( day_counter ) );

			table_cell.innerHTML = String( day_counter );
		}

		request_availability();
	}

	function get_cell_name( day_of_month )
	{
		var cell_number;

		cell_number = ( day_of_month + first_day - 1 ) % 35;

		return ( "day" + String( cell_number ) );
	}

	function get_month_name( month )
	{
		var month_names = new Array( "January", "February", "March", "April", "May", "June", 
									 "July", "August", "September", "October", "November", "December" );

		return month_names[ month ];
	}

	function get_days_in_month( month, year )
	{
		var days;

		if ( month == 1 )
		{
			if ( year % 4 == 0 )
			{
				days = 29;
			}
			else
			{
				days = 28;
			}
		}
		else if ( ( month == 8 ) || ( month == 3 ) || ( month == 5 ) || ( month == 10 ) )
		{
			days = 30;
		}
		else
		{
			days = 31;
		}

		return days;
	}

	function request_availability()
	{
		var ajax_post_data = new Array();

		// Build the data to send
		ajax_post_data[ 'year' ] = current_year;
		ajax_post_data[ 'month' ] = ( current_month + 1 );

		get_ajax_data( 'includes/get_event_dates.php', ajax_post_data, process_event_dates );
	}

	function process_event_dates( event_dates_text )
	{
		var year;
		var month;
		var remaining_text;
		var day;
		var day_element;

		year = get_field( event_dates_text );
		remaining_text = remove_field( event_dates_text );

		month = get_field( remaining_text );
		remaining_text = remove_field( remaining_text );

		if ( ( year == current_year ) && ( month == current_month + 1 ) )
		{
			while ( remaining_text.length > 0 )
			{
				day = get_field( remaining_text );
				remaining_text = remove_field( remaining_text );

				day_element = document.getElementById( get_cell_name( parseInt( day ) ) );

				day_element.className = "calendar";
			}
		}
	}

	function get_field( data_string )
	{
		var field_end;
		var value;

		field_end = data_string.indexOf( "|" );

		if ( field_end == -1 )
		{
			value = data_string;
		}
		else
		{
			value = data_string.substr( 0, field_end );
		}

		return value;
	}

	function remove_field( data_string )
	{
		var field_end;
		var value;

		field_end = data_string.indexOf( "|" );

		if ( field_end == -1 )
		{
			value = "";
		}
		else
		{
			value = data_string.substr( field_end + 1 );
		}

		return value;
	}

	function select_date( year, month, date )
	{
		if ( selected_day >= 0 )
		{
			document.getElementById( "day" + String( selected_day ) ).className = "calendar";
		}

		document.getElementById( "selected_year" ).value = year;
		document.getElementById( "selected_month" ).value = month;
		document.getElementById( "selected_day" ).value = date;

		if ( date > 0 )
		{
			selected_day = date + first_day - 1;

			document.getElementById( get_cell_name( date ) ).className = "calendar_selected";
		}
		else
		{
			selected_day = -1;
		}
	}

	function next_month()
	{
		current_month++;

		if ( current_month > 11 )
		{
			current_month = 0;
			current_year++;
		}

		display_month();
	}

	function previous_month()
	{
		current_month--;

		if ( current_month < 0 )
		{
			current_month = 11;
			current_year--;
		}

		display_month();
	}

	function day_clicked( day_index )
	{
		var ajax_post_data = new Array();
		var day_of_month;
		var day_element;

		day_element = document.getElementById( "day" + String( day_index ) );

		if ( day_element.className == "calendar" )
		{
			day_of_month = parseInt( day_element.innerHTML );

			search_keywords = "";
			search_location = "";
			search_page = 1;

			// Build the data to send
			ajax_post_data[ 'page' ] = 1;
			ajax_post_data[ 'year' ] = current_year;
			ajax_post_data[ 'month' ] = current_month + 1;
			ajax_post_data[ 'day_of_month' ] = day_of_month;

			get_ajax_data( 'includes/get_events.php', ajax_post_data, process_event_html );
		}
	}

	/**
	 * Home Page functions
	 **/

	function adjust_article_body( index, url )
	{
		content_div = document.getElementById( 'media_cell' + index );

		text = content_div.innerHTML;

		suffix = '... ' + url + 'read more</a>';
		text_copy = text;

		write_complete = false;

		while ( write_complete == false )
		{
			last_space = text_copy.lastIndexOf( ' ' );

			if ( last_space == -1 )
			{
				text_copy = '';
				write_complete = true;
			}
			else
			{
				text_copy = text_copy.substr( 0, last_space );
			}

			content_div.innerHTML = text_copy + suffix;

			if ( content_div.offsetHeight <= 68 )
			{
				write_complete = true;
			}
		}
	}

	/**
	 * Media article functions
	 **/

	function media_email_to_friend( article_id )
	{
		window.open( 'includes/media_email_to_friend.php?id=' + article_id, 'Send article to friend', 
					 'height=500, width=500, scrollbars=no' );
	}

	function load_and_print_page( url )
	{
		var current_time = new Date();

		print_frame_on_load = true;

		printer_frame_element = document.getElementById( 'printer_frame' );

		// Include the time in the URL to ensure it never caches
		printer_frame_element.src = url + "&time=" + current_time.getTime();
	}

	function on_printer_frame_loaded()
	{
		// Check it's loaded content to print (and not just the standard page load)
		if ( print_frame_on_load )
		{
			printer_frame_element = document.getElementById( 'printer_frame' );

			printer_frame_element.contentWindow.focus();
			printer_frame_element.contentWindow.print();
		}

		print_frame_on_load = false;
	}

