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