#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>
#include <egb.h>
#include <guidbg.h>
#include <eintm.h>
#include "music.h"

int helpPanelId = -1 ;
int helpCloseBtnId = -1 ;
int helpBackBtnId = -1 ;
int helpId[7] = -1 ;
int helpBtn[6] = -1 ;
int helpMes[26] = -1 ;
int freeMemMesId = -1 ;
int helpPage = -1 ;

static char freeMemMes[35] ;
static int oldFreeMem = 0 ;
int dispFreeMem(){
	int i;
	i = EIN_checkMem() ;
	if (i == oldFreeMem)
		return NOERR ;
	oldFreeMem = i ;
	_itoa(i, freeMemMes, 10) ;
	MMI_SendMessage(freeMemMesId, MM_SETMSG, 1, "            ") ;
	updateObj(freeMemMesId) ;
	MMI_SendMessage(freeMemMesId, MM_SETMSG, 1, freeMemMes) ;
	updateObj(freeMemMesId) ;
	return NOERR ;
}

int setHelpPage(int page){ 
	int		dx, dy ;
	HYPER	hyp1,hyp2 ;
	if (helpPage != -1) {
		MMI_SendMessage(helpId[helpPage], MM_ERASE, 0) ;
		MMI_SendMessage(helpId[helpPage], MM_DETACH, 0) ;
	}

	MMI_SendMessage(helpId[page], MM_GETHYPER, 1, &hyp1) ;
	MMI_SendMessage(helpPanelId, MM_GETHYPER, 1, &hyp2) ;
	dx = hyp2.fr.lupx - hyp1.fr.lupx + 1 ;
	dy = hyp2.fr.lupy - hyp1.fr.lupy + 17 ;
	MMI_SendMessage(helpId[page], MM_MOVE, 2, dx, dy) ;
	MMI_SendMessage(helpId[page], MM_ATTACH, 1, helpPanelId) ;
	if (page == 0)
		MMI_SendMessage(helpBackBtnId, MM_DETACH, 0) ;
	else {
		MMI_SendMessage(helpBackBtnId, MM_GETHYPER, 1, &hyp1) ;
		dx = hyp2.fr.lupx - hyp1.fr.lupx + 147 ;
		dy = hyp2.fr.lupy - hyp1.fr.lupy + 79 ;
		MMI_SendMessage(helpBackBtnId, MM_MOVE, 2, dx, dy) ;
		MMI_SendMessage(helpBackBtnId, MM_ATTACH, 1, helpPanelId) ;
	}

	if (helpPage == -1) {
		MMI_SendMessage(helpPanelId, MM_ATTACH, 1, MMI_GetBaseObj()) ;
		MMI_SendMessage(helpPanelId, MM_SHOW, 0) ;
		MMI_SendMessage(helpPanelId, MM_WAKE, 0) ;
	} else
		updateObj(helpPanelId) ;

	helpPage = page;

	return NOERR ;
}

/*	initDataMP_HELP:helpCloseBtnId:MJ_ICONL40の呼び出し関数	*/
int	helpCloseFunc(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	MMI_SendMessage(helpId[helpPage], MM_ERASE, 0) ;
	MMI_SendMessage(helpId[helpPage], MM_DETACH, 0) ;
	MMI_SendMessage(helpPanelId, MM_SLEEP, 0) ;
	MMI_SendMessage(helpPanelId, MM_ERASE, 0) ;
	MMI_SendMessage(helpPanelId, MM_DETACH, 0) ;
	helpPage = -1 ;
	return NOERR ;
}

/*	initDataMP_HELP:helpBackBtnId:MJ_ICONL40の呼び出し関数	*/
int	helpBackFunc(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	setHelpPage((helpPage<4)?0:3) ;
	return NOERR ;
}

/*	initDataMP_HELP:helpBtn[0]:MJ_DBUTTONL40の呼び出し関数	*/
int	helpBtnFunc_0(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	setHelpPage(1) ;
	return NOERR ;
}

/*	initDataMP_HELP:helpBtn[1]:MJ_DBUTTONL40の呼び出し関数	*/
int	helpBtnFunc_1(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	setHelpPage(3) ;
	return NOERR ;
}

/*	initDataMP_HELP:helpBtn[2]:MJ_DBUTTONL40の呼び出し関数	*/
int	helpBtnFun_2(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	setHelpPage(2) ;
	return NOERR ;
}

/*	initDataMP_HELP:helpBtn[3]:MJ_DBUTTONL40の呼び出し関数	*/
int	helpBtnFunc_3(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	setHelpPage(4) ;
	return NOERR ;
}

/*	initDataMP_HELP:helpBtn[4]:MJ_DBUTTONL40の呼び出し関数	*/
int	helpBtnFunc_4(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	setHelpPage(5) ;
	return NOERR ;
}

/*	initDataMP_HELP:helpBtn[5]:MJ_DBUTTONL40の呼び出し関数	*/
int	helpBtnFun_5(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	setHelpPage(6) ;
	return NOERR ;
}
