var sequence_start_pos;
var sequence_pos;
var max_speed = 25;
var min_speed = 2;
var speed = -max_speed;
var tug_pause_len = 75;
var tug_pause_timer;
var dot_com_element;
var tugboat_element;
var current_open_menu = '';
var no_of_pdf_pages;
var pdf_page_timer = 0;
var pdf_slide_timer = 0;
var pdf_slide_pos;
var pdf_end_slide_pos;
var pdf_slide_step;
var pdf_slide_direction;
var pdf_stored_slides = 0;
var paper_ids = new Array();
var all_papers_open = false;
var about_its_timer;
var about_its_stage;
var about_its_step;
var four_1_element;
var four_2_element;
var successful_years_element;
var its_image_strip_element;
var conventions_elements;
var book_ids = new Array();
var book_search_texts = new Array();
var tour_prices = new Array( 0, 0, 0 );

/**
 * Utility functions. Look to move to a standard include file
 **/

function get_combobox_value( combobox_id )
{
	combobox_element = document.getElementById( combobox_id );

	return combobox_element.options[ combobox_element.selectedIndex ].value;
}

function send_form_to_ajax( php_file, form_name, ajax_response_handler )
{
	var ajax_post_data = new Array();
	var form_element = document.getElementById( form_name );
	var element_counter;

	for ( element_counter = 0; element_counter < form_element.length; element_counter++ )
	{
		input_element = form_element.elements[ element_counter ];

		if ( input_element.type == 'checkbox' )
		{
			if ( input_element.checked )
			{
				ajax_post_data[ input_element.name ] = 1;
			}
		}
		else if ( input_element.type == 'radio' )
		{
			if ( input_element.checked )
			{
				ajax_post_data[ input_element.name ] = input_element.value;
			}
		}
		else if ( input_element.type == 'select-one' )
		{
			ajax_post_data[ input_element.name ] = input_element.options[ input_element.selectedIndex ].value;
		}
		else
		{
			ajax_post_data[ input_element.name ] = input_element.value;
		}
	}

	get_ajax_data( php_file, ajax_post_data, ajax_response_handler );
}

/**
 * Project functions
 **/

function start_tugboat_sequence()
{
	dot_com_element = document.getElementById( 'dot_com' );

	if ( dot_com_element != null )
	{
		tugboat_element = document.getElementById( 'tugboat' );

		page_width = document.getElementById( 'header' ).offsetWidth;
		inner_width = document.getElementById( 'header_inner' ).offsetWidth;

		sequence_start_pos = ( page_width + inner_width ) / 2;

		if ( sequence_start_pos < 980 )
		{
			sequence_start_pos = 980;
		}

		sequence_start_pos *= 10;

		sequence_pos = sequence_start_pos;

		tugboat_timer = window.setInterval( 'on_tugboat_timer()', 20 );
	}
}

function on_tugboat_timer()
{
	var dot_com_finish_pos = 6510;
	var tug_offset = 2150;
	var tug_start_pos = dot_com_finish_pos + tug_offset;

	if ( speed < 0 )
	{
		if ( sequence_pos <= dot_com_finish_pos )
		{
			speed = 0;
			tug_pause_timer = 0;
		}
		else
		{
			speed = -Math.floor( ( sequence_pos - dot_com_finish_pos - 80 ) / 40 );

			if ( speed < -max_speed )
			{
				speed = -max_speed;
			}
			else if ( speed > -min_speed )
			{
				speed = -min_speed;
			}
		}

		sequence_pos += speed;
	}
	else if ( speed == 0 )
	{
		tug_pause_timer++;

		if ( tug_pause_timer >= tug_pause_len )
		{
			speed = 2;
			sequence_pos = tug_start_pos;
		}
	}
	else
	{
		if ( sequence_pos >= sequence_start_pos )
		{
			window.clearInterval( tugboat_timer );
			tugboat_timer = 0;
		}
		else
		{
			speed = Math.floor( ( sequence_pos - tug_start_pos ) / 60 );

			if ( speed > max_speed )
			{
				speed = max_speed;
			}
			else if ( speed < min_speed )
			{
				speed = min_speed;
			}

			sequence_pos += speed;
		}
	}

	new_pos = Math.floor( sequence_pos / 10 );

	if ( speed <= 0 )
	{
		dot_com_element.style.left = new_pos + 'px';
		tugboat_element.style.left = ( new_pos + 215 ) + 'px';
	}
	else
	{
		tugboat_element.style.left = new_pos + 'px';
	}
}
/*
function mouse_over_section_link( link_colour )
{
	document.getElementById( 'section_link_glow_' + link_colour ).style.visibility = 'visible';

	document.getElementById( 'section_link_shade_red' ).style.visibility = 'visible';
	document.getElementById( 'section_link_shade_grey' ).style.visibility = 'visible';
	document.getElementById( 'section_link_shade_blue' ).style.visibility = 'visible';

	document.getElementById( 'section_link_shade_' + link_colour ).style.visibility = 'hidden';
}

function mouse_out_section_link( link_colour )
{
	document.getElementById( 'section_link_glow_' + link_colour ).style.visibility = 'hidden';

	document.getElementById( 'section_link_shade_red' ).style.visibility = 'hidden';
	document.getElementById( 'section_link_shade_grey' ).style.visibility = 'hidden';
	document.getElementById( 'section_link_shade_blue' ).style.visibility = 'hidden';
}
*/

