
#include "quiz.h"


reset_next_prev ()
{
#ifdef USE_ON_OFF
	if ( more ( PREV_ENTRY ) )
		OnGadget ( &CmdGadget[ PREV_ENTRY ] , window , (LONG)NULL );
	else
		OffGadget ( &CmdGadget[ PREV_ENTRY ] , window , (LONG)NULL );
	if ( more ( NEXT_ENTRY ) )
		OnGadget ( &CmdGadget[ NEXT_ENTRY ] , window , (LONG)NULL );
	else
		OffGadget ( &CmdGadget[ NEXT_ENTRY ] , window , (LONG)NULL );
#endif
}


more ( direction )
int direction;
{
	char *p;

	switch ( scanning ) {

	case CHOOSE_SENTENCE :
		p = wordptr;
		if ( direction == PREV_ENTRY ) {
			if ( p == chosen_sentence->thai )
				return ( FALSE );
			else
				return ( TRUE );
		}
		else {
			while ( *p != TC_SPACE  &&  *p != '\0' )
				p++;
			return ( *p == TC_SPACE );
		}

	case TS_SEARCH :
		return ( thai_search ( chosen_sentence , screen_sentence.thai ,
			direction ) != NULL );

	case PS_SEARCH :
		return ( phonetic_search ( chosen_sentence , screen_sentence.phonetic ,
			direction ) != NULL );

	case ES_SEARCH :
		return ( english_search ( chosen_sentence , screen_sentence.english ,
			direction ) != NULL );

	case TW_SEARCH :
		return ( thai_search ( chosen_word , screen_word.thai ,
			direction ) != NULL );

	case PW_SEARCH :
		return ( phonetic_search ( chosen_word , screen_word.phonetic ,
			direction ) != NULL );

	case EW_SEARCH :
		return ( english_search ( chosen_word , screen_word.english ,
			direction ) != NULL );

	}
	return ( FALSE );
}


do_scan ( direction )
int direction;
{
	char *p;
	char oldc;

	switch ( scanning ) {

	case CHOOSE_WORD :
		if ( direction == PREV_ENTRY ) {
			if ( cur_split_word > 0 )
				cur_split_word--;
		}
		else {
			if ( cur_split_word + 1 < num_split_words )
				cur_split_word++;
		}
		if ( cur_split_word < num_split_words  &&  cur_split_word >= 0 )
			new_word ( split_words[ cur_split_word ] );
		break;

	case TS_SEARCH :
		new_sentence ( thai_search ( chosen_sentence , scan.thai ,
			direction ) );
		break;

	case PS_SEARCH :
		new_sentence ( phonetic_search ( chosen_sentence , scan.phonetic ,
			direction ) );
		break;

	case ES_SEARCH :
		new_sentence ( english_search ( chosen_sentence , scan.english ,
			direction ) );
		break;

	case TW_SEARCH :
		new_word ( thai_search ( chosen_word , scan.thai , direction ) );
		break;

	case PW_SEARCH :
		new_word ( phonetic_search ( chosen_word , scan.phonetic ,
			direction ) );
		break;

	case EW_SEARCH :
		new_word ( english_search ( chosen_word , scan.english ,
			direction ) );
		break;
	}
}


new_sentence ( sentence )
struct thai_phrase *sentence;
{
	if ( sentence == NULL )
		chosen_sentence = &sentence_head;
	else
		chosen_sentence = sentence;
	if ( show_sentence & SHOW_THAI )
		strcpy ( screen_sentence.thai , chosen_sentence->thai );
	else
		screen_sentence.thai[0] = '\0';
	if ( show_sentence & SHOW_PHONETIC )
		strcpy ( screen_sentence.phonetic , chosen_sentence->phonetic );
	else
		screen_sentence.phonetic[0] = '\0';
	if ( show_sentence & SHOW_ENGLISH )
		strcpy ( screen_sentence.english , chosen_sentence->english );
	else
		screen_sentence.english[0] = '\0';
	RefreshGadgets ( window->FirstGadget , window , (LONG)NULL );
	redraw_thai ( TS_ENTRY );
}


new_word ( word )
struct thai_phrase *word;
{
	if ( word == NULL )
		chosen_word = &word_head;
	else
		chosen_word = word;
	if ( show_word & SHOW_THAI )
		strcpy ( screen_word.thai , chosen_word->thai );
	else
		screen_word.thai[0] = '\0';
	if ( show_word & SHOW_PHONETIC )
		strcpy ( screen_word.phonetic , chosen_word->phonetic );
	else
		screen_word.phonetic[0] = '\0';
	if ( show_word & SHOW_ENGLISH )
		strcpy ( screen_word.english , chosen_word->english );
	else
		screen_word.english[0] = '\0';
	RefreshGadgets ( window->FirstGadget , window , (LONG)NULL );
	redraw_thai ( TW_ENTRY );
}

