;; Oblika parametra
(define-record-type parameter
  (fields napis tip sprememba))

(define (poslji-vsem msg . args)
  (if (> (length args) 0)
      ((js-eval "sendAll") msg args)
      ((js-eval "sendAll") msg)))

  (console-log "poslji vsem" msg args)
  (console-log ((js-eval "sendAll") msg args)))
  ;(js-eval "window" "sendAll" msg args))

;;;;;;;;;;;;;;;;;;;;;;;
;; Seznam parametrov ;;
;;;;;;;;;;;;;;;;;;;;;;;
(define parametri
  (list
   ;; Kalibracija
   (make-parameter
    "kalibriraj"
    "button"
    (lambda (ev) (poslji-vsem "/ww/calibrate")))))


(define p-kontejner ($ "#ctl"))

(define (ustvari-element p)
  (let ((vrstica (element-new '(tr)))
        (napis (element-new `(td ,(parameter-napis p)))))
    (case (parameter-tip p)
      (("button")
       (let ((gumb (element-new '(button "&nbsp;"))))
         (element-append-child! vrstica napis)
         (add-handler! gumb "click" (parameter-sprememba p))
         (console-log gumb)
         (element-append-child!
          vrstica
          (element-append-child! (element-new '(td)) gumb))
         vrstica))
      (else #f))))

(define (dodaj-parametre parametri)
  (if (> (length parametri) 0)
      (let* ((p (car parametri))
             (vrstica (ustvari-element p)))
        (element-append-child! p-kontejner vrstica)
        (console-log "dodal" vrstica))))

;(add-handler!
; (js-eval "window") "DOMContentLoaded"
; (lambda (ev)
;   (console-log "dodajam parametre")
; (dodaj-parametre parametri)))
(dodaj-parametre parametri)
