var strings:TStringList;
Pathfile,sId,PathImg:string;
Id:integer;
Contenu,Titre,ImgScrollUp,ImgScrollDown,Width,CssTitle,CssData,CssSeparation: string;
DefClassTitle,DefClassData,DefImg,ImgHint,OnClick,ClassButton: string;
titleClic,ImgLeft:boolean;

css_filename:string;
begin
Contenu := GetParam('Contenu','');
// ne fonctionne qu'en html et htmlhelp, pour les autres on affiche simplement le contenu
if Condition('_HTML_') then
begin
css_filename := GetParam('FilenameCss',GetProjet+'_hw.css');

PathFile := PathProjet ;
if Condition('_HTMLHELP_') then
begin
PathFile:=PAthFile+'htmlhelp\';
PathImg := 'html\';
end else PathImg:='';
PathFile:=PathFile+'html\';
// création des fichiers javascript et css externe
// ne le créer qu'une seule fois par session
if GetVarInt('scrollpanel.js',0)=0 then
begin
SetVarInt('scrollpanel.js',1);
strings:=TStringList.create;
strings.add('function ShowHide(element, image, title)');
strings.add('{');
strings.add('if (element.className == "ScrollPanelData")');
strings.add('{');
strings.add('element.className = "ScrollPanelDataHidden";');
strings.add('image.src = "scrolldown.gif";');
strings.add('title.className = "ScrollPanelTitleHidden";');
strings.add('}');
strings.add('else');
strings.add('{');
strings.add('element.className = "ScrollPanelData";');
strings.add('image.src = "scrollup.gif";');
strings.add('title.className = "ScrollPanelTitle";');
strings.add('}');
strings.add('}');

Strings.SaveToFile(PathFile+'scrollpanel.js');

Strings.clear;

// génération des styles css

SetCss(css_filename,'.ScrollPanelTitle','border','1px solid black');
SetCss(css_filename,'.ScrollPanelTitle','background-color','black');
SetCss(css_filename,'.ScrollPanelTitle','color','white');
SetCss(css_filename,'.ScrollPanelTitle','font-weight','bold');

SetCss(css_filename,'.ScrollPanelTitleHidden','border','1px solid black');
SetCss(css_filename,'.ScrollPanelTitleHidden','background-color','#FF0000');
SetCss(css_filename,'.ScrollPanelTitleHidden','color','white');
SetCss(css_filename,'.ScrollPanelTitleHidden','font-weight','bold');

SetCss(css_filename,'.ScrollButton','float','right');
SetCss(css_filename,'.ScrollButton','cursor','pointer');

SetCss(css_filename,'.ScrollButtonLeft','float','left');
SetCss(css_filename,'.ScrollButtonLeft','cursor','pointer');

SetCss(css_filename,'.ScrollPanelData','border-right','1px solid black');
SetCss(css_filename,'.ScrollPanelData','border-left','1px solid black');
SetCss(css_filename,'.ScrollPanelData','border-bottom','1px solid black');
SetCss(css_filename,'.ScrollPanelData','background-color','#C0C0C0');

SetCss(css_filename,'.ScrollPanelDataHidden','display','none');



Strings.free;
end; // fin création js et css externe

// insérer lien vers css externe qu'une fois par page
if GetVarInt(css_filename+GetTitre,0)=0 then
begin
SetVarInt(css_filename+GetTitre,1);
writeln('<<WEB(head:<link rel="stylesheet" type="text/css" href="')>>+css_filename+<<FNT(STRING.-,-,-,-:'" />)>>');
end;

// insérer lien vers js externe qu'une fois par page
if GetVarInt('scrollpanel.js'+GetTitre,0)=0 then
begin
SetVarInt('scrollpanel.js'+GetTitre,1);
writeln('<<WEB(head:<script type="text/javascript" src="scrollpanel.js"></script>)>>');
end;

// création d'un Id unique pour chaque ScrollPanel
Id := GetVarInt('IdScrollPanel',0);
sId := IntToStr(Id);
SetVarInt('IdScrollPanel',Id+1);

