/*   -*- coding: utf-8 -*-  */

#include <stdio.h>     /* for printf */
#include <stdlib.h>    /* for exit */
#include "Explor.h"

extern char *optarg;
extern int   optind;
int getopt();

void generStreamRootPage()
{
  char *lastStep;
  if (strcmp(ExplorStreamCode, "Main")==0)lastStep="Exploration";
  else lastStep="Analysis";
  printf("<?dilib file=\"%s/Site/%s/%s/index.html\" ?>\n", ExplorAreaDir, ExplorSiteLang, ExplorStreamCode );
  ExplorHtmlPrefix();
  printf("<title>%s - %s - %s Main Page</title>\n", ExplorAreaCode, ExplorSiteLang, ExplorStreamCode );
  printf("<!-- This page is generated by generStreamRootPage (InistExplorExplorSiteHtmlPhp.c) -->\n");
  ExplorHtmlBeginBody();
  printf("<div class=\"main\">");
  ExplorSidebar(ExplorStreamCode, NULL, 0, NULL);
  ExplorHtmlHeader(ExplorStreamCode, NULL, NULL, NULL, NULL);
  ExplorHeaderStream(ExplorStreamTreeNode, NULL);
  if (strcmp(ExplorStreamCode,"Main")==0)
    {
      ExplorHtmlPrintParam3("Area", ExplorStreamCode, "streamIntroduction");
      ExplorHtmlPrintParam3("Area", ExplorStreamCode, "streamMainAccess");
    }
  else
    {
      ExplorHtmlPrintParam3("Area", ExplorStreamCode, "upStreamIntroduction");
      ExplorHtmlPrintParam3("Area", ExplorStreamCode, "upStreamMainAccess");
    }
  /*
  ExplorHtmlPrintParam3("Area", ExplorStreamCode, "streamIntroduction");
  ExplorHtmlPrintParam3("Area", ExplorStreamCode, "streamMainAccess");
  */
  ExplorHtmlPrintParam4("Area", ExplorStreamCode, "mainPage", "streamIntroCurationSteps");
  ExplorHtmlListOtherSteps(ExplorStreamCode, lastStep);
  ExplorHtmlBottomDilib(0);
  printf("</div>");
  ExplorHtmlEndBody();
}

void generExplorationMainPage()
{
  ExplorSetDict("#step", "Exploration");
  printf("<?dilib file=\"%s/Site/%s/%s/Exploration/index.html\" ?>\n", ExplorAreaDir, ExplorSiteLang, ExplorStreamCode );
  ExplorHtmlPrefix();
  printf("<title>%s - %s - %s Exploration Main Page</title>\n", ExplorAreaCode, ExplorSiteLang, ExplorStreamCode );
  ExplorHtmlBeginBody();
  printf("<div class=\"main\">");
  ExplorSidebar("Main", "Exploration", 0, NULL);
  ExplorHtmlHeader(ExplorStreamCode, "Exploration", NULL, NULL, NULL);
  ExplorHtmlPrintParam4("Area", "Main", "Exploration", "stepIntroduction");
  /* ExplorHtmlPrintParam4("Area", ExplorStreamCode, "Exploration", "mainPage/introduction" ); */
  ExplorHtmlIntroBiblio(ExplorStreamCode, "Exploration");
  printf("<h2>Indexes</h2><p>The main index is : <a href=\"indexHead.php?index=FC03.fr.i\">Pascal vocabulary</a></b> with (in progress) its  <a href=\"assocHead.php?assocCode=FC03.fr.a\">association file</a> and  <a href=\"clusterHead.php?clusterCode=FC03.fr.cf\">cluster frequency file</a>  <a href=\"clusterHead.php?clusterCode=FC03.fr.cc\">cluster cosinus file</a></p>\n");
  printf("<h4>All indexes</h4>");
  ExplorHtmlListIndexes("Main", "Exploration",4);
  ExplorHtmlBottomDilib(0);
  printf("</div>");
  ExplorHtmlEndBody();
}

void generAnalysisMainPage()
{
  printf("<?dilib file=\"%s/Site/%s/%s/Analysis/index.html\" ?>\n", ExplorAreaDir, ExplorSiteLang, ExplorStreamCode );
  ExplorHtmlPrefix();
  printf("<title>%s - %s - %s Analysis Main Page</title>\n", ExplorAreaCode, ExplorSiteLang, ExplorStreamCode );
  ExplorHtmlBeginBody();
  printf("<div class=\"main\">");
  ExplorSidebar( ExplorStreamCode, "Analysis", 0, NULL);
  ExplorHtmlHeader(ExplorStreamCode, "Analysis", NULL, NULL, NULL);
  printf("<p>This is Analysis entry point for the Inist\'s stream :<br>%s</br></p>\n", StrDictSearch(ExplorTableParam, "Area/areaTitle") );
  ExplorHtmlIntroBiblio(ExplorStreamCode, "Analysis");
  printf("<h2>Indexes</h2><p>The main index is : <a href=\"indexHead.php?index=FC03.fr.i\">Pascal vocabulary</a></b></p>\n");
  ExplorHtmlListIndexes(ExplorStreamCode, "Analysis",4);
  ExplorHtmlBottomDilib(0);
  printf("</div>");
  ExplorHtmlEndBody();
}

