(define (script-fu-sliding-kaleidoscope-mk2 image layer)

	(let* (
				(image-width (car (gimp-image-width image)))
				(image-height (car (gimp-image-height image)))
				(image-type (car (gimp-image-base-type image)))
				(new-image (car (gimp-image-new image-width image-height image-type)))
				(new-layer (car (gimp-layer-new new-image image-width image-height (+ image-type image-type) "nu-layer" 100 0)))
				(flag 0)
				(count 2)
				(layer-width 0)
				(layer-height 0)
				(half-width 0)
				(frames 0)
				(frames-reset 0)
				(one-sixth 0)
				(two-sixth 0)
				(four-sixth 0)
				(five-sixth 0)
				(offset 1)
			)

	(gimp-context-push)
	(gimp-image-undo-group-start new-image)

	(set! flag (modulo image-width 6))
	(if (> flag 0) (gimp-image-scale image (+ image-width (- 6 flag)) image-height))
	(gimp-image-add-layer new-image new-layer 0)
	(gimp-image-set-filename new-image "Sliding horizontal kaleidoscope")
	(gimp-image-scale new-image (* (car (gimp-image-width image)) 3) image-height)
	(gimp-edit-copy layer)


		(while (> count -1)
				(gimp-rect-select new-image (* (car (gimp-image-width image)) count) 0 (car (gimp-image-width image)) image-height 2 FALSE 0)
				(gimp-floating-sel-anchor (car (gimp-edit-paste new-layer TRUE)))
		(set! count (- count 1)))


	(gimp-selection-none new-image)

	(set! layer-width (car (gimp-drawable-width new-layer)))
	(set! layer-height (car (gimp-drawable-height new-layer)))
	(set! half-width (/ (car (gimp-drawable-width new-layer)) 2))
	(set! frames (- (/ (car (gimp-drawable-width new-layer)) 3) 1))
	(set! frames-reset frames)
	(set! one-sixth (/ (car (gimp-drawable-width new-layer)) 6))
	(set! two-sixth (* one-sixth 2))
	(set! four-sixth (* one-sixth 4))
	(set! five-sixth (* one-sixth 5))


		(while (> frames 0)
			(gimp-image-add-layer new-image (car (gimp-layer-new-from-drawable new-layer new-image)) FALSE)
		(set! frames (- frames 1)))


	(set! frames frames-reset)
	(gimp-display-new new-image)


		(while (> frames 0)

			(gimp-rect-select new-image (- half-width offset) 0 one-sixth layer-height 2 FALSE 0)
			(gimp-edit-copy (vector-ref (cadr (gimp-image-get-layers new-image)) 0))
			(gimp-rect-select new-image half-width 0 one-sixth layer-height 2 FALSE 0)
			(gimp-edit-paste (vector-ref (cadr (gimp-image-get-layers new-image)) (- frames 1)) TRUE)
			(gimp-floating-sel-anchor (car (gimp-image-get-floating-sel new-image)))

			(gimp-rect-select new-image 0 0 one-sixth layer-height 2 FALSE 0)
			(gimp-edit-paste (vector-ref (cadr (gimp-image-get-layers new-image)) (- frames 1)) TRUE)
			(gimp-floating-sel-anchor (car (gimp-image-get-floating-sel new-image)))
			(gimp-drawable-transform-flip-simple (vector-ref (cadr (gimp-image-get-layers new-image)) (- frames 1)) 0 TRUE 0 FALSE)
			(gimp-floating-sel-anchor (car (gimp-image-get-floating-sel new-image)))

			(gimp-rect-select new-image one-sixth 0 one-sixth layer-height 2 FALSE 0)
			(gimp-edit-paste (vector-ref (cadr (gimp-image-get-layers new-image)) (- frames 1)) TRUE)
			(gimp-floating-sel-anchor (car (gimp-image-get-floating-sel new-image)))

			(gimp-rect-select new-image two-sixth 0 one-sixth layer-height 2 FALSE 0)
			(gimp-edit-paste (vector-ref (cadr (gimp-image-get-layers new-image)) (- frames 1)) TRUE)
			(gimp-floating-sel-anchor (car (gimp-image-get-floating-sel new-image)))
			(gimp-drawable-transform-flip-simple (vector-ref (cadr (gimp-image-get-layers new-image)) (- frames 1)) 0 TRUE 0 FALSE)
			(gimp-floating-sel-anchor (car (gimp-image-get-floating-sel new-image)))

			(gimp-rect-select new-image four-sixth 0 one-sixth layer-height 2 FALSE 0)
			(gimp-edit-paste (vector-ref (cadr (gimp-image-get-layers new-image)) (- frames 1)) TRUE)
			(gimp-floating-sel-anchor (car (gimp-image-get-floating-sel new-image)))
			(gimp-drawable-transform-flip-simple (vector-ref (cadr (gimp-image-get-layers new-image)) (- frames 1)) 0 TRUE 0 FALSE)
			(gimp-floating-sel-anchor (car (gimp-image-get-floating-sel new-image)))

			(gimp-rect-select new-image five-sixth 0 one-sixth layer-height 2 FALSE 0)
			(gimp-edit-paste (vector-ref (cadr (gimp-image-get-layers new-image)) (- frames 1)) TRUE)
			(gimp-floating-sel-anchor (car (gimp-image-get-floating-sel new-image)))

			(set! offset (+ offset 1))

		(set! frames (- frames 1)))


	(gimp-selection-none new-image)
	(gimp-image-merge-down new-image (vector-ref (cadr (gimp-image-get-layers new-image)) (- frames-reset 1)) 0)
	(gimp-image-undo-group-end new-image)
	(gimp-context-pop)

	)

	(gimp-displays-flush)
)

(script-fu-register
		"script-fu-sliding-kaleidoscope-mk2"
		"<Image>/Filters/Animation/Sliding kaleidoscope-mk2"
;;;		"<Image>/Script-Fu/	Sliding-kaleidoscope-mk2"
		"Creates a sliding horizontal kaleidoscope"
		"SteveMi"
		"Unrestricted"
		"2016"
		"RGB*,GRAY*"
		SF-IMAGE			"Image"		0
		SF-DRAWABLE	"Layer"		0
)
