;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; either design small format pages for macs and pc's or
; large format pages for workstations
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define *small-pages* ())

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; PAGE - spit out a single html page
; 
; up, right, etc are either null if can't go that way, or the 
; address of the page to jump to.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (page name image up right down left ccw cw)
  (begin
    ; if generating small pages, prefix everything with a "sm"
    (if *small-pages* 
	(begin
	  (set! name (string-append "sm" name))
	  (set! image (string-append "sm" image))
	  (if up (set! up (string-append "sm" up)))
	  (if right (set! right (string-append "sm" right)))
	  (if down (set! down (string-append "sm" down)))
	  (if left (set! left (string-append "sm" left)))
	  (set! ccw (string-append "sm" ccw))
	  (set! cw (string-append "sm" cw))
	  ))

    (set! image (string-append "Images/" image))
    
    (define file (fopen (string-append name ".html") "w"))
    
    ; title and background
    (fwrite (string-append "<title>" name "</title>\n") file)
    (fwrite "<body bgcolor=\"#000000\" text=\"#F0F0F0\">\n" file)
    
    ; stick the main image in
    (fwrite (string-append "<center><img border=0 vspace=20 src=\"" 
			   image
			   "\"><p></center>\n")
	    file)

    (if *small-pages*
	(begin
          ; top row: spacer and up arrow
	  (fwrite "<img src=\"smspacer.gif\">\n" file)
	  (if up
	      (fwrite (string-append
		       "<a href=" up
		       "><img border=0 src=\"smup.gif\"></a><p>\n") 
		      file)
	      (fwrite "<img src=\"smblurup.gif\"><p>\n" file))
	  
          ; middle row, left and right arrows, and rotation arrows
	  (if left
	      (fwrite (string-append
		       "<a href=" left
		       "><img border=0 src=\"smleft.gif\"></a>\n")
		      file)
	      (fwrite "<img border=0 src=\"smblurleft.gif\">" file))
	  (if right
	      (fwrite (string-append
		       "<a href=" right
		       "><img border=0 src=\"smright.gif\"></a>\n")
		      file)
	      (fwrite "<img border=0 src=\"smblurright.gif\">\n" file))
	  
	  (fwrite "<img border=0 src=\"smwidespacer.gif\">\n" file)
	  (if ccw
	      (fwrite (string-append
		       "<a href=" ccw
		       "><img border=0 src=\"smccw.gif\"></a>\n") 
		      file)
	      (fwrite "<img src=\"smblurccw.gif\">\n" file))
	  
	  (if cw
	      (fwrite (string-append
		       "<a href=" cw
		       "><img border=0 src=\"smcw.gif\"><p></a>\n") 
		      file)
	      (fwrite "<img src=\"smblurcw.gif\"><p>\n" file))
	  
	  ; bottom row: spacer, down arrow and link to title page
	  (fwrite "<img src=\"smspacer.gif\">\n" file)
	  (if down
	      (fwrite (string-append
		       "<a href=" down
		       "><img border=0 src=\"smdown.gif\"></a>\n")
		      file)
	      (fwrite "<img border=0 src=\"smblurdown.gif\">\n" file))
	  (fwrite "<a href=\"smtitle.html\"><img align=right border=0 src=\"smfadetitle.gif\"></a><p>\n" file)
	  
	  )

	(begin
          ; top row: spacer and up arrow
	  (fwrite "<img src=\"spacer.gif\">\n" file)
	  (if up
	      (fwrite (string-append
		       "<a href=" up
		       "><img border=0 src=\"up.gif\"></a><p>\n") 
		      file)
	      (fwrite "<img src=\"blurup.gif\"><p>\n" file))
	  
          ; middle row, left and right arrows, and rotation arrows
	  (if left
	      (fwrite (string-append
		       "<a href=" left
		       "><img border=0 src=\"left.gif\"></a>\n")
		      file)
	      (fwrite "<img border=0 src=\"blurleft.gif\">" file))
	  (if right
	      (fwrite (string-append
		       "<a href=" right
		       "><img border=0 src=\"right.gif\"></a>\n")
		      file)
	      (fwrite "<img border=0 src=\"blurright.gif\">\n" file))
	  
	  (fwrite "<img border=0 src=\"widespacer.gif\">\n" file)
	  (if ccw
	      (fwrite (string-append
		       "<a href=" ccw
		       "><img border=0 src=\"ccw.gif\"></a>\n") 
		      file)
	      (fwrite "<img src=\"blurccw.gif\">\n" file))
	  
	  (if cw
	      (fwrite (string-append
		       "<a href=" cw
		       "><img border=0 src=\"cw.gif\"></a><p>\n") 
		      file)
	      (fwrite "<img src=\"blurcw.gif\"><p>\n" file))
	  
	  ; bottom row: spacer, down arrow and link to title page
	  (fwrite "<img src=\"spacer.gif\">\n" file)
	  (if down
	      (fwrite (string-append
		       "<a href=" down
		       "><img border=0 src=\"down.gif\"></a>\n")
		      file)
	      (fwrite "<img border=0 src=\"blurdown.gif\">\n" file))

	  (fwrite "<a href=\"title.html\"><img align=right border=0 src=\"fadetitle.gif\"></a><p>\n" file)
	  ))
	  

    (fclose file)
    ))


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; generate 13 west image only pages
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(for i 1 13 1
     (define name "westImage")
     (page (string-append name (number->string i))
	   (string-append "f" (number->string i) ".jpg") 
	   () 
	   (if (<> i 13) 
	       (string-append name (number->string (+ i 1)) ".html") ())
	   (string-append "west" (number->string (+ i 2)) ".html")
	   (if (<> i 1) 
	       (string-append name (number->string (- i 1)) ".html") ())
	   (string-append "south" (number->string (+ i 2)) ".html")
	   (string-append "north" (number->string (+ i 2)) ".html")
	   )
     )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; generate 1 north image only page
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define name "NorthImage")
(page "northImage14"
      "f14.jpg"
      () 
      ()
      "north15.html"
      ()
      "west15.html"
      "east15.html"
      )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; generate 14 east image only pages
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(for i 15 28 1
     (define name "eastImage")
     (page (string-append name (number->string i))
	   (string-append "f" (number->string i) ".jpg") 
	   () 
	   (if (<> i 28) 
	       (string-append name (number->string (+ i 1)) ".html") ())
	   (string-append "east" (number->string (- 16 (- i 14))) ".html")
	   (if (<> i 15) 
	       (string-append name (number->string (- i 1)) ".html") ())
	   (string-append "north" (number->string (- 16 (- i 14))) ".html")
	   (string-append "south" (number->string (- 16 (- i 14))) ".html")
	   )
     )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; generate 15 west pages
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(for i 1 15 1
     (define name "west")
     (page (string-append name (number->string i))
	   (string-append "west" (number->string i) ".jpg") 
	   (if (> i 2) 
	       (string-append "westImage" (number->string (- i 2)) ".html") ())
	   (if (<> i 15) 
	       (string-append "west" (number->string (+ i 1)) ".html") ())
	   ()
	   (if (<> i 1) 
	       (string-append "west" (number->string (- i 1)) ".html")
	       "title.html")
	   (string-append "south" (number->string i) ".html")
	   (string-append "north" (number->string i) ".html")
	   )
     )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; generate 15 east pages
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(for i 1 15 1
     (define name "east")
     (page (string-append name (number->string i))
	   (string-append "east" (number->string i) ".jpg") 
	   (if (> i 1) 
	       (string-append "eastImage" (number->string (+ 14 (- 16 i)))
			      ".html") ())
	   (if (> i 1) 
	       (string-append "east" (number->string (- i 1)) ".html") 
	       "title.html")
	   ()
	   (if (< i 15)
	       (string-append "east" (number->string (+ i 1)) ".html") ())
	   (string-append "north" (number->string i) ".html")
	   (string-append "south" (number->string i) ".html")
	   )
     )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; generate 15 north pages
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(for i 1 15 1
     (define name "north")
     (page (string-append name (number->string i))
	   (string-append "north" (number->string i) ".jpg") 
	   (if (<> i 15) 
	       (string-append "north" (number->string (+ i 1)) ".html")
	       "northImage14.html")
	   ()
	   (if (> i 1) 
	       (string-append "north" (number->string (- i 1)) ".html") 
	       "title.html")
	   ()
	   (string-append "west" (number->string i) ".html")
	   (string-append "east" (number->string i) ".html")
	   )
     )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; generate 15 south pages
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(for i 1 15 1
     (define name "south")
     (page (string-append name (number->string i))
	   (string-append "south" (number->string i) ".jpg") 
	   (if (<> i 1) 
	       (string-append "south" (number->string (- i 1)) ".html")
	       "title.html")
	   ()
	   (if (< i 15) 
	       (string-append "south" (number->string (+ i 1)) ".html") ())
	   ()
	   (string-append "east" (number->string i) ".html")
	   (string-append "west" (number->string i) ".html")
	   )
     )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;