REBOL [
	Title: "REBOL/Services Guestbook Demo"
	Author: "Gabriele Santilli"
	Version: 1.1.1
]

url: http://www.rebol.net/cgi-bin/services.r

msg-lay: []

lay: layout [
	space 0x5
	backeffect [gradient 0x1 water mint]
	vh1 "Example Guestbook"
	across
	pan: panel 520x300 msg-lay edge [size: 1x1]
	scl: scroller 16x300 [
		pan/pane/offset/y: negate value * (pan/pane/size/y - pan/size/y)
		show pan
	]
	return
	vh2 "Sign the guestbook:" return
	label 100 "Your name:" name: field return
	l2: label 100 "Your message:" msg: area wrap return
	at l2/offset + 5x70 guide
	btn-enter 80 #"^S" "Send" [send-msg] return
	btn 80 "Refresh" [refresh] return
	btn-cancel 80 "Close" [quit] return
]

refresh: does [
	append clear msg-lay [backcolor snow across space 0x1]
	messages: fourth do-service port [guestbook/list-messages 20]
	foreach msg next messages [
		append msg-lay compose [
			text bold 120 right (msg/2) 
			text as-is 340 (msg/3) 
			text as-is font-size 9 center 60 gray
				(rejoin [msg/1/date newline msg/1/time]) return
			box 520x1 gray return
		]
	]
	pan/pane: layout/tight msg-lay
	scl/data: 1.0
	show scl
	do-face scl 1.0
]

send-msg: does [
	if all [
		not empty? trim/head/tail name/text
		not empty? trim/head/tail msg/text
	][
		do-service port compose [guestbook/sign (name/text) (msg/text)]
		refresh
	]
	clear-face msg
]

view/new center-face lay

pan/text: "Downloading REBOL/Services client..."
show pan
do http://www.rebol.net/rebservices/client.r
pan/text: "Opening service..."
show pan
port: open-service url
pan/text: none

refresh
do-events