:- module(ag_start_page,
	  [html_schemes_only//0  % for backward compat with europeana demo
	  ]).
:- use_module(library(http/http_dispatch)).
:- use_module(library(http/http_path)).
:- use_module(library(http/html_head)).
:- use_module(library(http/html_write)).
:- use_module(library(yui3_beta)).
:- use_module(library(amalgame/vocabulary)).
:- use_module(library(amalgame/ag_strategy)).
:- use_module(applications(skos_browser)).
:- use_module(components(amalgame/startpage)).
:- use_module(api(form/amalgame/startpage)).
% main http handler for amalgame:
:- http_handler(amalgame(.), http_amalgame_main_page, []).
% Backward compatibility
:- http_handler(amalgame(eq),	    http_redirect(moved, amalgame(.)), []).
:- http_handler(amalgame(app/main), http_redirect(moved, amalgame(.)), []).
%%      http_amalgame_main_page(+Request) is det.
%
%	Emit html page to start a new or select/upload an existing
%	alignment strategy.
http_amalgame_main_page(Request) :-
	html_main_page(Request).
html_schemes_only -->
	{
	 amalgame_alignable_schemes(ConceptSchemes)
	},
	html_new(ConceptSchemes).
html_main_page(_Request) :-
	findall(A-S, strategy_vocabularies(A, S), StrategySchemePairs),
	amalgame_alignable_schemes(ConceptSchemes),
	reply_html_page(cliopatria(main),
			[ title(['Amalgame - strategies'])
			],
			[ \html_requires(css('startpage.css')),
			  \yui3_combo(yui3,
				      ['cssreset/cssreset-min.css',
				       'cssgrids/cssgrids-min.css',
				       'cssfonts/cssfonts-min.css'
				      ]),
			  div(class('yui-skin-sam yui3-skin-sam'),
			      [ div(id(header), []),
				div(id(main),
				    [
					div([id(content), class('yui3-accordion')],
					    [
						\html_open(StrategySchemePairs),
						\html_reference,
						\html_import,
						\html_publish(StrategySchemePairs),
						\html_new(ConceptSchemes)
					    ])
				    ]),
				script(type('text/javascript'),
				       [ \yui_script
				       ])
			      ])
			]).
%%	yui_script
%
%	Emit YUI object.
yui_script -->
	{ findall(M-C, js_module(M,C), Modules),
	  pairs_keys(Modules, Includes)
	},
	yui3([json([
		gallery('gallery-2012.09.12-20-02'),
		modules(json(Modules))])
	     ],
	     Includes,
	     [ \yui3_new(eq, 'Y.AmalgameStartPage', [])
	     ]).
%%	js_module(+Key, +Module_Conf)
%
%	YUI3 and application specific modules used in javascript.
js_module(startpage, json([fullpath(Path),
				    requires([node,base,event,anim,
					      'gallery-node-accordion'])
			  ])) :-
	http_absolute_location(js('startpage.js'), Path, []).