Titre := GetParam('Titre','');
TitleClic := GetParam('TitleClic','true')='true';

ImgScrollUp := GetParam('ImgScrollUp','scrollup.gif');
ImgScrollDown := GetParam('ImgScrollDown','scrolldown.gif');
ImgLeft := GetParam('ImgPos','Right')='Left';
ImgHint := GetParam('ImgHint','');
Width := GetParam('Width','600px');
cssTitle := GetParam('CssTitle','');
cssData := GetParam('CssData','');
if cssTitle<>'' then cssTitle:=' style="'+CssStyle(cssTitle)+'"';
if cssData<>'' then cssData:=' style="'+CssStyle(cssData)+'"';

CssSeparation := GetParam('CssSeparation','');

if GetParam('Open','false')='true' then
begin
DefClassTitle := 'ScrollPanelTitle';
DefClassData := 'ScrollPanelData';
DefImg := PathImg+ImgScrollUp;
end else begin
DefClassTitle := 'ScrollPanelTitleHidden';
DefClassData := 'ScrollPanelDataHidden';
DefImg := PathImg+ImgScrollDown;
end;

// comme le nom des images est référencé dans du code html non interprété par help&web
// il faut les lui déclarer explicitement
AddBitmapFile(ImgScrollUp);
AddBitmapFile(ImgScrollDown);


OnClick := 'ShowHide(document.getElementById('+ #39+'ScrollData'+sID+#39+'), document.getElementById('+#39+'ScrollImg'+sId+#39+'), document.getElementById('+#39+'ScrollTitle'+sId+#39+'))';
write('<<WEB(<div class="ScrollablePanel" style="width:')>>+Width+<<FNT(STRING.-,-,-,-:'">)>>');
write('<<WEB(<a name="ScrollTitle')>>+sId+<<FNT(STRING.-,-,-,-:'" id="AScrollTitle')>>+sId+<<FNT(STRING.-,-,-,-:'" style="display: none;"></a>)>>');
ClassButton := 'ScrollButton';
if imgLeft then ClassButton:=ClassButton+'Left';

write('<<WEB(<div class="')>>+DefClassTitle+<<FNT(STRING.-,-,-,-:'"')>>+cssTitle+<<FNT(STRING.-,-,-,-:' id="ScrollTitle')>>+sId+<<FNT(STRING.-,-,-,-:'">)>>');
write('<<WEB(<img alt="')>>+imgHint+<<FNT(STRING.-,-,-,-:'" title="')>>+imgHint+<<FNT(STRING.-,-,-,-:'" class="')>>+ClassButton+<<FNT(STRING.-,-,-,-:'" src="')>>+DefImg+<<FNT(STRING.-,-,-,-:'" onclick="')>>+OnClick+<<FNT(STRING.-,-,-,-:'" id="ScrollImg')>>+sID+<<FNT(STRING.-,-,-,-:'"/>)>>');

if titleClic then write('<<WEB(<a href="#ScrollTiltle')>>+sId+<<FNT(STRING.-,-,-,-:'" onclick="')>>+onclick+<<FNT(STRING.-,-,-,-:'">)>>');
write(titre);
if titleclic then write('<<WEB(</a>)>>');
write('<<WEB(</div>)>>');
write('<<WEB(<div class="')>>+DefClassData+<<FNT(STRING.-,-,-,-:'"')>>+cssData+<<FNT(STRING.-,-,-,-:' id="ScrollData')>>+sId+<<FNT(STRING.-,-,-,-:'">)>>');
write(GetContenuPartage(Contenu));
writeln('<<WEB(</div>)>>');
if CssSeparation<>'' then write('<<WEB(<div class="')>>+CssSeparation+<<FNT(STRING.-,-,-,-:'" style="width:')>>+Width+<<FNT(STRING.-,-,-,-:'"> </div>)>>');
write('<<WEB(</div>)>>');

end else write(GetContenuPartage(Contenu)); // fin if HTML
end;
end.

Sommaire