function mouse_over_section_link( link_colour )
{
	document.getElementById( 'header_strip_' + link_colour ).src = 'images/header_strip_' + link_colour + '_hover.png';
}

function mouse_out_section_link( link_colour )
{
	document.getElementById( 'header_strip_' + link_colour ).src = 'images/header_strip_' + link_colour + '.png';
}

function mouse_out_section_link_home( link_colour )
{
	document.getElementById( 'header_strip_' + link_colour ).src = 'images/header_strip_' + link_colour + '_selected.png';
}

function open_close_menu( menu_id )
{
	menu_element = document.getElementById( 'menu_outer' + menu_id );

	if ( menu_element.className.indexOf( 'menu_item_open' ) == -1 )
	{
		if ( current_open_menu != '' )
		{
			document.getElementById( current_open_menu ).className = 'menu_item_outer';
		}

		menu_element.className = 'menu_item_outer menu_item_open';
		
		current_open_menu = 'menu_outer' + menu_id;
	}
	else
	{
		menu_element.className = 'menu_item_outer';
	}
}

function set_current_open_menu( menu_id )
{
	current_open_menu = menu_id;
}

function start_pdf_page_display( no_of_pages )
{
	no_of_pdf_pages = no_of_pages;
	pdf_slide_pos = 0;
	pdf_slide_step = 0;

	pdf_page_timer = window.setInterval( 'on_pdf_page_timer()', 5000 );
}

function on_pdf_page_timer()
{
	if ( pdf_slide_timer == 0 )
	{
		pdf_end_slide_pos = ( pdf_slide_step + 1 ) * 540;
		pdf_slide_direction = 1;

		pdf_slide_timer = window.setInterval( 'on_pdf_slide_timer()', 20 );
	}
}

function on_pdf_slide_timer()
{
	if ( pdf_slide_direction == 1 )
	{
		pdf_slide_pos += 10;

		if ( pdf_slide_pos > pdf_end_slide_pos )
		{
			pdf_slide_pos = pdf_end_slide_pos;
		}
	}
	else
	{
		pdf_slide_pos -= 10;

		if ( pdf_slide_pos < pdf_end_slide_pos )
		{
			pdf_slide_pos = pdf_end_slide_pos;
		}
	}

	document.getElementById( 'pdf_display_inner' ).style.left = ( -pdf_slide_pos ) + 'px';

	if ( pdf_slide_pos == pdf_end_slide_pos )
	{
		window.clearInterval( pdf_slide_timer );
		pdf_slide_timer = 0;

		if ( pdf_slide_direction == 1 )
		{
			pdf_slide_step++;

			if ( pdf_slide_step >= no_of_pdf_pages )
			{
				pdf_slide_step = 0;
				pdf_slide_pos = 0;
			}
		}
		else
		{
			pdf_slide_step--;
		}

		if ( pdf_stored_slides < 0 )
		{
			pdf_stored_slides++;

			on_pdf_page_left();
		}

		if ( pdf_stored_slides > 0 )
		{
			pdf_stored_slides--;

			on_pdf_page_right();
		}
	}
}

