    package com.techlabs.puzzle.events {

        import com.techlabs.puzzle.PuzzlePiece;

        import flash.events.Event;

        /**
         * ...
         * @author Timo Virtanen
         */
        public class PuzzleEvent extends Event {

            public static const MOVE:String         = "PuzzleEvent:MOVE";
            public static const CLICK:String         = "PuzzleEvent:CLICK";
            public static const READY:String         = "PuzzleEvent:READY";
            public static const SHUFFLE:String         = "PuzzleEvent:SUFFLE";
            public static const CHANGE_IMAGE:String = "PuzzleEvent:CHANGE_IMAGE";

            private var _piece:PuzzlePiece;
            private var _imageURL:String;

            public function PuzzleEvent(type:String, piece:PuzzlePiece = null, imageURL:String = null) {
                super(type);
                _piece = piece;
                _imageURL = imageURL;
            }

            public override function clone():Event {
                return new PuzzleEvent(type, piece, imageURL);
            }

            public override function toString():String {
                return formatToString("NavigationEvent", "piece", "imageURL");
            }

            public function get piece():PuzzlePiece {
                return _piece;
            }

            public function get imageURL():String {
                return _imageURL;
            }

        }

    }