void inistSiteGenerCorpusBibRecord (char *lang, char *stream, int treeCode)
{
  ExplorSiteGenerBibRecordBegin (lang, stream, "Corpus", treeCode);
  printf ("     echo \"<hr/>\";\n");
  ExplorPhpPrintParam5("Area", stream, "Corpus", "bibRecord.php", "titleInistFormatStandard" );
  printf ("     InistPrintStandard($paramTable, $domRecord);\n" );
  printf ("     InistPrintServer($paramTable, $domRecord);\n" );
  ExplorSiteGenerBibRecordEnd (lang, stream, "Corpus", treeCode);
}

void inistSiteGenerCorpusBibRecordById (char *lang, char *stream, int treeCode)
{
  ExplorSiteGenerBibRecordByIdBegin (lang, stream, "Corpus", treeCode);
  printf ("     echo \"<hr/>\";\n");
  ExplorPhpPrintParam5("Area", stream, "Corpus", "bibRecord.php", "titleInistFormatStandard" );
  printf ("     InistPrintStandard($paramTable, $domRecord);\n" );
  printf ("     InistPrintServer($paramTable, $domRecord);\n" );
  ExplorSiteGenerBibRecordEnd (lang, stream, "Corpus", treeCode);
}

void inistSiteGenerCurationBibRecord (char *lang, char *stream, int treeCode)
{
  ExplorSiteGenerBibRecordBegin (lang, stream, "Curation", treeCode);
  printf ("     InistPrintStandard($paramTable, $domRecord);\n" );
  printf ("     InistPrintServer($paramTable, $domRecord);\n" );
  ExplorSiteGenerBibRecordEnd (lang, stream, "Curation", treeCode);
}

void generIndexItemAutAff(char *lang, char *stream, char *step, int treeCode)
{
  printf("<?dilib file=\"%s/Site/%s/%s/%s/autAff.php\" ?>\n", ExplorAreaDir, lang, stream, step);
  ExplorGenPhpHeadPage (lang, stream, step);
  printf("   <!-- the pho file is generated by InistExplorSiteHtmlPhp / generIndexItemAutAff -->\n");
  printf ("<?php \n $ExplorParamIndex=htmlspecialchars($_GET[\"index\"]); ");
  printf ("$ExplorParamKey=htmlspecialchars($_GET[\"key\"]); ");
  printf ("?>\n");
  printf ("<title>%s, %s, %s, indexHead, <?php echo $ExplorParamIndex; ?></title>\n", ExplorAreaCode, stream, step);
  ExplorHtmlBeginBody();
  ExplorSidebar(stream, step, EXPLOR_PHP_TYPE_INDEX_ITEM, "autAff.php");
  ExplorHtmlHeader(stream, step, "indexItem.php", NULL, NULL);

  printf("<div class=\"main\">");
  ExplorSitePhpIntro();
  printf ("$indexPath=$ExplorStepDataPath.$ExplorParamIndex;\n");
  printf ("$domIndex=HfdGetXmlDomFromIndexKey($ExplorParamTable, $indexPath, $ExplorParamKey); \n");
  printf ("       InistPrintAutAff($ExplorParamTable, $domIndex, %s, %s, \"autAff.php\");\n", stream, step);
  printf ("        SxmlNodePrintIndent($domIndex->documentElement);\n" );
  /*
  ExplorSitePhpEnd();
  ExplorHtmlBottomDilib(0);
  printf("</div>");
  ExplorHtmlEndBody();
  */
  ExplorSitePhpProcEnd();
}
 
int main (int argc, char **argv) {
   int cOption;
   char *tabList;
   char *pathParamFile;
   SxmlNode *stepNode;

   while((cOption=getopt(argc,argv,"s:t:"))!=EOF)
     {switch (cOption)
	 {
	 case 't':
	   pathParamFile=optarg;
	   break;
	 case 's':
	   ExplorStreamCode=optarg;
	   break;
	 }
     }

   ExplorParamInitForStream(pathParamFile, ExplorStreamCode);
   generStreamRootPage();

   while ((stepNode=SxmlNextNode(ExplorListSteps)))
     {
       char *step;
       step=SxmlLeafText(stepNode);
       ExplorSiteGenerImplicitPhp ("fr", ExplorStreamCode, step, 4);
       if(strcmp(step, "Exploration")==0)
	 {
	   generExplorationMainPage();
	   continue;
	 }
       if(strcmp(step, "Analysis")==0)
	 {
	   generAnalysisMainPage();
	   continue;
	 }
       ExplorGenerStepMainPage(ExplorStreamCode, step);
     }

   generIndexItemAutAff("fr", ExplorStreamCode, "Corpus", 4);
   inistSiteGenerCorpusBibRecord ("fr", ExplorStreamCode, 4);
   inistSiteGenerCorpusBibRecordById ("fr", ExplorStreamCode, 4);
   inistSiteGenerCurationBibRecord ("fr", ExplorStreamCode, 4);

   exit(EXIT_SUCCESS);
}