function on_pdf_page_left()
{
	if ( pdf_page_timer != 0 )
	{
		window.clearInterval( pdf_page_timer );
		pdf_page_timer = 0;
	}

	if ( pdf_slide_timer != 0 )
	{
		pdf_stored_slides--;
	}
	else
	{
		if ( pdf_slide_step == 0 )
		{
			pdf_slide_step = no_of_pdf_pages;
			pdf_slide_pos = pdf_slide_step * 540;
		}

		pdf_end_slide_pos = ( pdf_slide_step - 1 ) * 540;
		pdf_slide_direction = -1;

		pdf_slide_timer = window.setInterval( 'on_pdf_slide_timer()', 20 );
	}
}

function on_pdf_page_right()
{
	if ( pdf_page_timer != 0 )
	{
		window.clearInterval( pdf_page_timer );
		pdf_page_timer = 0;
	}

	if ( pdf_slide_timer != 0 )
	{
		pdf_stored_slides++;
	}
	else
	{
		pdf_end_slide_pos = ( pdf_slide_step + 1 ) * 540;
		pdf_slide_direction = 1;

		pdf_slide_timer = window.setInterval( 'on_pdf_slide_timer()', 20 );
	}
}

function search_global_directory()
{
	if ( ( get_combobox_value( 'company' ) == -1 )
	  && ( get_combobox_value( 'country' ) == -1 )
	  && ( get_combobox_value( 'category' ) == -1 ) )
	{
		window.alert( 'Please select at least one option first' );
	}
	else
	{
		document.getElementById( 'global_directory_form' ).submit();
	}
}

function search_its_club()
{
	if ( ( get_combobox_value( 'company' ) == -1 )
	  && ( get_combobox_value( 'country' ) == -1 )
	  && ( get_combobox_value( 'category' ) == -1 )
	  && ( document.getElementById( 'members_name' ).value == '' ) )
	{
		window.alert( 'Please select at least one option first' );
	}
	else
	{
		document.getElementById( 'its_club_search_form' ).submit();
	}
}

function submit_contact_form()
{
	send_form_to_ajax( 'send_contact_form.php', 'contact_form', on_contact_form_sent );
}

function on_contact_form_sent( data )
{
	window.alert( data );
}

function submit_recommend_form()
{
	send_form_to_ajax( 'store_recommend_form.php', 'recommend_form', on_recommend_form_processed );
}

function on_recommend_form_processed( data )
{
	window.alert( data );
}

/**
 * Papers and Speakers page
 **/

function register_paper( paper_id )
{
	paper_ids[ paper_ids.length ] = paper_id;
}

function open_close_all_papers()
{
	all_papers_open = !all_papers_open;

	for ( paper_counter = 0; paper_counter < paper_ids.length; paper_counter++ )
	{
		paper_element = document.getElementById( 'paper_synopsis' + paper_ids[ paper_counter ] );

		if ( all_papers_open )
		{
			paper_element.className = 'paper_synopsis paper_synopsis_open';
		}
		else
		{
			paper_element.className = 'paper_synopsis';
		}
	}
}

function open_close_paper( paper_id )
{
	paper_element = document.getElementById( 'paper_synopsis' + paper_id );

	if ( paper_element.className == 'paper_synopsis' )
	{
		paper_element.className = 'paper_synopsis paper_synopsis_open';
	}
	else
	{
		paper_element.className = 'paper_synopsis';
	}
}

/**
 * Shopping Cart
 **/

function delete_item( item_id )
{
	var ajax_post_data = new Array();

	if ( window.confirm( 'Are you sure you want to delete this item from your cart?' ) )
	{
		ajax_post_data[ 'item_to_delete' ] = item_id;

		get_ajax_data( 'modify_cart.php', ajax_post_data, cart_change_handler );
	}
}

function change_quantity( item_id, original_quantity )
{
	var ajax_post_data = new Array();

	new_quantity = '0';

	while ( ( new_quantity != null ) 
		 && ( ( parseInt( new_quantity ) == 0 ) 
		   || ( isNaN( parseInt( new_quantity ) ) ) ) )
	{
		new_quantity = window.prompt( 'Enter the new quantity', original_quantity )

		if ( new_quantity != null )
		{
			if ( isNaN( parseInt( new_quantity ) ) )
			{
				window.alert( 'Quantity must be a number' );
				new_quantity = null;
			}
			else if ( parseInt( new_quantity ) <= 0 )
			{
				window.alert( 'Quantity must be greater than zero' );
				new_quantity = null;
			}
		}
	}

	if ( new_quantity != null )
	{
		ajax_post_data[ 'item_to_change' ] = item_id;
		ajax_post_data[ 'new_quantity' ] = parseInt( new_quantity );

		get_ajax_data( 'modify_cart.php', ajax_post_data, cart_change_handler );
	}
}

function cannot_change_quantity()
{
	window.alert( 'You cannot change the quantity for this item.' );
}

function cart_change_handler( data )
{
	document.getElementById( 'shopping_basket' ).innerHTML = data;
}

function on_cart_country_change()
{
	var ajax_post_data = new Array();

	if ( document.getElementById( 'delivery_cell' ) != null )
	{
		new_country_id = get_combobox_value( 'country' );

		ajax_post_data[ 'country_id' ] = new_country_id;

		get_ajax_data( 'get_postage_options.php', ajax_post_data, set_postage_options );
	}
}

function set_postage_options( data )
{
	document.getElementById( 'delivery_cell' ).innerHTML = data;
}

function cart2_submit( action )
{
	document.getElementById( 'action' ).value = action;

	document.getElementById( 'cart2_form' ).submit();
}

function set_payment_method( method )
{
	document.getElementById( 'pay_by_cc' ).value = method;

	document.getElementById( 'bank_transfer' ).style.display = ( ( method == 0 ) ? 'block' : 'none' );
	document.getElementById( 'cc_details' ).style.display = ( ( method == 1 ) ? 'block' : 'none' );
}

/**
 * About ITS Page
 **/

function start_about_its()
{
	about_its_stage = 1;
	about_its_step = -100;
	
	four_1_element = document.getElementById( 'four_1' );
	four_2_element = document.getElementById( 'four_2' );
	successful_years_element = document.getElementById( 'successful_years' );
	its_image_strip_element = document.getElementById( 'its_image_strip' );
	
	conventions_elements = new Array();

	for ( convention_counter = 0; convention_counter < 22; convention_counter++ )
	{
		conventions_elements[ convention_counter ] = document.getElementById( 'convention_display' + convention_counter );
		conventions_elements[ convention_counter ].style.left = '210px';
		conventions_elements[ convention_counter ].style.top = ( convention_counter * 15 + 153 ) + 'px';
		conventions_elements[ convention_counter ].style.visibility = 'visible';
	}

	four_1_element.style.left = '-100px';
	four_2_element.style.left = '-100px';
	four_1_element.style.visibility = 'visible';
	four_2_element.style.visibility = 'visible';

	about_its_timer = window.setInterval( 'on_about_its_timer()', 20 );
}

function on_about_its_timer()
{
	if ( about_its_stage == 1 )
	{
		about_its_step += 3;

		if ( about_its_step >= 110 )
		{
			about_its_step = 110;
		}

		four_1_element.style.left = ( ( about_its_step > 0 ) ? 0 : about_its_step ) + 'px';
		four_2_element.style.left = about_its_step + 'px';

		if ( about_its_step >= 110 )
		{
			about_its_stage = 2;
			about_its_step = -198;
			successful_years_element.style.left = '58px';
			successful_years_element.style.top = '-198px';
			successful_years_element.style.visibility = 'visible';
		}
	}
	else if ( about_its_stage == 2 )
	{
		about_its_step += 3;

		if ( about_its_step >= 150 )
		{
			about_its_step = 150;
		}

		successful_years_element.style.top = about_its_step + 'px';

		if ( about_its_step >= 150 )
		{
			about_its_stage = 3;
			about_its_step = 210;
		}
	}
	else if ( about_its_stage == 3 )
	{
		about_its_step -= 2;

		text_pos = about_its_step;

		for ( convention_counter = 0; convention_counter < 22; convention_counter++ )
		{
			conventions_elements[ convention_counter ].style.left = ( ( text_pos < 100 ) ? 100 : text_pos ) + 'px';

			text_pos += 7;
		}

		if ( text_pos <= 100 )
		{
			about_its_stage = 4;
			about_its_step = 210;
			its_image_strip_element.style.left = '210px';
			its_image_strip_element.style.visibility = 'visible'
		}
	}
	else if ( about_its_stage == 4 )
	{
		about_its_step--;

		its_image_strip_element.style.left = about_its_step + 'px';

		if ( about_its_step <= -750 )
		{
			about_its_step += 750;
		}
	}
}

/**
 * Book Search
 **/

function add_search_book( book_id, search_text )
{
	book_index = book_ids.length;

	book_ids[ book_index ] = book_id;
	book_search_texts[ book_index ] = search_text.toLowerCase();
}

function do_book_search()
{
	search_for = document.getElementById( 'search_text' ).value.toLowerCase();

	search_terms = search_for.split( ' ' );

	book_found = false;

	for ( book_counter = 0; book_counter < book_ids.length; book_counter++ )
	{
		display_book = ( search_for.length >= 3 );

		for ( term_counter = 0; term_counter < search_terms.length; term_counter++ )
		{
			search_result = book_search_texts[ book_counter ].indexOf( search_terms[ term_counter ] );

			if ( search_result == -1 )
			{
				display_book = false;
			}
		}

		if ( display_book )
		{
			document.getElementById( 'book_result' + book_ids[ book_counter ] ).style.display = 'table-row';
			book_found = true;
		}
		else
		{
			document.getElementById( 'book_result' + book_ids[ book_counter ] ).style.display = 'none';
		}
	}

	if ( ( book_found == false ) && ( search_for.length >= 3 ) )
	{
		document.getElementById( 'no_matches' ).style.display = 'block';
	}
	else
	{
		document.getElementById( 'no_matches' ).style.display = 'none';
	}
}

/**
 * ITS Club
 **/

function recover_password()
{
	var ajax_post_data = new Array();

	ajax_post_data[ 'user_id' ] = document.getElementById( 'user_id' ).value;

	get_ajax_data( 'send_password.php', ajax_post_data, on_password_recovery );
}

function on_password_recovery( data )
{
	window.alert( data );
}

function is_event_return( event )
{
	var keynum;
	var is_return;

	if( window.event ) // IE
	{
		keynum = event.keyCode;
	}
	else if( event.which ) // Netscape/Firefox/Opera
	{
		keynum = event.which;
	}

	if ( keynum == 13 )
	{
		is_return = true;
	}
	else
	{
		is_return = false;
	}

	return is_return;
}

function recover_password_on_return( event )
{
	if ( is_event_return( event ) )
	{
		recover_password();
	}
}

function goto_password_on_return( event )
{
	if ( is_event_return( event ) )
	{
		document.getElementById( 'password' ).focus();
	}
}

function login_on_return( event )
{
	if ( is_event_return( event ) )
	{
		document.getElementById( 'login_form' ).submit();
	}
}

function goto_new_password_on_return( event )
{
	if ( is_event_return( event ) )
	{
		document.getElementById( 'new_password' ).focus();
	}
}

function goto_confirm_password_on_return( event )
{
	if ( is_event_return( event ) )
	{
		document.getElementById( 'confirm_password' ).focus();
	}
}

function change_password_on_return( event )
{
	if ( is_event_return( event ) )
	{
		document.getElementById( 'change_password_form' ).submit();
	}
}

function update_editorial_entry_size()
{
	editorial_entry_element = document.getElementById( 'editorial_entry' );
	editorial_entry_length = editorial_entry_element.value.length;

	document.getElementById( 'editorial_entry_chr_count' ).innerHTML = ( 1200 - editorial_entry_length );

	if ( editorial_entry_length > 1200 )
	{
		editorial_entry_element.style.backgroundColor = '#d31c30';
	}
	else
	{
		editorial_entry_element.style.backgroundColor = '';
	}
}

function recover_stand_password()
{
	var ajax_post_data = new Array();

	ajax_post_data[ 'stand_number' ] = document.getElementById( 'stand_number' ).value;

	get_ajax_data( 'send_stand_password.php', ajax_post_data, on_password_recovery );
}

function recover_stand_password_on_return( event )
{
	if ( is_event_return( event ) )
	{
		recover_stand_password();
	}
}

function select_tour( day_number, price )
{
	tour_prices[ day_number ] = price;

	total_price = tour_prices[ 0 ] + tour_prices[ 1 ] + tour_prices[ 2 ];

	document.getElementById( 'total_price' ).innerHTML = '&euro;' + total_price;

	document.getElementById( 'total_price_input' ).value = total_price;
}


