Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorroot <bryan@olenepal.org>2009-09-03 03:30:56 (GMT)
committer root <bryan@olenepal.org>2009-09-03 03:30:56 (GMT)
commitf05b800a5fbd9bbfa2ab4f38717b7f27e7ad66ef (patch)
tree65d9be2f9db6b9e66a39eb4d6bf3bdc5316d8d6f
parentd8f598902d77f6b89e4b4e0dfc3dac0620960d01 (diff)
cleaned out extraneous files, such as old versions of karma plugin
-rwxr-xr-x[-rw-r--r--]assets/default/images/back.pngbin3816 -> 3816 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/back_bw.pngbin3368 -> 3368 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/chakra_logo.pngbin9433 -> 9433 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/english.pngbin13245 -> 13245 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/exercise.pngbin6460 -> 6460 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/exercise_bw.pngbin4631 -> 4631 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/games.pngbin7482 -> 7482 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/games_bw.pngbin5461 -> 5461 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/geography.pngbin17007 -> 17007 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade1.pngbin3959 -> 3959 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade1_bw.pngbin3727 -> 3727 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade2.pngbin4937 -> 4937 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade2_bw.pngbin4302 -> 4302 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade3.pngbin5556 -> 5556 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade3_bw.pngbin4517 -> 4517 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade4.pngbin4545 -> 4545 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade4_bw.pngbin4046 -> 4046 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade5.pngbin4992 -> 4992 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade5_bw.pngbin4388 -> 4388 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade6.pngbin5677 -> 5677 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade6_bw.pngbin4332 -> 4332 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade7.pngbin4464 -> 4464 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade7_bw.pngbin3926 -> 3926 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade8.pngbin6392 -> 6392 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/grade8_bw.pngbin4987 -> 4987 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/health.pngbin17690 -> 17690 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/help.pngbin4872 -> 4872 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/history.pngbin11252 -> 11252 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/karma_logo.pngbin27614 -> 27614 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/mathematics.pngbin6375 -> 6375 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/music.pngbin9550 -> 9550 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/mystuff.pngbin3100 -> 3100 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/nepali.pngbin13102 -> 13102 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/preview1.jpgbin29263 -> 29263 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/preview2.jpgbin120382 -> 120382 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/preview3.jpgbin40900 -> 40900 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/preview4.jpgbin33406 -> 33406 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/profile.pngbin6685 -> 6685 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/resources.pngbin9363 -> 9363 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/resources_bw.pngbin6262 -> 6262 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/science.pngbin16335 -> 16335 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/tutorial.pngbin8004 -> 8004 bytes
-rwxr-xr-x[-rw-r--r--]assets/default/images/tutorial_bw.pngbin6008 -> 6008 bytes
-rwxr-xr-x[-rw-r--r--]chakra/grade1mathematics.html0
-rwxr-xr-x[-rw-r--r--]css/chakra.css0
-rwxr-xr-xexamples/adding_up_to_10/assets/generic/images/happyChimp_120x125.pngbin0 -> 16261 bytes
-rwxr-xr-xexamples/adding_up_to_10/assets/generic/images/normalChimp_120x125.pngbin0 -> 15326 bytes
-rwxr-xr-xexamples/adding_up_to_10/assets/generic/images/sadChimp_120x125.pngbin0 -> 15698 bytes
-rwxr-xr-xexamples/adding_up_to_10/css/lesson.css.~1~14
-rwxr-xr-xexamples/adding_up_to_10/css/lesson.css.~2~14
-rwxr-xr-xexamples/adding_up_to_10/css/lesson1.css.~1~14
-rwxr-xr-x[-rw-r--r--]examples/adding_up_to_10/css/lesson_multiple.css0
-rwxr-xr-xexamples/adding_up_to_10/css/mytest.css.~1~45
-rwxr-xr-xexamples/adding_up_to_10/css/mytest.css.~2~64
-rwxr-xr-xexamples/adding_up_to_10/index.html.~1~26
-rwxr-xr-xexamples/adding_up_to_10/index1.html32
-rwxr-xr-xexamples/adding_up_to_10/index1.html.~1~26
-rw-r--r--examples/adding_up_to_10/index_multiple.html26
-rwxr-xr-xexamples/adding_up_to_10/js/lesson.js.~1~109
-rwxr-xr-xexamples/adding_up_to_10/js/lesson.js.~2~109
-rwxr-xr-x[-rw-r--r--]examples/adding_up_to_10/js/lesson_multiple.js0
-rwxr-xr-xexamples/adding_up_to_10/js/mytest.js.~1~35
-rw-r--r--experiments/ball.pngbin6493 -> 0 bytes
-rwxr-xr-xexperiments/banana.pngbin5277 -> 0 bytes
-rw-r--r--experiments/mytest1.html81
-rw-r--r--experiments/yellowBox300px.pngbin10046 -> 0 bytes
-rwxr-xr-x[-rw-r--r--]js/jquery.idTabs.min.js0
-rwxr-xr-xjs/jquery.karma-0.3.js707
-rw-r--r--js/jquery.karma-0.4.js965
-rwxr-xr-x[-rw-r--r--]js/jquery.karma.js (renamed from js/jquery.karma-0.5.js)0
-rw-r--r--jsdoc/files.html230
-rw-r--r--jsdoc/index.html266
-rw-r--r--jsdoc/symbols/$.karma.html317
-rw-r--r--jsdoc/symbols/JSDOC.html412
-rw-r--r--jsdoc/symbols/KButton.html330
-rw-r--r--jsdoc/symbols/KGraphic.html362
-rw-r--r--jsdoc/symbols/KGroup.html312
-rw-r--r--jsdoc/symbols/KMedia.html432
-rw-r--r--jsdoc/symbols/KObject-KButton.html330
-rw-r--r--jsdoc/symbols/KObject-KRectangle.html330
-rw-r--r--jsdoc/symbols/KObject-KShape.html330
-rw-r--r--jsdoc/symbols/KObject-KSound.html330
-rw-r--r--jsdoc/symbols/KObject.html329
-rw-r--r--jsdoc/symbols/KRectangle.html330
-rw-r--r--jsdoc/symbols/KShape.html330
-rw-r--r--jsdoc/symbols/KSound.html330
-rw-r--r--jsdoc/symbols/Karma#geometry.html505
-rw-r--r--jsdoc/symbols/Karma#graphics.html425
-rw-r--r--jsdoc/symbols/Karma#math.html393
-rw-r--r--jsdoc/symbols/Karma.html1171
-rw-r--r--jsdoc/symbols/_global_.html520
-rw-r--r--jsdoc/symbols/init.html321
-rw-r--r--jsdoc/symbols/src/JSDOC.js.html112
-rw-r--r--jsdoc/symbols/src/js_a.js.html767
-rw-r--r--jsdoc/symbols/src/js_jquery.karma-0.3.js.html721
-rw-r--r--jsdoc/symbols/src/js_jquery.karma-0.4.js.html979
-rwxr-xr-x[-rw-r--r--]lessons/quadrilaterals/css/jquery.jgrowl.css0
l---------utils/bin/activate1
-rwxr-xr-xutils/bin/activate.cmd3
-rwxr-xr-xutils/bin/narwhal.cmd29
-rwxr-xr-xutils/bin/sea.cmd26
-rwxr-xr-xutils/bin/tusk.cmd1
-rwxr-xr-xutils/docs/posts/2009-07-29-hello-0.1.md19
-rwxr-xr-xutils/examples/hello2
-rwxr-xr-xutils/examples/narwhal3
-rwxr-xr-xutils/examples/not-quite-a-quine.js1
-rwxr-xr-xutils/lib/file-bootstrap.js170
-rwxr-xr-xutils/lib/jsmin.js315
-rwxr-xr-xutils/lib/narwhal/server-test.js3
-rwxr-xr-xutils/lib/narwhal/server.js211
-rwxr-xr-xutils/lib/narwhal/tusk/bundle.js (copied from examples/adding_up_to_10/test.txt)0
-rwxr-xr-xutils/lib/narwhal/tusk/freeze.js (renamed from utils/tests/iojs/hasOwnProperty/hasOwnProperty.js)0
-rwxr-xr-xutils/lib/narwhal/tusk/orphans.js (renamed from utils/tests/iojs/hasOwnProperty/toString.js)0
-rwxr-xr-xutils/lib/narwhal/tusk/remove.js15
-rwxr-xr-xutils/lib/narwhal/tusk/search.js (copied from examples/adding_up_to_10/test.txt)0
-rwxr-xr-xutils/lib/narwhal/tusk/upgrade.js (renamed from examples/adding_up_to_10/test.txt)0
-rwxr-xr-xutils/lib/url.js323
-rwxr-xr-xutils/platforms/browser/inline.js56
-rwxr-xr-xutils/platforms/browser/lib/modules.js1449
-rwxr-xr-xutils/platforms/browser/lib/system.js3
-rwxr-xr-xutils/platforms/default/lib/binary-platform.js53
-rwxr-xr-xutils/platforms/default/lib/binary.js719
-rwxr-xr-xutils/platforms/default/lib/os-platform.js3
-rwxr-xr-xutils/platforms/k7/bin/narwhal-k732
-rwxr-xr-xutils/platforms/k7/bootstrap.js78
-rwxr-xr-xutils/platforms/k7/lib/binary.js (renamed from utils/tests/iojs/determinism/submodule/b.js)0
-rwxr-xr-xutils/platforms/k7/lib/file-platform.js116
-rwxr-xr-xutils/platforms/k7/lib/io-platform.js8
-rwxr-xr-xutils/platforms/k7/lib/system.js25
-rwxr-xr-xutils/platforms/rhino/bin/narwhal-rhino.cmd25
-rwxr-xr-xutils/platforms/rhino/lib/binary-platform.js44
-rwxr-xr-xutils/tests/all-tests.js12
-rwxr-xr-xutils/tests/base64.js23
-rwxr-xr-xutils/tests/codecs.js65
-rwxr-xr-xutils/tests/file/all-tests.js31
-rwxr-xr-xutils/tests/iojs/absolute/b.js1
-rwxr-xr-xutils/tests/iojs/absolute/program.js5
-rwxr-xr-xutils/tests/iojs/absolute/submodule/a.js3
-rwxr-xr-xutils/tests/iojs/absolute/test.js9
-rwxr-xr-xutils/tests/iojs/config.js11
-rwxr-xr-xutils/tests/iojs/cyclic/a.js4
-rwxr-xr-xutils/tests/iojs/cyclic/b.js4
-rwxr-xr-xutils/tests/iojs/cyclic/program.js10
-rwxr-xr-xutils/tests/iojs/cyclic/test.js9
-rwxr-xr-xutils/tests/iojs/determinism/program.js3
-rwxr-xr-xutils/tests/iojs/determinism/submodule/a.js8
-rwxr-xr-xutils/tests/iojs/determinism/test.js9
-rwxr-xr-xutils/tests/iojs/exactExports/a.js3
-rwxr-xr-xutils/tests/iojs/exactExports/program.js4
-rwxr-xr-xutils/tests/iojs/exactExports/test.js9
-rwxr-xr-xutils/tests/iojs/hasOwnProperty/program.js3
-rwxr-xr-xutils/tests/iojs/hasOwnProperty/test.js9
-rwxr-xr-xutils/tests/iojs/method/a.js12
-rwxr-xr-xutils/tests/iojs/method/program.js8
-rwxr-xr-xutils/tests/iojs/method/test.js9
-rwxr-xr-xutils/tests/iojs/missing/program.js8
-rwxr-xr-xutils/tests/iojs/missing/test.js9
-rwxr-xr-xutils/tests/iojs/monkeys/a.js1
-rwxr-xr-xutils/tests/iojs/monkeys/program.js4
-rwxr-xr-xutils/tests/iojs/monkeys/test.js9
-rwxr-xr-xutils/tests/iojs/nested/a/b/c/d.js3
-rwxr-xr-xutils/tests/iojs/nested/program.js3
-rwxr-xr-xutils/tests/iojs/nested/test.js9
-rwxr-xr-xutils/tests/iojs/program.js47
-rwxr-xr-xutils/tests/iojs/relative/program.js5
-rwxr-xr-xutils/tests/iojs/relative/submodule/a.js1
-rwxr-xr-xutils/tests/iojs/relative/submodule/b.js2
-rwxr-xr-xutils/tests/iojs/relative/test.js9
-rwxr-xr-xutils/tests/iojs/transitive/a.js1
-rwxr-xr-xutils/tests/iojs/transitive/b.js1
-rwxr-xr-xutils/tests/iojs/transitive/c.js3
-rwxr-xr-xutils/tests/iojs/transitive/program.js3
-rwxr-xr-xutils/tests/iojs/transitive/test.js9
-rwxr-xr-xutils/tests/os/all-tests.js3
-rwxr-xr-xutils/tests/os/popen.js23
-rwxr-xr-xutils/tests/sandbox/byte-io.js20
-rwxr-xr-xutils/tests/sandbox/fileName.js3
-rwxr-xr-xutils/tests/serverjs/all-tests.js9
-rwxr-xr-xutils/tests/serverjs/bytearray-tests.js273
-rwxr-xr-xutils/tests/serverjs/bytestring-tests.js263
-rwxr-xr-xutils/tests/serverjs/file-tests.js237
-rwxr-xr-xutils/tests/serverjs/file/extension.js45
-rwxr-xr-xutils/tests/serverjs/file/iterator.js101
-rwxr-xr-xutils/tests/serverjs/file/normal.js27
-rwxr-xr-xutils/tests/serverjs/file/resolve.js44
-rwxr-xr-xutils/tests/serverjs/module-tests.js9
-rwxr-xr-xutils/tests/string-tests.js34
-rwxr-xr-xutils/tests/uri-tests.js18
188 files changed, 3733 insertions, 14981 deletions
diff --git a/assets/default/images/back.png b/assets/default/images/back.png
index fbb0910..fbb0910 100644..100755
--- a/assets/default/images/back.png
+++ b/assets/default/images/back.png
Binary files differ
diff --git a/assets/default/images/back_bw.png b/assets/default/images/back_bw.png
index 126380d..126380d 100644..100755
--- a/assets/default/images/back_bw.png
+++ b/assets/default/images/back_bw.png
Binary files differ
diff --git a/assets/default/images/chakra_logo.png b/assets/default/images/chakra_logo.png
index b7f9b3a..b7f9b3a 100644..100755
--- a/assets/default/images/chakra_logo.png
+++ b/assets/default/images/chakra_logo.png
Binary files differ
diff --git a/assets/default/images/english.png b/assets/default/images/english.png
index 6a3eaab..6a3eaab 100644..100755
--- a/assets/default/images/english.png
+++ b/assets/default/images/english.png
Binary files differ
diff --git a/assets/default/images/exercise.png b/assets/default/images/exercise.png
index ebb2ead..ebb2ead 100644..100755
--- a/assets/default/images/exercise.png
+++ b/assets/default/images/exercise.png
Binary files differ
diff --git a/assets/default/images/exercise_bw.png b/assets/default/images/exercise_bw.png
index e2cf4f7..e2cf4f7 100644..100755
--- a/assets/default/images/exercise_bw.png
+++ b/assets/default/images/exercise_bw.png
Binary files differ
diff --git a/assets/default/images/games.png b/assets/default/images/games.png
index a7177f2..a7177f2 100644..100755
--- a/assets/default/images/games.png
+++ b/assets/default/images/games.png
Binary files differ
diff --git a/assets/default/images/games_bw.png b/assets/default/images/games_bw.png
index fd3c3cb..fd3c3cb 100644..100755
--- a/assets/default/images/games_bw.png
+++ b/assets/default/images/games_bw.png
Binary files differ
diff --git a/assets/default/images/geography.png b/assets/default/images/geography.png
index 3a9a2dc..3a9a2dc 100644..100755
--- a/assets/default/images/geography.png
+++ b/assets/default/images/geography.png
Binary files differ
diff --git a/assets/default/images/grade1.png b/assets/default/images/grade1.png
index 2e27b65..2e27b65 100644..100755
--- a/assets/default/images/grade1.png
+++ b/assets/default/images/grade1.png
Binary files differ
diff --git a/assets/default/images/grade1_bw.png b/assets/default/images/grade1_bw.png
index 0034ace..0034ace 100644..100755
--- a/assets/default/images/grade1_bw.png
+++ b/assets/default/images/grade1_bw.png
Binary files differ
diff --git a/assets/default/images/grade2.png b/assets/default/images/grade2.png
index 496d0d2..496d0d2 100644..100755
--- a/assets/default/images/grade2.png
+++ b/assets/default/images/grade2.png
Binary files differ
diff --git a/assets/default/images/grade2_bw.png b/assets/default/images/grade2_bw.png
index 28eb7c0..28eb7c0 100644..100755
--- a/assets/default/images/grade2_bw.png
+++ b/assets/default/images/grade2_bw.png
Binary files differ
diff --git a/assets/default/images/grade3.png b/assets/default/images/grade3.png
index 8248bf0..8248bf0 100644..100755
--- a/assets/default/images/grade3.png
+++ b/assets/default/images/grade3.png
Binary files differ
diff --git a/assets/default/images/grade3_bw.png b/assets/default/images/grade3_bw.png
index 0e8cd09..0e8cd09 100644..100755
--- a/assets/default/images/grade3_bw.png
+++ b/assets/default/images/grade3_bw.png
Binary files differ
diff --git a/assets/default/images/grade4.png b/assets/default/images/grade4.png
index 25ac532..25ac532 100644..100755
--- a/assets/default/images/grade4.png
+++ b/assets/default/images/grade4.png
Binary files differ
diff --git a/assets/default/images/grade4_bw.png b/assets/default/images/grade4_bw.png
index c597442..c597442 100644..100755
--- a/assets/default/images/grade4_bw.png
+++ b/assets/default/images/grade4_bw.png
Binary files differ
diff --git a/assets/default/images/grade5.png b/assets/default/images/grade5.png
index 1ad416a..1ad416a 100644..100755
--- a/assets/default/images/grade5.png
+++ b/assets/default/images/grade5.png
Binary files differ
diff --git a/assets/default/images/grade5_bw.png b/assets/default/images/grade5_bw.png
index a8a9d8a..a8a9d8a 100644..100755
--- a/assets/default/images/grade5_bw.png
+++ b/assets/default/images/grade5_bw.png
Binary files differ
diff --git a/assets/default/images/grade6.png b/assets/default/images/grade6.png
index 26e6f9b..26e6f9b 100644..100755
--- a/assets/default/images/grade6.png
+++ b/assets/default/images/grade6.png
Binary files differ
diff --git a/assets/default/images/grade6_bw.png b/assets/default/images/grade6_bw.png
index 07e6e0d..07e6e0d 100644..100755
--- a/assets/default/images/grade6_bw.png
+++ b/assets/default/images/grade6_bw.png
Binary files differ
diff --git a/assets/default/images/grade7.png b/assets/default/images/grade7.png
index 333b61e..333b61e 100644..100755
--- a/assets/default/images/grade7.png
+++ b/assets/default/images/grade7.png
Binary files differ
diff --git a/assets/default/images/grade7_bw.png b/assets/default/images/grade7_bw.png
index 6ff1dd1..6ff1dd1 100644..100755
--- a/assets/default/images/grade7_bw.png
+++ b/assets/default/images/grade7_bw.png
Binary files differ
diff --git a/assets/default/images/grade8.png b/assets/default/images/grade8.png
index 77542a7..77542a7 100644..100755
--- a/assets/default/images/grade8.png
+++ b/assets/default/images/grade8.png
Binary files differ
diff --git a/assets/default/images/grade8_bw.png b/assets/default/images/grade8_bw.png
index 15b3be7..15b3be7 100644..100755
--- a/assets/default/images/grade8_bw.png
+++ b/assets/default/images/grade8_bw.png
Binary files differ
diff --git a/assets/default/images/health.png b/assets/default/images/health.png
index 305c8d0..305c8d0 100644..100755
--- a/assets/default/images/health.png
+++ b/assets/default/images/health.png
Binary files differ
diff --git a/assets/default/images/help.png b/assets/default/images/help.png
index 9209167..9209167 100644..100755
--- a/assets/default/images/help.png
+++ b/assets/default/images/help.png
Binary files differ
diff --git a/assets/default/images/history.png b/assets/default/images/history.png
index 79a79c0..79a79c0 100644..100755
--- a/assets/default/images/history.png
+++ b/assets/default/images/history.png
Binary files differ
diff --git a/assets/default/images/karma_logo.png b/assets/default/images/karma_logo.png
index dc8610a..dc8610a 100644..100755
--- a/assets/default/images/karma_logo.png
+++ b/assets/default/images/karma_logo.png
Binary files differ
diff --git a/assets/default/images/mathematics.png b/assets/default/images/mathematics.png
index e8a6ee2..e8a6ee2 100644..100755
--- a/assets/default/images/mathematics.png
+++ b/assets/default/images/mathematics.png
Binary files differ
diff --git a/assets/default/images/music.png b/assets/default/images/music.png
index 0530497..0530497 100644..100755
--- a/assets/default/images/music.png
+++ b/assets/default/images/music.png
Binary files differ
diff --git a/assets/default/images/mystuff.png b/assets/default/images/mystuff.png
index 40d3dba..40d3dba 100644..100755
--- a/assets/default/images/mystuff.png
+++ b/assets/default/images/mystuff.png
Binary files differ
diff --git a/assets/default/images/nepali.png b/assets/default/images/nepali.png
index 08b82a7..08b82a7 100644..100755
--- a/assets/default/images/nepali.png
+++ b/assets/default/images/nepali.png
Binary files differ
diff --git a/assets/default/images/preview1.jpg b/assets/default/images/preview1.jpg
index 9801ffb..9801ffb 100644..100755
--- a/assets/default/images/preview1.jpg
+++ b/assets/default/images/preview1.jpg
Binary files differ
diff --git a/assets/default/images/preview2.jpg b/assets/default/images/preview2.jpg
index 41762a2..41762a2 100644..100755
--- a/assets/default/images/preview2.jpg
+++ b/assets/default/images/preview2.jpg
Binary files differ
diff --git a/assets/default/images/preview3.jpg b/assets/default/images/preview3.jpg
index 385bef2..385bef2 100644..100755
--- a/assets/default/images/preview3.jpg
+++ b/assets/default/images/preview3.jpg
Binary files differ
diff --git a/assets/default/images/preview4.jpg b/assets/default/images/preview4.jpg
index e75def8..e75def8 100644..100755
--- a/assets/default/images/preview4.jpg
+++ b/assets/default/images/preview4.jpg
Binary files differ
diff --git a/assets/default/images/profile.png b/assets/default/images/profile.png
index 16b5f9b..16b5f9b 100644..100755
--- a/assets/default/images/profile.png
+++ b/assets/default/images/profile.png
Binary files differ
diff --git a/assets/default/images/resources.png b/assets/default/images/resources.png
index 473bedf..473bedf 100644..100755
--- a/assets/default/images/resources.png
+++ b/assets/default/images/resources.png
Binary files differ
diff --git a/assets/default/images/resources_bw.png b/assets/default/images/resources_bw.png
index 4a1c27d..4a1c27d 100644..100755
--- a/assets/default/images/resources_bw.png
+++ b/assets/default/images/resources_bw.png
Binary files differ
diff --git a/assets/default/images/science.png b/assets/default/images/science.png
index 7422dcb..7422dcb 100644..100755
--- a/assets/default/images/science.png
+++ b/assets/default/images/science.png
Binary files differ
diff --git a/assets/default/images/tutorial.png b/assets/default/images/tutorial.png
index 6c2fc4a..6c2fc4a 100644..100755
--- a/assets/default/images/tutorial.png
+++ b/assets/default/images/tutorial.png
Binary files differ
diff --git a/assets/default/images/tutorial_bw.png b/assets/default/images/tutorial_bw.png
index b25328b..b25328b 100644..100755
--- a/assets/default/images/tutorial_bw.png
+++ b/assets/default/images/tutorial_bw.png
Binary files differ
diff --git a/chakra/grade1mathematics.html b/chakra/grade1mathematics.html
index 96f7ff0..96f7ff0 100644..100755
--- a/chakra/grade1mathematics.html
+++ b/chakra/grade1mathematics.html
diff --git a/css/chakra.css b/css/chakra.css
index 9cf2bb7..9cf2bb7 100644..100755
--- a/css/chakra.css
+++ b/css/chakra.css
diff --git a/examples/adding_up_to_10/assets/generic/images/happyChimp_120x125.png b/examples/adding_up_to_10/assets/generic/images/happyChimp_120x125.png
new file mode 100755
index 0000000..5e721c9
--- /dev/null
+++ b/examples/adding_up_to_10/assets/generic/images/happyChimp_120x125.png
Binary files differ
diff --git a/examples/adding_up_to_10/assets/generic/images/normalChimp_120x125.png b/examples/adding_up_to_10/assets/generic/images/normalChimp_120x125.png
new file mode 100755
index 0000000..a731df4
--- /dev/null
+++ b/examples/adding_up_to_10/assets/generic/images/normalChimp_120x125.png
Binary files differ
diff --git a/examples/adding_up_to_10/assets/generic/images/sadChimp_120x125.png b/examples/adding_up_to_10/assets/generic/images/sadChimp_120x125.png
new file mode 100755
index 0000000..1dec5f0
--- /dev/null
+++ b/examples/adding_up_to_10/assets/generic/images/sadChimp_120x125.png
Binary files differ
diff --git a/examples/adding_up_to_10/css/lesson.css.~1~ b/examples/adding_up_to_10/css/lesson.css.~1~
deleted file mode 100755
index dcf1377..0000000
--- a/examples/adding_up_to_10/css/lesson.css.~1~
+++ /dev/null
@@ -1,14 +0,0 @@
-#karma-main {
- position: relative;
- background-repeat: no-repeat;
- width: 1200px;
- height: 800px;
-}
-#karma-main canvas {
- position: relative;
- border: 2px solid #cccccc;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
-}
-
-
diff --git a/examples/adding_up_to_10/css/lesson.css.~2~ b/examples/adding_up_to_10/css/lesson.css.~2~
deleted file mode 100755
index ecab6ea..0000000
--- a/examples/adding_up_to_10/css/lesson.css.~2~
+++ /dev/null
@@ -1,14 +0,0 @@
-#karma-main {
- position: relative;
- background-repeat: no-repeat;
- width: 400px;
- height: 400px;
-}
-#karma-main canvas {
- position: relative;
- border: 2px solid #cccccc;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
-}
-
-
diff --git a/examples/adding_up_to_10/css/lesson1.css.~1~ b/examples/adding_up_to_10/css/lesson1.css.~1~
deleted file mode 100755
index dcf1377..0000000
--- a/examples/adding_up_to_10/css/lesson1.css.~1~
+++ /dev/null
@@ -1,14 +0,0 @@
-#karma-main {
- position: relative;
- background-repeat: no-repeat;
- width: 1200px;
- height: 800px;
-}
-#karma-main canvas {
- position: relative;
- border: 2px solid #cccccc;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
-}
-
-
diff --git a/examples/adding_up_to_10/css/lesson_multiple.css b/examples/adding_up_to_10/css/lesson_multiple.css
index c10f168..c10f168 100644..100755
--- a/examples/adding_up_to_10/css/lesson_multiple.css
+++ b/examples/adding_up_to_10/css/lesson_multiple.css
diff --git a/examples/adding_up_to_10/css/mytest.css.~1~ b/examples/adding_up_to_10/css/mytest.css.~1~
deleted file mode 100755
index 21c75f9..0000000
--- a/examples/adding_up_to_10/css/mytest.css.~1~
+++ /dev/null
@@ -1,45 +0,0 @@
-#main {
- float: left;
- width: 68%;
- height: 90%;
- border: 2px solid black;
-}
-
-#mainTop {
- width: 100%;
- height: 90%;
- border: 2px solid black;
-}
-
-#mainTopCanvas {
- width: 100%;
- height: 100%;
- border: 2px solid black;
-}
-
-#mainBottom {
- width: 100%;
- height: 40%;
- border: 2px solid black;
-}
-
-#aside {
- float: right;
- width: 28%;
- height: 90%;
- border: 2px solid blue;
-}
-
-#asideCanvas {
- width: 40%;
- height: 30%;
- border: 2px solid black;
-}
-
-#mainBottomCanvas {
- width: 60%;
- height: 30%;
- border: 2px solid black;
-}
-
-
diff --git a/examples/adding_up_to_10/css/mytest.css.~2~ b/examples/adding_up_to_10/css/mytest.css.~2~
deleted file mode 100755
index 42f5a6c..0000000
--- a/examples/adding_up_to_10/css/mytest.css.~2~
+++ /dev/null
@@ -1,64 +0,0 @@
-#main {
- float:left;
- height:50%;
- width:80%;
-}
-#mainTop {
- height:100%;
- width:100%;
-}
-#mainBottom {
- height:100%;
- width:100%;
-}
-#sidebar {
- background:blue none repeat scroll 0 0;
- float:right;
- height:100%;
- width:20%;
-}
-#mainTopLeft {
- width:40%;
- height:100%;
- background:yellow;
- float:left;
-}
-
-#mainTopMiddle {
- width:20%;
- height:100%;
- background:red;
- float:left;
-}
-
-#mainTopRight {
- width:40%;
- height:100%;
- background:green;
- float:left;
-}
-
-
-
-#mainBottomLeft {
- float:left;
- width:33.3%;
- height:100%;
- background:yellow;
-}
-
-
-#mainBottomMiddle {
- float:left;
- width:33.3%;
- height:100%;
- background:red;
-}
-
-
-#mainBottomRight {
- float:left;
- width:33.3%;
- height:100%;
- background:green;
-} \ No newline at end of file
diff --git a/examples/adding_up_to_10/index.html.~1~ b/examples/adding_up_to_10/index.html.~1~
deleted file mode 100755
index 28bcaba..0000000
--- a/examples/adding_up_to_10/index.html.~1~
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html lang="en">
-
-<head>
- <title>Karma - Adding Up to 10</title>
- <meta name="keywords" content="karma,javascript,html5,sugar,sugarlabs,gsoc,ole,nepal">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
- <link type="image/ico" rel="icon" href="../../assets/default/images/favicon.ico" />
-
- <link type="text/css" rel="stylesheet" href="../../css/karma.css" />
- <link type="text/css" rel="stylesheet" href="css/lesson.css" />
-
- <script type="text/javascript" src="../../js/jquery-1.3.2.min.js"></script>
- <script type="text/javascript" src="../../js/karma.Gettext.js"></script>
- <script type="text/javascript" src="../../js/jquery.karma-0.3.js"></script>
- <script type="text/javascript" src="js/lesson3.js"></script>
-
-</head>
-
-<body>
- <div id="karma-main" > </div>
-</body>
-
-</html>
diff --git a/examples/adding_up_to_10/index1.html b/examples/adding_up_to_10/index1.html
deleted file mode 100755
index cb66032..0000000
--- a/examples/adding_up_to_10/index1.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
- <title>Karma - Adding Up to 10</title>
- <meta name="keywords" content="karma,javascript,html5,sugar,sugarlabs,gsoc,ole,nepal">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
- <link type="image/ico" rel="icon" href="../../assets/default/images/favicon.ico" />
-
- <link type="text/css" rel="stylesheet" href="../../css/karma.css" />
- <link type="text/css" rel="stylesheet" href="css/lesson1.css" />
-
- <script type="text/javascript" src="../../js/jquery-1.3.2.min.js"></script>
- <script type="text/javascript" src="../../js/karma.Gettext.js"></script>
- <script type="text/javascript" src="../../js/jquery.karma-0.3.js"></script>
- <!--<script type="text/javascript" src="js/lesson.js"></script>-->
-
-</head>
-
-<body>
- <div id="karma-main" >
- <canvas id="canvas0">
- <canvas id="canvas1">
- </canvas>
-
- </canvas>
-
- </div>
-</body>
-
-</html>
diff --git a/examples/adding_up_to_10/index1.html.~1~ b/examples/adding_up_to_10/index1.html.~1~
deleted file mode 100755
index f2acdf1..0000000
--- a/examples/adding_up_to_10/index1.html.~1~
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html lang="en">
-
-<head>
- <title>Karma - Adding Up to 10</title>
- <meta name="keywords" content="karma,javascript,html5,sugar,sugarlabs,gsoc,ole,nepal">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
- <link type="image/ico" rel="icon" href="../../assets/default/images/favicon.ico" />
-
- <link type="text/css" rel="stylesheet" href="../../css/karma.css" />
- <link type="text/css" rel="stylesheet" href="css/lesson.css" />
-
- <script type="text/javascript" src="../../js/jquery-1.3.2.min.js"></script>
- <script type="text/javascript" src="../../js/karma.Gettext.js"></script>
- <script type="text/javascript" src="../../js/jquery.karma-0.3.js"></script>
- <script type="text/javascript" src="js/lesson.js"></script>
-
-</head>
-
-<body>
- <div id="karma-main" > </div>
-</body>
-
-</html>
diff --git a/examples/adding_up_to_10/index_multiple.html b/examples/adding_up_to_10/index_multiple.html
deleted file mode 100644
index bad0372..0000000
--- a/examples/adding_up_to_10/index_multiple.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html lang="en">
-
-<head>
- <title>Karma - Adding Up to 10</title>
- <meta name="keywords" content="karma,javascript,html5,sugar,sugarlabs,gsoc,ole,nepal">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
- <link type="image/ico" rel="icon" href="../../assets/default/images/favicon.ico" />
-
- <link type="text/css" rel="stylesheet" href="../../css/karma.css" />
- <link type="text/css" rel="stylesheet" href="css/lesson_multiple.css" />
-
- <script type="text/javascript" src="../../js/jquery-1.3.2.min.js"></script>
- <script type="text/javascript" src="../../js/karma.Gettext.js"></script>
- <script type="text/javascript" src="../../js/jquery.karma-0.5.js"></script>
- <script type="text/javascript" src="js/lesson_multiple.js"></script>
-
-</head>
-
-<body>
- <div id="karma-main" > </div>
-</body>
-
-</html>
diff --git a/examples/adding_up_to_10/js/lesson.js.~1~ b/examples/adding_up_to_10/js/lesson.js.~1~
deleted file mode 100755
index 6f8bc88..0000000
--- a/examples/adding_up_to_10/js/lesson.js.~1~
+++ /dev/null
@@ -1,109 +0,0 @@
-$(document).ready(function(){
-
-var k = $.karma ({container: "#karma-main"/*, lang: "es-MX"*/});
-k.size(1200, 800);
-k.init({
- images: [
- {id: "ball", file: "ball.png", localized : false },
- {id: "ballon", file: "ballon.png", localized : false },
- {id: "banana", file: "banana.png", localized : false },
- {id: "chilli", file: "chilli.png", localized : false },
- {id: "fish" , file: "fish.png", localized : false },
- {id: "flower", file: "flower.png", localized : false },
- {id: "plussign", file: "plussign.png", localized : false },
- {id: "happyMonkey", file: "happyMonkey.jpg", localized : false },
- {id: "scorebox", file: "scorebox.png", localized : false }
- ]
- ,
- sounds: [
- {id: "correct", file: "correct.ogg" },
- {id: "incorrect",file: "incorrect.ogg" }
- ]
-});
-k.main(function() {
- alert(gk.paths.sounds.localized);
- var imgNames = ["ball", "ballon", "banana", "chilli", "fish", "flower" ];
- //game logic
- var total, level=0, time, n0, n1, correct;
- var maskd=252;
- var d=200;
- var choices=[];
-
- function game () {
- gk.ctx.clearRect(0,0,1200,800);
- total = k.math.rand( 3, 9 ); //the total
- n0 = total - k.math.rand(1, total - 1 ); //first number
- n1 = total - n0; //second number
-
- for (var i=0; i<3; i++) {
- choices[ i ] = k.math.rand( 3, 9 ); // generate the 3 options
- }
- //chose one option (the correct option) and then put the correct value into it
- correct = k.math.rand( 0, 2 );
- choices[ correct ] = total;
- var imgId = imgNames[ level ] ;
-
- // add plus sign, the scorebox, and the happy monkey
- k.library.images["plussign"].draw(460,200);
- k.library.images["happyMonkey"].draw(1000,600);
-
- var card = function ( n, minx, miny, d ) {
- gk.ctx.save();
- var r = k.rectangle({x:minx, y:miny, width:maskd, height:maskd,
- stroke:false,fill:false}).draw();
-
- //do the clip
- gk.ctx.clip();
- var pos = [];
- var x, y, flag;
- for (var i=0; i<n; i++) {
- do {
- flag = false;
- x = minx + k.math.rand( 0, d );
- y = miny + k.math.rand( 0, d );
- for ( var j=0; j<pos.length; j++) {
- if ( k.geometry.distance2( pos[j], {"x": x, "y": y} )
- < 4000 ) {
- flag = true;
- break;
- }
- }
-
- }while ( flag === true );
- pos.push( { "x":x, "y": y } );
- k.library.images[ imgId ].draw( x, y )
- }
-
- gk.ctx.restore();
- }
- //put the cards
-
- card( n0 , 165, 100, d);
- card( n1 , 550, 100, d);
- card( choices[ 0 ] , 65, 480, d);
- card( choices[ 1 ] , 360, 480, d);
- card( choices[ 2 ] , 650, 480, d);
- }
-
- game();
- //put the buttons
- var buttons=[];
- buttons[ 0 ] = k.button({id: 0, x:65, y:480, width:maskd, height: maskd});
- buttons[ 1 ] = k.button({id: 1, x:360, y:480, width:maskd, height: maskd});
- buttons[ 2 ] = k.button({id: 2, x:650, y:480, width:maskd, height: maskd});
- buttons[0].onClick = buttons[1].onClick = buttons[2].onClick = function() {
- if ( choices[ this.id ] === total){
-
- k.library.sounds[ "correct" ].play();
- level = (level+1)% imgNames.length;
- game();
- }else {
- k.library.sounds[ "incorrect" ].play();
- game();
- }
- }
-
-
-});
-
-}); \ No newline at end of file
diff --git a/examples/adding_up_to_10/js/lesson.js.~2~ b/examples/adding_up_to_10/js/lesson.js.~2~
deleted file mode 100755
index 1c00968..0000000
--- a/examples/adding_up_to_10/js/lesson.js.~2~
+++ /dev/null
@@ -1,109 +0,0 @@
-$(document).ready(function(){
-
-var k = $.karma ({container: "#karma-main"/*, lang: "es-MX"*/});
-k.size(400, 400);
-k.init({
- images: [
- {id: "ball", file: "ball.png", localized : false },
- {id: "ballon", file: "ballon.png", localized : false },
- {id: "banana", file: "banana.png", localized : false },
- {id: "chilli", file: "chilli.png", localized : false },
- {id: "fish" , file: "fish.png", localized : false },
- {id: "flower", file: "flower.png", localized : false },
- {id: "plussign", file: "plussign.png", localized : false },
- {id: "happyMonkey", file: "happyMonkey.jpg", localized : false },
- {id: "scorebox", file: "scorebox.png", localized : false }
- ]
- ,
- sounds: [
- {id: "correct", file: "correct.ogg" },
- {id: "incorrect",file: "incorrect.ogg" }
- ]
-});
-k.main(function() {
- alert(gk.paths.sounds.localized);
- var imgNames = ["ball", "ballon", "banana", "chilli", "fish", "flower" ];
- //game logic
- var total, level=0, time, n0, n1, correct;
- var maskd=252;
- var d=200;
- var choices=[];
-
- function game () {
- gk.ctx.clearRect(0,0,1200,800);
- total = k.math.rand( 3, 9 ); //the total
- n0 = total - k.math.rand(1, total - 1 ); //first number
- n1 = total - n0; //second number
-
- for (var i=0; i<3; i++) {
- choices[ i ] = k.math.rand( 3, 9 ); // generate the 3 options
- }
- //chose one option (the correct option) and then put the correct value into it
- correct = k.math.rand( 0, 2 );
- choices[ correct ] = total;
- var imgId = imgNames[ level ] ;
-
- // add plus sign, the scorebox, and the happy monkey
- k.library.images["plussign"].draw(460,200);
- k.library.images["happyMonkey"].draw(1000,600);
-
- var card = function ( n, minx, miny, d ) {
- gk.ctx.save();
- var r = k.rectangle({x:minx, y:miny, width:maskd, height:maskd,
- stroke:false,fill:false}).draw();
-
- //do the clip
- gk.ctx.clip();
- var pos = [];
- var x, y, flag;
- for (var i=0; i<n; i++) {
- do {
- flag = false;
- x = minx + k.math.rand( 0, d );
- y = miny + k.math.rand( 0, d );
- for ( var j=0; j<pos.length; j++) {
- if ( k.geometry.distance2( pos[j], {"x": x, "y": y} )
- < 4000 ) {
- flag = true;
- break;
- }
- }
-
- }while ( flag === true );
- pos.push( { "x":x, "y": y } );
- k.library.images[ imgId ].draw( x, y )
- }
-
- gk.ctx.restore();
- }
- //put the cards
-
- card( n0 , 165, 100, d);
- card( n1 , 550, 100, d);
- card( choices[ 0 ] , 65, 480, d);
- card( choices[ 1 ] , 360, 480, d);
- card( choices[ 2 ] , 650, 480, d);
- }
-
- game();
- //put the buttons
- var buttons=[];
- buttons[ 0 ] = k.button({id: 0, x:65, y:480, width:maskd, height: maskd});
- buttons[ 1 ] = k.button({id: 1, x:360, y:480, width:maskd, height: maskd});
- buttons[ 2 ] = k.button({id: 2, x:650, y:480, width:maskd, height: maskd});
- buttons[0].onClick = buttons[1].onClick = buttons[2].onClick = function() {
- if ( choices[ this.id ] === total){
-
- k.library.sounds[ "correct" ].play();
- level = (level+1)% imgNames.length;
- game();
- }else {
- k.library.sounds[ "incorrect" ].play();
- game();
- }
- }
-
-
-});
-
-}); \ No newline at end of file
diff --git a/examples/adding_up_to_10/js/lesson_multiple.js b/examples/adding_up_to_10/js/lesson_multiple.js
index 53972a5..53972a5 100644..100755
--- a/examples/adding_up_to_10/js/lesson_multiple.js
+++ b/examples/adding_up_to_10/js/lesson_multiple.js
diff --git a/examples/adding_up_to_10/js/mytest.js.~1~ b/examples/adding_up_to_10/js/mytest.js.~1~
deleted file mode 100755
index a2ba1e7..0000000
--- a/examples/adding_up_to_10/js/mytest.js.~1~
+++ /dev/null
@@ -1,35 +0,0 @@
-window.addEventListener('load', function() {
- var mainTopCanvas = document.getElementById('mainTopCanvas');
- var mainBottomCanvas = document.getElementById('mainBottomCanvas');
- var asideCanvas = document.getElementById('asideCanvas');
-
- var tcCtx = mainTopCanvas.getContext('2d');
- var bcCtx = mainBottomCanvas.getContext('2d');
- var acCtx = asideCanvas.getContext('2d');
- var startY = 0;
-
- var logo = new Image();
-
- /* logo.src = 'assets/generic/images/logo_w_name.png';
- logo.onload = function () {};
-
- tcCtx.drawImage(logo, 0, 0, 0, 0);
- tcCtx.drawImage(logo, 30, 60, 258, 80);
-
-
- var timerFn = function () {
- if (startY !== 0) {
- tcCtx.clearRect(0, startY - 10,300,10);
- }
- tcCtx.fillRect(0, startY,300,10);
- startY = startY + 10;
-
- };
-
- var id = setInterval (timerFn, 1000);
-*/
-
-
-}, false);
-
-
diff --git a/experiments/ball.png b/experiments/ball.png
deleted file mode 100644
index 522fb66..0000000
--- a/experiments/ball.png
+++ /dev/null
Binary files differ
diff --git a/experiments/banana.png b/experiments/banana.png
deleted file mode 100755
index 7600af1..0000000
--- a/experiments/banana.png
+++ /dev/null
Binary files differ
diff --git a/experiments/mytest1.html b/experiments/mytest1.html
deleted file mode 100644
index 333c0e2..0000000
--- a/experiments/mytest1.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-<title>testing dawing layouts</title>
-
-<script type="text/javascript">
- window.addEventListener('load', function() {
- var leftCanvas = document.getElementById('leftCanvas');
- var rightCanvas = document.getElementById('rightCanvas');
-
- var ltCtx = leftCanvas.getContext('2d');
- var rtCtx = rightCanvas.getContext('2d');
-
- var ballImg = document.getElementById('ball');
- var bananaImg = document.getElementById('banana');
-
- ltCtx.drawImage(ballImg, 0, 0, 77, 77);
- ltCtx.drawImage(ballImg, 0, 0, 77, 77, 70, 70, 77, 77);
- leftCanvas.setAttribute('width', '100%');
-
- }, false);
-
-</script>
-
-<style type="text/css">
-
-#main {
- width: 900px;
- height: 800px;
-}
-
-.side {
- float: left;
- width: 450px;
- height: 800px;
- position: relative
-}
-
-
-.boxImg {
- width: 300px;
- height: 300px;
- position: absolute;
- top: 10%;
-}
-
-.canvas {
- position: absolute;
- top: 10%;
- border: black 2px solid;
-}
-
-#leftCanvas {
- width: 50%;
- height: 50%;
-
-}
-
-</style>
-
-</head>
-<body>
- <div id="main">
- <div class="side">
- <img id="leftBox" src="yellowBox300px.png" alt="" class="boxImg" />
- <canvas id="leftCanvas" class="canvas" width="300px" height="300px"></canvas>
- </div>
-
- <div class="side">
- <img id="rightBox" src="yellowBox300px.png" alt="" class="boxImg" />
- <canvas id="rightCanvas" class="canvas"></canvas>
- </div>
-
- <img id="ball" src="ball.png" alt="" class="image" />
- <img id="banana" src="banana.png" alt="" class="image" />
-
- </div>
-
-
-</body>
-</html> \ No newline at end of file
diff --git a/experiments/yellowBox300px.png b/experiments/yellowBox300px.png
deleted file mode 100644
index 9357e21..0000000
--- a/experiments/yellowBox300px.png
+++ /dev/null
Binary files differ
diff --git a/js/jquery.idTabs.min.js b/js/jquery.idTabs.min.js
index 7106f54..7106f54 100644..100755
--- a/js/jquery.idTabs.min.js
+++ b/js/jquery.idTabs.min.js
diff --git a/js/jquery.karma-0.3.js b/js/jquery.karma-0.3.js
deleted file mode 100755
index f3562cb..0000000
--- a/js/jquery.karma-0.3.js
+++ /dev/null
@@ -1,707 +0,0 @@
-/*
-* Karma Framework
-* http://wiki.sugarlabs.org/go/Karma
-*
-* Copyright (c) 2009
-* Felipe López Toledo zer.subzero@gmail.com
-* Bryan W Berry bryan@olenepal.org
-*
-* Under MIT License:
-* Permission is hereby granted, free of charge, to any person
-* obtaining a copy of this software and associated documentation
-* files (the "Software"), to deal in the Software without
-* restriction, including without limitation the rights to use,
-* copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following
-* conditions:
-*
-* The above copyright notice and this permission notice shall be
-* included in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-* OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-(function ($) {
-//helpers
-var valid = function ( arg, type, ret ) {
- if ( type ) {
- if ( typeof arg === type ) return ret || true;
- return false
- }
- if ( typeof arg !== "undefined" ) return true;
- return false;
-}
-
-/**
-*Karma
-*
-*/
-var Karma = function( options ) {
- var that = this;
- this.version = "0.3 alpha";
- //
- //relative path to the po, images, sounds, etc. from the html
- //defined here: http://wiki.sugarlabs.org/go/Karma/Bundle_layout
- //localized is recalculated inside localizeContent ( $ = language.lang )
- this.paths = {
- po: "po/",
- images: {
- localized: "assets/$/images/",
- generic: "assets/generic/images/"
- },
- sounds: {
- localized: "assets/$/sounds/",
- generic: "assets/generic/sounds/"
- },
- videos: {
- localized: "assets/$/videos/",
- generic: "assets/generic/videos/"
- }
- };
- this.supportedLangFileTypes = [
- { ext: "po", type: 'application/x-po' },
- { ext: "json", type: 'application/json'}
- ];
- //
- //PRIVATE STUFF start
- /**
- * getLanguage
- * get the language acording to the browser language
- */
- var getLanguage = function () {
- //console.log += navigator.language +"\n";
- var lang = navigator.language || navigator.browserLanguage; //mozilla / ie
- lang = lang.replace(/_/, '-').toLowerCase();
- if (lang.length > 3 ) {
- var country = lang.substring(3, 5);
- lang = lang.substring(0, 2);
- if ( country.match(/[^a-zA-Z]/) === null ) {
- country = country.toUpperCase();
- return {
- "lang": lang + "-" + country,
- "langCode": lang,
- "countryCode": country
- };
- }
- }
- return { "lang": lang };
- }
- /**
- *i18nWrapper
- *creates a new Gettext object and returns a shortcut function to translate strings
- *we use karma.Gettext.js it's a modification of Gettext.js http://jsgettext.berlios.de/doc/html/Gettext.html
- */
- var i18nWrapper = function ( options ) {
- var gt = new Gettext( options );
- if ( typeof ( gt ) === 'undefined' )
- throw new Error("Unable to initialize Gettext object");
- return (function (str1, str2, str3, str4 ) {
- var n, context, singular, plural;
- if (typeof(str4) != 'undefined') {
- // number, context, singular, plural
- return gt.npgettext(str2, str3, str4, str1);
- } else if (typeof(str3) != 'undefined') {
- // number, singular, plural
- return gt.ngettext(str2, str3, str1);
- } else if (typeof(str2) != 'undefined') {
- // context, msgid
- return gt.pgettext(str1, str2);
- } else if (typeof(str1) != 'undefined') {
- // msgid
- return gt.gettext(str1);
- } else {
- // nothing passed in; return blank string.
- // XXX: we could error here, but that may cause more harm than good.
- return '';
- }
- });
- };
- /**
- *
- */
- var localiseContent = function ( lang ) {
-
- var toFix = ["images", "sounds", "videos"];
- for (var i = 0; i < toFix.length; i++) {
- that.paths[ toFix[ i ] ].localized = that.paths[
- toFix[ i ] ].localized.replace('\$', lang );
- }
- //dirty hack to support {lang}_AudioClip
- var prefix = lang.substring(0, 2)+"_";
- that.paths[ "sounds" ].localized+=prefix;
- that.paths[ "sounds" ].generic+=prefix;
- }
- /**
- *
- */
- var loadAlternatives = function ( ) {
- var loaded = undefined;
- var tryNext = true;
- //try to load the po or json language file if it exists.
- //the lang order is acording to options.language.alternatives
- //the type (po or json or ...) is defined in supportedLangFileTypes
- $.each( that.language.alternatives, function ( c, lang ) {
- for (var i=0; i < that.supportedLangFileTypes.length && tryNext === true; i++) {
- $.ajax({
- url: that.paths.po + lang + "." + that.supportedLangFileTypes[i].ext,
- cache: true,
- dataType: "text",
- async: false, //important: touch it at your own risk
- success: function( data, textStatus ){
-
- loaded = lang + "." + that.supportedLangFileTypes[i].ext;
- //i18n
- //we pass the data so we avoid re-loading the file
- //creates the shorcout
- that.i18n.root[ that.i18n.shortcut ] = i18nWrapper(
- {
- domain : lang,
- file : {
- type: that.supportedLangFileTypes[i].type,
- uri: this.url, data: data
- }
- }
- );
- localiseContent( lang );
- tryNext = false;
- },
- error: function ( XHR, textStatus, errorThrown ) {
- //the file doesn't exist or it wasn't possible to load it
- tryNext = true;
- }
- });
- return tryNext;
- }
- });
- return loaded;
- }
- //PRIVATE STUFF end
- // default options
- var defaultOptions ={
- container: "#karma-main",
- language: {
- lang: undefined,
- alternatives: ['en-US', 'en'],
- countryCode: undefined,
- langCode: undefined,
- },
- i18n: {
- root: self, // self is global
- shortcut: "_"
- },
- canvas: undefined,
- width: 100,
- height: 100,
- fps: 24
- };
- //
-
- this.library = { "images": [], "sounds": [], "videos":[], "shapes":[] }
-
- //initializes the defaultOptions argument
- //1 argument: string. assume it's the container
- if ( typeof options === "string" ) {
- options = { container: options };
- options.language = getLanguage() ;
- } else if (typeof options === "object" ){
- if ( typeof options.lang === "string" ) {
- //if language is string, assume it's the language.lang
- options.language = { lang: options.lang };
- }
- }
- $.extend( true, defaultOptions, options );
- //
- //copy defaultOptions to this, we use this.xyz instead this.defaultOptions.xyz
- for (var i in defaultOptions ) {
- this[ i ] = defaultOptions[i];
- }
-
- //initializes i18n
- //add the localized language to the language.alternatives
- if ( typeof this.language.countryCode !== "undefined" ) {
- this.language.alternatives.unshift(
- this.language.langCode,
- this.language.countryCode
- );
- }
- if ( typeof this.language.lang !== "undefined" ) {
- this.language.alternatives.unshift( this.language.lang );
- }
- //try to load the localized lang file (po or json or ...)
- this.language.fileLoaded = loadAlternatives( );
- //
-
- //initializes the container
- if ( typeof this.container === "string" ) {
- this.container = $( this.container );
- }
- //FIXME
- gk = {
- "paths" : this.paths,
- "container" : this.container
- }
-}
-
-/**
-*
-**/
-Karma.prototype.size = function ( w, h) {
- this.canvas = document.createElement("canvas");
-
- this.canvas.width = this.width = ( w || this.width );
- this.canvas.height = this.height = ( h || this.height);
- if ( this.canvas.getContext ) {
- this.ctx = this.canvas.getContext("2d");
- this.container[ 0 ].appendChild( this.canvas );
- }else {
- throw new Error ("Your browser doesn't support canvas, \
- try the newest Firefox, Safari or Google Chrome");
- }
- //FIXME
- gk.canvas = this.canvas;
- gk.ctx = this.ctx;
- //
- this.canvas.addEventListener("contextmenu", function(ev){
- //alert("contextmenu");
- },false
- );
- this.canvas.addEventListener("click",
- handleEvents,
- false
- );
- return this;
-}
-Karma.prototype.clear = function ( x, y, width, height ) {
- this.ctx.clearRect(
- x || 0,
- y || 0,
- width || this.canvas.width,
- height || this.canvas.width
- );
-}
-//Karma packages
-Karma.prototype.geometry = {
- radians : function( angle ){
- return ( angle / 180 ) * Math.PI;
- },
- distance2 : function ( a, b ) {
- return (b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y);
- },
- distance : function ( a, b ) {
- return Math.sqrt( Karma.prototype.distance2( a, b ) );
- }
-}
-Karma.prototype.graphics = {
- rectangle: function ( args ) { return new KRectangle( args ); },
- circle: function ( args ) { return new KCircle( args ); }
-}
-Karma.prototype.math = {
- rand : function ( lower, upper ){
- return Math.round ( Math.random() * (upper - lower) + lower );
- }
-}
-//
-//everything inside karma.graphics is exported to karma.prototype
-$.extend( Karma.prototype, Karma.prototype.graphics);
-//
-Karma.prototype.init = function( array ) {
- this.pendingToLoad = array;
- return this; //chaining :)
-}
-Karma.prototype.main = function ( cb ) {
- if ( valid( this.pendingToLoad ) ) {
- var that = this;
- var categories = ["images", "sounds", "videos" ];
- var counters = { "loaded":0, "error": 0 };
- var totalItems = 0;
- //get the total items
- for ( var i=0; i < categories.length; i++ ) {
- if ( valid ( this.pendingToLoad[ categories[ i ] ] ) ) {
- totalItems += this.pendingToLoad[ categories[ i ] ].length;
- }
- }
- //callback to check if all the items were loaded or got an error when loading
- var checkAllLoaded = function ( ev ) {
- if ( ev.type === "load") counters.loaded += 1;
- else counters.error += 1;
- if ( counters.loaded + counters.error === totalItems ) {
- if ( cb ) cb();
- }
- }
-
- for ( var i=0; i < categories.length; i++ ) {
- var category = categories[ i ];
- if ( valid ( this.pendingToLoad[ category ] ) ) {
- //load all the category elements
- var type = category.substr( 0, category.length-1 )
- $.each (this.pendingToLoad[ category ], function( key, config ){
- var id = config.id;
- delete config.id;
- //register the elements into the library
- that.library[ category ][ id ] = Karma.prototype[ type ](
- config
- );
- that.library[ category ][ id ].media.addEventListener(
- "load",checkAllLoaded,false
- );
- that.library[ category ][ id ].media.addEventListener(
- "error",checkAllLoaded,false
- );
- });
- }
- }
- }else {
- if ( cb ) cb();
- }
-}
-Karma.prototype.image = function ( args ) { return new KImage( args ) };
-Karma.prototype.sound = function ( args ) { return new KSound( args ) };
-Karma.prototype.video = function ( args ) { alert("Not implemented yet"); };
-Karma.prototype.group = function ( args ) { return new KGroup( args ) };
-Karma.prototype.group = function ( args ) { return new KGroup( args ) };
-Karma.prototype.button = function ( args ) { return new KButton( args ) };
-
-//Mouse stuff
-var mouse = {}
-mouse.getRelativeCanvasPosition = function ( ev ) {
- if ( !ev ) return;
- var xy ={x:0, y:0};
- xy.x = ev.layerX;
- xy.y = ev.layerY;
- return xy;
-}
-
-//Events stuff
-var master ={}
-master.buttons =[];
-var handleEvents = function( ev ) {
- var xy = mouse.getRelativeCanvasPosition( ev );
- for (var i in master.buttons) {
- if (master.buttons[i].isPointInPath( xy.x, xy.y) ){
- master.buttons[i].onClick( ev );
- }
- }
- /*switch(ev.type){
- case "click": break;
- }*/
- /*var s="";
- for (var i in ev) {
- s+=i+"="+ev[i]+"\n";
- }
- alert(s);*/
-}
-
-/*
- Master Class creator
-*supports multiple inheritance, warning it's NOT optimal
-*/
-var Class = function ( ) {
- var log="";
- var parents = [];
- for ( var i = 0; i < arguments.length; i++ ) {
- if ( arguments[i].prototype && arguments[i].init ) {
- parents.push( arguments[i].init );
- }
- }
- var o = function ( ) {
- //we inject all the init functions
- /*for ( var i = 0; i < this.__parents.length; i++ ) {
- this.__parents[ i ].apply ( this, arguments );
- }*/
- //call the real class init
- if ( this.init )
- this.init.apply( this, arguments );
- };
-
- o.prototype ={};
- var a;
- for ( var i =0; i < arguments.length; i++) {
- a = arguments[i];
- log += "**" + typeof a+"\n";
- //if ( a === "function") {
- if (a.prototype) {
- for ( var j in a.prototype ) {
- //log += j+" = "+a.prototype[j]+"\n";
- o[ j ] = o.prototype[ j ] = a.prototype [ j ];
- }
- }
- else {
- //if ( typeof a === "object") {
- for (var j in a) {
- //log += j+" = "+a[j]+"\n";
- o[ j ] = o.prototype[ j ] = a [ j ];
- }
- }
-
- }
- o.prototype.__parents = parents;
- //alert( log );
- return o; //(function ( ) { return new o( arguments );});
-}
-var KObject = Class(
- {
- init: function ( options ) {
- if ( valid(options.localized, "boolean" ) ) {
- this.localized = options.localized;
- }else {
- this.localized = true;
- }
- }
- }
-);
-var KGraphic = Class(
- KObject,
- {
- init: function ( options ) {
- if ( valid( options.localized ) )
- KObject.init.call(this, options.localized );
- var defaultOptions = {
- x : 0,
- y : 0,
- z : 0,
- width: 0,
- height: 0,
- visible : true
- }
- $.extend( this, defaultOptions, options);
- },
- isPointInPath : function( x, y ) {
- return (this.x <= x && (this.x + this.width) >= x &&
- this.y <= y && (this.y+this.width)>=y);
- },
- addEventListener : function (type, cb, bubble) {
- //FIXME
- },
- draw : function( ) {}
-
- }
-);
-
-var KGroup = Class(
- KGraphic,
- {
- init: function ( options ) {
- this.childNodes = [];
- this.sorted = true;
- },
- appendChild : function ( ) {
- if ( arguments.length > 0 ) {
- for ( var i = 0; i< arguments.length; i++) {
- this.childNodes.push ( arguments[ i ] );
- }
- this.sorted = false;
-
- }
- },
- removeChild: function () {
- //FIXME
- },
- draw : function() {
- if ( this.visible && this.childNodes.length > 0 ) {
- if ( !this.sorted ) {
- this.childNodes.sort ( function ( g1, g2 ) {
- return g1.z - g2.z;
- });
- this.sorted = true;
- }
- for (var i in this.childNodes) {
- this.childNodes[ i ].draw();
- }
- }
- },
- isPointInPath : function() {
-
- }
-
- }
-);
-var KMedia = Class(
- KObject,
- {
- init: function (file, type, options ) {
- if ( !file || !type ) {
- throw new Error ("file and type needed");
- }
- if ( valid ( options ) )
- KObject.init.call (this, options);
-
- this.file = file;
- this.type = type;
-
- this.status = undefined;
- this.path = undefined;
- this.media = undefined;
- switch ( this.type ) {
- case "image": this.media = new Image(); break;
- case "sound": this.media = new Audio(); break;
- default: throw new Error ("Media type not supported");
- }
- this.path = gk.paths[ this.type + "s" ][
- this.localized ? "localized": "generic"
- ];
- this.media.src = this.src = this.path + this.file;
-
- var that = this;
- this.media.addEventListener("load",
- function (e) { that.status = "loaded";}, false);
- this.media.addEventListener("error",
- function (e) { that.status = "error";}, false);
- this.media.addEventListener("abort",
- function (e) { that.status = "aborted";}, false);
- },
-
- }
-);
-var KImage = Class(
- KGraphic,
- KMedia,
- {
- init: function ( options ) {
- if ( valid ( options, "string" ) ) {
- options = { file:options };
- }
- if ( valid( options ) ) {
- KGraphic.init.call(this, options);
- KMedia.init.call(this, options.file, "image", options );
- }
- var defaultOptions = {
- //w : undefined,
- //h : undefined,
- }
- $.extend( this, defaultOptions, options);
- },
- draw : function( x, y ) {
- if ( this.visible && this.isReady() ) {
- this.x = x || this.x;
- this.y = y || this.y;
- gk.ctx.drawImage( this.media, this.x , this.y );
- }
- },
- isReady : function () {
- if ( !this.media.complete ) return false;
- if ( !this.media.naturalWidth || this.media.naturalWidth === 0)
- return false;
- return true;
- }
- }
-);
-var KSound = Class(
- KMedia,
- {
- init: function( options ) {
- if ( valid ( options, "string" ) ) {
- options = { file: options };
- }
- if ( valid( options ) ) {
- KMedia.init.call(this, options.file, "sound", options );
- //next line is important!
- this.media.load();
- }
- },
- isReady: function () {
- return this.readyState === 4;
- },
- play: function (){
- this.media.play();
- }
- }
-);
-
-var KShape = Class(
- KGraphic,
- {
- init : function ( options ) {
- if ( valid( options ) ) {
- KGraphic.init.call(this, options );
- }
- var defaultOptions = {
- fill: true,
- stroke: true,
- fillStyle: '#000',
- strokeStyle: '#000',
- openPath : false
- }
- $.extend( this, defaultOptions, options);
- },
- draw : function () {
- //if ( this.visible ) {
- gk.ctx.fillStyle = this.fillStyle
- gk.ctx.strokeStyle= this.strokeStyle
- if ( this.fill )
- gk.ctx.fill();
- if ( this.stroke )
- gk.ctx.stroke();
- if ( !this.openPath )
- gk.ctx.closePath();
- gk.ctx.restore();
- //}
- }
- }
-);
-var KRectangle = Class(
- KShape,
- {
- init : function ( options ) {
- //ADD multiple constructors support
- //x,y,w,h
- //w,y,w,h,options
- if ( valid( options ) ) {
- KShape.init.call(this, options );
- }
- },
- draw : function ( ) {
- if ( this.visible ) {
- gk.ctx.save();
- gk.ctx.beginPath();
- gk.ctx.rect( this.x, this.y, this.width, this.height);
- KShape.draw.call(this);
- }
- },
- clear : function ( ) {
- if ( this.visible ) {
- gk.ctx.save();
- gk.ctx.beginPath();
- gk.ctx.clearRect( this.x, this.y, this.width, this.height);
- KShape.draw.call(this);
- }
- }
- }
-
-);
-
-var KButton = Class(
- KGraphic,
- {
- init : function ( options ) {
- //ADD multiple constructors support
- //x,y,w,h
- //w,y,w,h,options
- if ( valid( options ) ) {
- KGraphic.init.call(this, options );
- }
- this.id = options.id;
- master.buttons.push(this);
- },
- draw : function ( ) {},
- onClick : function() { } //callback
- }
-);
-//
-//karma wrapper, we avoid using "new"
-$.karma = function (options) {
- var k =new Karma( options );
- //var x= new KGraphic( {localized: true })
- //var x = new KMedia( "file1", "image", {localized: true} );
- //var x = new KImage({file: "ball.png", localized: false, z: 0});
- //alert (x.localized)
- return k;
-}
-})(jQuery); \ No newline at end of file
diff --git a/js/jquery.karma-0.4.js b/js/jquery.karma-0.4.js
deleted file mode 100644
index 1cf919d..0000000
--- a/js/jquery.karma-0.4.js
+++ /dev/null
@@ -1,965 +0,0 @@
-/*
-* Karma Framework
-* http://wiki.sugarlabs.org/go/Karma
-*
-* Copyright (c) 2009
-* Felipe López Toledo zer.subzero@gmail.com
-* Bryan W Berry bryan@olenepal.org
-*
-* Under MIT License:
-* Permission is hereby granted, free of charge, to any person
-* obtaining a copy of this software and associated documentation
-* files (the "Software"), to deal in the Software without
-* restriction, including without limitation the rights to use,
-* copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following
-* conditions:
-*
-* The above copyright notice and this permission notice shall be
-* included in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-* OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-(function ($) {
-//helpers
-/**
-Checks if the argument (arg) is seted and if its type is 'type'.<br>
-1. if arg is seted: it returns toReturn if specified, otherwise it returns
- 'true'
-2. if arg is not seted: it returns 'false'
-@param arg The param to check
-@param {Object} [type] The expeted type of 'arg'
-@param [toReturn] object or value to return in case 1
-@returns true | false | toReturn
-@example
-var msg = "hi";
-valid(msg); //returns true
-valid(msg, "String" ); //returns true
-valid(msg, "Number"); //returns false
-valid(msg, "String",false ); //returns false
-valid(msg123); //returns false
-**/
-var valid = function ( arg, type, toReturn ) {
- if ( type ) {
- if ( typeof arg === type ) {
- if ( toReturn )
- return toReturn;
- return true;
- }
- return false
- }
- if ( typeof arg !== "undefined" ) return true;
- return false;
-}
-
-
-/**
-Karma
-@class Represents a Karma (master) object.
-@param {String | Object } options Constructor arguments
-@param {String | Object } [options.container] Target DIV-class that will contain
- any canvas element created using Karma functions
-@param {String} [options.language]
- <ul>
- <li>if it's seted:
- Karma will assume that the according language file exists and Karma will try
- to load it.<li>
- <li>if it's not seted:
- Karma will localise the content according to the Browser language
- </li>
- </ul>
-@param {Array} [options.language.alternatives]
- Alternatives for localizing the content. The first has the priority.
-@param {Object} [options.i18n] Object that contains data for i18n.
-@param {Object | String} [options.i18n.root=self]
- Parent element where the i18n shortcut function will be attached.
-@param {String} [options.i18n.shortcut=_] Shortcut for calling i18n.
-@param {Number} [options.fps=24]
- Frames per second at which Karma will perform any refresh action.
-@version 0.3 alpha
-**/
-var Karma = function( options ) {
- var that = this;
- this.version = "0.3 alpha";
- //
- //relative path to the po, images, sounds, etc. from the html
- //defined here: http://wiki.sugarlabs.org/go/Karma/Bundle_layout
- //localized is recalculated inside localizeContent ( $ = language.lang )
- this.paths = {
- po: "po/",
- images: {
- localized: "assets/$/images/",
- generic: "assets/generic/images/"
- },
- sounds: {
- localized: "assets/$/sounds/",
- generic: "assets/generic/sounds/"
- },
- videos: {
- localized: "assets/$/videos/",
- generic: "assets/generic/videos/"
- }
- };
- this.supportedLangFileTypes = [
- { ext: "po", type: 'application/x-po' },
- { ext: "json", type: 'application/json'}
- ];
- //
- //PRIVATE STUFF start
- /**
- Gets the language acording to the browser language
- @returns {Object} <br>
- lang: countryCode and langCode (if specified)
- langCode*: language code represented as xx, example: en.<br>
- countryCode*: country code represented as YY, example: US.<br>
- *optional
- **/
- var getLanguage = function () {
- //console.log += navigator.language +"\n";
- var lang = navigator.language || navigator.browserLanguage; //mozilla/ie
- lang = lang.replace(/_/, '-').toLowerCase();
- if (lang.length > 3 ) {
- var country = lang.substring(3, 5);
- lang = lang.substring(0, 2);
- if ( country.match(/[^a-zA-Z]/) === null ) {
- country = country.toUpperCase();
- return {
- "lang": lang + "-" + country,
- "langCode": lang,
- "countryCode": country
- };
- }
- }
- return { "lang": lang };
- }
- /**
- Creates a new Gettext object and returns a shortcut function to localise
- defined strings.<br>We use karma.Gettext.js it's a modification of
- <a href=http://jsgettext.berlios.de/doc/html/Gettext.html>
- Gettext.js</a> from beril OS.
- @requires karma.Gettext.js
- @param {Object} options The arguments of the Gettext constructor
- @returns {Function} A generic function to call Gettext functions
- The generic function will call a Gettext function according to the number of arguments passed
- <table>
- <tr>
- <th>No. params</th>
- <th>Parameters</th>
- <th>Gettext function called</th>
- </tr>
- <tr>
- <td>1</td>
- <td>msgid</td>
- <td>gettext</td>
- <tr>
- <td>2</td>
- <td>context, msgid</td>
- <td>pgettext</td>
- </tr>
- <tr>
- <td>3</td>
- <td>number, singular, plural</td>
- <td>ngettext</td>
- </tr>
- <tr>
- <td>4</td>
- <td>number, context, singular, plural</td>
- <td>npgettext</td>
- </tr>
- </table>
- **/
- var i18nWrapper = function ( options ) {
- var gt = new Gettext( options );
- if ( typeof ( gt ) === 'undefined' )
- throw new Error("Unable to initialize Gettext object");
- return (function (str1, str2, str3, str4 ) {
- var n, context, singular, plural;
- if (typeof(str4) != 'undefined') {
- // number, context, singular, plural
- return gt.npgettext(str2, str3, str4, str1);
- } else if (typeof(str3) != 'undefined') {
- // number, singular, plural
- return gt.ngettext(str2, str3, str1);
- } else if (typeof(str2) != 'undefined') {
- // context, msgid
- return gt.pgettext(str1, str2);
- } else if (typeof(str1) != 'undefined') {
- // msgid
- return gt.gettext(str1);
- } else {
- // nothing passed in; return blank string.
- // XXX: we could error here, but that may cause more harm than good.
- return '';
- }
- });
- };
- /**
- Localises the inline html content and it creates the localised paths for
- "images", "sounds" and "videos".
- <b>Note:</b>Inline html localisation under development<br>
- @param {String} lang The language that will be used to localise the content
- @see <a href="http://wiki.sugarlabs.org/go/Karma/Bundle_layout">
- Karma Bundle_layout</a>
- **/
- var localiseContent = function ( lang ) {
-
- var toFix = ["images", "sounds", "videos"];
- for (var i = 0; i < toFix.length; i++) {
- that.paths[ toFix[ i ] ].localized = that.paths[
- toFix[ i ] ].localized.replace('\$', lang );
- }
- //dirty hack to support {lang}_AudioFile
- var prefix = lang.substring(0, 2)+"_";
- that.paths[ "sounds" ].localized+=prefix;
- that.paths[ "sounds" ].generic+=prefix;
- }
- /**
- It will attempt to load a language file, the posible languages are defined
- on language.alternatives.
- <p>The language file type could be: .po (Pootle) or .json (JSON). The
- precedence between file types is defined according to which is defined first
- in supportedLangFileTypes. By default Pootle files has precedence over JSON,
- files.</p>
- @see Karma
- @returns {String} The name of the language file loaded. Example: en-US.po
- **/
- var loadAlternatives = function ( ) {
- var loaded = undefined;
- var tryNext = true;
- //try to load the po or json language file if it exists.
- //the lang order is acording to options.language.alternatives
- //the type (po or json or ...) is defined in supportedLangFileTypes
- $.each( that.language.alternatives, function ( c, lang ) {
- for (var i=0; i < that.supportedLangFileTypes.length
- && tryNext === true; i++) {
- $.ajax({
- url: that.paths.po + lang + "." +
- that.supportedLangFileTypes[i].ext,
- cache: true,
- dataType: "text",
- async: false, //important: touch it at your own risk
- success: function( data, textStatus ){
-
- loaded = lang + "." +
- that.supportedLangFileTypes[i].ext;
- //i18n
- //we pass the data so we avoid re-loading the file
- //creates the shorcout
- that.i18n.root[ that.i18n.shortcut ] = i18nWrapper(
- {
- domain : lang,
- file : {
- type: that.supportedLangFileTypes[i].type,
- uri: this.url, data: data
- }
- }
- );
- localiseContent( lang );
- tryNext = false;
- },
- error: function ( XHR, textStatus, errorThrown ) {
- //the file doesn't exist or it wasn't possible to load it
- tryNext = true;
- }
- });
- return tryNext;
- }
- });
- return loaded;
- }
- //PRIVATE STUFF end
- // default options
- var defaultOptions ={
- container: "#karma-main",
- language: {
- lang: undefined,
- alternatives: ['en-US', 'en'],
- countryCode: undefined,
- langCode: undefined,
- },
- i18n: {
- root: self, // self is global
- shortcut: "_"
- },
- canvas: undefined,
- width: 100,
- height: 100,
- fps: 24
- };
- //
-
- this.library = { "images": [], "sounds": [], "videos":[], "shapes":[] }
-
- //initializes the defaultOptions argument
- //1 argument: string. assume it's the container
- if ( typeof options === "string" ) {
- options = { container: options };
- options.language = getLanguage() ;
- } else if (typeof options === "object" ){
- if ( typeof options.lang === "string" ) {
- //if language is string, assume it's the language.lang
- options.language = { lang: options.lang };
- }
- }
- $.extend( true, defaultOptions, options );
- //
- //copy defaultOptions to this, we use this.xyz instead this.defaultOptions.xyz
- for (var i in defaultOptions ) {
- this[ i ] = defaultOptions[i];
- }
-
- //initializes i18n
- //add the localized language to the language.alternatives
- if ( typeof this.language.countryCode !== "undefined" ) {
- this.language.alternatives.unshift(
- this.language.langCode,
- this.language.countryCode
- );
- }
- if ( typeof this.language.lang !== "undefined" ) {
- this.language.alternatives.unshift( this.language.lang );
- }
- //try to load the localized lang file (po or json or ...)
- this.language.fileLoaded = loadAlternatives( );
- //initializes the container
- if ( typeof this.container === "string" ) {
- this.container = $( this.container );
- }
- //FIXME
- gk = {
- "paths" : this.paths,
- "container" : this.container
- }
-}
-/**
-Creates a new canvas element.
-@param {Number} [width=100] canvas width
-@param {Number} [height=100] canvas height
-**/
-Karma.prototype.size = function ( width, height ) {
- this.canvas = document.createElement("canvas");
-
- this.canvas.width = this.width = ( width || this.width );
- this.canvas.height = this.height = ( height || this.height);
- if ( this.canvas.getContext ) {
- this.ctx = this.canvas.getContext("2d");
- this.container[ 0 ].appendChild( this.canvas );
- }else {
- throw new Error ("Your browser doesn't support canvas, \
- try the newest Firefox, Safari or Google Chrome");
- }
- //FIXME
- gk.canvas = this.canvas;
- gk.ctx = this.ctx;
- //
- this.canvas.addEventListener("contextmenu", function(ev){
- //alert("contextmenu");
- },false
- );
- this.canvas.addEventListener("click",
- handleEvents,
- false
- );
- return this;
-}
-/**
-Clears a rectangular area within the canvas
-@param {Number} [x=0] Start position of x
-@param {Number} [y=0] Start position of y
-@param {Number} [width=canvas width] Square width
-@param {Number} [height=canvas height] Square height
-**/
-Karma.prototype.clear = function ( x, y, width, height ) {
- this.ctx.clearRect(
- x || 0,
- y || 0,
- width || this.canvas.width,
- height || this.canvas.width
- );
-}
-//Karma packages
-/**
-@namespace Geometry functions.
-**/
-Karma.prototype.geometry = {
- /**
- Converts a value from degrees to radians.
- @param {Number} angle The angle in degrees
- @returns {Number} The The angle in radians
- **/
- radians : function( angle ){
- return ( angle / 180 ) * Math.PI;
- },
- /**
- Get the square of the Euclidian (ordinary) distance between 2 points.<br>
- <b>Warning:</b> It's slower than distance2 function.
- @param {Number} Point Point No. 0
- @param {Number} Point Point No. 1
- @returns {Number} The square of the Euclidian distance
- **/
- distance2 : function ( p0, p1 ) {
- return (p1.x - p0.x) * (p1.x - p0.x) + (p1.y - p1.y) * (p1.y - p1.y);
- },
- /**
- Get the Euclidian (ordinary) distance between 2 points.<br>
- <b>Warning:</b> It's slower than distance2 function
- @param {Number} Point Point No. 0
- @param {Number} Point Point No. 1
- @returns {Number} The Euclidian distance
- **/
- distance : function ( p0, p1 ) {
- return Math.sqrt( Karma.prototype.geometry.distance2( p0, p1 ) );
- }
-}
-/**
-@namespace Graphics functions.
-**/
-Karma.prototype.graphics = {
- /**
- Creates a new rectangle. It's a shortcut for calling 'new KRectangle(..)'.
- **/
- rectangle: function ( args ) { return new KRectangle( args ); },
- /**
- Creates a new circle. It's a shortcut for calling 'new KCircle(..)'.
- **/
- circle: function ( args ) { return new KCircle( args ); }
-}
-/**
-@namespace Math functions.
-**/
-Karma.prototype.math = {
- /**
- Generates a random bumber between lower bound and upper bound inclusive.
- @param {Number} lower The lower bound
- @param {Number} upper The upper bound
- @returns {Number} The generated number
- **/
- rand : function ( lower, upper ){
- return Math.round ( Math.random() * (upper - lower) + lower );
- }
-}
-//
-//everything inside karma.graphics is exported to karma.prototype
-$.extend( Karma.prototype, Karma.prototype.graphics);
-//
-/**
-Attaches an Object of Arrays for preloading. There are 3 valid categories (arrays):
-'images' for images, 'sounds' for sounds and 'videos' for video files.<br>
-Any object within any category must have an 'id' and 'file' attributes.
-Additional attributes will be used as arguments to the constructor of the
-corresponding object.<br>
-Any media file successfully loaded will be availabe through the 'library'.
-The init finishes when all the valid files have finished loading or have
-failed on the process.<br>
-Please note that the preloadinf will NOT start unless you call 'main' function.
-@param {Object} [toLoad] The Object that has the arrays for preloading.
-@param {Array} [toLoad.images] The images
-@param {Array} [toLoad.sounds] The sounds
-@param {Array} [toLoad.videos] The videos
-@returns {Object} this
-@see Karma#main
-@example
-var k = $.karma ({container: "#karma-main"/});
-k.size(1200, 800);
-k.init({
- images: [
- {id: "ball", file: "ball.png", localized : false },
- ],
- sounds: [
- {id: "correct", file: "correct.ogg" },
- ]
-});//1 image and 1 sound attached to load
-**/
-Karma.prototype.init = function( toLoad ) {
- this.pendingToLoad = toLoad;
- return this; //chaining :)
-}
-
-/**
-Main function. Any Karma function call should be inside the callback function.
-The callback function will be executed when the preloading finishes.
-@param {Function} cb The callback funtion
-@see Karma#init
-**/
-Karma.prototype.main = function ( cb ) {
- if ( valid( this.pendingToLoad ) ) {
- var that = this;
- var categories = ["images", "sounds", "videos" ];
- var counters = { "loaded":0, "error": 0 };
- var totalItems = 0;
- //get the total items
- for ( var i=0; i < categories.length; i++ ) {
- if ( valid ( this.pendingToLoad[ categories[ i ] ] ) ) {
- totalItems += this.pendingToLoad[ categories[ i ] ].length;
- }
- }
- /**
- callback to check if all the items were loaded or got an error when
- loading
- **/
- var checkAllLoaded = function ( ev ) {
- if ( ev.type === "load") counters.loaded += 1;
- else counters.error += 1;
- if ( counters.loaded + counters.error === totalItems ) {
- if ( cb ) cb();
- }
- }
-
- for ( var i=0; i < categories.length; i++ ) {
- var category = categories[ i ];
- if ( valid ( this.pendingToLoad[ category ] ) ) {
- //load all the category elements
- var type = category.substr( 0, category.length-1 )
- $.each (this.pendingToLoad[ category ], function( key, config ){
- var id = config.id;
- delete config.id;
- //register the elements into the library
- that.library[ category ][ id ] = Karma.prototype[ type ](
- config
- );
- that.library[ category ][ id ].media.addEventListener(
- "load",checkAllLoaded,false
- );
- that.library[ category ][ id ].media.addEventListener(
- "error",checkAllLoaded,false
- );
- });
- }
- }
- }else {
- if ( cb ) cb();
- }
-}
-/**A shortcut for calling 'KImage( )'
-@see KImage
-**/
-Karma.prototype.image = function ( args ) { return new KImage( args ) };
-/**A shortcut for calling 'KSound( )'
-@see KSound
-
-**/
-Karma.prototype.sound = function ( args ) { return new KSound( args ) };
-/**A shortcut for calling 'KVideo( )'
-@see KVideo
-
-**/
-Karma.prototype.video = function ( args ) { alert("Not implemented yet"); };
-/**A shortcut for calling 'KGroup( )'
-@see KGroup
-**/
-Karma.prototype.group = function ( args ) { return new KGroup( args ) };
-/**A shortcut for calling 'KButton( )'
-@see KButton
-**/
-Karma.prototype.button = function ( args ) { return new KButton( args ) };
-
-/**
-Mouse
-**/
-var mouse = {};
-/**
-Gets the 'x' and 'y' mouse coordinates relatives to the canvas
-@returns {Object} An Object with 'x' and 'y' attributes
-**/
-mouse.getRelativeCanvasPosition = function ( ev ) {
- if ( !ev ) return;
- var xy ={x:0, y:0};
- xy.x = ev.layerX;
- xy.y = ev.layerY;
- return xy;
-}
-
-//Events stuff
-var master ={}
-master.buttons =[];
-var handleEvents = function( ev ) {
- var xy = mouse.getRelativeCanvasPosition( ev );
- for (var i in master.buttons) {
- if (master.buttons[i].isPointInPath( xy.x, xy.y) ){
- master.buttons[i].onClick( ev );
- }
- }
- /*switch(ev.type){
- case "click": break;
- }*/
- /*var s="";
- for (var i in ev) {
- s+=i+"="+ev[i]+"\n";
- }
- alert(s);*/
-}
-
-/**
-Master Class creator. Supports multiple inheritance.
-It creates a new Object, the new Object will contain the methods that has each
-argument passed (Function or Object). When creating an instance of the new
-Object it will use the 'init' function as the initializer.<br>
-If there is more than one method with the same name, it'll be overwritten by the
-last one.<br>
-warning it's NOT optimal.
-@returns {Object} A new class
-**/
-var Class = function ( ) {
- var log="";
- var parents = [];
- for ( var i = 0; i < arguments.length; i++ ) {
- if ( arguments[i].prototype && arguments[i].init ) {
- parents.push( arguments[i].init );
- }
- }
- var o = function ( ) {
- //we inject all the init functions
- /*for ( var i = 0; i < this.__parents.length; i++ ) {
- this.__parents[ i ].apply ( this, arguments );
- }*/
- //call the real class init
- if ( this.init )
- this.init.apply( this, arguments );
- };
-
- o.prototype ={};
- var a;
- for ( var i =0; i < arguments.length; i++) {
- a = arguments[i];
- log += "**" + typeof a+"\n";
- //if ( a === "function") {
- if (a.prototype) {
- for ( var j in a.prototype ) {
- //log += j+" = "+a.prototype[j]+"\n";
- o[ j ] = o.prototype[ j ] = a.prototype [ j ];
- }
- }
- else {
- //if ( typeof a === "object") {
- for (var j in a) {
- //log += j+" = "+a[j]+"\n";
- o[ j ] = o.prototype[ j ] = a [ j ];
- }
- }
-
- }
- o.prototype.__parents = parents;
- //alert( log );
- return o; //(function ( ) { return new o( arguments );});
-}
-/**
-Karma basic Object
-@class The basic Karma object
-@param {Object} [options] Options
-@param {String} [options.localized = true] The object will be localized
-**/
-var KObject = Class(
- {
- init: function ( options ) {
- if ( valid(options.localized, "boolean" ) ) {
- this.localized = options.localized;
- }else {
- this.localized = true;
- }
- }
- }
-);
-/**
-Graphics basic Object
-@class General methods for any Graphic object
-@param {Object} [options] Options
-@param {Number} [options.x = 0] The 'x' position of the object
-@param {Number} [options.y = 0] The 'y' position of the object
-@param {Number} [options.z = 0] The 'z' index of the object
-@param {Number} [options.width = 0] The 'width' of the object
-@param {Number} [options.height = 0] The 'height' of the object
-@param {Boolean} [options.visible = true] Defines if the object will be visible
- when drawing
-@augments KObject
-**/
-var KGraphic = Class(
- KObject,
- {
- init: function ( options ) {
- if ( valid( options.localized ) )
- KObject.init.call(this, options.localized );
- var defaultOptions = {
- x : 0,
- y : 0,
- z : 0,
- width: 0,
- height: 0,
- visible : true
- }
- $.extend( this, defaultOptions, options);
- },
- /**
- @memberOf KGraphic
- Determines if the 'x' and 'y' coodinates are inside the object.
- @returns {Boolean} 'true' if the coordinates are inside or on the border
- of the object, otherwise 'false'
- **/
- isPointInPath : function( x, y ) {
- return (this.x <= x && (this.x + this.width) >= x &&
- this.y <= y && (this.y+this.width)>=y);
- },
- addEventListener : function (type, cb, bubble) {
- //FIXME
- }
- }
-);
-/**
-Supports multiple objects
-@class
-**/
-var KGroup = Class(
- KGraphic,
- {
- init: function ( options ) {
- this.childNodes = [];
- this.sorted = true;
- },
- /**
- @memberOf KGroup
- Adds each argument passed to the funtion to chilNodes.
- @param {Array:KGraphic} arguments The elements to add to childNodes
- @see KGroup#draw
- **/
- appendChild : function ( ) {
- if ( arguments.length > 0 ) {
- for ( var i = 0; i< arguments.length; i++) {
- this.childNodes.push ( arguments[ i ] );
- }
- this.sorted = false;
-
- }
- },
- removeChild: function () {
- //FIXME
- },
- /**
- @memberOf KGroup
- Draws all the elements in childNodes. The elements are drawed according
- to its 'z' (z-index) value.
- @see KGroup#appendChild
- **/
- draw : function() {
- if ( this.visible && this.childNodes.length > 0 ) {
- if ( !this.sorted ) {
- this.childNodes.sort ( function ( g1, g2 ) {
- return g1.z - g2.z;
- });
- this.sorted = true;
- }
- for (var i in this.childNodes) {
- this.childNodes[ i ].draw();
- }
- }
- },
- isPointInPath : function() {
- //TODO
- }
-
- }
-);
-
-var KMedia = Class(
-
- KObject,
- {
-
- init: function (file, type, options ) {
- if ( !file || !type ) {
- throw new Error ("file and type needed");
- }
- if ( valid ( options ) )
- KObject.init.call (this, options);
-
- this.file = file;
- this.type = type;
-
- this.status = undefined;
- this.path = undefined;
- this.media = undefined;
- switch ( this.type ) {
- case "image": this.media = new Image(); break;
- case "sound": this.media = new Audio(); break;
- default: throw new Error ("Media type not supported");
- }
- this.path = gk.paths[ this.type + "s" ][
- this.localized ? "localized": "generic"
- ];
- this.media.src = this.src = this.path + this.file;
-
- var that = this;
- this.media.addEventListener("load",
- function (e) { that.status = "loaded";}, false);
- this.media.addEventListener("error",
- function (e) { that.status = "error";}, false);
- this.media.addEventListener("abort",
- function (e) { that.status = "aborted";}, false);
- }
- }
-);
-
-var KImage = Class(
- KGraphic,
- KMedia,
- {
-
- init: function ( options ) {
- if ( valid ( options, "string" ) ) {
- options = { file:options };
- }
- if ( valid( options ) ) {
- KGraphic.init.call(this, options);
- KMedia.init.call(this, options.file, "image", options );
- }
- var defaultOptions = {
- //w : undefined,
- //h : undefined,
- }
- $.extend( this, defaultOptions, options);
- },
- draw : function( x, y ) {
- if ( this.visible && this.isReady() ) {
- this.x = x || this.x;
- this.y = y || this.y;
- gk.ctx.drawImage( this.media, this.x , this.y );
- }
- },
- isReady : function () {
- if ( !this.media.complete ) return false;
- if ( !this.media.naturalWidth || this.media.naturalWidth === 0)
- return false;
- return true;
- }
- }
-);
-/**@class_ */
-var KSound = Class(
- /**@lends_ KMedia*/
- KMedia,
- {
-
- init: function( options ) {
- if ( valid ( options, "string" ) ) {
- options = { file: options };
- }
- if ( valid( options ) ) {
- KMedia.init.call(this, options.file, "sound", options );
- //next line is important!
- this.media.load();
- }
- },
- isReady: function () {
- return this.readyState === 4;
- },
- play: function (){
- this.media.play();
- }
- }
-);
-/**@class_ */
-var KShape = Class(
- /**@lends_ KGraphic*/
- KGraphic,
- {
-
- init : function ( options ) {
- if ( valid( options ) ) {
- KGraphic.init.call(this, options );
- }
- var defaultOptions = {
- fill: true,
- stroke: true,
- fillStyle: '#000',
- strokeStyle: '#000',
- openPath : false
- }
- $.extend( this, defaultOptions, options);
- },
- draw : function () {
- //if ( this.visible ) {
- gk.ctx.fillStyle = this.fillStyle
- gk.ctx.strokeStyle= this.strokeStyle
- if ( this.fill )
- gk.ctx.fill();
- if ( this.stroke )
- gk.ctx.stroke();
- if ( !this.openPath )
- gk.ctx.closePath();
- gk.ctx.restore();
- //}
- }
- }
-);
-/**@class_ */
-var KRectangle = Class(
- /**@lends_ KShape*/
- KShape,
- {
-
- init : function ( options ) {
- //ADD multiple constructors support
- //x,y,w,h
- //w,y,w,h,options
- if ( valid( options ) ) {
- KShape.init.call(this, options );
- }
- },
- draw : function ( ) {
- if ( this.visible ) {
- gk.ctx.save();
- gk.ctx.beginPath();
- gk.ctx.rect( this.x, this.y, this.width, this.height);
- KShape.draw.call(this);
- }
- },
- clear : function ( ) {
- if ( this.visible ) {
-
- }
- }
- }
-
-);
-
-/**@class_ */
-var KButton = Class(
- /**@lends_ KGraphic*/
- KGraphic,
- {
-
- init : function ( options ) {
- //ADD multiple constructors support
- //x,y,w,h
- //w,y,w,h,options
- if ( valid( options ) ) {
- KGraphic.init.call(this, options );
- }
- this.id = options.id;
- master.buttons.push(this);
- },
- draw : function ( ) {},
- onClick : function() { } //callback
- }
-);
-//
-/**
-Karma function. It's a shotcut for calling 'new Karma(..)'
-@param [options] Options passed to the Karma constructor
-@returns {Object} a new Karma object
-**/
-$.karma = function (options) {
- var k =new Karma( options );
- //var x = new KMedia( "file1", "image", {localized: true} );
- //var x = new KImage({file: "ball.png", localized: false, z: 0});
-
- return k;
-}
-})(jQuery); \ No newline at end of file
diff --git a/js/jquery.karma-0.5.js b/js/jquery.karma.js
index 244b6c9..244b6c9 100644..100755
--- a/js/jquery.karma-0.5.js
+++ b/js/jquery.karma.js
diff --git a/jsdoc/files.html b/jsdoc/files.html
deleted file mode 100644
index a060477..0000000
--- a/jsdoc/files.html
+++ /dev/null
@@ -1,230 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8"" />
-
- <title>JsDoc Reference - File Index</title>
- <meta name="generator" content="JsDoc Toolkit" />
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
- <div id="header">
-</div>
-
- <div id="index">
- <div align="center"><a href="index.html">Class Index</a>
-| <a href="files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="symbols/Karma.html">Karma</a></li>
-
- <li><a href="symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="symbols/KGroup.html">KGroup</a></li>
-
- <li><a href="symbols/KObject.html">KObject</a></li>
-
-</ul>
-<hr />
- </div>
-
- <div id="content">
- <h1 class="classTitle">File Index</h1>
-
-
- <div>
- <h2><a href="symbols/src/js_jquery.karma-0.4.js.html">..\js\jquery.karma-0.4.js</a></h2>
-
- <dl>
-
-
-
-
- </dl>
- </div>
- <hr />
-
-
- </div>
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blankt">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:56:10 GMT-0500 (CDT)
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/jsdoc/index.html b/jsdoc/index.html
deleted file mode 100644
index 867469f..0000000
--- a/jsdoc/index.html
+++ /dev/null
@@ -1,266 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-
- <title>JsDoc Reference - Index</title>
- <meta name="generator" content="JsDoc Toolkit" />
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
- <div id="header">
-</div>
-
- <div id="index">
- <div align="center"><a href="index.html">Class Index</a>
-| <a href="files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="symbols/Karma.html">Karma</a></li>
-
- <li><a href="symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="symbols/KGroup.html">KGroup</a></li>
-
- <li><a href="symbols/KObject.html">KObject</a></li>
-
-</ul>
-<hr />
- </div>
-
- <div id="content">
- <h1 class="classTitle">Class Index</h1>
-
-
- <div>
- <h2><a href="symbols/_global_.html">_global_</a></h2>
-
- </div>
- <hr />
-
- <div>
- <h2><a href="symbols/Karma.html">Karma</a></h2>
- Represents a Karma (master) object.
- </div>
- <hr />
-
- <div>
- <h2><a href="symbols/Karma%23geometry.html">Karma#geometry</a></h2>
- Geometry functions.
- </div>
- <hr />
-
- <div>
- <h2><a href="symbols/Karma%23graphics.html">Karma#graphics</a></h2>
- Graphics functions.
- </div>
- <hr />
-
- <div>
- <h2><a href="symbols/Karma%23math.html">Karma#math</a></h2>
- Math functions.
- </div>
- <hr />
-
- <div>
- <h2><a href="symbols/KGraphic.html">KGraphic</a></h2>
- General methods for any Graphic object
- </div>
- <hr />
-
- <div>
- <h2><a href="symbols/KGroup.html">KGroup</a></h2>
-
- </div>
- <hr />
-
- <div>
- <h2><a href="symbols/KObject.html">KObject</a></h2>
- The basic Karma object
- </div>
- <hr />
-
-
- </div>
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blankt">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:56:10 GMT-0500 (CDT)
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/jsdoc/symbols/$.karma.html b/jsdoc/symbols/$.karma.html
deleted file mode 100644
index 8b97acf..0000000
--- a/jsdoc/symbols/$.karma.html
+++ /dev/null
@@ -1,317 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - $.karma</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><a href="../symbols/%24.karma.html">$.karma</a></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Class $.karma
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
- asdsad
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class $.karma.">
- <caption>Class Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/%24.karma.html#constructor">$.karma</a></b>(options)
- </div>
- <div class="description">asdsx</div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Class Detail
- </div>
-
- <div class="fixedFont">
- <b>$.karma</b>(options)
- </div>
-
- <div class="description">
- asdsx
-
- </div>
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <b>options</b>
-
- </dt>
- <dd></dd>
-
- </dl>
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 18:49:56 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/JSDOC.html b/jsdoc/symbols/JSDOC.html
deleted file mode 100644
index 35bb326..0000000
--- a/jsdoc/symbols/JSDOC.html
+++ /dev/null
@@ -1,412 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - JSDOC</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/JSDOC.html">JSDOC</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Namespace JSDOC
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
-
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/JSDOC.js.html">JSDOC.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class JSDOC.">
- <caption>Namespace Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/JSDOC.html#constructor">JSDOC</a></b>
- </div>
- <div class="description">This is the main container for the JSDOC application.</div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class JSDOC.">
- <caption>Field Summary</caption>
- <thead>
- <tr>
- <th scope="col">Field Attributes</th>
- <th scope="col">Field Name and Description</th>
- </tr>
- </thead>
- <tbody>
-
- <tr>
- <td class="attributes">&lt;static&gt; &nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont">
- JSDOC.<b><a href="../symbols/JSDOC.html#.VERSION">VERSION</a></b>
- </div>
- <div class="description">The current version string of this application.</div>
- </td>
- </tr>
-
- </tbody>
- </table>
-
-
-
-
-
-<!-- ============================== methods summary ======================== -->
-
-
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class JSDOC.">
- <caption>Method Summary</caption>
- <thead>
- <tr>
- <th scope="col">Method Attributes</th>
- <th scope="col">Method Name and Description</th>
- </tr>
- </thead>
- <tbody>
-
- <tr>
- <td class="attributes">&lt;static&gt; &nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont">JSDOC.<b><a href="../symbols/JSDOC.html#.usage">usage</a></b>()
- </div>
- <div class="description">Print out usage information and quit.</div>
- </td>
- </tr>
-
- </tbody>
- </table>
-
-
-
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Namespace Detail
- </div>
-
- <div class="fixedFont">
- <b>JSDOC</b>
- </div>
-
- <div class="description">
- This is the main container for the JSDOC application.
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
- <div class="sectionTitle">
- Field Detail
- </div>
-
- <a name=".VERSION"> </a>
- <div class="fixedFont">&lt;static&gt;
-
-
- <span class="light">JSDOC.</span><b>VERSION</b>
-
- </div>
- <div class="description">
- The current version string of this application.
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ============================== method details ========================= -->
-
- <div class="sectionTitle">
- Method Detail
- </div>
-
- <a name=".usage"> </a>
- <div class="fixedFont">&lt;static&gt;
-
-
- <span class="light">JSDOC.</span><b>usage</b>()
-
- </div>
- <div class="description">
- Print out usage information and quit.
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 24 2009 16:38:17 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/KButton.html b/jsdoc/symbols/KButton.html
deleted file mode 100644
index 8525ef8..0000000
--- a/jsdoc/symbols/KButton.html
+++ /dev/null
@@ -1,330 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - KButton</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KButton.html">KButton</a></li>
-
- <li><a href="../symbols/KRectangle.html">KRectangle</a></li>
-
- <li><a href="../symbols/KShape.html">KShape</a></li>
-
- <li><a href="../symbols/KSound.html">KSound</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Class KButton
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
-
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class KButton.">
- <caption>Class Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/KButton.html#constructor">KButton</a></b>()
- </div>
- <div class="description"></div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Class Detail
- </div>
-
- <div class="fixedFont">
- <b>KButton</b>()
- </div>
-
- <div class="description">
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:05:12 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/KGraphic.html b/jsdoc/symbols/KGraphic.html
deleted file mode 100644
index becf747..0000000
--- a/jsdoc/symbols/KGraphic.html
+++ /dev/null
@@ -1,362 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - KGraphic</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGroup.html">KGroup</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Class KGraphic
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
- <br />Extends
- <a href="../symbols/KObject.html">KObject</a>.<br />
-
-
- General methods for any Graphic object
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class KGraphic.">
- <caption>Class Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/KGraphic.html#constructor">KGraphic</a></b>(options)
- </div>
- <div class="description">Graphics basic Object</div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Class Detail
- </div>
-
- <div class="fixedFont">
- <b>KGraphic</b>(options)
- </div>
-
- <div class="description">
- Graphics basic Object
-
- </div>
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <span class="light fixedFont">{Object}</span> <b>options</b>
- <i>Optional</i>
- </dt>
- <dd>Options</dd>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>options.x</b>
- <i>Optional, Default: 0</i>
- </dt>
- <dd>The 'x' position of the object</dd>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>options.y</b>
- <i>Optional, Default: 0</i>
- </dt>
- <dd>The 'y' position of the object</dd>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>options.z</b>
- <i>Optional, Default: 0</i>
- </dt>
- <dd>The 'z' index of the object</dd>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>options.width</b>
- <i>Optional, Default: 0</i>
- </dt>
- <dd>The 'width' of the object</dd>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>options.height</b>
- <i>Optional, Default: 0</i>
- </dt>
- <dd>The 'height' of the object</dd>
-
- <dt>
- <span class="light fixedFont">{Boolean}</span> <b>options.visible</b>
- <i>Optional, Default: true</i>
- </dt>
- <dd>Defines if the object will be visible
- when drawing</dd>
-
- </dl>
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:56:10 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/KGroup.html b/jsdoc/symbols/KGroup.html
deleted file mode 100644
index 803b77c..0000000
--- a/jsdoc/symbols/KGroup.html
+++ /dev/null
@@ -1,312 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - KGroup</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGroup.html">KGroup</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Class KGroup
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
-
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class KGroup.">
- <caption>Class Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/KGroup.html#constructor">KGroup</a></b>()
- </div>
- <div class="description">Supports multiple objects</div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Class Detail
- </div>
-
- <div class="fixedFont">
- <b>KGroup</b>()
- </div>
-
- <div class="description">
- Supports multiple objects
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:56:10 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/KMedia.html b/jsdoc/symbols/KMedia.html
deleted file mode 100644
index 65483fb..0000000
--- a/jsdoc/symbols/KMedia.html
+++ /dev/null
@@ -1,432 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - KMedia</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KMedia.html">KMedia</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
- <li><a href="../symbols/KObject-KButton.html">KObject-KButton</a></li>
-
- <li><a href="../symbols/KObject-KRectangle.html">KObject-KRectangle</a></li>
-
- <li><a href="../symbols/KObject-KShape.html">KObject-KShape</a></li>
-
- <li><a href="../symbols/KObject-KSound.html">KObject-KSound</a></li>
-
- <li><a href="../symbols/KShape.html">KShape</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Class KMedia
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
-
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class KMedia.">
- <caption>Class Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/KMedia.html#constructor">KMedia</a></b>(options)
- </div>
- <div class="description"></div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class KMedia.">
- <caption>Method Summary</caption>
- <thead>
- <tr>
- <th scope="col">Method Attributes</th>
- <th scope="col">Method Name and Description</th>
- </tr>
- </thead>
- <tbody>
-
- <tr>
- <td class="attributes">&lt;static&gt; &nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont">KMedia.<b><a href="../symbols/KMedia.html#.isReady">isReady</a></b>()
- </div>
- <div class="description"></div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&lt;static&gt; &nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont">KMedia.<b><a href="../symbols/KMedia.html#.play">play</a></b>()
- </div>
- <div class="description"></div>
- </td>
- </tr>
-
- </tbody>
- </table>
-
-
-
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Class Detail
- </div>
-
- <div class="fixedFont">
- <b>KMedia</b>(options)
- </div>
-
- <div class="description">
-
-
- </div>
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <b>options</b>
-
- </dt>
- <dd></dd>
-
- </dl>
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
- <div class="sectionTitle">
- Method Detail
- </div>
-
- <a name=".isReady"> </a>
- <div class="fixedFont">&lt;static&gt;
-
-
- <span class="light">KMedia.</span><b>isReady</b>()
-
- </div>
- <div class="description">
-
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
- <hr />
-
- <a name=".play"> </a>
- <div class="fixedFont">&lt;static&gt;
-
-
- <span class="light">KMedia.</span><b>play</b>()
-
- </div>
- <div class="description">
-
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:04:12 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/KObject-KButton.html b/jsdoc/symbols/KObject-KButton.html
deleted file mode 100644
index 6edf89c..0000000
--- a/jsdoc/symbols/KObject-KButton.html
+++ /dev/null
@@ -1,330 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - KObject-KButton</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KMedia.html">KMedia</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
- <li><a href="../symbols/KObject-KButton.html">KObject-KButton</a></li>
-
- <li><a href="../symbols/KObject-KRectangle.html">KObject-KRectangle</a></li>
-
- <li><a href="../symbols/KObject-KShape.html">KObject-KShape</a></li>
-
- <li><a href="../symbols/KObject-KSound.html">KObject-KSound</a></li>
-
- <li><a href="../symbols/KShape.html">KShape</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Class KObject-KButton
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
-
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class KObject-KButton.">
- <caption>Class Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&lt;inner&gt; &nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/KObject-KButton.html#constructor">KObject-KButton</a></b>()
- </div>
- <div class="description"></div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Class Detail
- </div>
-
- <div class="fixedFont">&lt;inner&gt;
- <b>KObject-KButton</b>()
- </div>
-
- <div class="description">
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:04:12 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/KObject-KRectangle.html b/jsdoc/symbols/KObject-KRectangle.html
deleted file mode 100644
index 270f7f0..0000000
--- a/jsdoc/symbols/KObject-KRectangle.html
+++ /dev/null
@@ -1,330 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - KObject-KRectangle</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KMedia.html">KMedia</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
- <li><a href="../symbols/KObject-KButton.html">KObject-KButton</a></li>
-
- <li><a href="../symbols/KObject-KRectangle.html">KObject-KRectangle</a></li>
-
- <li><a href="../symbols/KObject-KShape.html">KObject-KShape</a></li>
-
- <li><a href="../symbols/KObject-KSound.html">KObject-KSound</a></li>
-
- <li><a href="../symbols/KShape.html">KShape</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Class KObject-KRectangle
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
-
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class KObject-KRectangle.">
- <caption>Class Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&lt;inner&gt; &nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/KObject-KRectangle.html#constructor">KObject-KRectangle</a></b>()
- </div>
- <div class="description"></div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Class Detail
- </div>
-
- <div class="fixedFont">&lt;inner&gt;
- <b>KObject-KRectangle</b>()
- </div>
-
- <div class="description">
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:04:12 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/KObject-KShape.html b/jsdoc/symbols/KObject-KShape.html
deleted file mode 100644
index a5cb395..0000000
--- a/jsdoc/symbols/KObject-KShape.html
+++ /dev/null
@@ -1,330 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - KObject-KShape</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KMedia.html">KMedia</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
- <li><a href="../symbols/KObject-KButton.html">KObject-KButton</a></li>
-
- <li><a href="../symbols/KObject-KRectangle.html">KObject-KRectangle</a></li>
-
- <li><a href="../symbols/KObject-KShape.html">KObject-KShape</a></li>
-
- <li><a href="../symbols/KObject-KSound.html">KObject-KSound</a></li>
-
- <li><a href="../symbols/KShape.html">KShape</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Class KObject-KShape
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
-
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class KObject-KShape.">
- <caption>Class Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&lt;inner&gt; &nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/KObject-KShape.html#constructor">KObject-KShape</a></b>()
- </div>
- <div class="description"></div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Class Detail
- </div>
-
- <div class="fixedFont">&lt;inner&gt;
- <b>KObject-KShape</b>()
- </div>
-
- <div class="description">
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:04:12 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/KObject-KSound.html b/jsdoc/symbols/KObject-KSound.html
deleted file mode 100644
index d9feb72..0000000
--- a/jsdoc/symbols/KObject-KSound.html
+++ /dev/null
@@ -1,330 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - KObject-KSound</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KMedia.html">KMedia</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
- <li><a href="../symbols/KObject-KButton.html">KObject-KButton</a></li>
-
- <li><a href="../symbols/KObject-KRectangle.html">KObject-KRectangle</a></li>
-
- <li><a href="../symbols/KObject-KShape.html">KObject-KShape</a></li>
-
- <li><a href="../symbols/KObject-KSound.html">KObject-KSound</a></li>
-
- <li><a href="../symbols/KShape.html">KShape</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Class KObject-KSound
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
-
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class KObject-KSound.">
- <caption>Class Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&lt;inner&gt; &nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/KObject-KSound.html#constructor">KObject-KSound</a></b>()
- </div>
- <div class="description"></div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Class Detail
- </div>
-
- <div class="fixedFont">&lt;inner&gt;
- <b>KObject-KSound</b>()
- </div>
-
- <div class="description">
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:04:12 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/KObject.html b/jsdoc/symbols/KObject.html
deleted file mode 100644
index 482fc31..0000000
--- a/jsdoc/symbols/KObject.html
+++ /dev/null
@@ -1,329 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - KObject</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGroup.html">KGroup</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Class KObject
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
- The basic Karma object
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class KObject.">
- <caption>Class Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/KObject.html#constructor">KObject</a></b>(options)
- </div>
- <div class="description">Karma basic Object</div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Class Detail
- </div>
-
- <div class="fixedFont">
- <b>KObject</b>(options)
- </div>
-
- <div class="description">
- Karma basic Object
-
- </div>
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <span class="light fixedFont">{Object}</span> <b>options</b>
- <i>Optional</i>
- </dt>
- <dd>Options</dd>
-
- <dt>
- <span class="light fixedFont">{String}</span> <b>options.localized</b>
- <i>Optional, Default: true</i>
- </dt>
- <dd>The object will be localized</dd>
-
- </dl>
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:56:10 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/KRectangle.html b/jsdoc/symbols/KRectangle.html
deleted file mode 100644
index 600a65d..0000000
--- a/jsdoc/symbols/KRectangle.html
+++ /dev/null
@@ -1,330 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - KRectangle</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KButton.html">KButton</a></li>
-
- <li><a href="../symbols/KRectangle.html">KRectangle</a></li>
-
- <li><a href="../symbols/KShape.html">KShape</a></li>
-
- <li><a href="../symbols/KSound.html">KSound</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Class KRectangle
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
-
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class KRectangle.">
- <caption>Class Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/KRectangle.html#constructor">KRectangle</a></b>()
- </div>
- <div class="description"></div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Class Detail
- </div>
-
- <div class="fixedFont">
- <b>KRectangle</b>()
- </div>
-
- <div class="description">
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:05:12 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/KShape.html b/jsdoc/symbols/KShape.html
deleted file mode 100644
index cbafccf..0000000
--- a/jsdoc/symbols/KShape.html
+++ /dev/null
@@ -1,330 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - KShape</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KButton.html">KButton</a></li>
-
- <li><a href="../symbols/KRectangle.html">KRectangle</a></li>
-
- <li><a href="../symbols/KShape.html">KShape</a></li>
-
- <li><a href="../symbols/KSound.html">KSound</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Class KShape
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
-
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class KShape.">
- <caption>Class Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/KShape.html#constructor">KShape</a></b>()
- </div>
- <div class="description"></div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Class Detail
- </div>
-
- <div class="fixedFont">
- <b>KShape</b>()
- </div>
-
- <div class="description">
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:05:12 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/KSound.html b/jsdoc/symbols/KSound.html
deleted file mode 100644
index 40e6878..0000000
--- a/jsdoc/symbols/KSound.html
+++ /dev/null
@@ -1,330 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - KSound</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KButton.html">KButton</a></li>
-
- <li><a href="../symbols/KRectangle.html">KRectangle</a></li>
-
- <li><a href="../symbols/KShape.html">KShape</a></li>
-
- <li><a href="../symbols/KSound.html">KSound</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Class KSound
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
-
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class KSound.">
- <caption>Class Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/KSound.html#constructor">KSound</a></b>()
- </div>
- <div class="description"></div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Class Detail
- </div>
-
- <div class="fixedFont">
- <b>KSound</b>()
- </div>
-
- <div class="description">
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:05:12 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/Karma#geometry.html b/jsdoc/symbols/Karma#geometry.html
deleted file mode 100644
index c51d159..0000000
--- a/jsdoc/symbols/Karma#geometry.html
+++ /dev/null
@@ -1,505 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - Karma#geometry</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGroup.html">KGroup</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Namespace Karma#geometry
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
- Geometry functions.
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class Karma#geometry.">
- <caption>Namespace Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/Karma%23geometry.html#constructor">Karma#geometry</a></b>
- </div>
- <div class="description"></div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class Karma#geometry.">
- <caption>Method Summary</caption>
- <thead>
- <tr>
- <th scope="col">Method Attributes</th>
- <th scope="col">Method Name and Description</th>
- </tr>
- </thead>
- <tbody>
-
- <tr>
- <td class="attributes">&lt;static&gt; &nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont">Karma#geometry.<b><a href="../symbols/Karma%23geometry.html#.distance">distance</a></b>(Point, Point)
- </div>
- <div class="description">Get the Euclidian (ordinary) distance between 2 points.</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&lt;static&gt; &nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont">Karma#geometry.<b><a href="../symbols/Karma%23geometry.html#.distance2">distance2</a></b>(Point, Point)
- </div>
- <div class="description">Get the square of the Euclidian (ordinary) distance between 2 points.</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&lt;static&gt; &nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont">Karma#geometry.<b><a href="../symbols/Karma%23geometry.html#.radians">radians</a></b>(angle)
- </div>
- <div class="description">Converts a value from degrees to radians.</div>
- </td>
- </tr>
-
- </tbody>
- </table>
-
-
-
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Namespace Detail
- </div>
-
- <div class="fixedFont">
- <b>Karma#geometry</b>
- </div>
-
- <div class="description">
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
- <div class="sectionTitle">
- Method Detail
- </div>
-
- <a name=".distance"> </a>
- <div class="fixedFont">&lt;static&gt;
-
- <span class="light">{Number}</span>
- <span class="light">Karma#geometry.</span><b>distance</b>(Point, Point)
-
- </div>
- <div class="description">
- Get the Euclidian (ordinary) distance between 2 points.<br>
- <b>Warning:</b> It's slower than distance2 function
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>Point</b>
-
- </dt>
- <dd>Point No. 0</dd>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>Point</b>
-
- </dt>
- <dd>Point No. 1</dd>
-
- </dl>
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Returns:</dt>
-
- <dd><span class="light fixedFont">{Number}</span> The Euclidian distance</dd>
-
- </dl>
-
-
-
-
- <hr />
-
- <a name=".distance2"> </a>
- <div class="fixedFont">&lt;static&gt;
-
- <span class="light">{Number}</span>
- <span class="light">Karma#geometry.</span><b>distance2</b>(Point, Point)
-
- </div>
- <div class="description">
- Get the square of the Euclidian (ordinary) distance between 2 points.<br>
- <b>Warning:</b> It's slower than distance2 function.
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>Point</b>
-
- </dt>
- <dd>Point No. 0</dd>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>Point</b>
-
- </dt>
- <dd>Point No. 1</dd>
-
- </dl>
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Returns:</dt>
-
- <dd><span class="light fixedFont">{Number}</span> The square of the Euclidian distance</dd>
-
- </dl>
-
-
-
-
- <hr />
-
- <a name=".radians"> </a>
- <div class="fixedFont">&lt;static&gt;
-
- <span class="light">{Number}</span>
- <span class="light">Karma#geometry.</span><b>radians</b>(angle)
-
- </div>
- <div class="description">
- Converts a value from degrees to radians.
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>angle</b>
-
- </dt>
- <dd>The angle in degrees</dd>
-
- </dl>
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Returns:</dt>
-
- <dd><span class="light fixedFont">{Number}</span> The The angle in radians</dd>
-
- </dl>
-
-
-
-
-
-
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:56:09 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/Karma#graphics.html b/jsdoc/symbols/Karma#graphics.html
deleted file mode 100644
index dd26739..0000000
--- a/jsdoc/symbols/Karma#graphics.html
+++ /dev/null
@@ -1,425 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - Karma#graphics</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGroup.html">KGroup</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Namespace Karma#graphics
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
- Graphics functions.
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class Karma#graphics.">
- <caption>Namespace Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/Karma%23graphics.html#constructor">Karma#graphics</a></b>
- </div>
- <div class="description"></div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class Karma#graphics.">
- <caption>Method Summary</caption>
- <thead>
- <tr>
- <th scope="col">Method Attributes</th>
- <th scope="col">Method Name and Description</th>
- </tr>
- </thead>
- <tbody>
-
- <tr>
- <td class="attributes">&lt;static&gt; &nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont">Karma#graphics.<b><a href="../symbols/Karma%23graphics.html#.circle">circle</a></b>(args)
- </div>
- <div class="description">Creates a new circle.</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&lt;static&gt; &nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont">Karma#graphics.<b><a href="../symbols/Karma%23graphics.html#.rectangle">rectangle</a></b>(args)
- </div>
- <div class="description">Creates a new rectangle.</div>
- </td>
- </tr>
-
- </tbody>
- </table>
-
-
-
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Namespace Detail
- </div>
-
- <div class="fixedFont">
- <b>Karma#graphics</b>
- </div>
-
- <div class="description">
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
- <div class="sectionTitle">
- Method Detail
- </div>
-
- <a name=".circle"> </a>
- <div class="fixedFont">&lt;static&gt;
-
-
- <span class="light">Karma#graphics.</span><b>circle</b>(args)
-
- </div>
- <div class="description">
- Creates a new circle. It's a shortcut for calling 'new KCircle(..)'.
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <b>args</b>
-
- </dt>
- <dd></dd>
-
- </dl>
-
-
-
-
-
-
-
-
- <hr />
-
- <a name=".rectangle"> </a>
- <div class="fixedFont">&lt;static&gt;
-
-
- <span class="light">Karma#graphics.</span><b>rectangle</b>(args)
-
- </div>
- <div class="description">
- Creates a new rectangle. It's a shortcut for calling 'new KRectangle(..)'.
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <b>args</b>
-
- </dt>
- <dd></dd>
-
- </dl>
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:56:09 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/Karma#math.html b/jsdoc/symbols/Karma#math.html
deleted file mode 100644
index cedffb5..0000000
--- a/jsdoc/symbols/Karma#math.html
+++ /dev/null
@@ -1,393 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - Karma#math</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGroup.html">KGroup</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Namespace Karma#math
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
- Math functions.
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class Karma#math.">
- <caption>Namespace Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/Karma%23math.html#constructor">Karma#math</a></b>
- </div>
- <div class="description"></div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class Karma#math.">
- <caption>Method Summary</caption>
- <thead>
- <tr>
- <th scope="col">Method Attributes</th>
- <th scope="col">Method Name and Description</th>
- </tr>
- </thead>
- <tbody>
-
- <tr>
- <td class="attributes">&lt;static&gt; &nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont">Karma#math.<b><a href="../symbols/Karma%23math.html#.rand">rand</a></b>(lower, upper)
- </div>
- <div class="description">Generates a random bumber between lower bound and upper bound inclusive.</div>
- </td>
- </tr>
-
- </tbody>
- </table>
-
-
-
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Namespace Detail
- </div>
-
- <div class="fixedFont">
- <b>Karma#math</b>
- </div>
-
- <div class="description">
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
- <div class="sectionTitle">
- Method Detail
- </div>
-
- <a name=".rand"> </a>
- <div class="fixedFont">&lt;static&gt;
-
- <span class="light">{Number}</span>
- <span class="light">Karma#math.</span><b>rand</b>(lower, upper)
-
- </div>
- <div class="description">
- Generates a random bumber between lower bound and upper bound inclusive.
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>lower</b>
-
- </dt>
- <dd>The lower bound</dd>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>upper</b>
-
- </dt>
- <dd>The upper bound</dd>
-
- </dl>
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Returns:</dt>
-
- <dd><span class="light fixedFont">{Number}</span> The generated number</dd>
-
- </dl>
-
-
-
-
-
-
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:56:10 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/Karma.html b/jsdoc/symbols/Karma.html
deleted file mode 100644
index ab80ea6..0000000
--- a/jsdoc/symbols/Karma.html
+++ /dev/null
@@ -1,1171 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - Karma</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGroup.html">KGroup</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Class Karma
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
- Represents a Karma (master) object.
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class Karma.">
- <caption>Class Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/Karma.html#constructor">Karma</a></b>(options)
- </div>
- <div class="description">Karma</div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-
-
-
-
-
-<!-- ============================== methods summary ======================== -->
-
-
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class Karma.">
- <caption>Method Summary</caption>
- <thead>
- <tr>
- <th scope="col">Method Attributes</th>
- <th scope="col">Method Name and Description</th>
- </tr>
- </thead>
- <tbody>
-
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/Karma.html#button">button</a></b>(args)
- </div>
- <div class="description">A shortcut for calling 'KButton( )'</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/Karma.html#clear">clear</a></b>(x, y, width, height)
- </div>
- <div class="description">Clears a rectangular area within the canvas</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&lt;inner&gt; &nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/Karma.html#-getLanguage">getLanguage</a></b>()
- </div>
- <div class="description">Gets the language acording to the browser language</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/Karma.html#group">group</a></b>(args)
- </div>
- <div class="description">A shortcut for calling 'KGroup( )'</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&lt;inner&gt; &nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/Karma.html#-i18nWrapper">i18nWrapper</a></b>(options)
- </div>
- <div class="description">Creates a new Gettext object and returns a shortcut function to localise
- defined strings.</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/Karma.html#image">image</a></b>(args)
- </div>
- <div class="description">A shortcut for calling 'KImage( )'</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/Karma.html#init">init</a></b>(toLoad)
- </div>
- <div class="description">Attaches an Object of Arrays for preloading.</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&lt;inner&gt; &nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/Karma.html#-loadAlternatives">loadAlternatives</a></b>()
- </div>
- <div class="description">It will attempt to load a language file, the posible languages are defined
- on language.alternatives.</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&lt;inner&gt; &nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/Karma.html#-localiseContent">localiseContent</a></b>(lang)
- </div>
- <div class="description">Localises the inline html content and it creates the localised paths for
- "images", "sounds" and "videos".</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/Karma.html#main">main</a></b>(cb)
- </div>
- <div class="description">Main function.</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/Karma.html#size">size</a></b>(width, height)
- </div>
- <div class="description">Creates a new canvas element.</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/Karma.html#sound">sound</a></b>(args)
- </div>
- <div class="description">A shortcut for calling 'KSound( )'</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/Karma.html#video">video</a></b>(args)
- </div>
- <div class="description">A shortcut for calling 'KVideo( )'</div>
- </td>
- </tr>
-
- </tbody>
- </table>
-
-
-
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Class Detail
- </div>
-
- <div class="fixedFont">
- <b>Karma</b>(options)
- </div>
-
- <div class="description">
- Karma
-
- </div>
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <span class="light fixedFont">{String | Object}</span> <b>options</b>
-
- </dt>
- <dd>Constructor arguments</dd>
-
- <dt>
- <span class="light fixedFont">{String | Object}</span> <b>options.container</b>
- <i>Optional</i>
- </dt>
- <dd>Target DIV-class that will contain
- any canvas element created using Karma functions</dd>
-
- <dt>
- <span class="light fixedFont">{String}</span> <b>options.language</b>
- <i>Optional</i>
- </dt>
- <dd><ul>
- <li>if it's seted:
- Karma will assume that the according language file exists and Karma will try
- to load it.<li>
- <li>if it's not seted:
- Karma will localise the content according to the Browser language
- </li>
- </ul></dd>
-
- <dt>
- <span class="light fixedFont">{Array}</span> <b>options.language.alternatives</b>
- <i>Optional</i>
- </dt>
- <dd>Alternatives for localizing the content. The first has the priority.</dd>
-
- <dt>
- <span class="light fixedFont">{Object}</span> <b>options.i18n</b>
- <i>Optional</i>
- </dt>
- <dd>Object that contains data for i18n.</dd>
-
- <dt>
- <span class="light fixedFont">{Object | String}</span> <b>options.i18n.root</b>
- <i>Optional, Default: self</i>
- </dt>
- <dd>Parent element where the i18n shortcut function will be attached.</dd>
-
- <dt>
- <span class="light fixedFont">{String}</span> <b>options.i18n.shortcut</b>
- <i>Optional, Default: _</i>
- </dt>
- <dd>Shortcut for calling i18n.</dd>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>options.fps</b>
- <i>Optional, Default: 24</i>
- </dt>
- <dd>Frames per second at which Karma will perform any refresh action.</dd>
-
- </dl>
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
- <div class="sectionTitle">
- Method Detail
- </div>
-
- <a name="button"> </a>
- <div class="fixedFont">
-
-
- <b>button</b>(args)
-
- </div>
- <div class="description">
- A shortcut for calling 'KButton( )'
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <b>args</b>
-
- </dt>
- <dd></dd>
-
- </dl>
-
-
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">See:</dt>
-
- <dd>KButton#</dd>
-
- </dl>
-
-
- <hr />
-
- <a name="clear"> </a>
- <div class="fixedFont">
-
-
- <b>clear</b>(x, y, width, height)
-
- </div>
- <div class="description">
- Clears a rectangular area within the canvas
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>x</b>
- <i>Optional, Default: 0</i>
- </dt>
- <dd>Start position of x</dd>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>y</b>
- <i>Optional, Default: 0</i>
- </dt>
- <dd>Start position of y</dd>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>width</b>
- <i>Optional, Default: canvas width</i>
- </dt>
- <dd>Square width</dd>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>height</b>
- <i>Optional, Default: canvas height</i>
- </dt>
- <dd>Square height</dd>
-
- </dl>
-
-
-
-
-
-
-
-
- <hr />
-
- <a name="-getLanguage"> </a>
- <div class="fixedFont">&lt;inner&gt;
-
- <span class="light">{Object}</span>
- <b>getLanguage</b>()
-
- </div>
- <div class="description">
- Gets the language acording to the browser language
-
-
- </div>
-
-
-
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Returns:</dt>
-
- <dd><span class="light fixedFont">{Object}</span> <br>
- lang: countryCode and langCode (if specified)
- langCode*: language code represented as xx, example: en.<br>
- countryCode*: country code represented as YY, example: US.<br>
-optional</dd>
-
- </dl>
-
-
-
-
- <hr />
-
- <a name="group"> </a>
- <div class="fixedFont">
-
-
- <b>group</b>(args)
-
- </div>
- <div class="description">
- A shortcut for calling 'KGroup( )'
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <b>args</b>
-
- </dt>
- <dd></dd>
-
- </dl>
-
-
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">See:</dt>
-
- <dd><a href="../symbols/KGroup.html">KGroup</a></dd>
-
- </dl>
-
-
- <hr />
-
- <a name="-i18nWrapper"> </a>
- <div class="fixedFont">&lt;inner&gt;
-
- <span class="light">{Function}</span>
- <b>i18nWrapper</b>(options)
-
- </div>
- <div class="description">
- Creates a new Gettext object and returns a shortcut function to localise
- defined strings.<br>We use karma.Gettext.js it's a modification of
- <a href=http://jsgettext.berlios.de/doc/html/Gettext.html>
- Gettext.js</a> from beril OS.
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <span class="light fixedFont">{Object}</span> <b>options</b>
-
- </dt>
- <dd>The arguments of the Gettext constructor</dd>
-
- </dl>
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Returns:</dt>
-
- <dd><span class="light fixedFont">{Function}</span> A generic function to call Gettext functions
- The generic function will call a Gettext function according to the number of arguments passed
- <table>
- <tr>
- <th>No. params</th>
- <th>Parameters</th>
- <th>Gettext function called</th>
- </tr>
- <tr>
- <td>1</td>
- <td>msgid</td>
- <td>gettext</td>
- <tr>
- <td>2</td>
- <td>context, msgid</td>
- <td>pgettext</td>
- </tr>
- <tr>
- <td>3</td>
- <td>number, singular, plural</td>
- <td>ngettext</td>
- </tr>
- <tr>
- <td>4</td>
- <td>number, context, singular, plural</td>
- <td>npgettext</td>
- </tr>
- </table></dd>
-
- </dl>
-
-
- <dl class="detailList">
- <dt class="heading">Requires:</dt>
-
- <dd>karma.Gettext.js</dd>
-
- </dl>
-
-
-
- <hr />
-
- <a name="image"> </a>
- <div class="fixedFont">
-
-
- <b>image</b>(args)
-
- </div>
- <div class="description">
- A shortcut for calling 'KImage( )'
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <b>args</b>
-
- </dt>
- <dd></dd>
-
- </dl>
-
-
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">See:</dt>
-
- <dd>KImage</dd>
-
- </dl>
-
-
- <hr />
-
- <a name="init"> </a>
- <div class="fixedFont">
-
- <span class="light">{Object}</span>
- <b>init</b>(toLoad)
-
- </div>
- <div class="description">
- Attaches an Object of Arrays for preloading. There are 3 valid categories (arrays):
-'images' for images, 'sounds' for sounds and 'videos' for video files.<br>
-Any object within any category must have an 'id' and 'file' attributes.
-Additional attributes will be used as arguments to the constructor of the
-corresponding object.<br>
-Any media file successfully loaded will be availabe through the 'library'.
-The init finishes when all the valid files have finished loading or have
-failed on the process.<br>
-Please note that the preloadinf will NOT start unless you call 'main' function.
-
-
- </div>
-
-
-
- <pre class="code">var k = $.karma ({container: "#karma-main"/});
-k.size(1200, 800);
-k.init({
- images: [
- {id: "ball", file: "ball.png", localized : false },
- ],
- sounds: [
- {id: "correct", file: "correct.ogg" },
- ]
-});//1 image and 1 sound attached to load</pre>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <span class="light fixedFont">{Object}</span> <b>toLoad</b>
- <i>Optional</i>
- </dt>
- <dd>The Object that has the arrays for preloading.</dd>
-
- <dt>
- <span class="light fixedFont">{Array}</span> <b>toLoad.images</b>
- <i>Optional</i>
- </dt>
- <dd>The images</dd>
-
- <dt>
- <span class="light fixedFont">{Array}</span> <b>toLoad.sounds</b>
- <i>Optional</i>
- </dt>
- <dd>The sounds</dd>
-
- <dt>
- <span class="light fixedFont">{Array}</span> <b>toLoad.videos</b>
- <i>Optional</i>
- </dt>
- <dd>The videos</dd>
-
- </dl>
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Returns:</dt>
-
- <dd><span class="light fixedFont">{Object}</span> this</dd>
-
- </dl>
-
-
-
- <dl class="detailList">
- <dt class="heading">See:</dt>
-
- <dd><a href="../symbols/Karma.html#main">Karma#main</a></dd>
-
- </dl>
-
-
- <hr />
-
- <a name="-loadAlternatives"> </a>
- <div class="fixedFont">&lt;inner&gt;
-
- <span class="light">{String}</span>
- <b>loadAlternatives</b>()
-
- </div>
- <div class="description">
- It will attempt to load a language file, the posible languages are defined
- on language.alternatives.
- <p>The language file type could be: .po (Pootle) or .json (JSON). The
- precedence between file types is defined according to which is defined first
- in supportedLangFileTypes. By default Pootle files has precedence over JSON,
- files.</p>
-
-
- </div>
-
-
-
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Returns:</dt>
-
- <dd><span class="light fixedFont">{String}</span> The name of the language file loaded. Example: en-US.po</dd>
-
- </dl>
-
-
-
- <dl class="detailList">
- <dt class="heading">See:</dt>
-
- <dd><a href="../symbols/Karma.html">Karma</a></dd>
-
- </dl>
-
-
- <hr />
-
- <a name="-localiseContent"> </a>
- <div class="fixedFont">&lt;inner&gt;
-
-
- <b>localiseContent</b>(lang)
-
- </div>
- <div class="description">
- Localises the inline html content and it creates the localised paths for
- "images", "sounds" and "videos".
- <b>Note:</b>Inline html localisation under development<br>
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <span class="light fixedFont">{String}</span> <b>lang</b>
-
- </dt>
- <dd>The language that will be used to localise the content</dd>
-
- </dl>
-
-
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">See:</dt>
-
- <dd><a href="http://wiki.sugarlabs.org/go/Karma/Bundle_layout">
- Karma Bundle_layout</a></dd>
-
- </dl>
-
-
- <hr />
-
- <a name="main"> </a>
- <div class="fixedFont">
-
-
- <b>main</b>(cb)
-
- </div>
- <div class="description">
- Main function. Any Karma function call should be inside the callback function.
-The callback function will be executed when the preloading finishes.
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <span class="light fixedFont">{Function}</span> <b>cb</b>
-
- </dt>
- <dd>The callback funtion</dd>
-
- </dl>
-
-
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">See:</dt>
-
- <dd><a href="../symbols/Karma.html#init">Karma#init</a></dd>
-
- </dl>
-
-
- <hr />
-
- <a name="size"> </a>
- <div class="fixedFont">
-
-
- <b>size</b>(width, height)
-
- </div>
- <div class="description">
- Creates a new canvas element.
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>width</b>
- <i>Optional, Default: 100</i>
- </dt>
- <dd>canvas width</dd>
-
- <dt>
- <span class="light fixedFont">{Number}</span> <b>height</b>
- <i>Optional, Default: 100</i>
- </dt>
- <dd>canvas height</dd>
-
- </dl>
-
-
-
-
-
-
-
-
- <hr />
-
- <a name="sound"> </a>
- <div class="fixedFont">
-
-
- <b>sound</b>(args)
-
- </div>
- <div class="description">
- A shortcut for calling 'KSound( )'
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <b>args</b>
-
- </dt>
- <dd></dd>
-
- </dl>
-
-
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">See:</dt>
-
- <dd>KSound</dd>
-
- </dl>
-
-
- <hr />
-
- <a name="video"> </a>
- <div class="fixedFont">
-
-
- <b>video</b>(args)
-
- </div>
- <div class="description">
- A shortcut for calling 'KVideo( )'
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <b>args</b>
-
- </dt>
- <dd></dd>
-
- </dl>
-
-
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">See:</dt>
-
- <dd>KVideo</dd>
-
- </dl>
-
-
-
-
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:56:09 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/_global_.html b/jsdoc/symbols/_global_.html
deleted file mode 100644
index 4d6b4ce..0000000
--- a/jsdoc/symbols/_global_.html
+++ /dev/null
@@ -1,520 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - _global_</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KGraphic.html">KGraphic</a></li>
-
- <li><a href="../symbols/KGroup.html">KGroup</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Built-In Namespace _global_
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
-
-
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class _global_.">
- <caption>Field Summary</caption>
- <thead>
- <tr>
- <th scope="col">Field Attributes</th>
- <th scope="col">Field Name and Description</th>
- </tr>
- </thead>
- <tbody>
-
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont">
- <b><a href="../symbols/_global_.html#mouse">mouse</a></b>
- </div>
- <div class="description">Mouse</div>
- </td>
- </tr>
-
- </tbody>
- </table>
-
-
-
-
-
-<!-- ============================== methods summary ======================== -->
-
-
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class _global_.">
- <caption>Method Summary</caption>
- <thead>
- <tr>
- <th scope="col">Method Attributes</th>
- <th scope="col">Method Name and Description</th>
- </tr>
- </thead>
- <tbody>
-
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/_global_.html#Class">Class</a></b>()
- </div>
- <div class="description">Master Class creator.</div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/_global_.html#handleEvents">handleEvents</a></b>(ev)
- </div>
- <div class="description"></div>
- </td>
- </tr>
-
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription">
- <div class="fixedFont"><b><a href="../symbols/_global_.html#valid">valid</a></b>(arg, type, toReturn)
- </div>
- <div class="description">Checks if the argument (arg) is seted and if its type is 'type'.</div>
- </td>
- </tr>
-
- </tbody>
- </table>
-
-
-
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
-
-<!-- ============================== field details ========================== -->
-
- <div class="sectionTitle">
- Field Detail
- </div>
-
- <a name="mouse"> </a>
- <div class="fixedFont">
-
-
- <b>mouse</b>
-
- </div>
- <div class="description">
- Mouse
-
- <br />
- <i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
-
- </div>
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ============================== method details ========================= -->
-
- <div class="sectionTitle">
- Method Detail
- </div>
-
- <a name="Class"> </a>
- <div class="fixedFont">
-
- <span class="light">{Object}</span>
- <b>Class</b>()
-
- </div>
- <div class="description">
- Master Class creator. Supports multiple inheritance.
-It creates a new Object, the new Object will contain the methods that has each
-argument passed (Function or Object). When creating an instance of the new
-Object it will use the 'init' function as the initializer.<br>
-If there is more than one method with the same name, it'll be overwritten by the
-last one.<br>
-warning it's NOT optimal.
-
- <br />
- <i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
-
- </div>
-
-
-
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Returns:</dt>
-
- <dd><span class="light fixedFont">{Object}</span> A new class</dd>
-
- </dl>
-
-
-
-
- <hr />
-
- <a name="handleEvents"> </a>
- <div class="fixedFont">
-
-
- <b>handleEvents</b>(ev)
-
- </div>
- <div class="description">
-
-
- <br />
- <i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
-
- </div>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <b>ev</b>
-
- </dt>
- <dd></dd>
-
- </dl>
-
-
-
-
-
-
-
-
- <hr />
-
- <a name="valid"> </a>
- <div class="fixedFont">
-
-
- <b>valid</b>(arg, type, toReturn)
-
- </div>
- <div class="description">
- Checks if the argument (arg) is seted and if its type is 'type'.<br>
-1. if arg is seted: it returns toReturn if specified, otherwise it returns
- 'true'
-2. if arg is not seted: it returns 'false'
-
- <br />
- <i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
-
- </div>
-
-
-
- <pre class="code">var msg = "hi";
-valid(msg); //returns true
-valid(msg, "String" ); //returns true
-valid(msg, "Number"); //returns false
-valid(msg, "String",false ); //returns false
-valid(msg123); //returns false</pre>
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <b>arg</b>
-
- </dt>
- <dd>The param to check</dd>
-
- <dt>
- <span class="light fixedFont">{Object}</span> <b>type</b>
- <i>Optional</i>
- </dt>
- <dd>The expeted type of 'arg'</dd>
-
- <dt>
- <b>toReturn</b>
- <i>Optional</i>
- </dt>
- <dd>object or value to return in case 1</dd>
-
- </dl>
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Returns:</dt>
-
- <dd>true | false | toReturn</dd>
-
- </dl>
-
-
-
-
-
-
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:56:09 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/init.html b/jsdoc/symbols/init.html
deleted file mode 100644
index e88e59d..0000000
--- a/jsdoc/symbols/init.html
+++ /dev/null
@@ -1,321 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="generator" content="JsDoc Toolkit" />
-
- <title>JsDoc Reference - init</title>
-
- <style type="text/css">
- /* default.css */
-body
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- width: 800px;
-}
-
-.header
-{
- clear: both;
- background-color: #ccc;
- padding: 8px;
-}
-
-h1
-{
- font-size: 150%;
- font-weight: bold;
- padding: 0;
- margin: 1em 0 0 .3em;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #7F8FB1;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-#index
-{
- margin-top: 24px;
- float: left;
- width: 160px;
- position: absolute;
- left: 8px;
- background-color: #F3F3F3;
- padding: 8px;
-}
-
-#content
-{
- margin-left: 190px;
- width: 600px;
-}
-
-.classList
-{
- list-style-type: none;
- padding: 0;
- margin: 0 0 0 8px;
- font-family: arial, sans-serif;
- font-size: 1em;
- overflow: auto;
-}
-
-.classList li
-{
- padding: 0;
- margin: 0 0 8px 0;
-}
-
-.summaryTable { width: 100%; }
-
-h1.classTitle
-{
- font-size:170%;
- line-height:130%;
-}
-
-h2 { font-size: 110%; }
-caption, div.sectionTitle
-{
- background-color: #7F8FB1;
- color: #fff;
- font-size:130%;
- text-align: left;
- padding: 2px 6px 2px 6px;
- border: 1px #7F8FB1 solid;
-}
-
-div.sectionTitle { margin-bottom: 8px; }
-.summaryTable thead { display: none; }
-
-.summaryTable td
-{
- vertical-align: top;
- padding: 4px;
- border-bottom: 1px #7F8FB1 solid;
- border-right: 1px #7F8FB1 solid;
-}
-
-/*col#summaryAttributes {}*/
-.summaryTable td.attributes
-{
- border-left: 1px #7F8FB1 solid;
- width: 140px;
- text-align: right;
-}
-
-td.attributes, .fixedFont
-{
- line-height: 15px;
- color: #002EBE;
- font-family: "Courier New",Courier,monospace;
- font-size: 13px;
-}
-
-.summaryTable td.nameDescription
-{
- text-align: left;
- font-size: 13px;
- line-height: 15px;
-}
-
-.summaryTable td.nameDescription, .description
-{
- line-height: 15px;
- padding: 4px;
- padding-left: 4px;
-}
-
-.summaryTable { margin-bottom: 8px; }
-
-ul.inheritsList
-{
- list-style: square;
- margin-left: 20px;
- padding-left: 0;
-}
-
-.detailList {
- margin-left: 20px;
- line-height: 15px;
-}
-.detailList dt { margin-left: 20px; }
-
-.detailList .heading
-{
- font-weight: bold;
- padding-bottom: 6px;
- margin-left: 0;
-}
-
-.light, td.attributes, .light a:link, .light a:visited
-{
- color: #777;
- font-style: italic;
-}
-
-.fineprint
-{
- text-align: right;
- font-size: 10px;
-}
- </style>
- </head>
-
- <body>
-<!-- ============================== header ================================= -->
- <!-- begin static/header.html -->
- <div id="header">
-</div>
- <!-- end static/header.html -->
-
-<!-- ============================== classes index ============================ -->
- <div id="index">
- <!-- begin publish.classesIndex -->
- <div align="center"><a href="../index.html">Class Index</a>
-| <a href="../files.html">File Index</a></div>
-<hr />
-<h2>Classes</h2>
-<ul class="classList">
-
- <li><i><a href="../symbols/_global_.html">_global_</a></i></li>
-
- <li><a href="../symbols/init.html">init</a></li>
-
- <li><a href="../symbols/Karma.html">Karma</a></li>
-
- <li><a href="../symbols/Karma%23geometry.html">Karma#geometry</a></li>
-
- <li><a href="../symbols/Karma%23graphics.html">Karma#graphics</a></li>
-
- <li><a href="../symbols/Karma%23math.html">Karma#math</a></li>
-
- <li><a href="../symbols/KObject.html">KObject</a></li>
-
-</ul>
-<hr />
- <!-- end publish.classesIndex -->
- </div>
-
- <div id="content">
-<!-- ============================== class title ============================ -->
- <h1 class="classTitle">
-
- Class init
- </h1>
-
-<!-- ============================== class summary ========================== -->
- <p class="description">
-
-
-
-
-
- <br /><i>Defined in: </i> <a href="../symbols/src/js_jquery.karma-0.4.js.html">jquery.karma-0.4.js</a>.
-
- </p>
-
-<!-- ============================== constructor summary ==================== -->
-
- <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class init.">
- <caption>Class Summary</caption>
- <thead>
- <tr>
- <th scope="col">Constructor Attributes</th>
- <th scope="col">Constructor Name and Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="attributes">&nbsp;</td>
- <td class="nameDescription" >
- <div class="fixedFont">
- <b><a href="../symbols/init.html#constructor">init</a></b>(options)
- </div>
- <div class="description"></div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-<!-- ============================== properties summary ===================== -->
-
-
-<!-- ============================== methods summary ======================== -->
-
-<!-- ============================== events summary ======================== -->
-
-
-<!-- ============================== constructor details ==================== -->
-
- <div class="details"><a name="constructor"> </a>
- <div class="sectionTitle">
- Class Detail
- </div>
-
- <div class="fixedFont">
- <b>init</b>(options)
- </div>
-
- <div class="description">
-
-
- </div>
-
-
-
-
-
- <dl class="detailList">
- <dt class="heading">Parameters:</dt>
-
- <dt>
- <b>options</b>
-
- </dt>
- <dd></dd>
-
- </dl>
-
-
-
-
-
-
-
-
- </div>
-
-
-<!-- ============================== field details ========================== -->
-
-
-<!-- ============================== method details ========================= -->
-
-
-<!-- ============================== event details ========================= -->
-
-
- <hr />
- </div>
-
-
-<!-- ============================== footer ================================= -->
- <div class="fineprint" style="clear:both">
-
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.3.0 on Mon Aug 31 2009 19:22:00 GMT-0500 (CDT)
- </div>
- </body>
-</html>
diff --git a/jsdoc/symbols/src/JSDOC.js.html b/jsdoc/symbols/src/JSDOC.js.html
deleted file mode 100644
index 6ef5f20..0000000
--- a/jsdoc/symbols/src/JSDOC.js.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
- .KEYW {color: #933;}
- .COMM {color: #bbb; font-style: italic;}
- .NUMB {color: #393;}
- .STRN {color: #393;}
- .REGX {color: #339;}
- .line {border-right: 1px dotted #666; color: #666; font-style: normal;}
- </style></head><body><pre><span class='line'> 1</span> <span class="COMM">/**
-<span class='line'> 2</span> @overview
-<span class='line'> 3</span> @date $Date: 2009-06-21 23:36:33 +0100 (Sun, 21 Jun 2009) $
-<span class='line'> 4</span> @version $Revision: 801 $
-<span class='line'> 5</span> @location $HeadURL: https://jsdoc-toolkit.googlecode.com/svn/trunk/jsdoc-toolkit/app/lib/JSDOC.js $
-<span class='line'> 6</span> @name JSDOC.js
-<span class='line'> 7</span> */</span><span class="WHIT">
-<span class='line'> 8</span>
-<span class='line'> 9</span> </span><span class="COMM">/**
-<span class='line'> 10</span> This is the main container for the JSDOC application.
-<span class='line'> 11</span> @namespace
-<span class='line'> 12</span> */</span><span class="WHIT">
-<span class='line'> 13</span> </span><span class="NAME">JSDOC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 14</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 15</span>
-<span class='line'> 16</span> </span><span class="COMM">/**
-<span class='line'> 17</span> @requires Opt
-<span class='line'> 18</span> */</span><span class="WHIT">
-<span class='line'> 19</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 20</span> </span><span class="NAME">JSDOC.opt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Opt.get</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'> 21</span> </span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 22</span> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 23</span> </span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"allfunctions"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 24</span> </span><span class="NAME">c</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"conf"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 25</span> </span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"directory"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 26</span> </span><span class="WHIT"> </span><span class="STRN">"D[]"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"define"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 27</span> </span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"encoding"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 28</span> </span><span class="WHIT"> </span><span class="STRN">"E[]"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"exclude"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 29</span> </span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"help"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 30</span> </span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"nocode"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 31</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"out"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 32</span> </span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"private"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 33</span> </span><span class="WHIT"> </span><span class="NAME">q</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"quiet"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 34</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"recurse"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 35</span> </span><span class="WHIT"> </span><span class="NAME">S</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"securemodules"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 36</span> </span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"suppress"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 37</span> </span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"template"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 38</span> </span><span class="WHIT"> </span><span class="NAME">T</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"testmode"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 39</span> </span><span class="WHIT"> </span><span class="NAME">u</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"unique"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 40</span> </span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"verbose"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 41</span> </span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"ext"</span><span class="WHIT">
-<span class='line'> 42</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'> 43</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 44</span>
-<span class='line'> 45</span> </span><span class="COMM">/** The current version string of this application. */</span><span class="WHIT">
-<span class='line'> 46</span> </span><span class="NAME">JSDOC.VERSION</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"2.3.0"</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 47</span>
-<span class='line'> 48</span> </span><span class="COMM">/** Print out usage information and quit. */</span><span class="WHIT">
-<span class='line'> 49</span> </span><span class="NAME">JSDOC.usage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 50</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"USAGE: java -jar jsrun.jar app/run.js [OPTIONS] &lt;SRC_DIR> &lt;SRC_FILE> ..."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 51</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 52</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"OPTIONS:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 53</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -a or --allfunctions\n Include all functions, even undocumented ones.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 54</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -c or --conf\n Load a configuration file.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 55</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -d=&lt;PATH> or --directory=&lt;PATH>\n Output to this directory (defaults to \"out\").\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 56</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -D=\"myVar:My value\" or --define=\"myVar:My value\"\n Multiple. Define a variable, available in JsDoc as JSDOC.opt.D.myVar.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 57</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -e=&lt;ENCODING> or --encoding=&lt;ENCODING>\n Use this encoding to read and write files.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 58</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -E=\"REGEX\" or --exclude=\"REGEX\"\n Multiple. Exclude files based on the supplied regex.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 59</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -h or --help\n Show this message and exit.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 60</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -n or --nocode\n Ignore all code, only document comments with @name tags.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 61</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -o=&lt;PATH> or --out=&lt;PATH>\n Print log messages to a file (defaults to stdout).\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 62</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -p or --private\n Include symbols tagged as private, underscored and inner symbols.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 63</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -q or --quiet\n Do not output any messages, not even warnings.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 64</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -r=&lt;DEPTH> or --recurse=&lt;DEPTH>\n Descend into src directories.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 65</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -s or --suppress\n Suppress source code output.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 66</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -S or --securemodules\n Use Secure Modules mode to parse source code.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 67</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -t=&lt;PATH> or --template=&lt;PATH>\n Required. Use this template to format the output.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 68</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -T or --test\n Run all unit tests and exit.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 69</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -u or --unique\n Force file names to be unique, but not based on symbol names.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 70</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -v or --verbose\n Provide verbose feedback about what is happening.\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 71</span> </span><span class="WHIT"> </span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">" -x=&lt;EXT>[,EXT]... or --ext=&lt;EXT>[,EXT]...\n Scan source files with the given extension/s (defaults to js).\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 72</span> </span><span class="WHIT">
-<span class='line'> 73</span> </span><span class="NAME">quit</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 74</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'> 75</span>
-<span class='line'> 76</span> </span><span class="COMM">/*t:
-<span class='line'> 77</span> plan(4, "Testing JSDOC namespace.");
-<span class='line'> 78</span>
-<span class='line'> 79</span> is(
-<span class='line'> 80</span> typeof JSDOC,
-<span class='line'> 81</span> "object",
-<span class='line'> 82</span> "JSDOC.usage is a function."
-<span class='line'> 83</span> );
-<span class='line'> 84</span>
-<span class='line'> 85</span> is(
-<span class='line'> 86</span> typeof JSDOC.VERSION,
-<span class='line'> 87</span> "string",
-<span class='line'> 88</span> "JSDOC.VERSION is a string."
-<span class='line'> 89</span> );
-<span class='line'> 90</span>
-<span class='line'> 91</span> is(
-<span class='line'> 92</span> typeof JSDOC.usage,
-<span class='line'> 93</span> "function",
-<span class='line'> 94</span> "JSDOC.usage is a function."
-<span class='line'> 95</span> );
-<span class='line'> 96</span>
-<span class='line'> 97</span> is(
-<span class='line'> 98</span> typeof JSDOC.opt,
-<span class='line'> 99</span> "object",
-<span class='line'>100</span> "JSDOC.opt is a object."
-<span class='line'>101</span> );
-<span class='line'>102</span> */</span><span class="WHIT">
-<span class='line'>103</span>
-<span class='line'>104</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.IO</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">IO.includeDir</span><span class="PUNC">(</span><span class="STRN">"lib/JSDOC/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>105</span> </span></pre></body></html> \ No newline at end of file
diff --git a/jsdoc/symbols/src/js_a.js.html b/jsdoc/symbols/src/js_a.js.html
deleted file mode 100644
index 8af5caa..0000000
--- a/jsdoc/symbols/src/js_a.js.html
+++ /dev/null
@@ -1,767 +0,0 @@
-<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
- .KEYW {color: #933;}
- .COMM {color: #bbb; font-style: italic;}
- .NUMB {color: #393;}
- .STRN {color: #393;}
- .REGX {color: #339;}
- .line {border-right: 1px dotted #666; color: #666; font-style: normal;}
- </style></head><body><pre><span class='line'> 1</span> <span class="TOKN"></span><span class="COMM">/*
-<span class='line'> 2</span> * Karma Framework
-<span class='line'> 3</span> * http://wiki.sugarlabs.org/go/Karma
-<span class='line'> 4</span> *
-<span class='line'> 5</span> * Copyright (c) 2009
-<span class='line'> 6</span> * Felipe López Toledo zer.subzero@gmail.com
-<span class='line'> 7</span> * Bryan W Berry bryan@olenepal.org
-<span class='line'> 8</span> *
-<span class='line'> 9</span> * Under MIT License:
-<span class='line'> 10</span> * Permission is hereby granted, free of charge, to any person
-<span class='line'> 11</span> * obtaining a copy of this software and associated documentation
-<span class='line'> 12</span> * files (the "Software"), to deal in the Software without
-<span class='line'> 13</span> * restriction, including without limitation the rights to use,
-<span class='line'> 14</span> * copy, modify, merge, publish, distribute, sublicense, and/or sell
-<span class='line'> 15</span> * copies of the Software, and to permit persons to whom the
-<span class='line'> 16</span> * Software is furnished to do so, subject to the following
-<span class='line'> 17</span> * conditions:
-<span class='line'> 18</span> *
-<span class='line'> 19</span> * The above copyright notice and this permission notice shall be
-<span class='line'> 20</span> * included in all copies or substantial portions of the Software.
-<span class='line'> 21</span> *
-<span class='line'> 22</span> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-<span class='line'> 23</span> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-<span class='line'> 24</span> * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-<span class='line'> 25</span> * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-<span class='line'> 26</span> * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-<span class='line'> 27</span> * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-<span class='line'> 28</span> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-<span class='line'> 29</span> * OTHER DEALINGS IN THE SOFTWARE.
-<span class='line'> 30</span> */</span><span class="WHIT">
-<span class='line'> 31</span>
-<span class='line'> 32</span> </span><span class="WHIT">
-<span class='line'> 33</span>
-<span class='line'> 34</span> </span><span class="COMM">//helpers</span><span class="WHIT">
-<span class='line'> 35</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">arg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">toReturn</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 36</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 37</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">arg</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">toReturn</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 38</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'> 39</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'> 40</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">arg</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 41</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 42</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'> 43</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 44</span> </span><span class="WHIT"> </span><span class="NAME">container</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"#karma-main"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 45</span> </span><span class="WHIT"> </span><span class="NAME">language</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 46</span> </span><span class="NAME">lang</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 47</span> </span><span class="WHIT"> </span><span class="NAME">alternatives</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">'en-US'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'en'</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 48</span> </span><span class="WHIT"> </span><span class="NAME">countryCode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 49</span> </span><span class="WHIT"> </span><span class="NAME">langCode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 50</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 51</span> </span><span class="WHIT"> </span><span class="NAME">i18n</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 52</span> </span><span class="WHIT"> </span><span class="NAME">root</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">self</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="COMM">// self is global</span><span class="WHIT">
-<span class='line'> 53</span> </span><span class="WHIT"> </span><span class="NAME">shortcut</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"_"</span><span class="WHIT">
-<span class='line'> 54</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 55</span> </span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 56</span> </span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 57</span> </span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 58</span> </span><span class="WHIT"> </span><span class="NAME">fps</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">24</span><span class="WHIT">
-<span class='line'> 59</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 60</span> </span><span class="WHIT">
-<span class='line'> 61</span> </span><span class="COMM">/**
-<span class='line'> 62</span> Karma
-<span class='line'> 63</span>
-<span class='line'> 64</span> @class Represents a Karma (master) object
-<span class='line'> 65</span> @param {String | Object } Options Constructor arguments
-<span class='line'> 66</span> @param options.container Target DIV class that will contain any canvas element created using Karma functions
-<span class='line'> 67</span> @param options.language if it's a String, Karma will NOT try to localise the content, instead Karma will assume that this
-<span class='line'> 68</span> language file exists and it'll try to load it.
-<span class='line'> 69</span> @param options.i18n Object that contains data for i18n.
-<span class='line'> 70</span> @param options.i18n.root Parent element where the i18n (Gettext object) shortcut will be attached.
-<span class='line'> 71</span> @param options.i18n.shortcut Shortcut for calling i18n.
-<span class='line'> 72</span> @param options.fps Frames per second at which Karma will perform any refresh action.
-<span class='line'> 73</span>
-<span class='line'> 74</span> @version 0.3 alpha
-<span class='line'> 75</span> @constructor
-<span class='line'> 76</span> **/</span><span class="WHIT">
-<span class='line'> 77</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Karma</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 78</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">that</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 79</span> </span><span class="WHIT"> </span><span class="NAME">this.version</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"0.3 alpha"</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 80</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'> 81</span> </span><span class="WHIT"> </span><span class="COMM">//relative path to the po, images, sounds, etc. from the html</span><span class="WHIT">
-<span class='line'> 82</span> </span><span class="WHIT"> </span><span class="COMM">//defined here: http://wiki.sugarlabs.org/go/Karma/Bundle_layout</span><span class="WHIT">
-<span class='line'> 83</span> </span><span class="WHIT"> </span><span class="COMM">//localized is recalculated inside localizeContent ( $ = language.lang )</span><span class="WHIT">
-<span class='line'> 84</span> </span><span class="WHIT"> </span><span class="NAME">this.paths</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 85</span> </span><span class="WHIT"> </span><span class="NAME">po</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"po/"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 86</span> </span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 87</span> </span><span class="WHIT"> </span><span class="NAME">localized</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/$/images/"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 88</span> </span><span class="WHIT"> </span><span class="NAME">generic</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/generic/images/"</span><span class="WHIT">
-<span class='line'> 89</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 90</span> </span><span class="WHIT"> </span><span class="NAME">sounds</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 91</span> </span><span class="WHIT"> </span><span class="NAME">localized</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/$/sounds/"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 92</span> </span><span class="WHIT"> </span><span class="NAME">generic</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/generic/sounds/"</span><span class="WHIT">
-<span class='line'> 93</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 94</span> </span><span class="WHIT"> </span><span class="NAME">videos</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 95</span> </span><span class="WHIT"> </span><span class="NAME">localized</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/$/videos/"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 96</span> </span><span class="WHIT"> </span><span class="NAME">generic</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/generic/videos/"</span><span class="WHIT">
-<span class='line'> 97</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'> 98</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 99</span> </span><span class="WHIT"> </span><span class="NAME">this.supportedLangFileTypes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
-<span class='line'>100</span> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">ext</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"po"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'application/x-po'</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>101</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">ext</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"json"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'application/json'</span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>102</span> </span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>103</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>104</span> </span><span class="WHIT"> </span><span class="COMM">//PRIVATE STUFF start</span><span class="WHIT">
-<span class='line'>105</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>106</span> * get the language acording to the browser language
-<span class='line'>107</span> *@returns {Object} &lt;br>
-<span class='line'>108</span> *lang: country - language two letters code represented as xx-YY, example: en-US.&lt;br>
-<span class='line'>109</span> *langCode*: language code represented as xx, example: en.&lt;br>
-<span class='line'>110</span> *countryCode*: country code represented as YY, example: US.&lt;br>
-<span class='line'>111</span> **optional
-<span class='line'>112</span> **/</span><span class="WHIT">
-<span class='line'>113</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">getLanguage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>114</span> </span><span class="WHIT"> </span><span class="COMM">//console.log += navigator.language +"\n";</span><span class="WHIT">
-<span class='line'>115</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">navigator.language</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">navigator.browserLanguage</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">//mozilla / ie</span><span class="WHIT">
-<span class='line'>116</span> </span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.replace</span><span class="PUNC">(</span><span class="REGX">/_/</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'-'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>117</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">lang.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">3</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>118</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">country</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.substring</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>119</span> </span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.substring</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>120</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">country.match</span><span class="PUNC">(</span><span class="REGX">/[^a-zA-Z]/</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>121</span> </span><span class="WHIT"> </span><span class="NAME">country</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">country.toUpperCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>122</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>123</span> </span><span class="STRN">"lang"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">country</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>124</span> </span><span class="STRN">"langCode"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>125</span> </span><span class="STRN">"countryCode"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">country</span><span class="WHIT">
-<span class='line'>126</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>127</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>128</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>129</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="STRN">"lang"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>130</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>131</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>132</span> &lt;p>creates a new Gettext object and returns a shortcut function to translate strings&lt;/p>
-<span class='line'>133</span> we use karma.Gettext.js it's a modification of &lt;a href=http://jsgettext.berlios.de/doc/html/Gettext.html>
-<span class='line'>134</span> Gettext.js&lt;/a> from beril OS.
-<span class='line'>135</span> @param {Object} options passed as arguments of the Gettext constructor
-<span class='line'>136</span> @returns {Function} generic function to call Gettext functions &lt;br>
-<span class='line'>137</span> &lt;ul>
-<span class='line'>138</span> &lt;li>1 argument = msgid&lt;/li>
-<span class='line'>139</span> &lt;li>2 arguments = context, msgid&lt;/li>
-<span class='line'>140</span> &lt;li>3 arguments = number, singular, plural&lt;/li>
-<span class='line'>141</span> &lt;li>4 arguments = number, context, singular, plural&lt;/li>
-<span class='line'>142</span> &lt;/ul>
-<span class='line'>143</span> **/</span><span class="WHIT">
-<span class='line'>144</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i18nWrapper</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>145</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">gt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Gettext</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>146</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">gt</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>147</span> </span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"Unable to initialize Gettext object"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>148</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">str1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str4</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>149</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">singular</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plural</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>150</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">str4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>151</span> </span><span class="WHIT"> </span><span class="COMM">// number, context, singular, plural</span><span class="WHIT">
-<span class='line'>152</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">gt.npgettext</span><span class="PUNC">(</span><span class="NAME">str2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>153</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">str3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>154</span> </span><span class="WHIT"> </span><span class="COMM">// number, singular, plural</span><span class="WHIT">
-<span class='line'>155</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">gt.ngettext</span><span class="PUNC">(</span><span class="NAME">str2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>156</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">str2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>157</span> </span><span class="WHIT"> </span><span class="COMM">// context, msgid</span><span class="WHIT">
-<span class='line'>158</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">gt.pgettext</span><span class="PUNC">(</span><span class="NAME">str1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>159</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">str1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>160</span> </span><span class="WHIT"> </span><span class="COMM">// msgid</span><span class="WHIT">
-<span class='line'>161</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">gt.gettext</span><span class="PUNC">(</span><span class="NAME">str1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>162</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>163</span> </span><span class="WHIT"> </span><span class="COMM">// nothing passed in; return blank string.</span><span class="WHIT">
-<span class='line'>164</span> </span><span class="WHIT"> </span><span class="COMM">// XXX: we could error here, but that may cause more harm than good.</span><span class="WHIT">
-<span class='line'>165</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>166</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>167</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>168</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>169</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>170</span> * It will localise the inline html content and it'll create the localised paths for "images", "sounds", "videos".
-<span class='line'>171</span> **/</span><span class="WHIT">
-<span class='line'>172</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">localiseContent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>173</span> </span><span class="WHIT">
-<span class='line'>174</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">toFix</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"images"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"sounds"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"videos"</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>175</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">toFix.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>176</span> </span><span class="WHIT"> </span><span class="NAME">that.paths</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">toFix</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">localized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">that.paths</span><span class="PUNC">[</span><span class="WHIT">
-<span class='line'>177</span> </span><span class="NAME">toFix</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">localized.replace</span><span class="PUNC">(</span><span class="STRN">'\$'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>178</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>179</span> </span><span class="WHIT"> </span><span class="COMM">//dirty hack to support {lang}_AudioClip</span><span class="WHIT">
-<span class='line'>180</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prefix</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.substring</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">"_"</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>181</span> </span><span class="WHIT"> </span><span class="NAME">that.paths</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="STRN">"sounds"</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">localized</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="NAME">prefix</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>182</span> </span><span class="WHIT"> </span><span class="NAME">that.paths</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="STRN">"sounds"</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">generic</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="NAME">prefix</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>183</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>184</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>185</span> &lt;p>It will attempt to load a language file, the posible languages are defined on language.alternatives
-<span class='line'>186</span> (constructor param).&lt;/p>
-<span class='line'>187</span> &lt;p>The language file type could be: .po (Pootle). or .json (JSON). The precedence between file types is defined
-<span class='line'>188</span> according to which is defined first in supportedLangFileTypes. By default Pootle files has precedence over JSON,
-<span class='line'>189</span> files.&lt;/p>
-<span class='line'>190</span> @returns {String} The name of the language file loaded. Example: en-US.po
-<span class='line'>191</span> **/</span><span class="WHIT">
-<span class='line'>192</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">loadAlternatives</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>193</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">loaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>194</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tryNext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>195</span> </span><span class="WHIT"> </span><span class="COMM">//try to load the po or json language file if it exists. </span><span class="WHIT">
-<span class='line'>196</span> </span><span class="WHIT"> </span><span class="COMM">//the lang order is acording to options.language.alternatives</span><span class="WHIT">
-<span class='line'>197</span> </span><span class="WHIT"> </span><span class="COMM">//the type (po or json or ...) is defined in supportedLangFileTypes</span><span class="WHIT">
-<span class='line'>198</span> </span><span class="WHIT"> </span><span class="NAME">$.each</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">that.language.alternatives</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>199</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">that.supportedLangFileTypes.length</span><span class="WHIT">
-<span class='line'>200</span> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">tryNext</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>201</span> </span><span class="WHIT"> </span><span class="NAME">$.ajax</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>202</span> </span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">that.paths.po</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"."</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
-<span class='line'>203</span> </span><span class="NAME">that.supportedLangFileTypes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">ext</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>204</span> </span><span class="WHIT"> </span><span class="NAME">cache</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>205</span> </span><span class="WHIT"> </span><span class="NAME">dataType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"text"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>206</span> </span><span class="WHIT"> </span><span class="NAME">async</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="COMM">//important: touch it at your own risk</span><span class="WHIT">
-<span class='line'>207</span> </span><span class="WHIT"> </span><span class="NAME">success</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">textStatus</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>208</span> </span><span class="WHIT">
-<span class='line'>209</span> </span><span class="NAME">loaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"."</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
-<span class='line'>210</span> </span><span class="NAME">that.supportedLangFileTypes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">ext</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>211</span> </span><span class="WHIT"> </span><span class="COMM">//i18n</span><span class="WHIT">
-<span class='line'>212</span> </span><span class="WHIT"> </span><span class="COMM">//we pass the data so we avoid re-loading the file</span><span class="WHIT">
-<span class='line'>213</span> </span><span class="WHIT"> </span><span class="COMM">//creates the shorcout</span><span class="WHIT">
-<span class='line'>214</span> </span><span class="WHIT"> </span><span class="NAME">that.i18n.root</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">that.i18n.shortcut</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">i18nWrapper</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>215</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>216</span> </span><span class="NAME">domain</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>217</span> </span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>218</span> </span><span class="NAME">type</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">that.supportedLangFileTypes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>219</span> </span><span class="NAME">uri</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.url</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT">
-<span class='line'>220</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>221</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>222</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>223</span> </span><span class="WHIT"> </span><span class="NAME">localiseContent</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>224</span> </span><span class="WHIT"> </span><span class="NAME">tryNext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>225</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>226</span> </span><span class="WHIT"> </span><span class="NAME">error</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">XHR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">textStatus</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">errorThrown</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>227</span> </span><span class="WHIT"> </span><span class="COMM">//the file doesn't exist or it wasn't possible to load it</span><span class="WHIT">
-<span class='line'>228</span> </span><span class="WHIT"> </span><span class="NAME">tryNext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>229</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>230</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>231</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">tryNext</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>232</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>233</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>234</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">loaded</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>235</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>236</span> </span><span class="WHIT"> </span><span class="COMM">//PRIVATE STUFF end</span><span class="WHIT">
-<span class='line'>237</span> </span><span class="WHIT"> </span><span class="COMM">// default options </span><span class="WHIT">
-<span class='line'>238</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>239</span> </span><span class="WHIT"> </span><span class="NAME">container</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"#karma-main"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>240</span> </span><span class="WHIT"> </span><span class="NAME">language</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>241</span> </span><span class="NAME">lang</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>242</span> </span><span class="WHIT"> </span><span class="NAME">alternatives</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">'en-US'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'en'</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>243</span> </span><span class="WHIT"> </span><span class="NAME">countryCode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>244</span> </span><span class="WHIT"> </span><span class="NAME">langCode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>245</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>246</span> </span><span class="WHIT"> </span><span class="NAME">i18n</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>247</span> </span><span class="WHIT"> </span><span class="NAME">root</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">self</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="COMM">// self is global</span><span class="WHIT">
-<span class='line'>248</span> </span><span class="WHIT"> </span><span class="NAME">shortcut</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"_"</span><span class="WHIT">
-<span class='line'>249</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>250</span> </span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>251</span> </span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>252</span> </span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>253</span> </span><span class="WHIT"> </span><span class="NAME">fps</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">24</span><span class="WHIT">
-<span class='line'>254</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>255</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>256</span>
-<span class='line'>257</span> </span><span class="WHIT"> </span><span class="NAME">this.library</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="STRN">"images"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"sounds"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"videos"</span><span class="PUNC">:</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"shapes"</span><span class="PUNC">:</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>258</span> </span><span class="WHIT">
-<span class='line'>259</span> </span><span class="COMM">//initializes the defaultOptions argument</span><span class="WHIT">
-<span class='line'>260</span> </span><span class="WHIT"> </span><span class="COMM">//1 argument: string. assume it's the container</span><span class="WHIT">
-<span class='line'>261</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>262</span> </span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">container</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>263</span> </span><span class="WHIT"> </span><span class="NAME">options.language</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">getLanguage</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>264</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"object"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>265</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">options.lang</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>266</span> </span><span class="WHIT"> </span><span class="COMM">//if language is string, assume it's the language.lang</span><span class="WHIT">
-<span class='line'>267</span> </span><span class="WHIT"> </span><span class="NAME">options.language</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">options.lang</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>268</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>269</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>270</span> </span><span class="WHIT"> </span><span class="NAME">$.extend</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>271</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>272</span> </span><span class="WHIT"> </span><span class="COMM">//copy defaultOptions to this, we use this.xyz instead this.defaultOptions.xyz </span><span class="WHIT">
-<span class='line'>273</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>274</span> </span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>275</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>276</span> </span><span class="WHIT">
-<span class='line'>277</span> </span><span class="COMM">//initializes i18n</span><span class="WHIT">
-<span class='line'>278</span> </span><span class="WHIT"> </span><span class="COMM">//add the localized language to the language.alternatives</span><span class="WHIT">
-<span class='line'>279</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">this.language.countryCode</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>280</span> </span><span class="WHIT"> </span><span class="NAME">this.language.alternatives.unshift</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>281</span> </span><span class="NAME">this.language.langCode</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>282</span> </span><span class="NAME">this.language.countryCode</span><span class="WHIT">
-<span class='line'>283</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>284</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>285</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">this.language.lang</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>286</span> </span><span class="WHIT"> </span><span class="NAME">this.language.alternatives.unshift</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.language.lang</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>287</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>288</span> </span><span class="WHIT"> </span><span class="COMM">//try to load the localized lang file (po or json or ...)</span><span class="WHIT">
-<span class='line'>289</span> </span><span class="WHIT"> </span><span class="NAME">this.language.fileLoaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">loadAlternatives</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>290</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>291</span>
-<span class='line'>292</span> </span><span class="WHIT"> </span><span class="COMM">//initializes the container</span><span class="WHIT">
-<span class='line'>293</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>294</span> </span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>295</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>296</span> </span><span class="WHIT"> </span><span class="COMM">//FIXME</span><span class="WHIT">
-<span class='line'>297</span> </span><span class="WHIT"> </span><span class="NAME">gk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>298</span> </span><span class="WHIT"> </span><span class="STRN">"paths"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.paths</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>299</span> </span><span class="WHIT"> </span><span class="STRN">"container"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="WHIT">
-<span class='line'>300</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>301</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>302</span>
-<span class='line'>303</span>
-<span class='line'>304</span> </span><span class="NAME">Karma.prototype.size</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>305</span> </span><span class="WHIT"> </span><span class="NAME">this.canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"canvas"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>306</span> </span><span class="WHIT">
-<span class='line'>307</span> </span><span class="NAME">this.canvas.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>308</span> </span><span class="WHIT"> </span><span class="NAME">this.canvas.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>309</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.canvas.getContext</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>310</span> </span><span class="WHIT"> </span><span class="NAME">this.ctx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.canvas.getContext</span><span class="PUNC">(</span><span class="STRN">"2d"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>311</span> </span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">appendChild</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.canvas</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>312</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>313</span> </span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"Your browser doesn't support canvas, \
-<span class='line'>314</span> try the newest Firefox, Safari or Google Chrome"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>315</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>316</span> </span><span class="WHIT"> </span><span class="COMM">//FIXME</span><span class="WHIT">
-<span class='line'>317</span> </span><span class="WHIT"> </span><span class="NAME">gk.canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.canvas</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>318</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.ctx</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>319</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>320</span> </span><span class="WHIT"> </span><span class="NAME">this.canvas.addEventListener</span><span class="PUNC">(</span><span class="STRN">"contextmenu"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>321</span> </span><span class="WHIT"> </span><span class="COMM">//alert("contextmenu");</span><span class="WHIT">
-<span class='line'>322</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'>323</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>324</span> </span><span class="WHIT"> </span><span class="NAME">this.canvas.addEventListener</span><span class="PUNC">(</span><span class="STRN">"click"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>325</span> </span><span class="NAME">handleEvents</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>326</span> </span><span class="WHIT"> </span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'>327</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>328</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>329</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>330</span> </span><span class="NAME">Karma.prototype.clear</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>331</span> </span><span class="WHIT"> </span><span class="NAME">this.ctx.clearRect</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>332</span> </span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>333</span> </span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>334</span> </span><span class="NAME">width</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.canvas.width</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>335</span> </span><span class="NAME">height</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.canvas.width</span><span class="WHIT">
-<span class='line'>336</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>337</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>338</span> </span><span class="COMM">//Karma packages</span><span class="WHIT">
-<span class='line'>339</span> </span><span class="NAME">Karma.prototype.geometry</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>340</span> </span><span class="WHIT"> </span><span class="NAME">radians</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">angle</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>341</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">angle</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">180</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">Math.PI</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>342</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>343</span> </span><span class="WHIT"> </span><span class="NAME">distance2</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>344</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">b.x</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">a.x</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">b.x</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">a.x</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">b.y</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">a.y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">b.y</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">a.y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>345</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>346</span> </span><span class="WHIT"> </span><span class="NAME">distance</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>347</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Math.sqrt</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">Karma.prototype.distance2</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>348</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>349</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>350</span> </span><span class="NAME">Karma.prototype.graphics</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>351</span> </span><span class="WHIT"> </span><span class="NAME">rectangle</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KRectangle</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>352</span> </span><span class="WHIT"> </span><span class="NAME">circle</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KCircle</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>353</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>354</span> </span><span class="NAME">Karma.prototype.math</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>355</span> </span><span class="WHIT"> </span><span class="NAME">rand</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">lower</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">upper</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>356</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Math.round</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">Math.random</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">upper</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">lower</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">lower</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>357</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>358</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>359</span> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>360</span> </span><span class="COMM">//everything inside karma.graphics is exported to karma.prototype</span><span class="WHIT">
-<span class='line'>361</span> </span><span class="NAME">$.extend</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">Karma.prototype</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Karma.prototype.graphics</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>362</span> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>363</span> </span><span class="NAME">Karma.prototype.init</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">array</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>364</span> </span><span class="WHIT"> </span><span class="NAME">this.pendingToLoad</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">array</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>365</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">//chaining :)</span><span class="WHIT">
-<span class='line'>366</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>367</span> </span><span class="NAME">Karma.prototype.main</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>368</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.pendingToLoad</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>369</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">that</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>370</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">categories</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"images"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"sounds"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"videos"</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>371</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">counters</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="STRN">"loaded"</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"error"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>372</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">totalItems</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>373</span> </span><span class="WHIT"> </span><span class="COMM">//get the total items</span><span class="WHIT">
-<span class='line'>374</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">categories.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>375</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.pendingToLoad</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">categories</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>376</span> </span><span class="WHIT"> </span><span class="NAME">totalItems</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.pendingToLoad</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">categories</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>377</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>378</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>379</span> </span><span class="WHIT"> </span><span class="COMM">//callback to check if all the items were loaded or got an error when loading</span><span class="WHIT">
-<span class='line'>380</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">checkAllLoaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>381</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev.type</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"load"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">counters.loaded</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>382</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="NAME">counters.error</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>383</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">counters.loaded</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">counters.error</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">totalItems</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>384</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>385</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>386</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>387</span> </span><span class="WHIT">
-<span class='line'>388</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">categories.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>389</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">categories</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>390</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.pendingToLoad</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>391</span> </span><span class="WHIT"> </span><span class="COMM">//load all the category elements</span><span class="WHIT">
-<span class='line'>392</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">category.substr</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">category.length</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>393</span> </span><span class="WHIT"> </span><span class="NAME">$.each</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.pendingToLoad</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">config</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>394</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.id</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>395</span> </span><span class="WHIT"> </span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">config.id</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>396</span> </span><span class="WHIT"> </span><span class="COMM">//register the elements into the library</span><span class="WHIT">
-<span class='line'>397</span> </span><span class="WHIT"> </span><span class="NAME">that.library</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Karma.prototype</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>398</span> </span><span class="NAME">config</span><span class="WHIT">
-<span class='line'>399</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>400</span> </span><span class="WHIT"> </span><span class="NAME">that.library</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">media.addEventListener</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>401</span> </span><span class="WHIT"> </span><span class="STRN">"load"</span><span class="PUNC">,</span><span class="NAME">checkAllLoaded</span><span class="PUNC">,</span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'>402</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>403</span> </span><span class="WHIT"> </span><span class="NAME">that.library</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">media.addEventListener</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>404</span> </span><span class="WHIT"> </span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="NAME">checkAllLoaded</span><span class="PUNC">,</span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'>405</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>406</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>407</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>408</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>409</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>410</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>411</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>412</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>413</span> </span><span class="NAME">Karma.prototype.image</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KImage</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>414</span> </span><span class="NAME">Karma.prototype.sound</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KSound</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>415</span> </span><span class="NAME">Karma.prototype.video</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">alert</span><span class="PUNC">(</span><span class="STRN">"Not implemented yet"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>416</span> </span><span class="NAME">Karma.prototype.group</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KGroup</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>417</span> </span><span class="NAME">Karma.prototype.group</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KGroup</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>418</span> </span><span class="NAME">Karma.prototype.button</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KButton</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>419</span>
-<span class='line'>420</span> </span><span class="COMM">//Mouse stuff</span><span class="WHIT">
-<span class='line'>421</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mouse</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>422</span> </span><span class="NAME">mouse.getRelativeCanvasPosition</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>423</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>424</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">{</span><span class="NAME">x</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>425</span> </span><span class="WHIT"> </span><span class="NAME">xy.x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.layerX</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>426</span> </span><span class="WHIT"> </span><span class="NAME">xy.y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.layerY</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>427</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">xy</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>428</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>429</span>
-<span class='line'>430</span> </span><span class="COMM">//Events stuff</span><span class="WHIT">
-<span class='line'>431</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">master</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>432</span> </span><span class="NAME">master.buttons</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>433</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">handleEvents</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>434</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mouse.getRelativeCanvasPosition</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>435</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">master.buttons</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>436</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">master.buttons</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">isPointInPath</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">xy.x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">xy.y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>437</span> </span><span class="WHIT"> </span><span class="NAME">master.buttons</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">onClick</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>438</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>439</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>440</span> </span><span class="WHIT"> </span><span class="COMM">/*switch(ev.type){
-<span class='line'>441</span> case "click": break;
-<span class='line'>442</span> }*/</span><span class="WHIT">
-<span class='line'>443</span> </span><span class="WHIT"> </span><span class="COMM">/*var s="";
-<span class='line'>444</span> for (var i in ev) {
-<span class='line'>445</span> s+=i+"="+ev[i]+"\n";
-<span class='line'>446</span> }
-<span class='line'>447</span> alert(s);*/</span><span class="WHIT">
-<span class='line'>448</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>449</span>
-<span class='line'>450</span> </span><span class="COMM">/*
-<span class='line'>451</span> Master Class creator
-<span class='line'>452</span> supports multiple inheritance, warning it's NOT optimal
-<span class='line'>453</span> */</span><span class="WHIT">
-<span class='line'>454</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>455</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">log</span><span class="PUNC">=</span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>456</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>457</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">arguments.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>458</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">prototype</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>459</span> </span><span class="WHIT"> </span><span class="NAME">parents.push</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>460</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>461</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>462</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>463</span> </span><span class="WHIT"> </span><span class="COMM">//we inject all the init functions </span><span class="WHIT">
-<span class='line'>464</span> </span><span class="WHIT"> </span><span class="COMM">/*for ( var i = 0; i &lt; this.__parents.length; i++ ) {
-<span class='line'>465</span> this.__parents[ i ].apply ( this, arguments );
-<span class='line'>466</span> }*/</span><span class="WHIT">
-<span class='line'>467</span> </span><span class="WHIT"> </span><span class="COMM">//call the real class init</span><span class="WHIT">
-<span class='line'>468</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.init</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>469</span> </span><span class="WHIT"> </span><span class="NAME">this.init.apply</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>470</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>471</span>
-<span class='line'>472</span> </span><span class="WHIT"> </span><span class="NAME">o.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>473</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>474</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">arguments.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>475</span> </span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>476</span> </span><span class="WHIT"> </span><span class="NAME">log</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"**"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">+</span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>477</span> </span><span class="WHIT"> </span><span class="COMM">//if ( a === "function") {</span><span class="WHIT">
-<span class='line'>478</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a.prototype</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>479</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">a.prototype</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>480</span> </span><span class="WHIT"> </span><span class="COMM">//log += j+" = "+a.prototype[j]+"\n";</span><span class="WHIT">
-<span class='line'>481</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.prototype</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.prototype</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>482</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>483</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>484</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>485</span> </span><span class="WHIT"> </span><span class="COMM">//if ( typeof a === "object") {</span><span class="WHIT">
-<span class='line'>486</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>487</span> </span><span class="WHIT"> </span><span class="COMM">//log += j+" = "+a[j]+"\n";</span><span class="WHIT">
-<span class='line'>488</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.prototype</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>489</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>490</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>491</span> </span><span class="WHIT">
-<span class='line'>492</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>493</span> </span><span class="WHIT"> </span><span class="NAME">o.prototype.__parents</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>494</span> </span><span class="WHIT"> </span><span class="COMM">//alert( log );</span><span class="WHIT">
-<span class='line'>495</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">//(function ( ) { return new o( arguments );});</span><span class="WHIT">
-<span class='line'>496</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>497</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>498</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>499</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>500</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="NAME">options.localized</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"boolean"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>501</span> </span><span class="WHIT"> </span><span class="NAME">this.localized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.localized</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>502</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>503</span> </span><span class="WHIT"> </span><span class="NAME">this.localized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>504</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>505</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>506</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>507</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>508</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KGraphic</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>509</span> </span><span class="WHIT"> </span><span class="NAME">KObject</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>510</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>511</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>512</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options.localized</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>513</span> </span><span class="NAME">KObject.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options.localized</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>514</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>515</span> </span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>516</span> </span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>517</span> </span><span class="WHIT"> </span><span class="NAME">z</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>518</span> </span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>519</span> </span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>520</span> </span><span class="WHIT"> </span><span class="NAME">visible</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT">
-<span class='line'>521</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>522</span> </span><span class="WHIT"> </span><span class="NAME">$.extend</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>523</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>524</span> </span><span class="WHIT"> </span><span class="NAME">isPointInPath</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>525</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.x</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.x</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
-<span class='line'>526</span> </span><span class="NAME">this.y</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.y</span><span class="PUNC">+</span><span class="NAME">this.width</span><span class="PUNC">)</span><span class="PUNC">>=</span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>527</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>528</span> </span><span class="WHIT"> </span><span class="NAME">addEventListener</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bubble</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>529</span> </span><span class="WHIT"> </span><span class="COMM">//FIXME</span><span class="WHIT">
-<span class='line'>530</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>531</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>532</span> </span><span class="WHIT">
-<span class='line'>533</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>534</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>535</span>
-<span class='line'>536</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>537</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>538</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>539</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>540</span> </span><span class="WHIT"> </span><span class="NAME">this.childNodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>541</span> </span><span class="WHIT"> </span><span class="NAME">this.sorted</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>542</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>543</span> </span><span class="WHIT"> </span><span class="NAME">appendChild</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>544</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">arguments.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>545</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">arguments.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>546</span> </span><span class="WHIT"> </span><span class="NAME">this.childNodes.push</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>547</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>548</span> </span><span class="WHIT"> </span><span class="NAME">this.sorted</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>549</span> </span><span class="WHIT">
-<span class='line'>550</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>551</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>552</span> </span><span class="WHIT"> </span><span class="NAME">removeChild</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>553</span> </span><span class="WHIT"> </span><span class="COMM">//FIXME</span><span class="WHIT">
-<span class='line'>554</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>555</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>556</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.visible</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.childNodes.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>557</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.sorted</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>558</span> </span><span class="WHIT"> </span><span class="NAME">this.childNodes.sort</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">g1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">g2</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>559</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">g1.z</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">g2.z</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>560</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>561</span> </span><span class="WHIT"> </span><span class="NAME">this.sorted</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>562</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>563</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.childNodes</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>564</span> </span><span class="WHIT"> </span><span class="NAME">this.childNodes</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">draw</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>565</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>566</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>567</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>568</span> </span><span class="WHIT"> </span><span class="NAME">isPointInPath</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>569</span> </span><span class="WHIT">
-<span class='line'>570</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>571</span> </span><span class="WHIT">
-<span class='line'>572</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>573</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>574</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KMedia</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>575</span> </span><span class="WHIT"> </span><span class="NAME">KObject</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>576</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>577</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>578</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>579</span> </span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"file and type needed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>580</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>581</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>582</span> </span><span class="NAME">KObject.init.call</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>583</span> </span><span class="WHIT">
-<span class='line'>584</span> </span><span class="NAME">this.file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>585</span> </span><span class="WHIT"> </span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>586</span> </span><span class="WHIT">
-<span class='line'>587</span> </span><span class="NAME">this.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>588</span> </span><span class="WHIT"> </span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>589</span> </span><span class="WHIT"> </span><span class="NAME">this.media</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>590</span> </span><span class="WHIT"> </span><span class="KEYW">switch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>591</span> </span><span class="WHIT"> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"image"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.media</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Image</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>592</span> </span><span class="WHIT"> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"sound"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.media</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Audio</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>593</span> </span><span class="WHIT"> </span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"Media type not supported"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>594</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>595</span> </span><span class="WHIT"> </span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gk.paths</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"s"</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">[</span><span class="WHIT">
-<span class='line'>596</span> </span><span class="NAME">this.localized</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"localized"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"generic"</span><span class="WHIT">
-<span class='line'>597</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>598</span> </span><span class="WHIT"> </span><span class="NAME">this.media.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.file</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>599</span>
-<span class='line'>600</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">that</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>601</span> </span><span class="WHIT"> </span><span class="NAME">this.media.addEventListener</span><span class="PUNC">(</span><span class="STRN">"load"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>602</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">that.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"loaded"</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>603</span> </span><span class="WHIT"> </span><span class="NAME">this.media.addEventListener</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>604</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">that.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"error"</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>605</span> </span><span class="WHIT"> </span><span class="NAME">this.media.addEventListener</span><span class="PUNC">(</span><span class="STRN">"abort"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>606</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">that.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"aborted"</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>607</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>608</span> </span><span class="WHIT">
-<span class='line'>609</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>610</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>611</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KImage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>612</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>613</span> </span><span class="WHIT"> </span><span class="NAME">KMedia</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>614</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>615</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>616</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>617</span> </span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">:</span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>618</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>619</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>620</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>621</span> </span><span class="WHIT"> </span><span class="NAME">KMedia.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options.file</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"image"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>622</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>623</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>624</span> </span><span class="WHIT"> </span><span class="COMM">//w : undefined,</span><span class="WHIT">
-<span class='line'>625</span> </span><span class="WHIT"> </span><span class="COMM">//h : undefined,</span><span class="WHIT">
-<span class='line'>626</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>627</span> </span><span class="WHIT"> </span><span class="NAME">$.extend</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>628</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>629</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>630</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.visible</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>631</span> </span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>632</span> </span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>633</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.drawImage</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.media</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="WHIT"> </span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>634</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>635</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>636</span> </span><span class="WHIT"> </span><span class="NAME">isReady</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>637</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.media.complete</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>638</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.media.naturalWidth</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.media.naturalWidth</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>639</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>640</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>641</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>642</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>643</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>644</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KSound</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>645</span> </span><span class="WHIT"> </span><span class="NAME">KMedia</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>646</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>647</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>648</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>649</span> </span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>650</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>651</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>652</span> </span><span class="WHIT"> </span><span class="NAME">KMedia.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options.file</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"sound"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>653</span> </span><span class="WHIT"> </span><span class="COMM">//next line is important!</span><span class="WHIT">
-<span class='line'>654</span> </span><span class="WHIT"> </span><span class="NAME">this.media.load</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>655</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>656</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>657</span> </span><span class="WHIT"> </span><span class="NAME">isReady</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>658</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.readyState</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>659</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>660</span> </span><span class="WHIT"> </span><span class="NAME">play</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>661</span> </span><span class="WHIT"> </span><span class="NAME">this.media.play</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>662</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>663</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>664</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>665</span>
-<span class='line'>666</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KShape</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>667</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>668</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>669</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>670</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>671</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>672</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>673</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>674</span> </span><span class="WHIT"> </span><span class="NAME">fill</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>675</span> </span><span class="WHIT"> </span><span class="NAME">stroke</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>676</span> </span><span class="WHIT"> </span><span class="NAME">fillStyle</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'#000'</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>677</span> </span><span class="WHIT"> </span><span class="NAME">strokeStyle</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'#000'</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>678</span> </span><span class="WHIT"> </span><span class="NAME">openPath</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'>679</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>680</span> </span><span class="WHIT"> </span><span class="NAME">$.extend</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>681</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>682</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>683</span> </span><span class="WHIT"> </span><span class="COMM">//if ( this.visible ) {</span><span class="WHIT">
-<span class='line'>684</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.fillStyle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fillStyle</span><span class="WHIT">
-<span class='line'>685</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.strokeStyle</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.strokeStyle</span><span class="WHIT">
-<span class='line'>686</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.fill</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>687</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.fill</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>688</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.stroke</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>689</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.stroke</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>690</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.openPath</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>691</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.closePath</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>692</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.restore</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>693</span> </span><span class="WHIT"> </span><span class="COMM">//}</span><span class="WHIT">
-<span class='line'>694</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>695</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>696</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>697</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KRectangle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>698</span> </span><span class="WHIT"> </span><span class="NAME">KShape</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>699</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>700</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>701</span> </span><span class="WHIT"> </span><span class="COMM">//ADD multiple constructors support</span><span class="WHIT">
-<span class='line'>702</span> </span><span class="WHIT"> </span><span class="COMM">//x,y,w,h</span><span class="WHIT">
-<span class='line'>703</span> </span><span class="WHIT"> </span><span class="COMM">//w,y,w,h,options</span><span class="WHIT">
-<span class='line'>704</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>705</span> </span><span class="WHIT"> </span><span class="NAME">KShape.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>706</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>707</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>708</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>709</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.visible</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>710</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.save</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>711</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.beginPath</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>712</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.rect</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>713</span> </span><span class="WHIT"> </span><span class="NAME">KShape.draw.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>714</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>715</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>716</span> </span><span class="WHIT"> </span><span class="NAME">clear</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>717</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.visible</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>718</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.save</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>719</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.beginPath</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>720</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.clearRect</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>721</span> </span><span class="WHIT"> </span><span class="NAME">KShape.draw.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>722</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>723</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>724</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>725</span> </span><span class="WHIT">
-<span class='line'>726</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>727</span>
-<span class='line'>728</span> </span><span class="COMM">/**
-<span class='line'>729</span> * @constructor
-<span class='line'>730</span> * @augments KGraphic
-<span class='line'>731</span> */</span><span class="WHIT">
-<span class='line'>732</span> </span><span class="WHIT">
-<span class='line'>733</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KButton</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>734</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>735</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>736</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>737</span> </span><span class="WHIT"> </span><span class="COMM">//ADD multiple constructors support</span><span class="WHIT">
-<span class='line'>738</span> </span><span class="WHIT"> </span><span class="COMM">//x,y,w,h</span><span class="WHIT">
-<span class='line'>739</span> </span><span class="WHIT"> </span><span class="COMM">//w,y,w,h,options</span><span class="WHIT">
-<span class='line'>740</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>741</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>742</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>743</span> </span><span class="WHIT"> </span><span class="NAME">this.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.id</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>744</span> </span><span class="WHIT"> </span><span class="NAME">master.buttons.push</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>745</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>746</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>747</span> </span><span class="WHIT"> </span><span class="NAME">onClick</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="COMM">//callback</span><span class="WHIT">
-<span class='line'>748</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>749</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>750</span> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>751</span> </span><span class="COMM">//karma wrapper, we avoid using "new"</span><span class="WHIT">
-<span class='line'>752</span> </span><span class="NAME">$.karma</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>753</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">k</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Karma</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>754</span> </span><span class="WHIT"> </span><span class="COMM">//var x= new KGraphic( {localized: true })</span><span class="WHIT">
-<span class='line'>755</span> </span><span class="WHIT"> </span><span class="COMM">//var x = new KMedia( "file1", "image", {localized: true} );</span><span class="WHIT">
-<span class='line'>756</span> </span><span class="WHIT"> </span><span class="COMM">//var x = new KImage({file: "ball.png", localized: false, z: 0});</span><span class="WHIT">
-<span class='line'>757</span> </span><span class="WHIT"> </span><span class="COMM">//alert (x.localized)</span><span class="WHIT">
-<span class='line'>758</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>759</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>760</span> </span></pre></body></html> \ No newline at end of file
diff --git a/jsdoc/symbols/src/js_jquery.karma-0.3.js.html b/jsdoc/symbols/src/js_jquery.karma-0.3.js.html
deleted file mode 100644
index eb4ab82..0000000
--- a/jsdoc/symbols/src/js_jquery.karma-0.3.js.html
+++ /dev/null
@@ -1,721 +0,0 @@
-<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
- .KEYW {color: #933;}
- .COMM {color: #bbb; font-style: italic;}
- .NUMB {color: #393;}
- .STRN {color: #393;}
- .REGX {color: #339;}
- .line {border-right: 1px dotted #666; color: #666; font-style: normal;}
- </style></head><body><pre><span class='line'> 1</span> <span class="COMM">/*
-<span class='line'> 2</span> * Karma Framework
-<span class='line'> 3</span> * http://wiki.sugarlabs.org/go/Karma
-<span class='line'> 4</span> *
-<span class='line'> 5</span> * Copyright (c) 2009
-<span class='line'> 6</span> * Felipe L�pez Toledo zer.subzero@gmail.com
-<span class='line'> 7</span> * Bryan W Berry bryan@olenepal.org
-<span class='line'> 8</span> *
-<span class='line'> 9</span> * Under MIT License:
-<span class='line'> 10</span> * Permission is hereby granted, free of charge, to any person
-<span class='line'> 11</span> * obtaining a copy of this software and associated documentation
-<span class='line'> 12</span> * files (the "Software"), to deal in the Software without
-<span class='line'> 13</span> * restriction, including without limitation the rights to use,
-<span class='line'> 14</span> * copy, modify, merge, publish, distribute, sublicense, and/or sell
-<span class='line'> 15</span> * copies of the Software, and to permit persons to whom the
-<span class='line'> 16</span> * Software is furnished to do so, subject to the following
-<span class='line'> 17</span> * conditions:
-<span class='line'> 18</span> *
-<span class='line'> 19</span> * The above copyright notice and this permission notice shall be
-<span class='line'> 20</span> * included in all copies or substantial portions of the Software.
-<span class='line'> 21</span> *
-<span class='line'> 22</span> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-<span class='line'> 23</span> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-<span class='line'> 24</span> * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-<span class='line'> 25</span> * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-<span class='line'> 26</span> * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-<span class='line'> 27</span> * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-<span class='line'> 28</span> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-<span class='line'> 29</span> * OTHER DEALINGS IN THE SOFTWARE.
-<span class='line'> 30</span> */</span><span class="WHIT">
-<span class='line'> 31</span>
-<span class='line'> 32</span> </span><span class="COMM">/**
-<span class='line'> 33</span> * @author &lt;a href="mailto:zer.subzero@gmail.com">Felipe L�pez&lt;/a>
-<span class='line'> 34</span> */</span><span class="WHIT">
-<span class='line'> 35</span> </span><span class="WHIT">
-<span class='line'> 36</span> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">$</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 37</span> </span><span class="COMM">//helpers</span><span class="WHIT">
-<span class='line'> 38</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">arg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ret</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 39</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 40</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">arg</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ret</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 41</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'> 42</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'> 43</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">arg</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 44</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 45</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'> 46</span>
-<span class='line'> 47</span> </span><span class="COMM">/**
-<span class='line'> 48</span> * Karma
-<span class='line'> 49</span> * @class Represents a person.
-<span class='line'> 50</span> **/</span><span class="WHIT">
-<span class='line'> 51</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Karma</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 52</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">that</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 53</span> </span><span class="WHIT"> </span><span class="NAME">this.version</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"0.3 alpha"</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 54</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'> 55</span> </span><span class="WHIT"> </span><span class="COMM">//relative path to the po, images, sounds, etc. from the html</span><span class="WHIT">
-<span class='line'> 56</span> </span><span class="WHIT"> </span><span class="COMM">//defined here: http://wiki.sugarlabs.org/go/Karma/Bundle_layout</span><span class="WHIT">
-<span class='line'> 57</span> </span><span class="WHIT"> </span><span class="COMM">//localized is recalculated inside localizeContent ( $ = language.lang )</span><span class="WHIT">
-<span class='line'> 58</span> </span><span class="WHIT"> </span><span class="NAME">this.paths</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 59</span> </span><span class="WHIT"> </span><span class="NAME">po</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"po/"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 60</span> </span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 61</span> </span><span class="WHIT"> </span><span class="NAME">localized</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/$/images/"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 62</span> </span><span class="WHIT"> </span><span class="NAME">generic</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/generic/images/"</span><span class="WHIT">
-<span class='line'> 63</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 64</span> </span><span class="WHIT"> </span><span class="NAME">sounds</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 65</span> </span><span class="WHIT"> </span><span class="NAME">localized</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/$/sounds/"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 66</span> </span><span class="WHIT"> </span><span class="NAME">generic</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/generic/sounds/"</span><span class="WHIT">
-<span class='line'> 67</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 68</span> </span><span class="WHIT"> </span><span class="NAME">videos</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 69</span> </span><span class="WHIT"> </span><span class="NAME">localized</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/$/videos/"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 70</span> </span><span class="WHIT"> </span><span class="NAME">generic</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/generic/videos/"</span><span class="WHIT">
-<span class='line'> 71</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'> 72</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 73</span> </span><span class="WHIT"> </span><span class="NAME">this.supportedLangFileTypes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
-<span class='line'> 74</span> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">ext</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"po"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'application/x-po'</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 75</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">ext</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"json"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'application/json'</span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'> 76</span> </span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 77</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'> 78</span> </span><span class="WHIT"> </span><span class="COMM">//PRIVATE STUFF start</span><span class="WHIT">
-<span class='line'> 79</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'> 80</span> * getLanguage
-<span class='line'> 81</span> * get the language acording to the browser language
-<span class='line'> 82</span> */</span><span class="WHIT">
-<span class='line'> 83</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">getLanguage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 84</span> </span><span class="WHIT"> </span><span class="COMM">//console.log += navigator.language +"\n";</span><span class="WHIT">
-<span class='line'> 85</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">navigator.language</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">navigator.browserLanguage</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">//mozilla / ie</span><span class="WHIT">
-<span class='line'> 86</span> </span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.replace</span><span class="PUNC">(</span><span class="REGX">/_/</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'-'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 87</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">lang.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">3</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 88</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">country</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.substring</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 89</span> </span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.substring</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 90</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">country.match</span><span class="PUNC">(</span><span class="REGX">/[^a-zA-Z]/</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 91</span> </span><span class="WHIT"> </span><span class="NAME">country</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">country.toUpperCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 92</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 93</span> </span><span class="STRN">"lang"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">country</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 94</span> </span><span class="STRN">"langCode"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 95</span> </span><span class="STRN">"countryCode"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">country</span><span class="WHIT">
-<span class='line'> 96</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 97</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'> 98</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'> 99</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="STRN">"lang"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>100</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>101</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>102</span> *i18nWrapper
-<span class='line'>103</span> *creates a new Gettext object and returns a shortcut function to translate strings
-<span class='line'>104</span> *we use karma.Gettext.js it's a modification of Gettext.js http://jsgettext.berlios.de/doc/html/Gettext.html
-<span class='line'>105</span> */</span><span class="WHIT">
-<span class='line'>106</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i18nWrapper</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>107</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">gt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Gettext</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>108</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">gt</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>109</span> </span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"Unable to initialize Gettext object"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>110</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">str1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str4</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>111</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">singular</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plural</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>112</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">str4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>113</span> </span><span class="WHIT"> </span><span class="COMM">// number, context, singular, plural</span><span class="WHIT">
-<span class='line'>114</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">gt.npgettext</span><span class="PUNC">(</span><span class="NAME">str2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>115</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">str3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>116</span> </span><span class="WHIT"> </span><span class="COMM">// number, singular, plural</span><span class="WHIT">
-<span class='line'>117</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">gt.ngettext</span><span class="PUNC">(</span><span class="NAME">str2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>118</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">str2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>119</span> </span><span class="WHIT"> </span><span class="COMM">// context, msgid</span><span class="WHIT">
-<span class='line'>120</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">gt.pgettext</span><span class="PUNC">(</span><span class="NAME">str1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>121</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">str1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>122</span> </span><span class="WHIT"> </span><span class="COMM">// msgid</span><span class="WHIT">
-<span class='line'>123</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">gt.gettext</span><span class="PUNC">(</span><span class="NAME">str1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>124</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>125</span> </span><span class="WHIT"> </span><span class="COMM">// nothing passed in; return blank string.</span><span class="WHIT">
-<span class='line'>126</span> </span><span class="WHIT"> </span><span class="COMM">// XXX: we could error here, but that may cause more harm than good.</span><span class="WHIT">
-<span class='line'>127</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>128</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>129</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>130</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>131</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>132</span> *
-<span class='line'>133</span> */</span><span class="WHIT">
-<span class='line'>134</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">localiseContent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>135</span> </span><span class="WHIT">
-<span class='line'>136</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">toFix</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"images"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"sounds"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"videos"</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>137</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">toFix.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>138</span> </span><span class="WHIT"> </span><span class="NAME">that.paths</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">toFix</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">localized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">that.paths</span><span class="PUNC">[</span><span class="WHIT">
-<span class='line'>139</span> </span><span class="NAME">toFix</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">localized.replace</span><span class="PUNC">(</span><span class="STRN">'\$'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>140</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>141</span> </span><span class="WHIT"> </span><span class="COMM">//dirty hack to support {lang}_AudioClip</span><span class="WHIT">
-<span class='line'>142</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prefix</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.substring</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">"_"</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>143</span> </span><span class="WHIT"> </span><span class="NAME">that.paths</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="STRN">"sounds"</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">localized</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="NAME">prefix</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>144</span> </span><span class="WHIT"> </span><span class="NAME">that.paths</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="STRN">"sounds"</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">generic</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="NAME">prefix</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>145</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>146</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>147</span> *
-<span class='line'>148</span> */</span><span class="WHIT">
-<span class='line'>149</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">loadAlternatives</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>150</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">loaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>151</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tryNext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>152</span> </span><span class="WHIT"> </span><span class="COMM">//try to load the po or json language file if it exists. </span><span class="WHIT">
-<span class='line'>153</span> </span><span class="WHIT"> </span><span class="COMM">//the lang order is acording to options.language.alternatives</span><span class="WHIT">
-<span class='line'>154</span> </span><span class="WHIT"> </span><span class="COMM">//the type (po or json or ...) is defined in supportedLangFileTypes</span><span class="WHIT">
-<span class='line'>155</span> </span><span class="WHIT"> </span><span class="NAME">$.each</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">that.language.alternatives</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>156</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">that.supportedLangFileTypes.length</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">tryNext</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>157</span> </span><span class="WHIT"> </span><span class="NAME">$.ajax</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>158</span> </span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">that.paths.po</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"."</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">that.supportedLangFileTypes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">ext</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>159</span> </span><span class="WHIT"> </span><span class="NAME">cache</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>160</span> </span><span class="WHIT"> </span><span class="NAME">dataType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"text"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>161</span> </span><span class="WHIT"> </span><span class="NAME">async</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="COMM">//important: touch it at your own risk</span><span class="WHIT">
-<span class='line'>162</span> </span><span class="WHIT"> </span><span class="NAME">success</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">textStatus</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>163</span> </span><span class="WHIT">
-<span class='line'>164</span> </span><span class="NAME">loaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"."</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">that.supportedLangFileTypes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">ext</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>165</span> </span><span class="WHIT"> </span><span class="COMM">//i18n</span><span class="WHIT">
-<span class='line'>166</span> </span><span class="WHIT"> </span><span class="COMM">//we pass the data so we avoid re-loading the file</span><span class="WHIT">
-<span class='line'>167</span> </span><span class="WHIT"> </span><span class="COMM">//creates the shorcout</span><span class="WHIT">
-<span class='line'>168</span> </span><span class="WHIT"> </span><span class="NAME">that.i18n.root</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">that.i18n.shortcut</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">i18nWrapper</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>169</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>170</span> </span><span class="NAME">domain</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>171</span> </span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>172</span> </span><span class="NAME">type</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">that.supportedLangFileTypes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>173</span> </span><span class="NAME">uri</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.url</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT">
-<span class='line'>174</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>175</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>176</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>177</span> </span><span class="WHIT"> </span><span class="NAME">localiseContent</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>178</span> </span><span class="WHIT"> </span><span class="NAME">tryNext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>179</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>180</span> </span><span class="WHIT"> </span><span class="NAME">error</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">XHR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">textStatus</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">errorThrown</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>181</span> </span><span class="WHIT"> </span><span class="COMM">//the file doesn't exist or it wasn't possible to load it</span><span class="WHIT">
-<span class='line'>182</span> </span><span class="WHIT"> </span><span class="NAME">tryNext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>183</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>184</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>185</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">tryNext</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>186</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>187</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>188</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">loaded</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>189</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>190</span> </span><span class="WHIT"> </span><span class="COMM">//PRIVATE STUFF end</span><span class="WHIT">
-<span class='line'>191</span> </span><span class="WHIT"> </span><span class="COMM">// default options </span><span class="WHIT">
-<span class='line'>192</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>193</span> </span><span class="WHIT"> </span><span class="NAME">container</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"#karma-main"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>194</span> </span><span class="WHIT"> </span><span class="NAME">language</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>195</span> </span><span class="NAME">lang</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>196</span> </span><span class="WHIT"> </span><span class="NAME">alternatives</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">'en-US'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'en'</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>197</span> </span><span class="WHIT"> </span><span class="NAME">countryCode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>198</span> </span><span class="WHIT"> </span><span class="NAME">langCode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>199</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>200</span> </span><span class="WHIT"> </span><span class="NAME">i18n</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>201</span> </span><span class="WHIT"> </span><span class="NAME">root</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">self</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="COMM">// self is global</span><span class="WHIT">
-<span class='line'>202</span> </span><span class="WHIT"> </span><span class="NAME">shortcut</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"_"</span><span class="WHIT">
-<span class='line'>203</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>204</span> </span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>205</span> </span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>206</span> </span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>207</span> </span><span class="WHIT"> </span><span class="NAME">fps</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">24</span><span class="WHIT">
-<span class='line'>208</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>209</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>210</span>
-<span class='line'>211</span> </span><span class="WHIT"> </span><span class="NAME">this.library</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="STRN">"images"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"sounds"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"videos"</span><span class="PUNC">:</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"shapes"</span><span class="PUNC">:</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>212</span> </span><span class="WHIT">
-<span class='line'>213</span> </span><span class="COMM">//initializes the defaultOptions argument</span><span class="WHIT">
-<span class='line'>214</span> </span><span class="WHIT"> </span><span class="COMM">//1 argument: string. assume it's the container</span><span class="WHIT">
-<span class='line'>215</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>216</span> </span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">container</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>217</span> </span><span class="WHIT"> </span><span class="NAME">options.language</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">getLanguage</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>218</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"object"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>219</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">options.lang</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>220</span> </span><span class="WHIT"> </span><span class="COMM">//if language is string, assume it's the language.lang</span><span class="WHIT">
-<span class='line'>221</span> </span><span class="WHIT"> </span><span class="NAME">options.language</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">options.lang</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>222</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>223</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>224</span> </span><span class="WHIT"> </span><span class="NAME">$.extend</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>225</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>226</span> </span><span class="WHIT"> </span><span class="COMM">//copy defaultOptions to this, we use this.xyz instead this.defaultOptions.xyz </span><span class="WHIT">
-<span class='line'>227</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>228</span> </span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>229</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>230</span> </span><span class="WHIT">
-<span class='line'>231</span> </span><span class="COMM">//initializes i18n</span><span class="WHIT">
-<span class='line'>232</span> </span><span class="WHIT"> </span><span class="COMM">//add the localized language to the language.alternatives</span><span class="WHIT">
-<span class='line'>233</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">this.language.countryCode</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>234</span> </span><span class="WHIT"> </span><span class="NAME">this.language.alternatives.unshift</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>235</span> </span><span class="NAME">this.language.langCode</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>236</span> </span><span class="NAME">this.language.countryCode</span><span class="WHIT">
-<span class='line'>237</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>238</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>239</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">this.language.lang</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>240</span> </span><span class="WHIT"> </span><span class="NAME">this.language.alternatives.unshift</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.language.lang</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>241</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>242</span> </span><span class="WHIT"> </span><span class="COMM">//try to load the localized lang file (po or json or ...)</span><span class="WHIT">
-<span class='line'>243</span> </span><span class="WHIT"> </span><span class="NAME">this.language.fileLoaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">loadAlternatives</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>244</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>245</span>
-<span class='line'>246</span> </span><span class="WHIT"> </span><span class="COMM">//initializes the container</span><span class="WHIT">
-<span class='line'>247</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>248</span> </span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>249</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>250</span> </span><span class="WHIT"> </span><span class="COMM">//FIXME</span><span class="WHIT">
-<span class='line'>251</span> </span><span class="WHIT"> </span><span class="NAME">gk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>252</span> </span><span class="WHIT"> </span><span class="STRN">"paths"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.paths</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>253</span> </span><span class="WHIT"> </span><span class="STRN">"container"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="WHIT">
-<span class='line'>254</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>255</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>256</span>
-<span class='line'>257</span>
-<span class='line'>258</span> </span><span class="NAME">Karma.prototype.size</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>259</span> </span><span class="WHIT"> </span><span class="NAME">this.canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"canvas"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>260</span> </span><span class="WHIT">
-<span class='line'>261</span> </span><span class="NAME">this.canvas.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>262</span> </span><span class="WHIT"> </span><span class="NAME">this.canvas.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>263</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.canvas.getContext</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>264</span> </span><span class="WHIT"> </span><span class="NAME">this.ctx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.canvas.getContext</span><span class="PUNC">(</span><span class="STRN">"2d"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>265</span> </span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">appendChild</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.canvas</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>266</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>267</span> </span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"Your browser doesn't support canvas, \
-<span class='line'>268</span> try the newest Firefox, Safari or Google Chrome"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>269</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>270</span> </span><span class="WHIT"> </span><span class="COMM">//FIXME</span><span class="WHIT">
-<span class='line'>271</span> </span><span class="WHIT"> </span><span class="NAME">gk.canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.canvas</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>272</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.ctx</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>273</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>274</span> </span><span class="WHIT"> </span><span class="NAME">this.canvas.addEventListener</span><span class="PUNC">(</span><span class="STRN">"contextmenu"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>275</span> </span><span class="WHIT"> </span><span class="COMM">//alert("contextmenu");</span><span class="WHIT">
-<span class='line'>276</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'>277</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>278</span> </span><span class="WHIT"> </span><span class="NAME">this.canvas.addEventListener</span><span class="PUNC">(</span><span class="STRN">"click"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>279</span> </span><span class="NAME">handleEvents</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>280</span> </span><span class="WHIT"> </span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'>281</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>282</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>283</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>284</span> </span><span class="NAME">Karma.prototype.clear</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>285</span> </span><span class="WHIT"> </span><span class="NAME">this.ctx.clearRect</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>286</span> </span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>287</span> </span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>288</span> </span><span class="NAME">width</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.canvas.width</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>289</span> </span><span class="NAME">height</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.canvas.width</span><span class="WHIT">
-<span class='line'>290</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>291</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>292</span> </span><span class="COMM">//Karma packages</span><span class="WHIT">
-<span class='line'>293</span> </span><span class="NAME">Karma.prototype.geometry</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>294</span> </span><span class="WHIT"> </span><span class="NAME">radians</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">angle</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>295</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">angle</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">180</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">Math.PI</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>296</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>297</span> </span><span class="WHIT"> </span><span class="NAME">distance2</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>298</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">b.x</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">a.x</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">b.x</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">a.x</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">b.y</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">a.y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">b.y</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">a.y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>299</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>300</span> </span><span class="WHIT"> </span><span class="NAME">distance</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>301</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Math.sqrt</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">Karma.prototype.distance2</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>302</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>303</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>304</span> </span><span class="NAME">Karma.prototype.graphics</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>305</span> </span><span class="WHIT"> </span><span class="NAME">rectangle</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KRectangle</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>306</span> </span><span class="WHIT"> </span><span class="NAME">circle</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KCircle</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>307</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>308</span> </span><span class="NAME">Karma.prototype.math</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>309</span> </span><span class="WHIT"> </span><span class="NAME">rand</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">lower</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">upper</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>310</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Math.round</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">Math.random</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">upper</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">lower</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">lower</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>311</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>312</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>313</span> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>314</span> </span><span class="COMM">//everything inside karma.graphics is exported to karma.prototype</span><span class="WHIT">
-<span class='line'>315</span> </span><span class="NAME">$.extend</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">Karma.prototype</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Karma.prototype.graphics</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>316</span> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>317</span> </span><span class="NAME">Karma.prototype.init</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">array</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>318</span> </span><span class="WHIT"> </span><span class="NAME">this.pendingToLoad</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">array</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>319</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">//chaining :)</span><span class="WHIT">
-<span class='line'>320</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>321</span> </span><span class="NAME">Karma.prototype.main</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>322</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.pendingToLoad</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>323</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">that</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>324</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">categories</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"images"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"sounds"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"videos"</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>325</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">counters</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="STRN">"loaded"</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"error"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>326</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">totalItems</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>327</span> </span><span class="WHIT"> </span><span class="COMM">//get the total items</span><span class="WHIT">
-<span class='line'>328</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">categories.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>329</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.pendingToLoad</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">categories</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>330</span> </span><span class="WHIT"> </span><span class="NAME">totalItems</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.pendingToLoad</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">categories</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>331</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>332</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>333</span> </span><span class="WHIT"> </span><span class="COMM">//callback to check if all the items were loaded or got an error when loading</span><span class="WHIT">
-<span class='line'>334</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">checkAllLoaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>335</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev.type</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"load"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">counters.loaded</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>336</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="NAME">counters.error</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>337</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">counters.loaded</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">counters.error</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">totalItems</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>338</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>339</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>340</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>341</span> </span><span class="WHIT">
-<span class='line'>342</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">categories.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>343</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">categories</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>344</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.pendingToLoad</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>345</span> </span><span class="WHIT"> </span><span class="COMM">//load all the category elements</span><span class="WHIT">
-<span class='line'>346</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">category.substr</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">category.length</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>347</span> </span><span class="WHIT"> </span><span class="NAME">$.each</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.pendingToLoad</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">config</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>348</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.id</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>349</span> </span><span class="WHIT"> </span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">config.id</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>350</span> </span><span class="WHIT"> </span><span class="COMM">//register the elements into the library</span><span class="WHIT">
-<span class='line'>351</span> </span><span class="WHIT"> </span><span class="NAME">that.library</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Karma.prototype</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>352</span> </span><span class="NAME">config</span><span class="WHIT">
-<span class='line'>353</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>354</span> </span><span class="WHIT"> </span><span class="NAME">that.library</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">media.addEventListener</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>355</span> </span><span class="WHIT"> </span><span class="STRN">"load"</span><span class="PUNC">,</span><span class="NAME">checkAllLoaded</span><span class="PUNC">,</span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'>356</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>357</span> </span><span class="WHIT"> </span><span class="NAME">that.library</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">media.addEventListener</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>358</span> </span><span class="WHIT"> </span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="NAME">checkAllLoaded</span><span class="PUNC">,</span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'>359</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>360</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>361</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>362</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>363</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>364</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>365</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>366</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>367</span> </span><span class="NAME">Karma.prototype.image</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KImage</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>368</span> </span><span class="NAME">Karma.prototype.sound</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KSound</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>369</span> </span><span class="NAME">Karma.prototype.video</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">alert</span><span class="PUNC">(</span><span class="STRN">"Not implemented yet"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>370</span> </span><span class="NAME">Karma.prototype.group</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KGroup</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>371</span> </span><span class="NAME">Karma.prototype.group</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KGroup</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>372</span> </span><span class="NAME">Karma.prototype.button</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KButton</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>373</span>
-<span class='line'>374</span> </span><span class="COMM">//Mouse stuff</span><span class="WHIT">
-<span class='line'>375</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mouse</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>376</span> </span><span class="NAME">mouse.getRelativeCanvasPosition</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>377</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>378</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">{</span><span class="NAME">x</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>379</span> </span><span class="WHIT"> </span><span class="NAME">xy.x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.layerX</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>380</span> </span><span class="WHIT"> </span><span class="NAME">xy.y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.layerY</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>381</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">xy</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>382</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>383</span>
-<span class='line'>384</span> </span><span class="COMM">//Events stuff</span><span class="WHIT">
-<span class='line'>385</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">master</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>386</span> </span><span class="NAME">master.buttons</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>387</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">handleEvents</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>388</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mouse.getRelativeCanvasPosition</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>389</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">master.buttons</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>390</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">master.buttons</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">isPointInPath</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">xy.x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">xy.y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>391</span> </span><span class="WHIT"> </span><span class="NAME">master.buttons</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">onClick</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>392</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>393</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>394</span> </span><span class="WHIT"> </span><span class="COMM">/*switch(ev.type){
-<span class='line'>395</span> case "click": break;
-<span class='line'>396</span> }*/</span><span class="WHIT">
-<span class='line'>397</span> </span><span class="WHIT"> </span><span class="COMM">/*var s="";
-<span class='line'>398</span> for (var i in ev) {
-<span class='line'>399</span> s+=i+"="+ev[i]+"\n";
-<span class='line'>400</span> }
-<span class='line'>401</span> alert(s);*/</span><span class="WHIT">
-<span class='line'>402</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>403</span>
-<span class='line'>404</span> </span><span class="COMM">/*
-<span class='line'>405</span> Master Class creator
-<span class='line'>406</span> supports multiple inheritance, warning it's NOT optimal
-<span class='line'>407</span> */</span><span class="WHIT">
-<span class='line'>408</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>409</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">log</span><span class="PUNC">=</span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>410</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>411</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">arguments.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>412</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">prototype</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>413</span> </span><span class="WHIT"> </span><span class="NAME">parents.push</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>414</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>415</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>416</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>417</span> </span><span class="WHIT"> </span><span class="COMM">//we inject all the init functions </span><span class="WHIT">
-<span class='line'>418</span> </span><span class="WHIT"> </span><span class="COMM">/*for ( var i = 0; i &lt; this.__parents.length; i++ ) {
-<span class='line'>419</span> this.__parents[ i ].apply ( this, arguments );
-<span class='line'>420</span> }*/</span><span class="WHIT">
-<span class='line'>421</span> </span><span class="WHIT"> </span><span class="COMM">//call the real class init</span><span class="WHIT">
-<span class='line'>422</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.init</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>423</span> </span><span class="WHIT"> </span><span class="NAME">this.init.apply</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>424</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>425</span>
-<span class='line'>426</span> </span><span class="WHIT"> </span><span class="NAME">o.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>427</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>428</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">arguments.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>429</span> </span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>430</span> </span><span class="WHIT"> </span><span class="NAME">log</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"**"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">+</span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>431</span> </span><span class="WHIT"> </span><span class="COMM">//if ( a === "function") {</span><span class="WHIT">
-<span class='line'>432</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a.prototype</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>433</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">a.prototype</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>434</span> </span><span class="WHIT"> </span><span class="COMM">//log += j+" = "+a.prototype[j]+"\n";</span><span class="WHIT">
-<span class='line'>435</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.prototype</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.prototype</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>436</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>437</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>438</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>439</span> </span><span class="WHIT"> </span><span class="COMM">//if ( typeof a === "object") {</span><span class="WHIT">
-<span class='line'>440</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>441</span> </span><span class="WHIT"> </span><span class="COMM">//log += j+" = "+a[j]+"\n";</span><span class="WHIT">
-<span class='line'>442</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.prototype</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>443</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>444</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>445</span> </span><span class="WHIT">
-<span class='line'>446</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>447</span> </span><span class="WHIT"> </span><span class="NAME">o.prototype.__parents</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>448</span> </span><span class="WHIT"> </span><span class="COMM">//alert( log );</span><span class="WHIT">
-<span class='line'>449</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">//(function ( ) { return new o( arguments );});</span><span class="WHIT">
-<span class='line'>450</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>451</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>452</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>453</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>454</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="NAME">options.localized</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"boolean"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>455</span> </span><span class="WHIT"> </span><span class="NAME">this.localized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.localized</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>456</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>457</span> </span><span class="WHIT"> </span><span class="NAME">this.localized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>458</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>459</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>460</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>461</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>462</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KGraphic</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>463</span> </span><span class="WHIT"> </span><span class="NAME">KObject</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>464</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>465</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>466</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options.localized</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>467</span> </span><span class="NAME">KObject.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options.localized</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>468</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>469</span> </span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>470</span> </span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>471</span> </span><span class="WHIT"> </span><span class="NAME">z</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>472</span> </span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>473</span> </span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>474</span> </span><span class="WHIT"> </span><span class="NAME">visible</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT">
-<span class='line'>475</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>476</span> </span><span class="WHIT"> </span><span class="NAME">$.extend</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>477</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>478</span> </span><span class="WHIT"> </span><span class="NAME">isPointInPath</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>479</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.x</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.x</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
-<span class='line'>480</span> </span><span class="NAME">this.y</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.y</span><span class="PUNC">+</span><span class="NAME">this.width</span><span class="PUNC">)</span><span class="PUNC">>=</span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>481</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>482</span> </span><span class="WHIT"> </span><span class="NAME">addEventListener</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bubble</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>483</span> </span><span class="WHIT"> </span><span class="COMM">//FIXME</span><span class="WHIT">
-<span class='line'>484</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>485</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>486</span> </span><span class="WHIT">
-<span class='line'>487</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>488</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>489</span>
-<span class='line'>490</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>491</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>492</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>493</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>494</span> </span><span class="WHIT"> </span><span class="NAME">this.childNodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>495</span> </span><span class="WHIT"> </span><span class="NAME">this.sorted</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>496</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>497</span> </span><span class="WHIT"> </span><span class="NAME">appendChild</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>498</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">arguments.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>499</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">arguments.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>500</span> </span><span class="WHIT"> </span><span class="NAME">this.childNodes.push</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>501</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>502</span> </span><span class="WHIT"> </span><span class="NAME">this.sorted</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>503</span> </span><span class="WHIT">
-<span class='line'>504</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>505</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>506</span> </span><span class="WHIT"> </span><span class="NAME">removeChild</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>507</span> </span><span class="WHIT"> </span><span class="COMM">//FIXME</span><span class="WHIT">
-<span class='line'>508</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>509</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>510</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.visible</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.childNodes.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>511</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.sorted</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>512</span> </span><span class="WHIT"> </span><span class="NAME">this.childNodes.sort</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">g1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">g2</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>513</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">g1.z</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">g2.z</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>514</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>515</span> </span><span class="WHIT"> </span><span class="NAME">this.sorted</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>516</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>517</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.childNodes</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>518</span> </span><span class="WHIT"> </span><span class="NAME">this.childNodes</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">draw</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>519</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>520</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>521</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>522</span> </span><span class="WHIT"> </span><span class="NAME">isPointInPath</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>523</span> </span><span class="WHIT">
-<span class='line'>524</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>525</span> </span><span class="WHIT">
-<span class='line'>526</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>527</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>528</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KMedia</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>529</span> </span><span class="WHIT"> </span><span class="NAME">KObject</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>530</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>531</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>532</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>533</span> </span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"file and type needed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>534</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>535</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>536</span> </span><span class="NAME">KObject.init.call</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>537</span> </span><span class="WHIT">
-<span class='line'>538</span> </span><span class="NAME">this.file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>539</span> </span><span class="WHIT"> </span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>540</span> </span><span class="WHIT">
-<span class='line'>541</span> </span><span class="NAME">this.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>542</span> </span><span class="WHIT"> </span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>543</span> </span><span class="WHIT"> </span><span class="NAME">this.media</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>544</span> </span><span class="WHIT"> </span><span class="KEYW">switch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>545</span> </span><span class="WHIT"> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"image"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.media</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Image</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>546</span> </span><span class="WHIT"> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"sound"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.media</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Audio</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>547</span> </span><span class="WHIT"> </span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"Media type not supported"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>548</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>549</span> </span><span class="WHIT"> </span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gk.paths</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"s"</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">[</span><span class="WHIT">
-<span class='line'>550</span> </span><span class="NAME">this.localized</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"localized"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"generic"</span><span class="WHIT">
-<span class='line'>551</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>552</span> </span><span class="WHIT"> </span><span class="NAME">this.media.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.file</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>553</span>
-<span class='line'>554</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">that</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>555</span> </span><span class="WHIT"> </span><span class="NAME">this.media.addEventListener</span><span class="PUNC">(</span><span class="STRN">"load"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>556</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">that.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"loaded"</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>557</span> </span><span class="WHIT"> </span><span class="NAME">this.media.addEventListener</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>558</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">that.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"error"</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>559</span> </span><span class="WHIT"> </span><span class="NAME">this.media.addEventListener</span><span class="PUNC">(</span><span class="STRN">"abort"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>560</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">that.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"aborted"</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>561</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>562</span> </span><span class="WHIT">
-<span class='line'>563</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>564</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>565</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KImage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>566</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>567</span> </span><span class="WHIT"> </span><span class="NAME">KMedia</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>568</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>569</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>570</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>571</span> </span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">:</span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>572</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>573</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>574</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>575</span> </span><span class="WHIT"> </span><span class="NAME">KMedia.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options.file</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"image"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>576</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>577</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>578</span> </span><span class="WHIT"> </span><span class="COMM">//w : undefined,</span><span class="WHIT">
-<span class='line'>579</span> </span><span class="WHIT"> </span><span class="COMM">//h : undefined,</span><span class="WHIT">
-<span class='line'>580</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>581</span> </span><span class="WHIT"> </span><span class="NAME">$.extend</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>582</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>583</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>584</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.visible</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>585</span> </span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>586</span> </span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>587</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.drawImage</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.media</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="WHIT"> </span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>588</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>589</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>590</span> </span><span class="WHIT"> </span><span class="NAME">isReady</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>591</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.media.complete</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>592</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.media.naturalWidth</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.media.naturalWidth</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>593</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>594</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>595</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>596</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>597</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>598</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KSound</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>599</span> </span><span class="WHIT"> </span><span class="NAME">KMedia</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>600</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>601</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>602</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>603</span> </span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>604</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>605</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>606</span> </span><span class="WHIT"> </span><span class="NAME">KMedia.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options.file</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"sound"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>607</span> </span><span class="WHIT"> </span><span class="COMM">//next line is important!</span><span class="WHIT">
-<span class='line'>608</span> </span><span class="WHIT"> </span><span class="NAME">this.media.load</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>609</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>610</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>611</span> </span><span class="WHIT"> </span><span class="NAME">isReady</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>612</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.readyState</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>613</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>614</span> </span><span class="WHIT"> </span><span class="NAME">play</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>615</span> </span><span class="WHIT"> </span><span class="NAME">this.media.play</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>616</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>617</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>618</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>619</span>
-<span class='line'>620</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KShape</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>621</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>622</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>623</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>624</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>625</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>626</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>627</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>628</span> </span><span class="WHIT"> </span><span class="NAME">fill</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>629</span> </span><span class="WHIT"> </span><span class="NAME">stroke</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>630</span> </span><span class="WHIT"> </span><span class="NAME">fillStyle</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'#000'</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>631</span> </span><span class="WHIT"> </span><span class="NAME">strokeStyle</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'#000'</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>632</span> </span><span class="WHIT"> </span><span class="NAME">openPath</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'>633</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>634</span> </span><span class="WHIT"> </span><span class="NAME">$.extend</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>635</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>636</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>637</span> </span><span class="WHIT"> </span><span class="COMM">//if ( this.visible ) {</span><span class="WHIT">
-<span class='line'>638</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.fillStyle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fillStyle</span><span class="WHIT">
-<span class='line'>639</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.strokeStyle</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.strokeStyle</span><span class="WHIT">
-<span class='line'>640</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.fill</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>641</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.fill</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>642</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.stroke</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>643</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.stroke</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>644</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.openPath</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>645</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.closePath</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>646</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.restore</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>647</span> </span><span class="WHIT"> </span><span class="COMM">//}</span><span class="WHIT">
-<span class='line'>648</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>649</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>650</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>651</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KRectangle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>652</span> </span><span class="WHIT"> </span><span class="NAME">KShape</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>653</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>654</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>655</span> </span><span class="WHIT"> </span><span class="COMM">//ADD multiple constructors support</span><span class="WHIT">
-<span class='line'>656</span> </span><span class="WHIT"> </span><span class="COMM">//x,y,w,h</span><span class="WHIT">
-<span class='line'>657</span> </span><span class="WHIT"> </span><span class="COMM">//w,y,w,h,options</span><span class="WHIT">
-<span class='line'>658</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>659</span> </span><span class="WHIT"> </span><span class="NAME">KShape.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>660</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>661</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>662</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>663</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.visible</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>664</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.save</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>665</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.beginPath</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>666</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.rect</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>667</span> </span><span class="WHIT"> </span><span class="NAME">KShape.draw.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>668</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>669</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>670</span> </span><span class="WHIT"> </span><span class="NAME">clear</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>671</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.visible</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>672</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.save</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>673</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.beginPath</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>674</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.clearRect</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>675</span> </span><span class="WHIT"> </span><span class="NAME">KShape.draw.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>676</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>677</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>678</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>679</span> </span><span class="WHIT">
-<span class='line'>680</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>681</span>
-<span class='line'>682</span> </span><span class="COMM">/**
-<span class='line'>683</span> * @constructor
-<span class='line'>684</span> * @augments KGraphic
-<span class='line'>685</span> */</span><span class="WHIT">
-<span class='line'>686</span> </span><span class="WHIT">
-<span class='line'>687</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KButton</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>688</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>689</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>690</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>691</span> </span><span class="WHIT"> </span><span class="COMM">//ADD multiple constructors support</span><span class="WHIT">
-<span class='line'>692</span> </span><span class="WHIT"> </span><span class="COMM">//x,y,w,h</span><span class="WHIT">
-<span class='line'>693</span> </span><span class="WHIT"> </span><span class="COMM">//w,y,w,h,options</span><span class="WHIT">
-<span class='line'>694</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>695</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>696</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>697</span> </span><span class="WHIT"> </span><span class="NAME">this.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.id</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>698</span> </span><span class="WHIT"> </span><span class="NAME">master.buttons.push</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>699</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>700</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>701</span> </span><span class="WHIT"> </span><span class="NAME">onClick</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="COMM">//callback</span><span class="WHIT">
-<span class='line'>702</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>703</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>704</span> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>705</span> </span><span class="COMM">//karma wrapper, we avoid using "new"</span><span class="WHIT">
-<span class='line'>706</span> </span><span class="NAME">$.karma</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>707</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">k</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Karma</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>708</span> </span><span class="WHIT"> </span><span class="COMM">//var x= new KGraphic( {localized: true })</span><span class="WHIT">
-<span class='line'>709</span> </span><span class="WHIT"> </span><span class="COMM">//var x = new KMedia( "file1", "image", {localized: true} );</span><span class="WHIT">
-<span class='line'>710</span> </span><span class="WHIT"> </span><span class="COMM">//var x = new KImage({file: "ball.png", localized: false, z: 0});</span><span class="WHIT">
-<span class='line'>711</span> </span><span class="WHIT"> </span><span class="COMM">//alert (x.localized)</span><span class="WHIT">
-<span class='line'>712</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>713</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>714</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="NAME">jQuery</span><span class="PUNC">)</span><span class="PUNC">;</span></pre></body></html> \ No newline at end of file
diff --git a/jsdoc/symbols/src/js_jquery.karma-0.4.js.html b/jsdoc/symbols/src/js_jquery.karma-0.4.js.html
deleted file mode 100644
index 188cf21..0000000
--- a/jsdoc/symbols/src/js_jquery.karma-0.4.js.html
+++ /dev/null
@@ -1,979 +0,0 @@
-<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
- .KEYW {color: #933;}
- .COMM {color: #bbb; font-style: italic;}
- .NUMB {color: #393;}
- .STRN {color: #393;}
- .REGX {color: #339;}
- .line {border-right: 1px dotted #666; color: #666; font-style: normal;}
- </style></head><body><pre><span class='line'> 1</span> <span class="TOKN"></span><span class="COMM">/*
-<span class='line'> 2</span> * Karma Framework
-<span class='line'> 3</span> * http://wiki.sugarlabs.org/go/Karma
-<span class='line'> 4</span> *
-<span class='line'> 5</span> * Copyright (c) 2009
-<span class='line'> 6</span> * Felipe López Toledo zer.subzero@gmail.com
-<span class='line'> 7</span> * Bryan W Berry bryan@olenepal.org
-<span class='line'> 8</span> *
-<span class='line'> 9</span> * Under MIT License:
-<span class='line'> 10</span> * Permission is hereby granted, free of charge, to any person
-<span class='line'> 11</span> * obtaining a copy of this software and associated documentation
-<span class='line'> 12</span> * files (the "Software"), to deal in the Software without
-<span class='line'> 13</span> * restriction, including without limitation the rights to use,
-<span class='line'> 14</span> * copy, modify, merge, publish, distribute, sublicense, and/or sell
-<span class='line'> 15</span> * copies of the Software, and to permit persons to whom the
-<span class='line'> 16</span> * Software is furnished to do so, subject to the following
-<span class='line'> 17</span> * conditions:
-<span class='line'> 18</span> *
-<span class='line'> 19</span> * The above copyright notice and this permission notice shall be
-<span class='line'> 20</span> * included in all copies or substantial portions of the Software.
-<span class='line'> 21</span> *
-<span class='line'> 22</span> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-<span class='line'> 23</span> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-<span class='line'> 24</span> * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-<span class='line'> 25</span> * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-<span class='line'> 26</span> * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-<span class='line'> 27</span> * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-<span class='line'> 28</span> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-<span class='line'> 29</span> * OTHER DEALINGS IN THE SOFTWARE.
-<span class='line'> 30</span> */</span><span class="WHIT">
-<span class='line'> 31</span>
-<span class='line'> 32</span> </span><span class="COMM">//(function ($) {</span><span class="WHIT">
-<span class='line'> 33</span> </span><span class="COMM">//helpers</span><span class="WHIT">
-<span class='line'> 34</span> </span><span class="COMM">/**
-<span class='line'> 35</span> Checks if the argument (arg) is seted and if its type is 'type'.&lt;br>
-<span class='line'> 36</span> 1. if arg is seted: it returns toReturn if specified, otherwise it returns
-<span class='line'> 37</span> 'true'
-<span class='line'> 38</span> 2. if arg is not seted: it returns 'false'
-<span class='line'> 39</span> @param arg The param to check
-<span class='line'> 40</span> @param {Object} [type] The expeted type of 'arg'
-<span class='line'> 41</span> @param [toReturn] object or value to return in case 1
-<span class='line'> 42</span> @returns true | false | toReturn
-<span class='line'> 43</span> @example
-<span class='line'> 44</span> var msg = "hi";
-<span class='line'> 45</span> valid(msg); //returns true
-<span class='line'> 46</span> valid(msg, "String" ); //returns true
-<span class='line'> 47</span> valid(msg, "Number"); //returns false
-<span class='line'> 48</span> valid(msg, "String",false ); //returns false
-<span class='line'> 49</span> valid(msg123); //returns false
-<span class='line'> 50</span> **/</span><span class="WHIT">
-<span class='line'> 51</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">arg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">toReturn</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 52</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 53</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">arg</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 54</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">toReturn</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'> 55</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">toReturn</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 56</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 57</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'> 58</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'> 59</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'> 60</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">arg</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 61</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 62</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'> 63</span>
-<span class='line'> 64</span> </span><span class="WHIT">
-<span class='line'> 65</span> </span><span class="COMM">/**
-<span class='line'> 66</span> Karma
-<span class='line'> 67</span> @class Represents a Karma (master) object.
-<span class='line'> 68</span> @param {String | Object } options Constructor arguments
-<span class='line'> 69</span> @param {String | Object } [options.container] Target DIV-class that will contain
-<span class='line'> 70</span> any canvas element created using Karma functions
-<span class='line'> 71</span> @param {String} [options.language]
-<span class='line'> 72</span> &lt;ul>
-<span class='line'> 73</span> &lt;li>if it's seted:
-<span class='line'> 74</span> Karma will assume that the according language file exists and Karma will try
-<span class='line'> 75</span> to load it.&lt;li>
-<span class='line'> 76</span> &lt;li>if it's not seted:
-<span class='line'> 77</span> Karma will localise the content according to the Browser language
-<span class='line'> 78</span> &lt;/li>
-<span class='line'> 79</span> &lt;/ul>
-<span class='line'> 80</span> @param {Array} [options.language.alternatives]
-<span class='line'> 81</span> Alternatives for localizing the content. The first has the priority.
-<span class='line'> 82</span> @param {Object} [options.i18n] Object that contains data for i18n.
-<span class='line'> 83</span> @param {Object | String} [options.i18n.root=self]
-<span class='line'> 84</span> Parent element where the i18n shortcut function will be attached.
-<span class='line'> 85</span> @param {String} [options.i18n.shortcut=_] Shortcut for calling i18n.
-<span class='line'> 86</span> @param {Number} [options.fps=24]
-<span class='line'> 87</span> Frames per second at which Karma will perform any refresh action.
-<span class='line'> 88</span> @version 0.3 alpha
-<span class='line'> 89</span> **/</span><span class="WHIT">
-<span class='line'> 90</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Karma</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 91</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">that</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 92</span> </span><span class="WHIT"> </span><span class="NAME">this.version</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"0.3 alpha"</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'> 93</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'> 94</span> </span><span class="WHIT"> </span><span class="COMM">//relative path to the po, images, sounds, etc. from the html</span><span class="WHIT">
-<span class='line'> 95</span> </span><span class="WHIT"> </span><span class="COMM">//defined here: http://wiki.sugarlabs.org/go/Karma/Bundle_layout</span><span class="WHIT">
-<span class='line'> 96</span> </span><span class="WHIT"> </span><span class="COMM">//localized is recalculated inside localizeContent ( $ = language.lang )</span><span class="WHIT">
-<span class='line'> 97</span> </span><span class="WHIT"> </span><span class="NAME">this.paths</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'> 98</span> </span><span class="WHIT"> </span><span class="NAME">po</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"po/"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'> 99</span> </span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>100</span> </span><span class="WHIT"> </span><span class="NAME">localized</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/$/images/"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>101</span> </span><span class="WHIT"> </span><span class="NAME">generic</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/generic/images/"</span><span class="WHIT">
-<span class='line'>102</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>103</span> </span><span class="WHIT"> </span><span class="NAME">sounds</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>104</span> </span><span class="WHIT"> </span><span class="NAME">localized</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/$/sounds/"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>105</span> </span><span class="WHIT"> </span><span class="NAME">generic</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/generic/sounds/"</span><span class="WHIT">
-<span class='line'>106</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>107</span> </span><span class="WHIT"> </span><span class="NAME">videos</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>108</span> </span><span class="WHIT"> </span><span class="NAME">localized</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/$/videos/"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>109</span> </span><span class="WHIT"> </span><span class="NAME">generic</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"assets/generic/videos/"</span><span class="WHIT">
-<span class='line'>110</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>111</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>112</span> </span><span class="WHIT"> </span><span class="NAME">this.supportedLangFileTypes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
-<span class='line'>113</span> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">ext</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"po"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'application/x-po'</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>114</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">ext</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"json"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'application/json'</span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>115</span> </span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>116</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>117</span> </span><span class="WHIT"> </span><span class="COMM">//PRIVATE STUFF start</span><span class="WHIT">
-<span class='line'>118</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>119</span> Gets the language acording to the browser language
-<span class='line'>120</span> @returns {Object} &lt;br>
-<span class='line'>121</span> lang: countryCode and langCode (if specified)
-<span class='line'>122</span> langCode*: language code represented as xx, example: en.&lt;br>
-<span class='line'>123</span> countryCode*: country code represented as YY, example: US.&lt;br>
-<span class='line'>124</span> *optional
-<span class='line'>125</span> **/</span><span class="WHIT">
-<span class='line'>126</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">getLanguage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>127</span> </span><span class="WHIT"> </span><span class="COMM">//console.log += navigator.language +"\n";</span><span class="WHIT">
-<span class='line'>128</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">navigator.language</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">navigator.browserLanguage</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">//mozilla/ie</span><span class="WHIT">
-<span class='line'>129</span> </span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.replace</span><span class="PUNC">(</span><span class="REGX">/_/</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'-'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>130</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">lang.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">3</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>131</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">country</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.substring</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>132</span> </span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.substring</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>133</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">country.match</span><span class="PUNC">(</span><span class="REGX">/[^a-zA-Z]/</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>134</span> </span><span class="WHIT"> </span><span class="NAME">country</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">country.toUpperCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>135</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>136</span> </span><span class="STRN">"lang"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">country</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>137</span> </span><span class="STRN">"langCode"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>138</span> </span><span class="STRN">"countryCode"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">country</span><span class="WHIT">
-<span class='line'>139</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>140</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>141</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>142</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="STRN">"lang"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>143</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>144</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>145</span> Creates a new Gettext object and returns a shortcut function to localise
-<span class='line'>146</span> defined strings.&lt;br>We use karma.Gettext.js it's a modification of
-<span class='line'>147</span> &lt;a href=http://jsgettext.berlios.de/doc/html/Gettext.html>
-<span class='line'>148</span> Gettext.js&lt;/a> from beril OS.
-<span class='line'>149</span> @requires karma.Gettext.js
-<span class='line'>150</span> @param {Object} options The arguments of the Gettext constructor
-<span class='line'>151</span> @returns {Function} A generic function to call Gettext functions
-<span class='line'>152</span> The generic function will call a Gettext function according to the number of arguments passed
-<span class='line'>153</span> &lt;table>
-<span class='line'>154</span> &lt;tr>
-<span class='line'>155</span> &lt;th>No. params&lt;/th>
-<span class='line'>156</span> &lt;th>Parameters&lt;/th>
-<span class='line'>157</span> &lt;th>Gettext function called&lt;/th>
-<span class='line'>158</span> &lt;/tr>
-<span class='line'>159</span> &lt;tr>
-<span class='line'>160</span> &lt;td>1&lt;/td>
-<span class='line'>161</span> &lt;td>msgid&lt;/td>
-<span class='line'>162</span> &lt;td>gettext&lt;/td>
-<span class='line'>163</span> &lt;tr>
-<span class='line'>164</span> &lt;td>2&lt;/td>
-<span class='line'>165</span> &lt;td>context, msgid&lt;/td>
-<span class='line'>166</span> &lt;td>pgettext&lt;/td>
-<span class='line'>167</span> &lt;/tr>
-<span class='line'>168</span> &lt;tr>
-<span class='line'>169</span> &lt;td>3&lt;/td>
-<span class='line'>170</span> &lt;td>number, singular, plural&lt;/td>
-<span class='line'>171</span> &lt;td>ngettext&lt;/td>
-<span class='line'>172</span> &lt;/tr>
-<span class='line'>173</span> &lt;tr>
-<span class='line'>174</span> &lt;td>4&lt;/td>
-<span class='line'>175</span> &lt;td>number, context, singular, plural&lt;/td>
-<span class='line'>176</span> &lt;td>npgettext&lt;/td>
-<span class='line'>177</span> &lt;/tr>
-<span class='line'>178</span> &lt;/table>
-<span class='line'>179</span> **/</span><span class="WHIT">
-<span class='line'>180</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i18nWrapper</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>181</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">gt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Gettext</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>182</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">gt</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>183</span> </span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"Unable to initialize Gettext object"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>184</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">str1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str4</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>185</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">singular</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plural</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>186</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">str4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>187</span> </span><span class="WHIT"> </span><span class="COMM">// number, context, singular, plural</span><span class="WHIT">
-<span class='line'>188</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">gt.npgettext</span><span class="PUNC">(</span><span class="NAME">str2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>189</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">str3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>190</span> </span><span class="WHIT"> </span><span class="COMM">// number, singular, plural</span><span class="WHIT">
-<span class='line'>191</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">gt.ngettext</span><span class="PUNC">(</span><span class="NAME">str2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>192</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">str2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>193</span> </span><span class="WHIT"> </span><span class="COMM">// context, msgid</span><span class="WHIT">
-<span class='line'>194</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">gt.pgettext</span><span class="PUNC">(</span><span class="NAME">str1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>195</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">str1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>196</span> </span><span class="WHIT"> </span><span class="COMM">// msgid</span><span class="WHIT">
-<span class='line'>197</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">gt.gettext</span><span class="PUNC">(</span><span class="NAME">str1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>198</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>199</span> </span><span class="WHIT"> </span><span class="COMM">// nothing passed in; return blank string.</span><span class="WHIT">
-<span class='line'>200</span> </span><span class="WHIT"> </span><span class="COMM">// XXX: we could error here, but that may cause more harm than good.</span><span class="WHIT">
-<span class='line'>201</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>202</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>203</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>204</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>205</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>206</span> Localises the inline html content and it creates the localised paths for
-<span class='line'>207</span> "images", "sounds" and "videos".
-<span class='line'>208</span> &lt;b>Note:&lt;/b>Inline html localisation under development&lt;br>
-<span class='line'>209</span> @param {String} lang The language that will be used to localise the content
-<span class='line'>210</span> @see &lt;a href="http://wiki.sugarlabs.org/go/Karma/Bundle_layout">
-<span class='line'>211</span> Karma Bundle_layout&lt;/a>
-<span class='line'>212</span> **/</span><span class="WHIT">
-<span class='line'>213</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">localiseContent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>214</span> </span><span class="WHIT">
-<span class='line'>215</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">toFix</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"images"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"sounds"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"videos"</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>216</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">toFix.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>217</span> </span><span class="WHIT"> </span><span class="NAME">that.paths</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">toFix</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">localized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">that.paths</span><span class="PUNC">[</span><span class="WHIT">
-<span class='line'>218</span> </span><span class="NAME">toFix</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">localized.replace</span><span class="PUNC">(</span><span class="STRN">'\$'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>219</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>220</span> </span><span class="WHIT"> </span><span class="COMM">//dirty hack to support {lang}_AudioFile</span><span class="WHIT">
-<span class='line'>221</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prefix</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.substring</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">"_"</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>222</span> </span><span class="WHIT"> </span><span class="NAME">that.paths</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="STRN">"sounds"</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">localized</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="NAME">prefix</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>223</span> </span><span class="WHIT"> </span><span class="NAME">that.paths</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="STRN">"sounds"</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">generic</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="NAME">prefix</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>224</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>225</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>226</span> It will attempt to load a language file, the posible languages are defined
-<span class='line'>227</span> on language.alternatives.
-<span class='line'>228</span> &lt;p>The language file type could be: .po (Pootle) or .json (JSON). The
-<span class='line'>229</span> precedence between file types is defined according to which is defined first
-<span class='line'>230</span> in supportedLangFileTypes. By default Pootle files has precedence over JSON,
-<span class='line'>231</span> files.&lt;/p>
-<span class='line'>232</span> @see Karma
-<span class='line'>233</span> @returns {String} The name of the language file loaded. Example: en-US.po
-<span class='line'>234</span> **/</span><span class="WHIT">
-<span class='line'>235</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">loadAlternatives</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>236</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">loaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>237</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tryNext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>238</span> </span><span class="WHIT"> </span><span class="COMM">//try to load the po or json language file if it exists. </span><span class="WHIT">
-<span class='line'>239</span> </span><span class="WHIT"> </span><span class="COMM">//the lang order is acording to options.language.alternatives</span><span class="WHIT">
-<span class='line'>240</span> </span><span class="WHIT"> </span><span class="COMM">//the type (po or json or ...) is defined in supportedLangFileTypes</span><span class="WHIT">
-<span class='line'>241</span> </span><span class="WHIT"> </span><span class="NAME">$.each</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">that.language.alternatives</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>242</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">that.supportedLangFileTypes.length</span><span class="WHIT">
-<span class='line'>243</span> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">tryNext</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>244</span> </span><span class="WHIT"> </span><span class="NAME">$.ajax</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>245</span> </span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">that.paths.po</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"."</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
-<span class='line'>246</span> </span><span class="NAME">that.supportedLangFileTypes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">ext</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>247</span> </span><span class="WHIT"> </span><span class="NAME">cache</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>248</span> </span><span class="WHIT"> </span><span class="NAME">dataType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"text"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>249</span> </span><span class="WHIT"> </span><span class="NAME">async</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="COMM">//important: touch it at your own risk</span><span class="WHIT">
-<span class='line'>250</span> </span><span class="WHIT"> </span><span class="NAME">success</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">textStatus</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>251</span> </span><span class="WHIT">
-<span class='line'>252</span> </span><span class="NAME">loaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"."</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
-<span class='line'>253</span> </span><span class="NAME">that.supportedLangFileTypes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">ext</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>254</span> </span><span class="WHIT"> </span><span class="COMM">//i18n</span><span class="WHIT">
-<span class='line'>255</span> </span><span class="WHIT"> </span><span class="COMM">//we pass the data so we avoid re-loading the file</span><span class="WHIT">
-<span class='line'>256</span> </span><span class="WHIT"> </span><span class="COMM">//creates the shorcout</span><span class="WHIT">
-<span class='line'>257</span> </span><span class="WHIT"> </span><span class="NAME">that.i18n.root</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">that.i18n.shortcut</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">i18nWrapper</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>258</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>259</span> </span><span class="NAME">domain</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>260</span> </span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>261</span> </span><span class="NAME">type</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">that.supportedLangFileTypes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>262</span> </span><span class="NAME">uri</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.url</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT">
-<span class='line'>263</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>264</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>265</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>266</span> </span><span class="WHIT"> </span><span class="NAME">localiseContent</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>267</span> </span><span class="WHIT"> </span><span class="NAME">tryNext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>268</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>269</span> </span><span class="WHIT"> </span><span class="NAME">error</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">XHR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">textStatus</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">errorThrown</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>270</span> </span><span class="WHIT"> </span><span class="COMM">//the file doesn't exist or it wasn't possible to load it</span><span class="WHIT">
-<span class='line'>271</span> </span><span class="WHIT"> </span><span class="NAME">tryNext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>272</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>273</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>274</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">tryNext</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>275</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>276</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>277</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">loaded</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>278</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>279</span> </span><span class="WHIT"> </span><span class="COMM">//PRIVATE STUFF end</span><span class="WHIT">
-<span class='line'>280</span> </span><span class="WHIT"> </span><span class="COMM">// default options </span><span class="WHIT">
-<span class='line'>281</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>282</span> </span><span class="WHIT"> </span><span class="NAME">container</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"#karma-main"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>283</span> </span><span class="WHIT"> </span><span class="NAME">language</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>284</span> </span><span class="NAME">lang</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>285</span> </span><span class="WHIT"> </span><span class="NAME">alternatives</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">'en-US'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'en'</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>286</span> </span><span class="WHIT"> </span><span class="NAME">countryCode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>287</span> </span><span class="WHIT"> </span><span class="NAME">langCode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>288</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>289</span> </span><span class="WHIT"> </span><span class="NAME">i18n</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>290</span> </span><span class="WHIT"> </span><span class="NAME">root</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">self</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="COMM">// self is global</span><span class="WHIT">
-<span class='line'>291</span> </span><span class="WHIT"> </span><span class="NAME">shortcut</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"_"</span><span class="WHIT">
-<span class='line'>292</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>293</span> </span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>294</span> </span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>295</span> </span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>296</span> </span><span class="WHIT"> </span><span class="NAME">fps</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">24</span><span class="WHIT">
-<span class='line'>297</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>298</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>299</span>
-<span class='line'>300</span> </span><span class="WHIT"> </span><span class="NAME">this.library</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="STRN">"images"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"sounds"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"videos"</span><span class="PUNC">:</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"shapes"</span><span class="PUNC">:</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>301</span> </span><span class="WHIT">
-<span class='line'>302</span> </span><span class="COMM">//initializes the defaultOptions argument</span><span class="WHIT">
-<span class='line'>303</span> </span><span class="WHIT"> </span><span class="COMM">//1 argument: string. assume it's the container</span><span class="WHIT">
-<span class='line'>304</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>305</span> </span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">container</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>306</span> </span><span class="WHIT"> </span><span class="NAME">options.language</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">getLanguage</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>307</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"object"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>308</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">options.lang</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>309</span> </span><span class="WHIT"> </span><span class="COMM">//if language is string, assume it's the language.lang</span><span class="WHIT">
-<span class='line'>310</span> </span><span class="WHIT"> </span><span class="NAME">options.language</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">lang</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">options.lang</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>311</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>312</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>313</span> </span><span class="WHIT"> </span><span class="NAME">$.extend</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>314</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>315</span> </span><span class="WHIT"> </span><span class="COMM">//copy defaultOptions to this, we use this.xyz instead this.defaultOptions.xyz </span><span class="WHIT">
-<span class='line'>316</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>317</span> </span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>318</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>319</span> </span><span class="WHIT">
-<span class='line'>320</span> </span><span class="COMM">//initializes i18n</span><span class="WHIT">
-<span class='line'>321</span> </span><span class="WHIT"> </span><span class="COMM">//add the localized language to the language.alternatives</span><span class="WHIT">
-<span class='line'>322</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">this.language.countryCode</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>323</span> </span><span class="WHIT"> </span><span class="NAME">this.language.alternatives.unshift</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>324</span> </span><span class="NAME">this.language.langCode</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>325</span> </span><span class="NAME">this.language.countryCode</span><span class="WHIT">
-<span class='line'>326</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>327</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>328</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">this.language.lang</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>329</span> </span><span class="WHIT"> </span><span class="NAME">this.language.alternatives.unshift</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.language.lang</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>330</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>331</span> </span><span class="WHIT"> </span><span class="COMM">//try to load the localized lang file (po or json or ...)</span><span class="WHIT">
-<span class='line'>332</span> </span><span class="WHIT"> </span><span class="NAME">this.language.fileLoaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">loadAlternatives</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>333</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>334</span>
-<span class='line'>335</span> </span><span class="WHIT"> </span><span class="COMM">//initializes the container</span><span class="WHIT">
-<span class='line'>336</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>337</span> </span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>338</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>339</span> </span><span class="WHIT"> </span><span class="COMM">//FIXME</span><span class="WHIT">
-<span class='line'>340</span> </span><span class="WHIT"> </span><span class="NAME">gk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>341</span> </span><span class="WHIT"> </span><span class="STRN">"paths"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.paths</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>342</span> </span><span class="WHIT"> </span><span class="STRN">"container"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="WHIT">
-<span class='line'>343</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>344</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>345</span> </span><span class="COMM">/**
-<span class='line'>346</span> Creates a new canvas element.
-<span class='line'>347</span> @param {Number} [width=100] canvas width
-<span class='line'>348</span> @param {Number} [height=100] canvas height
-<span class='line'>349</span> **/</span><span class="WHIT">
-<span class='line'>350</span> </span><span class="NAME">Karma.prototype.size</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>351</span> </span><span class="WHIT"> </span><span class="NAME">this.canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"canvas"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>352</span> </span><span class="WHIT">
-<span class='line'>353</span> </span><span class="NAME">this.canvas.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">width</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>354</span> </span><span class="WHIT"> </span><span class="NAME">this.canvas.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">height</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>355</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.canvas.getContext</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>356</span> </span><span class="WHIT"> </span><span class="NAME">this.ctx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.canvas.getContext</span><span class="PUNC">(</span><span class="STRN">"2d"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>357</span> </span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">appendChild</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.canvas</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>358</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>359</span> </span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"Your browser doesn't support canvas, \
-<span class='line'>360</span> try the newest Firefox, Safari or Google Chrome"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>361</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>362</span> </span><span class="WHIT"> </span><span class="COMM">//FIXME</span><span class="WHIT">
-<span class='line'>363</span> </span><span class="WHIT"> </span><span class="NAME">gk.canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.canvas</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>364</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.ctx</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>365</span> </span><span class="WHIT"> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>366</span> </span><span class="WHIT"> </span><span class="NAME">this.canvas.addEventListener</span><span class="PUNC">(</span><span class="STRN">"contextmenu"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>367</span> </span><span class="WHIT"> </span><span class="COMM">//alert("contextmenu");</span><span class="WHIT">
-<span class='line'>368</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'>369</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>370</span> </span><span class="WHIT"> </span><span class="NAME">this.canvas.addEventListener</span><span class="PUNC">(</span><span class="STRN">"click"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>371</span> </span><span class="NAME">handleEvents</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>372</span> </span><span class="WHIT"> </span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'>373</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>374</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>375</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>376</span> </span><span class="COMM">/**
-<span class='line'>377</span> Clears a rectangular area within the canvas
-<span class='line'>378</span> @param {Number} [x=0] Start position of x
-<span class='line'>379</span> @param {Number} [y=0] Start position of y
-<span class='line'>380</span> @param {Number} [width=canvas width] Square width
-<span class='line'>381</span> @param {Number} [height=canvas height] Square height
-<span class='line'>382</span> **/</span><span class="WHIT">
-<span class='line'>383</span> </span><span class="NAME">Karma.prototype.clear</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>384</span> </span><span class="WHIT"> </span><span class="NAME">this.ctx.clearRect</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>385</span> </span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>386</span> </span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>387</span> </span><span class="NAME">width</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.canvas.width</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>388</span> </span><span class="NAME">height</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.canvas.width</span><span class="WHIT">
-<span class='line'>389</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>390</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>391</span> </span><span class="COMM">//Karma packages</span><span class="WHIT">
-<span class='line'>392</span> </span><span class="COMM">/**
-<span class='line'>393</span> @namespace Geometry functions.
-<span class='line'>394</span> **/</span><span class="WHIT">
-<span class='line'>395</span> </span><span class="NAME">Karma.prototype.geometry</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>396</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>397</span> Converts a value from degrees to radians.
-<span class='line'>398</span> @param {Number} angle The angle in degrees
-<span class='line'>399</span> @returns {Number} The The angle in radians
-<span class='line'>400</span> **/</span><span class="WHIT">
-<span class='line'>401</span> </span><span class="WHIT"> </span><span class="NAME">radians</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">angle</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>402</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">angle</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">180</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">Math.PI</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>403</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>404</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>405</span> Get the square of the Euclidian (ordinary) distance between 2 points.&lt;br>
-<span class='line'>406</span> &lt;b>Warning:&lt;/b> It's slower than distance2 function.
-<span class='line'>407</span> @param {Number} Point Point No. 0
-<span class='line'>408</span> @param {Number} Point Point No. 1
-<span class='line'>409</span> @returns {Number} The square of the Euclidian distance
-<span class='line'>410</span> **/</span><span class="WHIT">
-<span class='line'>411</span> </span><span class="WHIT"> </span><span class="NAME">distance2</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">p0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>412</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p1.x</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">p0.x</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p1.x</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">p0.x</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p1.y</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">p1.y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p1.y</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">p1.y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>413</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>414</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>415</span> Get the Euclidian (ordinary) distance between 2 points.&lt;br>
-<span class='line'>416</span> &lt;b>Warning:&lt;/b> It's slower than distance2 function
-<span class='line'>417</span> @param {Number} Point Point No. 0
-<span class='line'>418</span> @param {Number} Point Point No. 1
-<span class='line'>419</span> @returns {Number} The Euclidian distance
-<span class='line'>420</span> **/</span><span class="WHIT">
-<span class='line'>421</span> </span><span class="WHIT"> </span><span class="NAME">distance</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">p0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>422</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Math.sqrt</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">Karma.prototype.geometry.distance2</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">p0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>423</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>424</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>425</span> </span><span class="COMM">/**
-<span class='line'>426</span> @namespace Graphics functions.
-<span class='line'>427</span> **/</span><span class="WHIT">
-<span class='line'>428</span> </span><span class="NAME">Karma.prototype.graphics</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>429</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>430</span> Creates a new rectangle. It's a shortcut for calling 'new KRectangle(..)'.
-<span class='line'>431</span> **/</span><span class="WHIT">
-<span class='line'>432</span> </span><span class="WHIT"> </span><span class="NAME">rectangle</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KRectangle</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>433</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>434</span> Creates a new circle. It's a shortcut for calling 'new KCircle(..)'.
-<span class='line'>435</span> **/</span><span class="WHIT">
-<span class='line'>436</span> </span><span class="WHIT"> </span><span class="NAME">circle</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KCircle</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>437</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>438</span> </span><span class="COMM">/**
-<span class='line'>439</span> @namespace Math functions.
-<span class='line'>440</span> **/</span><span class="WHIT">
-<span class='line'>441</span> </span><span class="NAME">Karma.prototype.math</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>442</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>443</span> Generates a random bumber between lower bound and upper bound inclusive.
-<span class='line'>444</span> @param {Number} lower The lower bound
-<span class='line'>445</span> @param {Number} upper The upper bound
-<span class='line'>446</span> @returns {Number} The generated number
-<span class='line'>447</span> **/</span><span class="WHIT">
-<span class='line'>448</span> </span><span class="WHIT"> </span><span class="NAME">rand</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">lower</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">upper</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>449</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Math.round</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">Math.random</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">upper</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">lower</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">lower</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>450</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>451</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>452</span> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>453</span> </span><span class="COMM">//everything inside karma.graphics is exported to karma.prototype</span><span class="WHIT">
-<span class='line'>454</span> </span><span class="NAME">$.extend</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">Karma.prototype</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Karma.prototype.graphics</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>455</span> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>456</span> </span><span class="COMM">/**
-<span class='line'>457</span> Attaches an Object of Arrays for preloading. There are 3 valid categories (arrays):
-<span class='line'>458</span> 'images' for images, 'sounds' for sounds and 'videos' for video files.&lt;br>
-<span class='line'>459</span> Any object within any category must have an 'id' and 'file' attributes.
-<span class='line'>460</span> Additional attributes will be used as arguments to the constructor of the
-<span class='line'>461</span> corresponding object.&lt;br>
-<span class='line'>462</span> Any media file successfully loaded will be availabe through the 'library'.
-<span class='line'>463</span> The init finishes when all the valid files have finished loading or have
-<span class='line'>464</span> failed on the process.&lt;br>
-<span class='line'>465</span> Please note that the preloadinf will NOT start unless you call 'main' function.
-<span class='line'>466</span> @param {Object} [toLoad] The Object that has the arrays for preloading.
-<span class='line'>467</span> @param {Array} [toLoad.images] The images
-<span class='line'>468</span> @param {Array} [toLoad.sounds] The sounds
-<span class='line'>469</span> @param {Array} [toLoad.videos] The videos
-<span class='line'>470</span> @returns {Object} this
-<span class='line'>471</span> @see Karma#main
-<span class='line'>472</span> @example
-<span class='line'>473</span> var k = $.karma ({container: "#karma-main"/});
-<span class='line'>474</span> k.size(1200, 800);
-<span class='line'>475</span> k.init({
-<span class='line'>476</span> images: [
-<span class='line'>477</span> {id: "ball", file: "ball.png", localized : false },
-<span class='line'>478</span> ],
-<span class='line'>479</span> sounds: [
-<span class='line'>480</span> {id: "correct", file: "correct.ogg" },
-<span class='line'>481</span> ]
-<span class='line'>482</span> });//1 image and 1 sound attached to load
-<span class='line'>483</span> **/</span><span class="WHIT">
-<span class='line'>484</span> </span><span class="NAME">Karma.prototype.init</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">toLoad</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>485</span> </span><span class="WHIT"> </span><span class="NAME">this.pendingToLoad</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">toLoad</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>486</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">//chaining :)</span><span class="WHIT">
-<span class='line'>487</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>488</span>
-<span class='line'>489</span> </span><span class="COMM">/**
-<span class='line'>490</span> Main function. Any Karma function call should be inside the callback function.
-<span class='line'>491</span> The callback function will be executed when the preloading finishes.
-<span class='line'>492</span> @param {Function} cb The callback funtion
-<span class='line'>493</span> @see Karma#init
-<span class='line'>494</span> **/</span><span class="WHIT">
-<span class='line'>495</span> </span><span class="NAME">Karma.prototype.main</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>496</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.pendingToLoad</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>497</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">that</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>498</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">categories</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"images"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"sounds"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"videos"</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>499</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">counters</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="STRN">"loaded"</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"error"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>500</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">totalItems</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>501</span> </span><span class="WHIT"> </span><span class="COMM">//get the total items</span><span class="WHIT">
-<span class='line'>502</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">categories.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>503</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.pendingToLoad</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">categories</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>504</span> </span><span class="WHIT"> </span><span class="NAME">totalItems</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.pendingToLoad</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">categories</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>505</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>506</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>507</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>508</span> callback to check if all the items were loaded or got an error when
-<span class='line'>509</span> loading
-<span class='line'>510</span> **/</span><span class="WHIT">
-<span class='line'>511</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">checkAllLoaded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>512</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev.type</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"load"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">counters.loaded</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>513</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="NAME">counters.error</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>514</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">counters.loaded</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">counters.error</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">totalItems</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>515</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>516</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>517</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>518</span> </span><span class="WHIT">
-<span class='line'>519</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">categories.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>520</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">categories</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>521</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.pendingToLoad</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>522</span> </span><span class="WHIT"> </span><span class="COMM">//load all the category elements</span><span class="WHIT">
-<span class='line'>523</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">category.substr</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">category.length</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>524</span> </span><span class="WHIT"> </span><span class="NAME">$.each</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.pendingToLoad</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">config</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>525</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.id</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>526</span> </span><span class="WHIT"> </span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">config.id</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>527</span> </span><span class="WHIT"> </span><span class="COMM">//register the elements into the library</span><span class="WHIT">
-<span class='line'>528</span> </span><span class="WHIT"> </span><span class="NAME">that.library</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Karma.prototype</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>529</span> </span><span class="NAME">config</span><span class="WHIT">
-<span class='line'>530</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>531</span> </span><span class="WHIT"> </span><span class="NAME">that.library</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">media.addEventListener</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>532</span> </span><span class="WHIT"> </span><span class="STRN">"load"</span><span class="PUNC">,</span><span class="NAME">checkAllLoaded</span><span class="PUNC">,</span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'>533</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>534</span> </span><span class="WHIT"> </span><span class="NAME">that.library</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">category</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">media.addEventListener</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>535</span> </span><span class="WHIT"> </span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="NAME">checkAllLoaded</span><span class="PUNC">,</span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'>536</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>537</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>538</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>539</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>540</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>541</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>542</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>543</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>544</span> </span><span class="COMM">/**A shortcut for calling 'KImage( )'
-<span class='line'>545</span> @see KImage
-<span class='line'>546</span> **/</span><span class="WHIT">
-<span class='line'>547</span> </span><span class="NAME">Karma.prototype.image</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KImage</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>548</span> </span><span class="COMM">/**A shortcut for calling 'KSound( )'
-<span class='line'>549</span> @see KSound
-<span class='line'>550</span>
-<span class='line'>551</span> **/</span><span class="WHIT">
-<span class='line'>552</span> </span><span class="NAME">Karma.prototype.sound</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KSound</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>553</span> </span><span class="COMM">/**A shortcut for calling 'KVideo( )'
-<span class='line'>554</span> @see KVideo
-<span class='line'>555</span>
-<span class='line'>556</span> **/</span><span class="WHIT">
-<span class='line'>557</span> </span><span class="NAME">Karma.prototype.video</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">alert</span><span class="PUNC">(</span><span class="STRN">"Not implemented yet"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>558</span> </span><span class="COMM">/**A shortcut for calling 'KGroup( )'
-<span class='line'>559</span> @see KGroup
-<span class='line'>560</span> **/</span><span class="WHIT">
-<span class='line'>561</span> </span><span class="NAME">Karma.prototype.group</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KGroup</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>562</span> </span><span class="COMM">/**A shortcut for calling 'KButton( )'
-<span class='line'>563</span> @see KButton#
-<span class='line'>564</span> **/</span><span class="WHIT">
-<span class='line'>565</span> </span><span class="NAME">Karma.prototype.button</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">KButton</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>566</span>
-<span class='line'>567</span> </span><span class="COMM">/**
-<span class='line'>568</span> Mouse
-<span class='line'>569</span> **/</span><span class="WHIT">
-<span class='line'>570</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mouse</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>571</span> </span><span class="COMM">/**
-<span class='line'>572</span> Gets the 'x' and 'y' mouse coordinates relatives to the canvas
-<span class='line'>573</span> @returns {Object} An Object with 'x' and 'y' attributes
-<span class='line'>574</span> **/</span><span class="WHIT">
-<span class='line'>575</span> </span><span class="NAME">mouse.getRelativeCanvasPosition</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>576</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>577</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">{</span><span class="NAME">x</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>578</span> </span><span class="WHIT"> </span><span class="NAME">xy.x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.layerX</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>579</span> </span><span class="WHIT"> </span><span class="NAME">xy.y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.layerY</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>580</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">xy</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>581</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>582</span>
-<span class='line'>583</span> </span><span class="COMM">//Events stuff</span><span class="WHIT">
-<span class='line'>584</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">master</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>585</span> </span><span class="NAME">master.buttons</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>586</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">handleEvents</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>587</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mouse.getRelativeCanvasPosition</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>588</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">master.buttons</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>589</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">master.buttons</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">isPointInPath</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">xy.x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">xy.y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>590</span> </span><span class="WHIT"> </span><span class="NAME">master.buttons</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">onClick</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>591</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>592</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>593</span> </span><span class="WHIT"> </span><span class="COMM">/*switch(ev.type){
-<span class='line'>594</span> case "click": break;
-<span class='line'>595</span> }*/</span><span class="WHIT">
-<span class='line'>596</span> </span><span class="WHIT"> </span><span class="COMM">/*var s="";
-<span class='line'>597</span> for (var i in ev) {
-<span class='line'>598</span> s+=i+"="+ev[i]+"\n";
-<span class='line'>599</span> }
-<span class='line'>600</span> alert(s);*/</span><span class="WHIT">
-<span class='line'>601</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>602</span>
-<span class='line'>603</span> </span><span class="COMM">/**
-<span class='line'>604</span> Master Class creator. Supports multiple inheritance.
-<span class='line'>605</span> It creates a new Object, the new Object will contain the methods that has each
-<span class='line'>606</span> argument passed (Function or Object). When creating an instance of the new
-<span class='line'>607</span> Object it will use the 'init' function as the initializer.&lt;br>
-<span class='line'>608</span> If there is more than one method with the same name, it'll be overwritten by the
-<span class='line'>609</span> last one.&lt;br>
-<span class='line'>610</span> warning it's NOT optimal.
-<span class='line'>611</span> @returns {Object} A new class
-<span class='line'>612</span> **/</span><span class="WHIT">
-<span class='line'>613</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>614</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">log</span><span class="PUNC">=</span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>615</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>616</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">arguments.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>617</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">prototype</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>618</span> </span><span class="WHIT"> </span><span class="NAME">parents.push</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>619</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>620</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>621</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>622</span> </span><span class="WHIT"> </span><span class="COMM">//we inject all the init functions </span><span class="WHIT">
-<span class='line'>623</span> </span><span class="WHIT"> </span><span class="COMM">/*for ( var i = 0; i &lt; this.__parents.length; i++ ) {
-<span class='line'>624</span> this.__parents[ i ].apply ( this, arguments );
-<span class='line'>625</span> }*/</span><span class="WHIT">
-<span class='line'>626</span> </span><span class="WHIT"> </span><span class="COMM">//call the real class init</span><span class="WHIT">
-<span class='line'>627</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.init</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>628</span> </span><span class="WHIT"> </span><span class="NAME">this.init.apply</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>629</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>630</span>
-<span class='line'>631</span> </span><span class="WHIT"> </span><span class="NAME">o.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>632</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>633</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">arguments.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>634</span> </span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>635</span> </span><span class="WHIT"> </span><span class="NAME">log</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"**"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">+</span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>636</span> </span><span class="WHIT"> </span><span class="COMM">//if ( a === "function") {</span><span class="WHIT">
-<span class='line'>637</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a.prototype</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>638</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">a.prototype</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>639</span> </span><span class="WHIT"> </span><span class="COMM">//log += j+" = "+a.prototype[j]+"\n";</span><span class="WHIT">
-<span class='line'>640</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.prototype</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.prototype</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>641</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>642</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>643</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>644</span> </span><span class="WHIT"> </span><span class="COMM">//if ( typeof a === "object") {</span><span class="WHIT">
-<span class='line'>645</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>646</span> </span><span class="WHIT"> </span><span class="COMM">//log += j+" = "+a[j]+"\n";</span><span class="WHIT">
-<span class='line'>647</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.prototype</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>648</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>649</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>650</span> </span><span class="WHIT">
-<span class='line'>651</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>652</span> </span><span class="WHIT"> </span><span class="NAME">o.prototype.__parents</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>653</span> </span><span class="WHIT"> </span><span class="COMM">//alert( log );</span><span class="WHIT">
-<span class='line'>654</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">//(function ( ) { return new o( arguments );});</span><span class="WHIT">
-<span class='line'>655</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>656</span> </span><span class="COMM">/**
-<span class='line'>657</span> Karma basic Object
-<span class='line'>658</span> @class The basic Karma object
-<span class='line'>659</span> @param {Object} [options] Options
-<span class='line'>660</span> @param {String} [options.localized = true] The object will be localized
-<span class='line'>661</span> **/</span><span class="WHIT">
-<span class='line'>662</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>663</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>664</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>665</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="NAME">options.localized</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"boolean"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>666</span> </span><span class="WHIT"> </span><span class="NAME">this.localized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.localized</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>667</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>668</span> </span><span class="WHIT"> </span><span class="NAME">this.localized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>669</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>670</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>671</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>672</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>673</span> </span><span class="COMM">/**
-<span class='line'>674</span> Graphics basic Object
-<span class='line'>675</span> @class General methods for any Graphic object
-<span class='line'>676</span> @param {Object} [options] Options
-<span class='line'>677</span> @param {Number} [options.x = 0] The 'x' position of the object
-<span class='line'>678</span> @param {Number} [options.y = 0] The 'y' position of the object
-<span class='line'>679</span> @param {Number} [options.z = 0] The 'z' index of the object
-<span class='line'>680</span> @param {Number} [options.width = 0] The 'width' of the object
-<span class='line'>681</span> @param {Number} [options.height = 0] The 'height' of the object
-<span class='line'>682</span> @param {Boolean} [options.visible = true] Defines if the object will be visible
-<span class='line'>683</span> when drawing
-<span class='line'>684</span> @augments KObject
-<span class='line'>685</span> **/</span><span class="WHIT">
-<span class='line'>686</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KGraphic</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>687</span> </span><span class="WHIT"> </span><span class="NAME">KObject</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>688</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>689</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>690</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options.localized</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>691</span> </span><span class="NAME">KObject.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options.localized</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>692</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>693</span> </span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>694</span> </span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>695</span> </span><span class="WHIT"> </span><span class="NAME">z</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>696</span> </span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>697</span> </span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>698</span> </span><span class="WHIT"> </span><span class="NAME">visible</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT">
-<span class='line'>699</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>700</span> </span><span class="WHIT"> </span><span class="NAME">$.extend</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>701</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>702</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>703</span> @memberOf KGraphic
-<span class='line'>704</span> Determines if the 'x' and 'y' coodinates are inside the object.
-<span class='line'>705</span> @returns {Boolean} 'true' if the coordinates are inside or on the border
-<span class='line'>706</span> of the object, otherwise 'false'
-<span class='line'>707</span> **/</span><span class="WHIT">
-<span class='line'>708</span> </span><span class="WHIT"> </span><span class="NAME">isPointInPath</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>709</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.x</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.x</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
-<span class='line'>710</span> </span><span class="NAME">this.y</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.y</span><span class="PUNC">+</span><span class="NAME">this.width</span><span class="PUNC">)</span><span class="PUNC">>=</span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>711</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>712</span> </span><span class="WHIT"> </span><span class="NAME">addEventListener</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cb</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bubble</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>713</span> </span><span class="WHIT"> </span><span class="COMM">//FIXME</span><span class="WHIT">
-<span class='line'>714</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>715</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>716</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>717</span> </span><span class="COMM">/**
-<span class='line'>718</span> Supports multiple objects
-<span class='line'>719</span> @class
-<span class='line'>720</span> **/</span><span class="WHIT">
-<span class='line'>721</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>722</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>723</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>724</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>725</span> </span><span class="WHIT"> </span><span class="NAME">this.childNodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>726</span> </span><span class="WHIT"> </span><span class="NAME">this.sorted</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>727</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>728</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>729</span> @memberOf KGroup
-<span class='line'>730</span> Adds each argument passed to the funtion to chilNodes.
-<span class='line'>731</span> @param {Array:KGraphic} arguments The elements to add to childNodes
-<span class='line'>732</span> @see KGroup#draw
-<span class='line'>733</span> **/</span><span class="WHIT">
-<span class='line'>734</span> </span><span class="WHIT"> </span><span class="NAME">appendChild</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>735</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">arguments.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>736</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">arguments.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>737</span> </span><span class="WHIT"> </span><span class="NAME">this.childNodes.push</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>738</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>739</span> </span><span class="WHIT"> </span><span class="NAME">this.sorted</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>740</span> </span><span class="WHIT">
-<span class='line'>741</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>742</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>743</span> </span><span class="WHIT"> </span><span class="NAME">removeChild</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>744</span> </span><span class="WHIT"> </span><span class="COMM">//FIXME</span><span class="WHIT">
-<span class='line'>745</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>746</span> </span><span class="WHIT"> </span><span class="COMM">/**
-<span class='line'>747</span> @memberOf KGroup
-<span class='line'>748</span> Draws all the elements in childNodes. The elements are drawed according
-<span class='line'>749</span> to its 'z' (z-index) value.
-<span class='line'>750</span> @see KGroup#appendChild
-<span class='line'>751</span> **/</span><span class="WHIT">
-<span class='line'>752</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>753</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.visible</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.childNodes.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>754</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.sorted</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>755</span> </span><span class="WHIT"> </span><span class="NAME">this.childNodes.sort</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">g1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">g2</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>756</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">g1.z</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">g2.z</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>757</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>758</span> </span><span class="WHIT"> </span><span class="NAME">this.sorted</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>759</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>760</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.childNodes</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>761</span> </span><span class="WHIT"> </span><span class="NAME">this.childNodes</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">draw</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>762</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>763</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>764</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>765</span> </span><span class="WHIT"> </span><span class="NAME">isPointInPath</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>766</span> </span><span class="WHIT"> </span><span class="COMM">//TODO </span><span class="WHIT">
-<span class='line'>767</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>768</span> </span><span class="WHIT">
-<span class='line'>769</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>770</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>771</span>
-<span class='line'>772</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KMedia</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>773</span> </span><span class="WHIT">
-<span class='line'>774</span> </span><span class="NAME">KObject</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>775</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>776</span> </span><span class="WHIT">
-<span class='line'>777</span> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">file</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>778</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>779</span> </span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"file and type needed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>780</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>781</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>782</span> </span><span class="NAME">KObject.init.call</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>783</span> </span><span class="WHIT">
-<span class='line'>784</span> </span><span class="NAME">this.file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>785</span> </span><span class="WHIT"> </span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>786</span> </span><span class="WHIT">
-<span class='line'>787</span> </span><span class="NAME">this.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>788</span> </span><span class="WHIT"> </span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>789</span> </span><span class="WHIT"> </span><span class="NAME">this.media</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>790</span> </span><span class="WHIT"> </span><span class="KEYW">switch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>791</span> </span><span class="WHIT"> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"image"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.media</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Image</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>792</span> </span><span class="WHIT"> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"sound"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.media</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Audio</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>793</span> </span><span class="WHIT"> </span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"Media type not supported"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>794</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>795</span> </span><span class="WHIT"> </span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gk.paths</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"s"</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">[</span><span class="WHIT">
-<span class='line'>796</span> </span><span class="NAME">this.localized</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"localized"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"generic"</span><span class="WHIT">
-<span class='line'>797</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>798</span> </span><span class="WHIT"> </span><span class="NAME">this.media.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.file</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>799</span>
-<span class='line'>800</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">that</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>801</span> </span><span class="WHIT"> </span><span class="NAME">this.media.addEventListener</span><span class="PUNC">(</span><span class="STRN">"load"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>802</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">that.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"loaded"</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>803</span> </span><span class="WHIT"> </span><span class="NAME">this.media.addEventListener</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>804</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">that.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"error"</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>805</span> </span><span class="WHIT"> </span><span class="NAME">this.media.addEventListener</span><span class="PUNC">(</span><span class="STRN">"abort"</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>806</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">that.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"aborted"</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>807</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>808</span> </span><span class="WHIT"> </span><span class="NAME">isReady</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>809</span> </span><span class="WHIT">
-<span class='line'>810</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>811</span> </span><span class="WHIT">
-<span class='line'>812</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>813</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>814</span>
-<span class='line'>815</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KImage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>816</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>817</span> </span><span class="WHIT"> </span><span class="NAME">KMedia</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>818</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>819</span> </span><span class="WHIT">
-<span class='line'>820</span> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>821</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>822</span> </span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">:</span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>823</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>824</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>825</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>826</span> </span><span class="WHIT"> </span><span class="NAME">KMedia.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options.file</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"image"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>827</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>828</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>829</span> </span><span class="WHIT"> </span><span class="COMM">//w : undefined,</span><span class="WHIT">
-<span class='line'>830</span> </span><span class="WHIT"> </span><span class="COMM">//h : undefined,</span><span class="WHIT">
-<span class='line'>831</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>832</span> </span><span class="WHIT"> </span><span class="NAME">$.extend</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>833</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>834</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>835</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.visible</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.isReady</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>836</span> </span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>837</span> </span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>838</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.drawImage</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.media</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="WHIT"> </span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>839</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>840</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>841</span> </span><span class="WHIT"> </span><span class="NAME">isReady</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>842</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.media.complete</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>843</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.media.naturalWidth</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.media.naturalWidth</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>844</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>845</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>846</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>847</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>848</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>849</span> </span><span class="COMM">/**@class_ */</span><span class="WHIT">
-<span class='line'>850</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KSound</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>851</span> </span><span class="WHIT"> </span><span class="COMM">/**@lends_ KMedia*/</span><span class="WHIT">
-<span class='line'>852</span> </span><span class="WHIT"> </span><span class="NAME">KMedia</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>853</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>854</span> </span><span class="WHIT">
-<span class='line'>855</span> </span><span class="NAME">init</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>856</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>857</span> </span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">file</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>858</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>859</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>860</span> </span><span class="WHIT"> </span><span class="NAME">KMedia.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options.file</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"sound"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>861</span> </span><span class="WHIT"> </span><span class="COMM">//next line is important!</span><span class="WHIT">
-<span class='line'>862</span> </span><span class="WHIT"> </span><span class="NAME">this.media.load</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>863</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>864</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>865</span> </span><span class="WHIT"> </span><span class="NAME">isReady</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>866</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.readyState</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>867</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>868</span> </span><span class="WHIT"> </span><span class="NAME">play</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>869</span> </span><span class="WHIT"> </span><span class="NAME">this.media.play</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>870</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>871</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>872</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>873</span> </span><span class="COMM">/**@class_ */</span><span class="WHIT">
-<span class='line'>874</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KShape</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>875</span> </span><span class="WHIT"> </span><span class="COMM">/**@lends_ KGraphic*/</span><span class="WHIT">
-<span class='line'>876</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>877</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>878</span> </span><span class="WHIT">
-<span class='line'>879</span> </span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>880</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>881</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>882</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>883</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>884</span> </span><span class="WHIT"> </span><span class="NAME">fill</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>885</span> </span><span class="WHIT"> </span><span class="NAME">stroke</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>886</span> </span><span class="WHIT"> </span><span class="NAME">fillStyle</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'#000'</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>887</span> </span><span class="WHIT"> </span><span class="NAME">strokeStyle</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'#000'</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>888</span> </span><span class="WHIT"> </span><span class="NAME">openPath</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="WHIT">
-<span class='line'>889</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>890</span> </span><span class="WHIT"> </span><span class="NAME">$.extend</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">defaultOptions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>891</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>892</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>893</span> </span><span class="WHIT"> </span><span class="COMM">//if ( this.visible ) {</span><span class="WHIT">
-<span class='line'>894</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.fillStyle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fillStyle</span><span class="WHIT">
-<span class='line'>895</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.strokeStyle</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.strokeStyle</span><span class="WHIT">
-<span class='line'>896</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.fill</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>897</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.fill</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>898</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.stroke</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>899</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.stroke</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>900</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.openPath</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT">
-<span class='line'>901</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.closePath</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>902</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.restore</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>903</span> </span><span class="WHIT"> </span><span class="COMM">//}</span><span class="WHIT">
-<span class='line'>904</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>905</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>906</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>907</span> </span><span class="COMM">/**@class_ */</span><span class="WHIT">
-<span class='line'>908</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KRectangle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>909</span> </span><span class="WHIT"> </span><span class="COMM">/**@lends_ KShape*/</span><span class="WHIT">
-<span class='line'>910</span> </span><span class="WHIT"> </span><span class="NAME">KShape</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>911</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>912</span> </span><span class="WHIT">
-<span class='line'>913</span> </span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>914</span> </span><span class="WHIT"> </span><span class="COMM">//ADD multiple constructors support</span><span class="WHIT">
-<span class='line'>915</span> </span><span class="WHIT"> </span><span class="COMM">//x,y,w,h</span><span class="WHIT">
-<span class='line'>916</span> </span><span class="WHIT"> </span><span class="COMM">//w,y,w,h,options</span><span class="WHIT">
-<span class='line'>917</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>918</span> </span><span class="WHIT"> </span><span class="NAME">KShape.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>919</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>920</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>921</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>922</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.visible</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>923</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.save</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>924</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.beginPath</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>925</span> </span><span class="WHIT"> </span><span class="NAME">gk.ctx.rect</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>926</span> </span><span class="WHIT"> </span><span class="NAME">KShape.draw.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>927</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>928</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>929</span> </span><span class="WHIT"> </span><span class="NAME">clear</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>930</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">this.visible</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>931</span> </span><span class="WHIT">
-<span class='line'>932</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>933</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>934</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>935</span> </span><span class="WHIT">
-<span class='line'>936</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>937</span>
-<span class='line'>938</span> </span><span class="COMM">/**@class_ */</span><span class="WHIT">
-<span class='line'>939</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">KButton</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class</span><span class="PUNC">(</span><span class="WHIT">
-<span class='line'>940</span> </span><span class="WHIT"> </span><span class="COMM">/**@lends_ KGraphic*/</span><span class="WHIT">
-<span class='line'>941</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>942</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>943</span> </span><span class="WHIT">
-<span class='line'>944</span> </span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>945</span> </span><span class="WHIT"> </span><span class="COMM">//ADD multiple constructors support</span><span class="WHIT">
-<span class='line'>946</span> </span><span class="WHIT"> </span><span class="COMM">//x,y,w,h</span><span class="WHIT">
-<span class='line'>947</span> </span><span class="WHIT"> </span><span class="COMM">//w,y,w,h,options</span><span class="WHIT">
-<span class='line'>948</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">valid</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>949</span> </span><span class="WHIT"> </span><span class="NAME">KGraphic.init.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>950</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>951</span> </span><span class="WHIT"> </span><span class="NAME">this.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.id</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>952</span> </span><span class="WHIT"> </span><span class="NAME">master.buttons.push</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>953</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>954</span> </span><span class="WHIT"> </span><span class="NAME">draw</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
-<span class='line'>955</span> </span><span class="WHIT"> </span><span class="NAME">onClick</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="COMM">//callback</span><span class="WHIT">
-<span class='line'>956</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>957</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>958</span> </span><span class="COMM">//</span><span class="WHIT">
-<span class='line'>959</span> </span><span class="COMM">/**
-<span class='line'>960</span> Karma function. It's a shotcut for calling 'new Karma(..)'
-<span class='line'>961</span> @param [options] Options passed to the Karma constructor
-<span class='line'>962</span> @returns {Object} a new Karma object
-<span class='line'>963</span> **/</span><span class="WHIT">
-<span class='line'>964</span> </span><span class="NAME">$.karma</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
-<span class='line'>965</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">k</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Karma</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>966</span> </span><span class="WHIT"> </span><span class="COMM">//var x= new KGraphic( {localized: true })</span><span class="WHIT">
-<span class='line'>967</span> </span><span class="WHIT"> </span><span class="COMM">//var x = new KMedia( "file1", "image", {localized: true} );</span><span class="WHIT">
-<span class='line'>968</span> </span><span class="WHIT"> </span><span class="COMM">//var x = new KImage({file: "ball.png", localized: false, z: 0});</span><span class="WHIT">
-<span class='line'>969</span> </span><span class="WHIT"> </span><span class="COMM">//alert (x.localized)</span><span class="WHIT">
-<span class='line'>970</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">;</span><span class="WHIT">
-<span class='line'>971</span> </span><span class="PUNC">}</span><span class="WHIT">
-<span class='line'>972</span> </span><span class="COMM">//})(jQuery);</span></pre></body></html> \ No newline at end of file
diff --git a/lessons/quadrilaterals/css/jquery.jgrowl.css b/lessons/quadrilaterals/css/jquery.jgrowl.css
index 96af78e..96af78e 100644..100755
--- a/lessons/quadrilaterals/css/jquery.jgrowl.css
+++ b/lessons/quadrilaterals/css/jquery.jgrowl.css
diff --git a/utils/bin/activate b/utils/bin/activate
new file mode 120000
index 0000000..c2a8369
--- /dev/null
+++ b/utils/bin/activate
@@ -0,0 +1 @@
+activate.bash \ No newline at end of file
diff --git a/utils/bin/activate.cmd b/utils/bin/activate.cmd
new file mode 100755
index 0000000..8619da8
--- /dev/null
+++ b/utils/bin/activate.cmd
@@ -0,0 +1,3 @@
+@echo off
+
+set PATH=%~dp0;%PATH%
diff --git a/utils/bin/narwhal.cmd b/utils/bin/narwhal.cmd
new file mode 100755
index 0000000..98a9bfc
--- /dev/null
+++ b/utils/bin/narwhal.cmd
@@ -0,0 +1,29 @@
+@echo off
+setlocal
+
+:: NARWHAL_HOME is the parent the bin directory
+set NARWHAL_HOME=%~dp0..
+
+:: use Rhino as the default if none is specified in narwhal.conf
+set NARWHAL_DEFAULT_PLATFORM=rhino
+
+:: TODO: load narwhal.conf if it exists
+
+:: if NARWHAL_PLATFORM isn't yet set, set it to the default platform, and export it
+if "%NARWHAL_PLATFORM%" == "" (
+ set NARWHAL_PLATFORM=%NARWHAL_DEFAULT_PLATFORM%
+)
+
+:: build the executable name for the platform
+set EXECUTABLE_NAME=narwhal-%NARWHAL_PLATFORM%.cmd
+
+:: search for the platform home directory
+:: TODO: look for more, including ".exe"?
+if exist %NARWHAL_HOME%\platforms\%NARWHAL_PLATFORM%. (
+ set NARWHAL_PLATFORM_HOME=%NARWHAL_HOME%\platforms\%NARWHAL_PLATFORM%
+) else (
+ echo "Can't find executable for $NARWHAL_PLATFORM"
+ exit
+)
+
+call %NARWHAL_PLATFORM_HOME%\bin\%EXECUTABLE_NAME% %*
diff --git a/utils/bin/sea.cmd b/utils/bin/sea.cmd
new file mode 100755
index 0000000..bf3f2ad
--- /dev/null
+++ b/utils/bin/sea.cmd
@@ -0,0 +1,26 @@
+@echo off
+setlocal
+
+set SHELL=cmd.exe
+
+set PACKAGE_HOME=%~dp0\..
+
+call %PACKAGE_HOME%\bin\activate.cmd
+
+set OLDSEA=%SEA%
+set SEA=%PACKAGE_HOME%
+set /a SEALVL=%SEALVL% + 1
+
+if "%1" == "" (
+ echo SEALVL=%SEALVL%
+ echo SEA=%SEA%
+ echo PATH=%PATH%
+ %SHELL%
+) else (
+echo "asdfasdfadsf"
+ %SHELL% %*
+)
+
+set /a SEALVL=%SEALVL% - 1
+echo SEALVL=%SEALVL%
+echo SEA=%OLDSEA%
diff --git a/utils/bin/tusk.cmd b/utils/bin/tusk.cmd
new file mode 100755
index 0000000..d6f225e
--- /dev/null
+++ b/utils/bin/tusk.cmd
@@ -0,0 +1 @@
+narwhal.cmd %~dpn0 %*
diff --git a/utils/docs/posts/2009-07-29-hello-0.1.md b/utils/docs/posts/2009-07-29-hello-0.1.md
new file mode 100755
index 0000000..b48c320
--- /dev/null
+++ b/utils/docs/posts/2009-07-29-hello-0.1.md
@@ -0,0 +1,19 @@
+Hello 0.1
+=========
+
+Today we're announcing [Narwhal](http://narwhaljs.org/) 0.1 and [Jack](http://jackjs.org/) 0.1.
+
+### Download
+
+* Narwhal 0.1: [tar](http://github.com/tlrobinson/narwhal/tarball/0.1), [zip](http://github.com/tlrobinson/narwhal/zipball/0.1)
+* Jack 0.1: [tar](http://github.com/tlrobinson/jack/tarball/0.1), [zip](http://github.com/tlrobinson/jack/zipball/0.1)
+
+Check out the [quick start guide](http://narwhaljs.org/quick-start.html) for instructions on getting up and running with Narwhal and Jack.
+
+### Release Notes
+
+* Complete [securable modules](https://wiki.mozilla.org/ServerJS/Modules/SecurableModules) implementation, in JavaScript, with hooks for native module loading.
+* Various modules, including `file`, `binary`, `os`, `system`, `args`, and many others.
+* The "tusk" package manager, currently using [Github](http://github.com/) as a package repository.
+* Full support for the Rhino interpreter, and partial support for numerous other [platforms](http://narwhaljs.org/platforms.html).
+* Preliminary support for Windows.
diff --git a/utils/examples/hello b/utils/examples/hello
new file mode 100755
index 0000000..49beb13
--- /dev/null
+++ b/utils/examples/hello
@@ -0,0 +1,2 @@
+#!/usr/bin/env narwhal
+print("Hello, World!");
diff --git a/utils/examples/narwhal b/utils/examples/narwhal
new file mode 100755
index 0000000..9dfc302
--- /dev/null
+++ b/utils/examples/narwhal
@@ -0,0 +1,3 @@
+#!/usr/bin/env narwhal
+var narwhal = require('narwhal');
+print(narwhal.LEFT);
diff --git a/utils/examples/not-quite-a-quine.js b/utils/examples/not-quite-a-quine.js
new file mode 100755
index 0000000..3d68c7b
--- /dev/null
+++ b/utils/examples/not-quite-a-quine.js
@@ -0,0 +1 @@
+system.stdout.write(system.fs.read(module.path)).flush();
diff --git a/utils/lib/file-bootstrap.js b/utils/lib/file-bootstrap.js
new file mode 100755
index 0000000..1ee69e6
--- /dev/null
+++ b/utils/lib/file-bootstrap.js
@@ -0,0 +1,170 @@
+
+// NOTE: this file is used is the bootstrapping process,
+// so any "requires" must be accounted for in narwhal.js
+
+// use the "file" module as the exports object.
+var exports = require("file");
+
+/* path manipulation, needed by the sandbox module in the
+ * bootstrapping process before "require" is ready for use */
+
+if (/\bwindows\b/i.test(system.os)) {
+ exports.ROOT = "\\";
+ exports.SEPARATOR = "\\";
+ exports.ALT_SEPARATOR = "/";
+} else {
+ exports.ROOT = "/";
+ exports.SEPARATOR = "/";
+ exports.ALT_SEPARATOR = undefined;
+}
+
+// we need to make sure the separator regex is always in sync with the separators.
+// this caches the generated regex and rebuild if either separator changes.
+exports.SEPARATORS_RE = function() {
+ if (separatorCached !== exports.SEPARATOR || altSeparatorCached !== exports.ALT_SEPARATOR) {
+ separatorCached = exports.SEPARATOR;
+ altSeparatorCached = exports.ALT_SEPARATOR;
+ separatorReCached = new RegExp("[" +
+ (separatorCached || '').replace(/[-[\]{}()*+?.\\^$|,#\s]/g, "\\$&") +
+ (altSeparatorCached || '').replace(/[-[\]{}()*+?.\\^$|,#\s]/g, "\\$&") +
+ "]", "g");
+ }
+ return separatorReCached;
+}
+var separatorCached, altSeparatorCached, separatorReCached;
+
+exports.join = function () {
+ return exports.normal(Array.prototype.join.call(arguments, exports.SEPARATOR));
+};
+
+exports.split = function (path) {
+ var parts;
+ try {
+ parts = String(path).split(exports.SEPARATORS_RE());
+ } catch (exception) {
+ throw new Error("Cannot split " + (typeof path) + ', "' + path + '"');
+ }
+ // this special case helps isAbsolute
+ // distinguish an empty path from an absolute path
+ if (parts.length == 1 && parts[0] == "")
+ return [];
+ return parts;
+};
+
+exports.resolve = function () {
+ var root = "";
+ var parents = [];
+ var children = [];
+ var leaf = "";
+ for (var i = 0; i < arguments.length; i++) {
+ var path = String(arguments[i]);
+ if (path == "")
+ continue;
+ var parts = path.split(exports.SEPARATORS_RE());
+ if (exports.isAbsolute(path)) {
+ root = parts.shift() + exports.SEPARATOR;
+ parents = [];
+ children = [];
+ }
+ leaf = parts.pop();
+ if (leaf == "." || leaf == "..") {
+ parts.push(leaf);
+ leaf = "";
+ }
+ for (var j = 0; j < parts.length; j++) {
+ var part = parts[j];
+ if (part == "." || part == '') {
+ } else if (part == "..") {
+ if (children.length) {
+ children.pop();
+ } else {
+ if (root) {
+ } else {
+ parents.push("..");
+ }
+ }
+ } else {
+ children.push(part);
+ }
+ };
+ }
+ path = parents.concat(children).join(exports.SEPARATOR);
+ if (path) leaf = exports.SEPARATOR + leaf;
+ return root + path + leaf;
+};
+
+exports.normal = function (path) {
+ return exports.resolve(path);
+};
+
+// XXX not standard
+exports.isAbsolute = function (path) {
+ // for absolute paths on any operating system,
+ // the first path component always determines
+ // whether it is relative or absolute. On Unix,
+ // it is empty, so ['', 'foo'].join('/') == '/foo',
+ // '/foo'.split('/') == ['', 'foo'].
+ var parts = exports.split(path);
+ // split('') == []. '' is not absolute.
+ // split('/') == ['', ''] is absolute.
+ // split(?) == [''] does not occur.
+ if (parts.length == 0)
+ return false;
+ var first = parts[0];
+ if (/\bwindows\b/i.test(system.os)) {
+ return /:$/.test(first);
+ } else {
+ return first == "";
+ }
+};
+
+// XXX not standard
+exports.isRelative = function (path) {
+ return !exports.isAbsolute(path);
+};
+
+/*** root
+ returns the Unix root path
+ or corresponding Windows drive
+ for a given path.
+*/
+// XXX not standard
+exports.root = function (path) {
+ if (!exports.isAbsolute(path))
+ path = require("file").absolute(path);
+ var parts = exports.split(path);
+ return exports.join(parts[0], '');
+};
+
+exports.dirname = function (path) {
+ var parts = exports.split(path);
+ // XXX needs to be sensitive to the root for
+ // Windows compatibility
+ parts.pop();
+ return exports.join.apply(null, parts) || ".";
+};
+
+// XXX the extension argument is not standard
+exports.basename = function (path, extension) {
+ var basename = path.split(exports.SEPARATORS_RE()).pop();
+ if (extension)
+ basename = basename.replace(
+ new RegExp(RegExp.escape(extension) + '$'),
+ ''
+ );
+ return basename;
+};
+
+exports.extension = function (path) {
+ path = exports.basename(path);
+ path = path.replace(/^\.*/, '');
+ var index = path.lastIndexOf(".");
+ return index <= 0 ? "" : path.substring(index);
+};
+
+// XXX not standard, deprecated
+exports.extname = function (path) {
+ system.log.warn('extname is deprecated in favor of extension');
+ return exports.extension(path);
+};
+
diff --git a/utils/lib/jsmin.js b/utils/lib/jsmin.js
new file mode 100755
index 0000000..37f9afb
--- /dev/null
+++ b/utils/lib/jsmin.js
@@ -0,0 +1,315 @@
+/* jsmin.js - 2006-08-31
+Author: Franck Marcia
+This work is an adaptation of jsminc.c published by Douglas Crockford.
+Permission is hereby granted to use the Javascript version under the same
+conditions as the jsmin.c on which it is based.
+
+jsmin.c
+2006-05-04
+
+Copyright (c) 2002 Douglas Crockford (www.crockford.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+The Software shall be used for Good, not Evil.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Update:
+ add level:
+ 1: minimal, keep linefeeds if single
+ 2: normal, the standard algorithm
+ 3: agressive, remove any linefeed and doesn't take care of potential
+ missing semicolons (can be regressive)
+*/
+
+String.prototype.has = function(c) {
+ return this.indexOf(c) > -1;
+};
+
+exports.encode = function (input, level, comment) {
+
+ if (input === undefined) {
+ input = comment;
+ comment = '';
+ level = 2;
+ } else if (level === undefined || level < 1 || level > 3) {
+ level = 2;
+ }
+
+ if (!comment) {
+ comment = "";
+ }
+
+ if (comment.length > 0) {
+ comment += '\n';
+ }
+
+ var a = '',
+ b = '',
+ EOF = -1,
+ LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
+ DIGITS = '0123456789',
+ ALNUM = LETTERS + DIGITS + '_$\\',
+ theLookahead = EOF;
+
+
+ /* isAlphanum -- return true if the character is a letter, digit, underscore,
+ dollar sign, or non-ASCII character.
+ */
+
+ function isAlphanum(c) {
+ return c != EOF && (ALNUM.has(c) || c.charCodeAt(0) > 126);
+ }
+
+
+ /* get -- return the next character. Watch out for lookahead. If the
+ character is a control character, translate it to a space or
+ linefeed.
+ */
+
+ function get() {
+
+ var c = theLookahead;
+ if (get.i == get.l) {
+ return EOF;
+ }
+ theLookahead = EOF;
+ if (c == EOF) {
+ c = input.charAt(get.i);
+ ++get.i;
+ }
+ if (c >= ' ' || c == '\n') {
+ return c;
+ }
+ if (c == '\r') {
+ return '\n';
+ }
+ return ' ';
+ }
+
+ get.i = 0;
+ get.l = input.length;
+
+
+ /* peek -- get the next character without getting it.
+ */
+
+ function peek() {
+ theLookahead = get();
+ return theLookahead;
+ }
+
+
+ /* next -- get the next character, excluding comments. peek() is used to see
+ if a '/' is followed by a '/' or '*'.
+ */
+
+ function next() {
+
+ var c = get();
+ if (c == '/') {
+ switch (peek()) {
+ case '/':
+ for (;;) {
+ c = get();
+ if (c <= '\n') {
+ return c;
+ }
+ }
+ break;
+ case '*':
+ get();
+ for (;;) {
+ switch (get()) {
+ case '*':
+ if (peek() == '/') {
+ get();
+ return ' ';
+ }
+ break;
+ case EOF:
+ throw 'Error: Unterminated comment.';
+ }
+ }
+ break;
+ default:
+ return c;
+ }
+ }
+ return c;
+ }
+
+
+ /* action -- do something! What you do is determined by the argument:
+ 1 Output A. Copy B to A. Get the next B.
+ 2 Copy B to A. Get the next B. (Delete A).
+ 3 Get the next B. (Delete B).
+ action treats a string as a single character. Wow!
+ action recognizes a regular expression if it is preceded by ( or , or =.
+ */
+
+ function action(d) {
+
+ var r = [];
+
+ if (d == 1) {
+ r.push(a);
+ }
+
+ if (d < 3) {
+ a = b;
+ if (a == '\'' || a == '"') {
+ for (;;) {
+ r.push(a);
+ a = get();
+ if (a == b) {
+ break;
+ }
+ if (a <= '\n') {
+ throw 'Error: unterminated string literal: ' + a;
+ }
+ if (a == '\\') {
+ r.push(a);
+ a = get();
+ }
+ }
+ }
+ }
+
+ b = next();
+
+ if (b == '/' && '(,=:[!&|'.has(a)) {
+ r.push(a);
+ r.push(b);
+ for (;;) {
+ a = get();
+ if (a == '/') {
+ break;
+ } else if (a =='\\') {
+ r.push(a);
+ a = get();
+ } else if (a <= '\n') {
+ throw 'Error: unterminated Regular Expression literal';
+ }
+ r.push(a);
+ }
+ b = next();
+ }
+
+ return r.join('');
+ }
+
+
+ /* m -- Copy the input to the output, deleting the characters which are
+ insignificant to JavaScript. Comments will be removed. Tabs will be
+ replaced with spaces. Carriage returns will be replaced with
+ linefeeds.
+ Most spaces and linefeeds will be removed.
+ */
+
+ function m() {
+
+ var r = [];
+ a = '\n';
+
+ r.push(action(3));
+
+ while (a != EOF) {
+ switch (a) {
+ case ' ':
+ if (isAlphanum(b)) {
+ r.push(action(1));
+ } else {
+ r.push(action(2));
+ }
+ break;
+ case '\n':
+ switch (b) {
+ case '{':
+ case '[':
+ case '(':
+ case '+':
+ case '-':
+ r.push(action(1));
+ break;
+ case ' ':
+ r.push(action(3));
+ break;
+ default:
+ if (isAlphanum(b)) {
+ r.push(action(1));
+ } else {
+ if (level == 1 && b != '\n') {
+ r.push(action(1));
+ } else {
+ r.push(action(2));
+ }
+ }
+ }
+ break;
+ default:
+ switch (b) {
+ case ' ':
+ if (isAlphanum(a)) {
+ r.push(action(1));
+ break;
+ }
+ r.push(action(3));
+ break;
+ case '\n':
+ if (level == 1 && a != '\n') {
+ r.push(action(1));
+ } else {
+ switch (a) {
+ case '}':
+ case ']':
+ case ')':
+ case '+':
+ case '-':
+ case '"':
+ case '\'':
+ if (level == 3) {
+ r.push(action(3));
+ } else {
+ r.push(action(1));
+ }
+ break;
+ default:
+ if (isAlphanum(a)) {
+ r.push(action(1));
+ } else {
+ r.push(action(3));
+ }
+ }
+ }
+ break;
+ default:
+ r.push(action(1));
+ break;
+ }
+ }
+ }
+
+ return r.join('');
+ }
+
+ ret = m(input);
+ return comment + ret;
+
+};
+
diff --git a/utils/lib/narwhal/server-test.js b/utils/lib/narwhal/server-test.js
new file mode 100755
index 0000000..24724a1
--- /dev/null
+++ b/utils/lib/narwhal/server-test.js
@@ -0,0 +1,3 @@
+var util = require("util");
+print("Hello, World!");
+print(util.keys({"a": 10, "b": 20}).join(', '));
diff --git a/utils/lib/narwhal/server.js b/utils/lib/narwhal/server.js
new file mode 100755
index 0000000..5e4580a
--- /dev/null
+++ b/utils/lib/narwhal/server.js
@@ -0,0 +1,211 @@
+
+var fs = require('file');
+var util = require('util');
+var sandboxing = require('sandbox');
+var Loader = sandboxing.Loader;
+var AttenuatedLoader = sandboxing.AttenuatedLoader;
+var Sandbox = sandboxing.Sandbox;
+
+var contentType = "application/x-javascript";
+
+exports.Bundler = function (system) {
+ var self = {};
+
+ system = util.copy(system);
+ system.platforms = util.copy(system.platforms);
+ system.platforms.unshift('browser');
+ var paths = util.copy(require.paths);
+ paths.unshift(system.prefix + '/platforms/browser/lib');
+
+ var loader = AttenuatedLoader(Loader({"paths": paths}));
+ var sandbox = Sandbox({'loader': loader, 'system': system});
+
+ sandbox.force('system');
+ sandbox('global');
+ sandbox('packages').main();
+
+ self.dependencies = function (baseId) {
+ var dependencies = [];
+ loader.fetch(baseId).replace(
+ /require\s*\(\s*(['"])([^'"]+)\1\s*\)/g,
+ function (all, quote, id) {
+ dependencies.push(loader.resolve(id, baseId));
+ return all;
+ }
+ );
+ return dependencies;
+ };
+
+ self.transitiveDependencies = function (id, visited) {
+ var result = [];
+ if (!visited)
+ visited = {};
+ if (util.has(visited, id))
+ return result;
+ visited[id] = true;
+ result.push(id);
+ self.dependencies(id).forEach(function (id) {
+ result.push.apply(
+ result,
+ self.transitiveDependencies(id, visited)
+ );
+ });
+ return result;
+ };
+
+ self.module = function (id) {
+ return loader.fetch(id);
+ };
+
+ self.factory = function (id) {
+ if (util.has(factories, id))
+ return util.get(factories, id);
+ var factory = (
+ 'require.register(' + util.enquote(id) + ',' +
+ 'function(require,exports,module,system,print){' +
+ loader.fetch(id) +
+ '/**/\n});'
+ );
+ util.set(factories, id, factory);
+ return factory;
+ };
+
+ self.factories = function (id) {
+ return self.dependencies(id).map(self.factory).join('');
+ };
+
+ self.transitiveFactories = function (id) {
+ return self.transitiveDependencies(id).map(self.factory).join('');
+ };
+
+ self.bundle = function (id) {
+ var bootstrap = fs.path(module.path).resolve('../../platforms/browser/bootstrap.js').read();
+ return exports.jsmin(bootstrap).replace(/\s*$/, '') + '.call(this,' + self.factories(id) + ')';
+ };
+
+ self.inline = function (id, path) {
+ var inline = fs.path(module.path).resolve('../../platforms/browser/inline.js').read().replace(/\s*$/, '');
+ var ids = self.transitiveDependencies(id).concat(['sandbox']);
+ util.sort(ids, util.by(function (id) {
+ return -self.factory(id).length;
+ }));
+ return inline + '.call(this, ' +
+ JSON.encode(ids) + ',' +
+ JSON.encode(id) + ',' +
+ JSON.encode(path) +
+ ')';
+ };
+
+ var timestamps = {};
+ var factories = {};
+
+ self.App = function () {
+ // modules?{id} that loads modules from module/{id}
+ // module/{id}.js
+ // bundle/{id}.js -> including {guids} for postcache, including cache prediction, including loader
+ // version/{mtime}/{id}.js -> minified, factorized, cached, mtime verified
+ return require("jack/directory").Directory({
+ 'module': self.moduleApp,
+ 'bundle': self.bundleApp,
+ 'factory': self.factoryApp
+ });
+ };
+
+ self.moduleApp = function (env) {
+ var id = env.PATH_INFO.replace(/^\//, '').replace(/\.js$/, '');
+ return [
+ 200,
+ {"Content-type": contentType},
+ [self.module(id)]
+ ];
+ };
+
+ self.bundleApp = function (env) {
+ var id = env.PATH_INFO.replace(/^\//, '').replace(/\.js$/, '');
+ return [
+ 200,
+ {"Content-type": contentType},
+ [self.transitiveFactories(id)]
+ ];
+ };
+
+ self.factoryApp = function (env) {
+ var id = env.PATH_INFO.replace(/^\//, '').replace(/\.js$/, '');
+ return [200, {"Content-type": contentType}, [self.factory(id)]];
+ };
+
+ return self;
+};
+
+exports.jsmin = function (text) {
+ if (require("jsmin").encode === undefined)
+ throw new Error("I should not be.");
+ return require("jsmin").encode(text);
+};
+
+exports.App = function (app, path) {
+ // TODO use path
+ var bundler = exports.Bundler(system);
+ var jsApp = bundler.App();
+ return function (env) {
+
+ if (/^\/js\//.test(env.PATH_INFO)) {
+ env.SCRIPT_NAME = env.SCRIPT_NAME + 'js/';
+ env.PATH_INFO = env.PATH_INFO.substring(3);
+ return jsApp(env);
+ }
+
+ var self = {};
+ self.inline = function (id) {
+ return bundler.inline(id, env.SCRIPT_NAME + 'js/factory/');
+ };
+ self.xhr = function (id) {
+ return env.javascript.path + '/module/modules?path=' + env.javascript.path + '/module/&' + id;
+ };
+ self.path = env.SCRIPT_NAME + '/js';
+
+ env.javascript = self;
+ return app(env);
+ };
+};
+
+if (require.main == module.id) {
+ var app = require('jack/directory').Directory(
+ {
+
+ /* this is the inline script solution that uses
+ * massively parallel script injection and a heuristic
+ * for transitive dependencies */
+ "": function (env) {
+ return [
+ 200,
+ {'Content-type': 'text/html'},
+ [
+ '<html><head><script>' +
+ env.javascript.inline('narwhal/server-test') +
+ '</script></head><body></body></html>'
+ ]
+ ];
+ },
+
+ /* this uses dynamic, synchronous http requests */
+ "xhr": function (env) {
+ return [
+ 200,
+ {'Content-type': 'text/html'},
+ [
+ '<script src="' +
+ env.javascript.xhr('narwhal/server-test') +
+ '"></script>'
+ ]
+ ];
+ }
+
+ }
+ );
+ app = exports.App(app);
+ app = require("jack").ContentLength(app);
+ exports.app = app;
+ require("jackup").main(["jackup", module.path]);
+}
+
diff --git a/examples/adding_up_to_10/test.txt b/utils/lib/narwhal/tusk/bundle.js
index e69de29..e69de29 100755
--- a/examples/adding_up_to_10/test.txt
+++ b/utils/lib/narwhal/tusk/bundle.js
diff --git a/utils/tests/iojs/hasOwnProperty/hasOwnProperty.js b/utils/lib/narwhal/tusk/freeze.js
index e69de29..e69de29 100755
--- a/utils/tests/iojs/hasOwnProperty/hasOwnProperty.js
+++ b/utils/lib/narwhal/tusk/freeze.js
diff --git a/utils/tests/iojs/hasOwnProperty/toString.js b/utils/lib/narwhal/tusk/orphans.js
index e69de29..e69de29 100755
--- a/utils/tests/iojs/hasOwnProperty/toString.js
+++ b/utils/lib/narwhal/tusk/orphans.js
diff --git a/utils/lib/narwhal/tusk/remove.js b/utils/lib/narwhal/tusk/remove.js
new file mode 100755
index 0000000..c8329bd
--- /dev/null
+++ b/utils/lib/narwhal/tusk/remove.js
@@ -0,0 +1,15 @@
+
+var tusk = require("../tusk");
+var util = require("util");
+var args = require("args");
+var parser = exports.parser = new args.Parser();
+
+parser.help('removes the local copy of package');
+
+parser.action(function (options) {
+ var names = options.args;
+});
+
+exports.remove = function () {
+};
+
diff --git a/examples/adding_up_to_10/test.txt b/utils/lib/narwhal/tusk/search.js
index e69de29..e69de29 100755
--- a/examples/adding_up_to_10/test.txt
+++ b/utils/lib/narwhal/tusk/search.js
diff --git a/examples/adding_up_to_10/test.txt b/utils/lib/narwhal/tusk/upgrade.js
index e69de29..e69de29 100755
--- a/examples/adding_up_to_10/test.txt
+++ b/utils/lib/narwhal/tusk/upgrade.js
diff --git a/utils/lib/url.js b/utils/lib/url.js
new file mode 100755
index 0000000..897ebc1
--- /dev/null
+++ b/utils/lib/url.js
@@ -0,0 +1,323 @@
+
+/**** keys
+ members of a parsed URI object.
+*/
+exports.keys = [
+ "url",
+ "protocol",
+ "authorityRoot",
+ "authority",
+ "userInfo",
+ "user",
+ "password",
+ "domain",
+ "domains",
+ "port",
+ "path",
+ "root",
+ "directory",
+ "directories",
+ "file",
+ "query",
+ "anchor"
+];
+
+/**** expressionKeys
+ members of a parsed URI object that you get
+ from evaluting the strict regular expression.
+*/
+exports.expressionKeys = [
+ "url",
+ "protocol",
+ "authorityRoot",
+ "authority",
+ "userInfo",
+ "user",
+ "password",
+ "domain",
+ "port",
+ "path",
+ "root",
+ "directory",
+ "file",
+ "query",
+ "anchor"
+];
+
+/**** strictExpression
+*/
+exports.strictExpression = new RegExp( /* url */
+ "^" +
+ "(?:" +
+ "([^:/?#]+):" + /* protocol */
+ ")?" +
+ "(?:" +
+ "(//)" + /* authorityRoot */
+ "(" + /* authority */
+ "(?:" +
+ "(" + /* userInfo */
+ "([^:@]*)" + /* user */
+ ":?" +
+ "([^:@]*)" + /* password */
+ ")?" +
+ "@" +
+ ")?" +
+ "([^:/?#]*)" + /* domain */
+ "(?::(\\d*))?" + /* port */
+ ")" +
+ ")?" +
+ "(" + /* path */
+ "(/?)" + /* root */
+ "((?:[^?#/]*/)*)" +
+ "([^?#]*)" + /* file */
+ ")" +
+ "(?:\\?([^#]*))?" + /* query */
+ "(?:#(.*))?" /*anchor */
+);
+
+/**** Parser
+ returns a URI parser function given
+ a regular expression that renders
+ `expressionKeys` and returns an `Object`
+ mapping all `keys` to values.
+*/
+exports.Parser = function (expression) {
+ return function (url) {
+ if (typeof url == "undefined")
+ throw new Error("HttpError: URL is undefined");
+ if (typeof url != "string") return new Object(url);
+
+ var items = {};
+ var parts = expression.exec(url);
+
+ for (var i = 0; i < parts.length; i++) {
+ items[exports.expressionKeys[i]] = parts[i] ? parts[i] : "";
+ }
+
+ items.root = (items.root || items.authorityRoot) ? '/' : '';
+
+ items.directories = items.directory.split("/");
+ if (items.directories[items.directories.length - 1] == "") {
+ items.directories.pop();
+ }
+
+ /* normalize */
+ var directories = [];
+ for (var i = 0; i < items.directories.length; i++) {
+ var directory = items.directories[i];
+ if (directory == '.') {
+ } else if (directory == '..') {
+ if (directories.length && directories[directories.length - 1] != '..')
+ directories.pop();
+ else
+ directories.push('..');
+ } else {
+ directories.push(directory);
+ }
+ }
+ items.directories = directories;
+
+ items.domains = items.domain.split(".");
+
+ return items;
+ };
+};
+
+/**** parse
+ a strict URI parser.
+*/
+exports.parse = exports.Parser(exports.strictExpression);
+
+/**** format
+ accepts a parsed URI object and returns
+ the corresponding string.
+*/
+exports.format = function (object) {
+ if (typeof(object) == 'undefined')
+ throw new Error("UrlError: URL undefined for urls#format");
+ if (object instanceof String || typeof(object) == 'string')
+ return object;
+ var domain =
+ object.domains ?
+ object.domains.join(".") :
+ object.domain;
+ var userInfo = (
+ object.user ||
+ object.password
+ ) ?
+ (
+ (object.user || "") +
+ (object.password ? ":" + object.password : "")
+ ) :
+ object.userInfo;
+ var authority = (
+ userInfo ||
+ domain ||
+ object.port
+ ) ? (
+ (userInfo ? userInfo + "@" : "") +
+ (domain || "") +
+ (object.port ? ":" + object.port : "")
+ ) :
+ object.authority;
+ var directory =
+ object.directories ?
+ object.directories.join("/") :
+ object.directory;
+ var path =
+ directory || object.file ?
+ (
+ (directory ? directory + "/" : "") +
+ (object.file || "")
+ ) :
+ object.path;
+ return (
+ (object.protocol ? object.protocol + ":" : "") +
+ (authority ? "//" + authority : "") +
+ (object.root || (authority && path) ? "/" : "") +
+ (path ? path : "") +
+ (object.query ? "?" + object.query : "") +
+ (object.anchor ? "#" + object.anchor : "")
+ ) || object.url || "";
+};
+
+/**** resolveObject
+ returns an object representing a URL resolved from
+ a relative location and a source location.
+*/
+exports.resolveObject = function (source, relative) {
+ if (!source)
+ return relative;
+
+ source = exports.parse(source);
+ relative = exports.parse(relative);
+
+ if (relative.url == "")
+ return source;
+
+ delete source.url;
+ delete source.authority;
+ delete source.domain;
+ delete source.userInfo;
+ delete source.path;
+ delete source.directory;
+
+ if (
+ relative.protocol && relative.protocol != source.protocol ||
+ relative.authority && relative.authority != source.authority
+ ) {
+ source = relative;
+ } else {
+ if (relative.root) {
+ source.directories = relative.directories;
+ } else {
+
+ var directories = relative.directories;
+ for (var i = 0; i < directories.length; i++) {
+ var directory = directories[i];
+ if (directory == ".") {
+ } else if (directory == "..") {
+ if (source.directories.length) {
+ source.directories.pop();
+ } else {
+ source.directories.push('..');
+ }
+ } else {
+ source.directories.push(directory);
+ }
+ }
+
+ if (relative.file == ".") {
+ relative.file = "";
+ } else if (relative.file == "..") {
+ source.directories.pop();
+ relative.file = "";
+ }
+ }
+ }
+
+ if (relative.root)
+ source.root = relative.root;
+ if (relative.protcol)
+ source.protocol = relative.protocol;
+ if (!(!relative.path && relative.anchor))
+ source.file = relative.file;
+ source.query = relative.query;
+ source.anchor = relative.anchor;
+
+ return source;
+};
+
+/**** relativeObject
+ returns an object representing a relative URL to
+ a given target URL from a source URL.
+*/
+exports.relativeObject = function (source, target) {
+ target = exports.parse(target);
+ source = exports.parse(source);
+
+ delete target.url;
+
+ if (
+ target.protocol == source.protocol &&
+ target.authority == source.authority
+ ) {
+ delete target.protocol;
+ delete target.authority;
+ delete target.userInfo;
+ delete target.user;
+ delete target.password;
+ delete target.domain;
+ delete target.domains;
+ delete target.port;
+ if (
+ !!target.root == !!source.root && !(
+ target.root &&
+ target.directories[0] != source.directories[0]
+ )
+ ) {
+ delete target.path;
+ delete target.root;
+ delete target.directory;
+ while (
+ source.directories.length &&
+ target.directories.length &&
+ target.directories[0] == source.directories[0]
+ ) {
+ target.directories.shift();
+ source.directories.shift();
+ }
+ while (source.directories.length) {
+ source.directories.shift();
+ target.directories.unshift('..');
+ }
+
+ if (!target.root && !target.directories.length && !target.file && source.file)
+ target.directories.push('.');
+
+ if (source.file == target.file)
+ delete target.file;
+ if (source.query == target.query)
+ delete target.query;
+ if (source.anchor == target.anchor)
+ delete target.anchor;
+ }
+ }
+
+ return target;
+};
+
+/**** resolve
+ returns a URL resovled to a relative URL from a source URL.
+*/
+exports.resolve = function (source, relative) {
+ return exports.format(exports.resolveObject(source, relative));
+};
+
+/**** relative
+ returns a relative URL to a target from a source.
+*/
+exports.relative = function (source, target) {
+ return exports.format(exports.relativeObject(source, target));
+};
+
diff --git a/utils/platforms/browser/inline.js b/utils/platforms/browser/inline.js
new file mode 100755
index 0000000..16d8b11
--- /dev/null
+++ b/utils/platforms/browser/inline.js
@@ -0,0 +1,56 @@
+(function (ids, id, path) {
+
+ var factories = {};
+ var pending;
+
+ var require = this.require = function (id, baseId) {
+ // defer to require set later from the sandbox module
+ require(id, baseId);
+ };
+
+ require.register = function (id, factory) {
+ factories[id] = factory;
+ if (!--pending)
+ main();
+ };
+
+ var pending = ids.length;
+ var head = document.getElementsByTagName('head')[0];
+ for (var i = 0; i < pending; i++) {
+ var script = document.createElement('script');
+ script.src = path + ids[i] + '.js';
+ head.appendChild(script);
+ };
+
+ function main() {
+
+ var system = {};
+ system.print = function () {
+ if (typeof console != "undefined") {
+ console.log(Array.prototype.join.call(arguments, ' '));
+ }
+ };
+
+ var loader = {};
+ loader.reload = function (topId) {
+ return factories[topId];
+ };
+ loader.load = function (topId) {
+ return loader.reload(topId);
+ };
+
+ var sandbox = {};
+ loader.load('sandbox')(
+ null,
+ sandbox,
+ {},
+ system,
+ system.print
+ );
+ require = sandbox.Sandbox({loader: loader});
+ loader.resolve = sandbox.resolve;
+ require(id);
+
+ }
+
+})
diff --git a/utils/platforms/browser/lib/modules.js b/utils/platforms/browser/lib/modules.js
new file mode 100755
index 0000000..db89b93
--- /dev/null
+++ b/utils/platforms/browser/lib/modules.js
@@ -0,0 +1,1449 @@
+/*preamble-kriskowal
+ Copyright (c) 2002-2009 Kris Kowal <http://cixar.com/~kris.kowal>
+ MIT License
+*/
+
+/*
+ isolate the module loader in an enclosure by creating an
+ annonymous function and then--at the end of this file--
+ calling it.
+
+ also, take the evalGlobal function as an argument so that it can be
+ declared in global scope. this prevents the eval function
+ from inheriting variables from the modulesjs enclosure scope.
+*/
+(function (evalGlobal) {
+
+ /*
+ kernel module factory functions. this module bootstrapper script
+ can also be used as a module, since it contains module
+ factory functions that can be used to bootstrap platform-specific
+ modules. to that end, we export the module factory functions if
+ there is an ambient "exports" object
+ */
+ var factories = typeof exports == "undefined" ? {} : exports;
+ /* kernel module instances */
+ var modules = {};
+
+ /*
+ a rudimentary require function to jumpstart
+ the module system
+ */
+ var require = function (id) {
+ if (!Object.prototype.hasOwnProperty.call(modules, id)) {
+ var exports = {};
+ modules[id] = exports;
+ factories[id](require, exports, system);
+ }
+ return modules[id];
+ };
+
+ /* a permissive system for kernel modules */
+ var system = {
+ window: window,
+ evalGlobal: evalGlobal
+ };
+
+ factories.main = function (require, exports, system) {
+
+ var FILE = 'modules'; /* used to find the corresponding <script> */
+
+ var urls = require('urls');
+ var browser = require('browser');
+ var console = require('console');
+
+ var window = system.window;
+ var document = window.document;
+ system.print = console.print;
+ system.messages = console.messages;
+
+ /* grab the URL of modules.js relative to the containing page,
+ and remove the <script> tag that invoked this module loader
+ from the DOM for maximum stealth.
+ */
+ var PATH = urls.resolve(function () { /* enclosure */
+ var scripts = document.getElementsByTagName("script");
+ for (var i = 0; i < scripts.length; i++) {
+ var script = scripts[i];
+ if (browser.hasAttr(script, "src")) {
+ var src = script.getAttribute("src");
+ src = urls.parse(src);
+ if (src.file == FILE) {
+ script.parentNode.removeChild(script);
+ return urls.resolve(src, window.location.href);
+ }
+ }
+ }
+ throw new Error("could not find '" + FILE + "' <script>");
+ }());
+
+ /* wait for the DOM to be fully loaded */
+ browser.observeDomReady(function () {
+
+ var sandbox = require('sandbox');
+ sandbox.execUrl(PATH, PATH, system);
+
+ /* note for CSS that JavaScript is enabled, and ready */
+ document.body.className = document.body.className + ' javascript';
+
+ });
+
+ };
+
+ factories.sandbox = function (require, exports, system) {
+
+ var http = require('http');
+ var urls = require('urls');
+ var evalGlobal = system.evalGlobal;
+
+ exports.Loader = function (options) {
+ options = options || {};
+ var factories = options.factories || {};
+ var path = options.path;
+ var exportsLocal = options.exportsLocal;
+ var importsLocal = options.importsLocal;
+
+ var loader = {};
+
+ loader.fetch = function (id) {
+ var url = urls.resolve(id, path) + '.js';
+ return http.requestContent(url);
+ };
+
+ loader.evaluate = function (text, id) {
+ var iojs = /"use iojs";/.test(text);
+ /* optionally bring imports into scope with include */
+ if (importsLocal && !iojs)
+ text = "with (imports||{}) {" + text + "}";
+ /* optional bring exports into scope when assigned to exports */
+ if (exportsLocal && !iojs)
+ text = "with (exports) {" + text + "}";
+ /* safeguard "var" declarations from being
+ * applied to the "with" object in ES3-non-conformant browsers
+ * (really only Safari < 3) */
+ if ((importsLocal || exportsLocal) && !iojs)
+ text = "(function () {" + text + "}).apply(this, arguments)";
+ if (iojs)
+ text = "include = undefined; " + text;
+ text = (
+ "(function (require, exports, module, system, print, include, imports) {" +
+ text +
+ "})"
+ );
+ /* annotate with the module id */
+ if (id)
+ text = '/* ' + id + ' */ ' + text;
+ return evalGlobal(text);
+ };
+
+ loader.resolve = function (id, baseId) {
+ if (typeof id != "string")
+ throw new Error("module id '" + id + "' is not a String");
+ if (!baseId) {
+ baseId = path;
+ }
+ if (id.charAt(0) != ".") {
+ baseId = path;
+ }
+ return urls.resolve(id, baseId);
+ };
+
+ loader.load = function (id) {
+ if (!Object.prototype.hasOwnProperty.call(factories, id)) {
+ factories[id] = loader.evaluate(loader.fetch(id), id);
+ }
+ return factories[id];
+ };
+
+ loader.getPath = function () {
+ return path;
+ };
+
+ return loader;
+ };
+
+ exports.Sandbox = function (options) {
+ options = options || {};
+ var loader = options.loader || exports.Loader(options);
+ var sandboxSystem = options.system || system;
+ var modules = options.modules || {};
+ var debug = options.debug === true;
+ var main;
+
+ var debugDepth = 0;
+
+ var sandbox = function (id, baseId) {
+
+ id = loader.resolve(id, baseId);
+
+ /* populate memo with module instance */
+ if (!Object.prototype.hasOwnProperty.call(modules, id)) {
+
+
+ if (debug) {
+ debugDepth++;
+ var debugAcc = "";
+ for (var i = 0; i < debugDepth; i++) debugAcc += "+";
+ system.print(debugAcc + " " + id, 'module');
+ }
+
+ var exports = modules[id] = new Module();
+ var factory = loader.load(id);
+ var require = Require(id);
+ var module = {id: id};
+ var imports = {};
+ var include = Include(require, imports);
+ try {
+ factory.call(
+ exports,
+ require,
+ exports,
+ module,
+ sandboxSystem,
+ sandboxSystem.print,
+ include,
+ imports
+ );
+ } catch (exception) {
+ delete modules[id];
+ throw exception;
+ }
+
+ if (debug) {
+ var debugAcc = "";
+ for (var i = 0; i < debugDepth; i++) debugAcc += "-";
+ system.print(debugAcc + " " + id, 'module');
+ debugDepth--;
+ }
+
+
+ }
+
+ /* snapshot exports with requested bound methods */
+ var exports = modules[id];
+ var imports = new Module();
+ var importsUsed = false;
+ for (var name in exports) {
+ if (
+ exports[name] !== undefined &&
+ exports[name] !== null &&
+ exports[name].xChironCurryId
+ ) {
+ importsUsed = true;
+ imports[name] = (function (callback) {
+ var curried = function () {
+ return callback.apply(
+ this,
+ [baseId].concat(Array.prototype.slice.call(arguments, 0))
+ );
+ };
+ curried.xChironCurryId = callback;
+ return curried;
+ })(exports[name].xChironCurryId);
+ } else {
+ imports[name] = exports[name];
+ }
+ }
+
+ if (!importsUsed)
+ imports = exports;
+
+ return imports;
+ };
+
+ var Require = function (baseId) {
+ var require = function (id) {
+ try {
+ return sandbox(id, baseId);
+ } catch (exception) {
+ if (exception && !exception.message)
+ exception.message = 'Error';
+ try {
+ try {
+ eval("throw new Error()");
+ } catch (deliberate) {
+ if (deliberate.lineNumber !== undefined)
+ exception.message += ' at ' + (exception.lineNumber - deliberate.lineNumber + 1);
+ }
+ exception.message += ' in ' + baseId;
+ } catch (ignore) {
+ }
+ throw exception;
+ }
+ };
+
+ require.loader = loader;
+
+ /* extensions */
+ require.xChironModule = Module;
+ require.xChironId = baseId;
+ require.main = main;
+ require.xChironCurryId = function (callback) {
+ var curried = function () {
+ return callback.apply(
+ this,
+ [baseId].concat(Array.prototype.slice.call(arguments))
+ );
+ };
+ curried.curryId = callback;
+ return curried;
+ };
+ require.xChironIsLoaded = function (id) {
+ return Object.prototype.hasOwnProperty.call(modules, urls.resolve(id, baseId));
+ };
+ return require;
+ };
+
+ var Include = function (require, imports) {
+ return function (id) {
+ var exports = require(id);
+ for (var name in exports) {
+ imports[name] = exports[name];
+ };
+ return exports;
+ };
+ };
+
+ sandbox.main = function (id, baseId) {
+ main = loader.resolve(id, baseId);
+ return sandbox(main);
+ };
+
+ /* just for use as a base prototype */
+ var Module = function () {};
+
+ return sandbox;
+ };
+
+ /* execUrl is a utility method of this ipmlementation, not necessary
+ * for the interoperable modules specification. */
+ exports.execUrl = function (url, PATH, sandboxSystem) {
+
+ /* populate a list of initial ids from the query string of the PATH */
+ var mainIds = [];
+ var url = urls.parse(url);
+ if (url.query != "") {
+ mainIds = url.query.split("&");
+ if (/^path=(.*)/.test(mainIds[0])) {
+ PATH = urls.resolve(/^path=(.*)/.exec(mainIds[0])[1], system.window.location.href);
+ mainIds.shift();
+ }
+ }
+
+ /* load main modules */
+ sandboxSystem.moduleFactories = system.moduleFactories || {};
+ var sandbox = exports.Sandbox({
+ path: PATH,
+ importsLocal: true,
+ exportsLocal: true,
+ system: sandboxSystem//,
+ //factories: sandboxSystem.moduleFactories
+ });
+ for (var i = 0; i < mainIds.length; i++) {
+ try {
+ sandbox.main(mainIds[i], system.window.location.href);
+ } catch (exception) {
+ sandboxSystem.print('' + exception, 'error');
+ throw exception;
+ }
+ }
+
+ /* notify the user that all main modules have finished loading */
+ sandboxSystem.print('ready', 'info');
+
+ };
+
+ };
+
+ factories.environment = function (require, exports, system) {
+
+ if (system.window) {
+ var window = system.window;
+ var navigator = window.navigator;
+
+ exports.isIE = navigator.appVersion.indexOf("MSIE") >= 0;
+ exports.isSafari = navigator.appVersion.indexOf("Safari") >= 0;
+ exports.isOpera = !!window.opera;
+ }
+
+ };
+
+ factories.console = function (require, exports, system) {
+
+ var window = system.window;
+ var console = system.console || window.console;
+
+ /*** exports
+ */
+ exports.messages = [];
+
+ /*** print
+
+ accepts:
+ - a ``message`` and
+ - an optional ``label``.
+
+ The label, by convention, is one of `"log"``, ``"info"``,
+ ``"warn"``, or ``"error"``. Custom loggers treat labels like
+ ``"module"``, ``"pass"``, or ``"fail"``. Attempts to write
+ the message to `window.console`, progressively handling
+ `console` implementations that provide a function for the
+ given ``label``, or defaulting to `log` depending on
+ availability.
+
+ Also adds a ``[message, label]`` array to the end
+ of `messages`. ``label`` is one of ``"log"``,
+ ``"warn"``, ``"info"``, or ``"error"`` by convention.
+ In Safari, `log` writes to the Javascript debug console, which
+ is only available if you set the preference::
+
+ defaults write com.apple.Safari IncludeDebugMenu 1
+
+ Or in Safari 3::
+
+ defaults write com.apple.Safari IncludeDevelopMenu 1
+
+ And in Safari 4, the preference has been exposed
+ in the Advanced tab; check "Show Develop Menu".
+
+ In Firefox, you can get a debug console with Firebug,
+ http://getfirebug.com.
+
+ You can override the behavior of `log` by assigning
+ a different function to ``require('environment').log``
+ in any module.
+
+ Chiron can create a debug console for the purpose of
+ unit testing or page debugging. To debug a web page,
+ use `modules.js` to include `debug.js` on a page.
+ To run a unit test, view `run.html`, `lite.html`,
+ or `edit.html` with the `moduleId` of the unit test
+ as a query string.
+
+ */
+ exports.print = function (message, label) {
+
+ label = label || 'log';
+
+ /*
+ buffer messages so that console overrides
+ can retrieve and display them later.
+ */
+ exports.messages.push([message, label]);
+
+ /*
+ attempt to send the message to window.console if it
+ exists, progressively handling the availability
+ of a logging function crafted especially for the
+ requested label, or defaulting to 'log'.
+ */
+
+ if (console) {
+ if (console.print) {
+ console.print(message, label);
+ } else if (console[label]) {
+ console[label](message);
+ } else if (console.log) {
+ console.log(message);
+ }
+ }
+
+ };
+
+ };
+
+ factories.browser = function (require, exports, system) {
+
+ var environment = require('environment');
+ var window = system.window;
+ var document = window.document;
+ var top = window.top;
+
+ exports.hasAttr = function (element, key) {
+ if (element.hasAttribute) {
+ exports.hasAttr = function (element, key) {
+ return element.hasAttribute(key);
+ };
+ return exports.hasAttr(element, key);
+ } else {
+ exports.hasAttr = function (element, key) {
+ var node = element.getAttributeNode(key);
+ return node && node.specified;
+ };
+ return exports.hasAttr(element, key);
+ }
+ };
+
+ var isDomReady = false;
+ exports.observeDomReady = function (callback) {
+
+ /* call immediately if we've already noted a DOM
+ * ready event */
+ if (isDomReady)
+ return callback();
+
+ /* arrange to call back exactly once, even if multiple
+ * methods of detecting dom completion call "ready" */
+ var hasCalledBack = false;
+ var ready = function () {
+ if (hasCalledBack)
+ return;
+ hasCalledBack = true;
+ isDomReady = true;
+ callback();
+ };
+
+ /*
+ wait for the DOM and CSS to be ready, but don't wait
+ for images unless they're absolutely necessary.
+
+ ported from jQuery's event.js, with previous implementations
+ taking from similar sources, including Dean Edwards
+ and PPK.
+ */
+
+ /*
+ Opera uses DOMContentLoaded but has special code for
+ pending style sheets.
+ */
+ if (environment.isOpera)
+ document.addEventListener("DOMContentLoaded", function () {
+ if (isDomReady) return;
+ for (var i = 0; i < document.styleSheets.length; i++)
+ if (document.styleSheets[i].disabled) {
+ window.setTimeout(arguments.callee, 0);
+ return;
+ }
+ // and execute any waiting functions
+ ready();
+ }, false);
+
+ /* Mozilla and WebKit nightlies currently support this event */
+ if (document.addEventListener)
+ /* Use the handy event callback */
+ document.addEventListener("DOMContentLoaded", ready, false);
+
+ /*
+ If IE is used and is not in a frame,
+ continually check to see whether the document is ready.
+ */
+ if (environment.isIE && window == top) (function () {
+ if (isDomReady) return;
+ try {
+ /*
+ If IE is used, use the trick by Diego Perini
+ http://javascript.nwbox.com/IEContentLoaded/
+ */
+ document.documentElement.doScroll("left");
+ } catch (error) {
+ /*
+ using setTimeout with a 0 milisecond dellay
+ is effectively the equivalent of a "yield"
+ in a cooperative multi-task language.
+ This permits the browser to breathe before
+ we check whether we're ready again.
+ */
+ window.setTimeout(arguments.callee, 0);
+ return;
+ }
+ ready();
+ })();
+
+ if (environment.isSafari) {
+ (function () {
+ if (isDomReady) return;
+ if (
+ document.readyState != "loaded" &&
+ document.readyState != "complete"
+ ) {
+ window.setTimeout(arguments.callee, 0);
+ return;
+ }
+ var numStyles = document.getElementsByTagName('style').length;
+ var links = document.getElementsByTagName('link');
+ for (var i = 0; i < links.length; i++) {
+ var link = links[i];
+ numStyles += (
+ link.hasAttribute('rel') &&
+ link.getAttribute('rel').toLowerCase() ==
+ 'stylesheet'
+ );
+ }
+ if (document.styleSheets.length != numStyles) {
+ window.setTimeout(arguments.callee, 0);
+ return;
+ }
+ ready();
+ })();
+ }
+
+ /*
+ for other browsers, give up on the time saving
+ techniques and wait for all the images to load.
+ also, do this in other browsers just in case they missed
+ the boat.
+ */
+ if (window.onload) {
+ /* if there's already an onload listener, call ready after it,
+ preserving first-come-first-serve event observation */
+ window.onload = (function (onload) {
+ return function () {
+ onload.call(this);
+ ready();
+ };
+ })(window.onload);
+ } else {
+ window.onload = ready;
+ }
+
+ };
+
+ };
+
+ factories.urls = function (require, exports, system) {
+
+ /**** keys
+ members of a parsed URI object.
+ */
+ exports.keys = [
+ "url",
+ "protocol",
+ "authorityRoot",
+ "authority",
+ "userInfo",
+ "user",
+ "password",
+ "domain",
+ "domains",
+ "port",
+ "path",
+ "root",
+ "directory",
+ "directories",
+ "file",
+ "query",
+ "anchor"
+ ];
+
+ /**** expressionKeys
+ members of a parsed URI object that you get
+ from evaluting the strict regular expression.
+ */
+ exports.expressionKeys = [
+ "url",
+ "protocol",
+ "authorityRoot",
+ "authority",
+ "userInfo",
+ "user",
+ "password",
+ "domain",
+ "port",
+ "path",
+ "root",
+ "directory",
+ "file",
+ "query",
+ "anchor"
+ ];
+
+ /**** strictExpression
+ */
+ exports.strictExpression = new RegExp( /* url */
+ "^" +
+ "(?:" +
+ "([^:/?#]+):" + /* protocol */
+ ")?" +
+ "(?:" +
+ "(//)" + /* authorityRoot */
+ "(" + /* authority */
+ "(?:" +
+ "(" + /* userInfo */
+ "([^:@]*)" + /* user */
+ ":?" +
+ "([^:@]*)" + /* password */
+ ")?" +
+ "@" +
+ ")?" +
+ "([^:/?#]*)" + /* domain */
+ "(?::(\\d*))?" + /* port */
+ ")" +
+ ")?" +
+ "(" + /* path */
+ "(/?)" + /* root */
+ "((?:[^?#/]*/)*)" +
+ "([^?#]*)" + /* file */
+ ")" +
+ "(?:\\?([^#]*))?" + /* query */
+ "(?:#(.*))?" /*anchor */
+ );
+
+ /**** Parser
+ returns a URI parser function given
+ a regular expression that renders
+ `expressionKeys` and returns an `Object`
+ mapping all `keys` to values.
+ */
+ exports.Parser = function (expression) {
+ return function (url) {
+ if (typeof url == "undefined")
+ throw new Error("HttpError: URL is undefined");
+ if (typeof url != "string") return new Object(url);
+
+ var items = {};
+ var parts = expression.exec(url);
+
+ for (var i = 0; i < parts.length; i++) {
+ items[exports.expressionKeys[i]] = parts[i] ? parts[i] : "";
+ }
+
+ items.root = (items.root || items.authorityRoot) ? '/' : '';
+
+ items.directories = items.directory.split("/");
+ if (items.directories[items.directories.length - 1] == "") {
+ items.directories.pop();
+ }
+
+ /* normalize */
+ var directories = [];
+ for (var i = 0; i < items.directories.length; i++) {
+ var directory = items.directories[i];
+ if (directory == '.') {
+ } else if (directory == '..') {
+ if (directories.length && directories[directories.length - 1] != '..')
+ directories.pop();
+ else
+ directories.push('..');
+ } else {
+ directories.push(directory);
+ }
+ }
+ items.directories = directories;
+
+ items.domains = items.domain.split(".");
+
+ return items;
+ };
+ };
+
+ /**** parse
+ a strict URI parser.
+ */
+ exports.parse = exports.Parser(exports.strictExpression);
+
+ /**** format
+ accepts a parsed URI object and returns
+ the corresponding string.
+ */
+ exports.format = function (object) {
+ if (typeof(object) == 'undefined')
+ throw new Error("UrlError: URL undefined for urls#format");
+ if (object instanceof String || typeof(object) == 'string')
+ return object;
+ var domain =
+ object.domains ?
+ object.domains.join(".") :
+ object.domain;
+ var userInfo = (
+ object.user ||
+ object.password
+ ) ?
+ (
+ (object.user || "") +
+ (object.password ? ":" + object.password : "")
+ ) :
+ object.userInfo;
+ var authority = (
+ userInfo ||
+ domain ||
+ object.port
+ ) ? (
+ (userInfo ? userInfo + "@" : "") +
+ (domain || "") +
+ (object.port ? ":" + object.port : "")
+ ) :
+ object.authority;
+ var directory =
+ object.directories ?
+ object.directories.join("/") :
+ object.directory;
+ var path =
+ directory || object.file ?
+ (
+ (directory ? directory + "/" : "") +
+ (object.file || "")
+ ) :
+ object.path;
+ return (
+ (object.protocol ? object.protocol + ":" : "") +
+ (authority ? "//" + authority : "") +
+ (object.root || (authority && path) ? "/" : "") +
+ (path ? path : "") +
+ (object.query ? "?" + object.query : "") +
+ (object.anchor ? "#" + object.anchor : "")
+ ) || object.url || "";
+ };
+
+ /**** resolveObject
+ returns an object representing a URL resolved from
+ a relative location and a base location.
+ */
+ exports.resolveObject = function (relative, base) {
+ if (!base)
+ return relative;
+
+ base = exports.parse(base);
+ relative = exports.parse(relative);
+
+ if (relative.url == "")
+ return base;
+
+ delete base.url;
+ delete base.authority;
+ delete base.domain;
+ delete base.userInfo;
+ delete base.path;
+ delete base.directory;
+
+ if (
+ relative.protocol && relative.protocol != base.protocol ||
+ relative.authority && relative.authority != base.authority
+ ) {
+ base = relative;
+ } else {
+ if (relative.root) {
+ base.directories = relative.directories;
+ } else {
+
+ var directories = relative.directories;
+ for (var i = 0; i < directories.length; i++) {
+ var directory = directories[i];
+ if (directory == ".") {
+ } else if (directory == "..") {
+ if (base.directories.length) {
+ base.directories.pop();
+ } else {
+ base.directories.push('..');
+ }
+ } else {
+ base.directories.push(directory);
+ }
+ }
+
+ if (relative.file == ".") {
+ relative.file = "";
+ } else if (relative.file == "..") {
+ base.directories.pop();
+ relative.file = "";
+ }
+ }
+ }
+
+ if (relative.root)
+ base.root = relative.root;
+ if (relative.protcol)
+ base.protocol = relative.protocol;
+ if (!(!relative.path && relative.anchor))
+ base.file = relative.file;
+ base.query = relative.query;
+ base.anchor = relative.anchor;
+
+ return base;
+ };
+
+ /**** relativeObject
+ returns an object representing a relative URL to
+ a given target URL from a source URL.
+ */
+ exports.relativeObject = function (target, base) {
+ target = exports.parse(target);
+ base = exports.parse(base);
+
+ delete target.url;
+
+ if (
+ target.protocol == base.protocol &&
+ target.authority == base.authority
+ ) {
+ delete target.protocol;
+ delete target.authority;
+ delete target.userInfo;
+ delete target.user;
+ delete target.password;
+ delete target.domain;
+ delete target.domains;
+ delete target.port;
+ if (
+ !!target.root == !!base.root && !(
+ target.root &&
+ target.directories[0] != base.directories[0]
+ )
+ ) {
+ delete target.path;
+ delete target.root;
+ delete target.directory;
+ while (
+ base.directories.length &&
+ target.directories.length &&
+ target.directories[0] == base.directories[0]
+ ) {
+ target.directories.shift();
+ base.directories.shift();
+ }
+ while (base.directories.length) {
+ base.directories.shift();
+ target.directories.unshift('..');
+ }
+
+ if (!target.root && !target.directories.length && !target.file && base.file)
+ target.directories.push('.');
+
+ if (base.file == target.file)
+ delete target.file;
+ if (base.query == target.query)
+ delete target.query;
+ if (base.anchor == target.anchor)
+ delete target.anchor;
+ }
+ }
+
+ return target;
+ };
+
+ /**** resolve
+ returns a URL resovled to a relative URL from a base URL.
+ */
+ exports.resolve = function (relative, base) {
+ return exports.format(exports.resolveObject(relative, base));
+ };
+
+ /**** relative
+ returns a relative URL to a target from a source.
+ */
+ exports.relative = function (target, base) {
+ return exports.format(exports.relativeObject(target, base));
+ };
+
+ };
+
+ factories.http = function (require, exports, system) {
+
+ var urls = require('urls');
+ var environment = require('environment');
+ var window = system.window;
+
+ /**** requestContent
+ returns the text at a given URL using an HTTP
+ request.
+ supports continuation passing form for asynchronous
+ requests.
+ */
+ exports.requestContent = function (url, observer) {
+ if (observer !== undefined) {
+ return exports.request(url, function (response) {
+ if (response.isOk())
+ observer(response.getContent());
+ });
+ } else {
+ var response = exports.request(url);
+ if (response.isError())
+ throw new Error("HttpError: " + url + " status " + response.getStatus());
+ return response.getContent();
+ }
+ };
+
+ /**** request
+ sends an HTTP request to a given URL and returns
+ the response.
+ supports continuation passing form for asynchronous
+ requests.
+ */
+ exports.request = function (url, observer) {
+ var request = exports.Request();
+ var response = request.getResponse();
+
+ url = urls.resolve(url, system.window.location.href);
+
+ if (observer)
+ request.observe("ok", observer);
+
+ request.open("GET", url, !!observer);
+
+ try {
+ request.send();
+ } catch (exception) {
+ request.abort();
+ throw new Error('HttpError: "' + url + '": ' + exception);
+ }
+
+ if (observer !== undefined) {
+ return request;
+ } else {
+ return response;
+ }
+
+ };
+
+ /*todo
+ Look deeper into dojo/src/hostenv_browser.js for
+ _blockAsync lock to prevent eternal hanging in KHTML
+ */
+
+ /**** Request
+ returns a wrapped HTTP Request object.
+ */
+ exports.Request = function () {
+ /* this line permits the user to create a request with
+ * either new Request() or Request(). internally,
+ * we just use the Request() so that Request can be
+ * overloaded later in HTTP to be a type constructor
+ * function instead of a prototype constructor */
+ if (this == exports) return new exports.Request();
+
+ var self = this;
+ var method, url, asynchronous, user, password;
+ var realRequest = exports.NativeRequest();
+ var response = exports.Response(realRequest);
+ var isOpen;
+ var readyStateChanged;
+ var timeout;
+ var timeoutHandle;
+ var aborted;
+
+ var readyObservers = [];
+ var okObservers = [];
+ var errorObservers = [];
+ var warnObservers = [];
+ var timeoutObservers = [];
+
+ /***** toString
+ */
+ self.toString = function () {return "[object HttpRequest]"};
+
+ /***** getResponse
+ */
+ self.getResponse = function () {
+ return response;
+ };
+
+ var signal = function (response, observers) {
+ while (observers.length) {
+ var observer = observers.shift();
+ observer(response);
+ }
+ };
+
+ /***** pogress
+ an event function that the Request calls when it
+ receives a chunk of content.
+ */
+ self.progress = function () {
+ /* necessary: this function becomes an observable signal */
+ };
+
+ /***** ready
+ an event function that the Request calls when
+ the Reponse is ready.
+ */
+ self.ready = function () {
+ signal(response, readyObservers);
+ };
+
+ /***** ok
+ an event function that the Request calls when a Response
+ is ready and all went well. Note that Safari and FireFox, at least,
+ will fire this event even when the connection is abruptly
+ terminated by the server, reporting a 200 status and
+ an empty response content.
+ */
+ self.ok = function () {
+ signal(response, okObservers);
+ };
+
+ /***** error
+ an event function that the Request calls when a Reponse
+ is completed but failed to retrieve the requested content.
+ */
+ self.error = function () {
+ signal(response, errorObservers);
+ };
+
+ /***** warn
+ an event function that the Request calls when
+ something is amiss with message.
+ */
+ self.warn = function (message) {
+ warn(message);
+ signal(response, warnObservers);
+ };
+
+ /***** timeout
+ an event function that Request calls when a request
+ times out. The default behavior is to invoke an error.
+ */
+ self.timeout = function () {
+ signal(response, timeoutObservers);
+ };
+
+ /***** observe
+ permits a user to observe `ready`, `ok`,
+ `error`, and `warn` events with a handler
+ function. Observing any event on a `Request`
+ causes the `open` and `send` to implicitly become
+ asynchronous.
+ */
+ self.observe = function (eventName, observer) {
+ asynchronous = true;
+ if (eventName == "ready") readyObservers.push(observer);
+ else if (eventName == "ok") okObservers.push(observer);
+ else if (eventName == "error") errorObservers.push(observer);
+ else if (eventName == "warn") warnObservers.push(observer);
+ else if (eventName == "timeout") timeoutObservers.push(observer);
+ else throw new Error(
+ "HttpError: event name '" + eventName + "' " +
+ "is not recognized"
+ );
+ };
+
+ /***** setHeader
+ */
+ self.setHeader = function (key, value) {
+ realRequest.setRequestHeader(key, value);
+ };
+
+ /***** isOpen
+ */
+ self.isOpen = function () {
+ return isOpen;
+ };
+
+ /***** isSent
+ */
+ self.isSent = function () {
+ return realRequest.readyState > 0;
+ };
+
+ /***** getTimeout
+ */
+ self.getTimeout = function () {
+ return timeout;
+ };
+
+ /***** setTimeout
+ */
+ self.setTimeout = function (value) {
+ timeout = value;
+ };
+
+ /***** open
+
+ Accepts
+
+ - ``method``, an HTTP request method, for example,
+ ``GET``, ``POST``, ``PROPFIND`` and others.
+ - ``url``, a web location string
+ - ``synchronous``, whether ``send`` will block until completed,
+ for example, ``synchronous``, ``asynchronous``.
+ - ``user``, an optional HTTP user name.
+ - ``password``, an optional HTTP password.
+
+ */
+ self.open = function (_method, _url, _asynchronous, _user, _password) {
+ try {
+ return realRequest.open(
+ method = _method,
+ url = _url,
+ asynchronous = _asynchronous,
+ user = _user,
+ password = _password
+ );
+ } finally {
+ isOpen = true;
+ }
+ };
+
+ /***** send
+ Accepts an optional ``content`` argument for requests like ``POST`` method.
+ */
+ self.send = function (content) {
+
+ realRequest.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+
+ if (!content) {
+ content = "";
+ }
+
+ if (timeout !== undefined) {
+ timeoutHandle = window.setTimeout(function () {
+ timeoutHandle = undefined;
+ var status = response.getStatus();
+ if (status != 200 || status === undefined) {
+ self.timeout();
+ self.abort();
+ }
+ }, timeout);
+ }
+
+ return realRequest.send(content);
+ };
+
+ /***** abort
+ */
+ self.abort = function () {
+ if (timeoutHandle !== undefined)
+ window.clearTimeout(timeoutHandle);
+ aborted = true;
+ return realRequest.abort();
+ };
+
+ realRequest.onreadystatechange = function () {
+ readyStateChanged = true;
+
+ self.progress();
+
+ if (aborted) {
+ free();
+ } else if (realRequest.readyState == 4) {
+ try {
+
+ self.ready(response);
+
+ if (response.isOk()) {
+ self.ok(response);
+ } else {
+ self.error(response);
+ }
+
+ } catch (exception) {
+ system.print(exception.message || exception, 'error');
+ }
+ free();
+ }
+ };
+
+ var free = function () {
+ delete realRequest['onreadystatechange'];
+ realRequest.onreadystatechange = undefined;
+ };
+
+ return self;
+ };
+
+ /**** Response
+ returns a wrapped HTTP Response object.
+ */
+ exports.Response = function (realRequest) {
+ /* this line permits the user to create a request with
+ * either new Respones() or Response(). internally,
+ * we just use the Response() so that Response can be
+ * overloaded later in HTTP to be a type constructor
+ * function instead of a prototype constructor */
+ if (this == exports) return new exports.Response(realRequest);
+
+ var self = this;
+
+ /* this init function doesn't get invoked until Response becomes
+ * a type in HTTP. so, this method is merely for the future. */
+ self.init = function (realRequestValue) {
+ realRequest = realRequestValue;
+ };
+
+ /***** isReady
+ whether the request is finished. This indicates
+ whether you can call `getStatus`
+ */
+ self.isReady = function () {
+ return realRequest.readyState == 4;
+ };
+
+ /***** getStatus
+ returns the HTTP response code. Local files
+ return 0. Returns ``undefined`` if the
+ underlying XML HTTP request throws an exception,
+ `getStatus` returns ``undefined``.
+ */
+ self.getStatus = function () {
+ /* one wouldn't think this were necessary.
+ * one would be wrong. */
+ try {
+ return realRequest.status;
+ } catch (exception) {
+ return undefined;
+ }
+ };
+
+ /***** isOk
+ returns whether a request had a valid response.
+ This usually is indicative of a 200 HTTP response
+ code, but there are variations among browsers.
+
+ HTTP Status codes in the interval [200, 300] are all legal
+ HTTP Ok responses.
+
+ In Firefox and Safari 3, local files acquired with an HTTP request
+ have a status code of 0.
+
+ In Safari 2, local files acquired with an asynchronous HTTP
+ request have a status of undefined.
+
+ In Safari, a response with no content causes a status
+ of `undefined`.
+
+ Konqueror requires acceptance of 304, "using cache",
+ according to dojo/src/hostenv_browser.js
+
+ According to jQuery issue #1450, IE sometimes 1223
+ instead of 204.
+ */
+ self.isOk = function () {
+ var status = self.getStatus();
+ return (
+ /* usually */
+ status >= 200 && status < 300 ||
+ /* Firefox and Safari 3 file:// */
+ status == 0 ||
+ /* Konqueror using cache */
+ status == 304 ||
+ /* IE bug 1223 */
+ status == 1223 ||
+ /* Safari 2 asynchronous file:// and
+ all Safari for no file content */
+ (environment.isSafari && status == undefined && (
+ /^file:\/\//.test(url) ||
+ realRequest.responseText == ""
+ ))
+ );
+ };
+
+ /***** isError
+ */
+ self.isError = function () {
+ return !self.isOk();
+ };
+
+ /***** getContent
+ */
+ self.getContent = function () {
+ return realRequest.responseText;
+ };
+
+ /***** getDocument
+ */
+ self.getDocument = function () {
+ return self.getXml().documentElement;
+ };
+
+ /***** getHeader
+ */
+ self.getHeader = function (key) {
+ return realRequest.getResponseHeader(key);
+ };
+
+ /***** hasHeader
+ */
+ self.hasHeader = function (key) {
+ return realRequest.getResponseHeader(key) != undefined;
+ };
+
+ /***** getHeaders
+ */
+ self.getHeaders = function () {
+ var headers = realRequest.getAllResponseHeaders();
+ if (!headers) return {};
+ return headers;
+ };
+
+ /***** len
+ */
+ self.len = function () {
+ return realRequest.responseText.length;
+ };
+
+ };
+
+ /*** NativeRequest
+ returns an XMLHttpRequest in most browsers.
+ */
+ /* Based on dojo/src/hostenv_browser.js */
+
+ exports.NativeRequest = function () {
+ /*
+
+ subscribes to the lazy function definition pattern, since it
+ redefines itself as the first method that works on the first
+ call.
+
+ Some other AJAX implementations check
+ - Msxml2.XMLHTTP.6.0
+ - Msxml2.XMLHTTP.5.0
+ - Msxml2.XMLHTTP.4.0
+ - Msxml2.XMLHTTP.3.0
+ - Microsoft.XMLHTTP
+
+ Microsoft.XMLHTTP is an older name-space, but is equivalent to
+ the more lucid Msxml2.XMLHTTP.3.0 and only available when the
+ latter is available too.
+
+ Msxml2.XMLHTTP.4.0 has been superseded and is currently only
+ intended to support legacy applications.
+
+ Msxml2.XMLHTTP.5.0 was shipped with MS Office 2003 and was
+ intended for Office applications. IE7 has this component off
+ by default in the Internet zone, leading to canary-yellow
+ verification dialogs.
+
+ Msxml2.XMLHTTP.6.0 is currently the standard MS is pushing.
+ I originally left out 6.0 since it would increase the burden
+ of testing for functionality that cannot be trusted to work
+ in all browsers.
+ However, I've taken Jonathan Snook's advice to check for
+ Microsoft's latest and greatest.
+
+ see: http://snook.ca/archives/javascript/xmlhttprequest_activex_ie/
+
+ Msxml2.XMLHTTP.3.0 is the most widely deployed version and is
+ serviced regularly with the OS for security and other reasons.
+ It is MS's preferred alternative to MSXML6.
+
+ see: http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx
+
+ see: http://www.telerik.com/documents/AJAX%20Page/Ajax-Part1.pdf page 3
+
+ */
+
+ var trials = [
+ function () {return new window.XMLHttpRequest()},
+ function () {return new window.ActiveXObject("Msxml2.XMLHTTP.6.0")},
+ function () {return new window.ActiveXObject("Msxml2.XMLHTTP.3.0")},
+ function () {throw new Error("No HTTP Request object available for your system.")}
+ ];
+
+ var trial, result, exception;
+ for (var i = 0; i < trials.length; i++) {
+ exception = undefined;
+ /* redeclare for posterity */
+ exports.NativeRequest = trial = trials[i];
+ try {
+ result = trial();
+ } catch (trialException) {
+ exception = trialException;
+ continue;
+ }
+ break;
+ }
+
+ if (exception) throw exception;
+ else return result;
+ };
+
+ };
+
+ if (typeof exports == "undefined") {
+ require('main');
+ }
+
+/* end of module enclosure */
+})(function () {
+ return eval(arguments[0]);
+});
+
diff --git a/utils/platforms/browser/lib/system.js b/utils/platforms/browser/lib/system.js
new file mode 100755
index 0000000..d50a5cf
--- /dev/null
+++ b/utils/platforms/browser/lib/system.js
@@ -0,0 +1,3 @@
+exports.print = function () {
+ system.print.apply(system, arguments);
+};
diff --git a/utils/platforms/default/lib/binary-platform.js b/utils/platforms/default/lib/binary-platform.js
new file mode 100755
index 0000000..3bc2425
--- /dev/null
+++ b/utils/platforms/default/lib/binary-platform.js
@@ -0,0 +1,53 @@
+exports.B_LENGTH = function(bytes) {
+ return bytes.length;
+}
+
+exports.B_ALLOC = function(length) {
+ var bytes = new Array(length);
+ for (var i = 0; i < length; i++)
+ bytes[i] = 0;
+ return bytes;
+}
+
+exports.B_FILL = function(bytes, from, to, value) {
+ for (var i = from; i < to; i++)
+ bytes[i] = value;
+}
+
+exports.B_COPY = function(src, srcOffset, dst, dstOffset, length) {
+ for (var i = 0; i < length; i++)
+ dst[dstOffset+i] = src[srcOffset+i];
+}
+
+exports.B_GET = function(bytes, index) {
+ return bytes[index];
+}
+
+exports.B_SET = function(bytes, index, value) {
+ return bytes[index] = value;
+}
+
+var DEFAULT_ENCODING = "UTF-8";
+
+exports.B_DECODE = function(bytes, offset, length, codec) {
+ var newBytes = exports.B_TRANSCODE(bytes, offset, length, codec, DEFAULT_ENCODING);
+ return exports.B_DECODE_DEFAULT(newBytes, 0, exports.B_LENGTH(newBytes));
+}
+
+exports.B_DECODE_DEFAULT = function(bytes, offset, length) {
+ throw "NYI";
+}
+
+exports.B_ENCODE = function(string, codec) {
+ var bytes = exports.B_ENCODE_DEFAULT(string);
+ return exports.B_TRANSCODE(bytes, 0, exports.B_LENGTH(bytes), DEFAULT_ENCODING, codec);
+}
+
+exports.B_ENCODE_DEFAULT = function(string) {
+ throw "NYI";
+}
+
+exports.B_TRANSCODE = function(bytes, offset, length, sourceCodec, targetCodec) {
+ throw "NYI";
+}
+
diff --git a/utils/platforms/default/lib/binary.js b/utils/platforms/default/lib/binary.js
new file mode 100755
index 0000000..7c19b80
--- /dev/null
+++ b/utils/platforms/default/lib/binary.js
@@ -0,0 +1,719 @@
+/* Binary */
+
+var B_ALLOC = require("binary-platform").B_ALLOC,
+ B_LENGTH = require("binary-platform").B_LENGTH,
+ B_GET = require("binary-platform").B_GET,
+ B_SET = require("binary-platform").B_SET,
+ B_FILL = require("binary-platform").B_FILL,
+ B_COPY = require("binary-platform").B_COPY,
+ B_DECODE = require("binary-platform").B_DECODE,
+ B_ENCODE = require("binary-platform").B_ENCODE,
+ B_DECODE_DEFAULT = require("binary-platform").B_DECODE_DEFAULT,
+ B_ENCODE_DEFAULT = require("binary-platform").B_ENCODE_DEFAULT,
+ B_TRANSCODE = require("binary-platform").B_TRANSCODE;
+
+var Binary = exports.Binary = function() {
+ // this._bytes
+ // this._offset
+ // this._length
+};
+
+Binary.prototype.__defineGetter__("length", function() { return this._length; });
+Binary.prototype.__defineSetter__("length", function(length) { print("x trying to set length: " + length); });
+
+// toArray() - n array of the byte values
+// toArray(charset) - an array of the code points, decoded
+Binary.prototype.toArray = function(codec) {
+ if (arguments.length === 0) {
+ var array = new Array(this._length);
+
+ for (var i = 0; i < this.length; i++)
+ array[i] = this.get(i);
+
+ return array;
+ }
+ else if (arguments.length === 1) {
+ var string = new java.lang.String(this._bytes, this._offset, this._length, codec),
+ length = string.length(),
+ array = new Array(length);
+
+ for (var i = 0; i < length; i++)
+ array[i] = string.codePointAt(i);
+
+ return array;
+ }
+ else
+ throw new Error("Illegal arguments to toArray()");
+};
+
+// toByteArray() - just a copy
+// toByteArray(sourceCharset, targetCharset) - transcoded
+Binary.prototype.toByteArray = function(sourceCodec, targetCodec) {
+ if (arguments.length < 2)
+ return new ByteArray(this);
+ else if (arguments.length === 2 && typeof sourceCodec === "string" && typeof targetCodec === "string") {
+ var bytes = B_TRANSCODE(this._bytes, this._offset, this._length, sourceCodec, targetCodec);
+ return new ByteArray(bytes, 0, B_LENGTH(bytes));
+ }
+
+ throw new Error("Illegal arguments to ByteArray toByteArray");
+};
+
+// toByteString() - byte for byte copy
+// toByteString(sourceCharset, targetCharset) - transcoded
+Binary.prototype.toByteString = function(sourceCodec, targetCodec) {
+ if (arguments.length < 2)
+ return new ByteString(this);
+ else if (arguments.length === 2 && typeof sourceCodec === "string" && typeof targetCodec === "string") {
+ var bytes = B_TRANSCODE(this._bytes, this._offset, this._length, sourceCodec, targetCodec);
+ return new ByteString(bytes, 0, B_LENGTH(bytes));
+ }
+
+ throw new Error("Illegal arguments to ByteArray toByteString");
+};
+
+// decodeToString()
+// decodeToString(charset) - returns a String from its decoded bytes in a given charset. If no charset is provided, or if the charset is "undefined", assumes the default system encoding.
+// decodeToString(number) - returns a String from its decoded bytes in a given base, like 64, 32, 16, 8, 2
+Binary.prototype.decodeToString = function(charset) {
+ if (charset) {
+ if (typeof charset == "number")
+ return require("base" + charset).encode(this);
+ else if (charset.begins("base"))
+ return require(charset).encode(this);
+ else
+ return B_DECODE(this._bytes, this._offset, this._length, charset);
+ }
+ return B_DECODE_DEFAULT(this._bytes, this._offset, this._length);
+};
+
+// get(offset) - Return the byte at offset as a Number.
+Binary.prototype.get = function(offset) {
+ if (offset < 0 || offset >= this._length)
+ return NaN;
+
+ //var b = this._bytes[this._offset + offset];
+ //return (b >= 0) ? b : -1 * ((b ^ 0xFF) + 1);
+ return B_GET(this._bytes, this._offset + offset)
+};
+
+Binary.prototype.indexOf = function(byteValue, start, stop) {
+ // HACK: use ByteString's slice since we know we won't be modifying result
+ var array = ByteString.prototype.slice.apply(this, [start, stop]).toArray(),
+ result = array.indexOf(byteValue);
+ return (result < 0) ? -1 : result + (start || 0);
+};
+
+Binary.prototype.lastIndexOf = function(byteValue, start, stop) {
+ // HACK: use ByteString's slice since we know we won't be modifying result
+ var array = ByteString.prototype.slice.apply(this, [start, stop]).toArray(),
+ result = array.lastIndexOf(byteValue);
+ return (result < 0) ? -1 : result + (start || 0);
+};
+
+// valueOf()
+Binary.prototype.valueOf = function() {
+ return this;
+};
+
+/* ByteString */
+
+var ByteString = exports.ByteString = function() {
+ if (!(this instanceof ByteString)) {
+ if (arguments.length == 0)
+ return new ByteString();
+ if (arguments.length == 1)
+ return new ByteString(arguments[0]);
+ if (arguments.length == 2)
+ return new ByteString(arguments[0], arguments[1]);
+ if (arguments.length == 3)
+ return new ByteString(arguments[0], arguments[1], arguments[2]);
+ }
+
+ // ByteString() - Construct an empty byte string.
+ if (arguments.length === 0) {
+ this._bytes = B_ALLOC(0); // null;
+ this._offset = 0;
+ this._length = 0;
+ }
+ // ByteString(byteString) - Copies byteString.
+ else if (arguments.length === 1 && arguments[0] instanceof ByteString) {
+ return arguments[0];
+ }
+ // ByteString(byteArray) - Use the contents of byteArray.
+ else if (arguments.length === 1 && arguments[0] instanceof ByteArray) {
+ var copy = arguments[0].toByteArray();
+ this._bytes = copy._bytes;
+ this._offset = copy._offset;
+ this._length = copy._length;
+ }
+ // ByteString(arrayOfNumbers) - Use the numbers in arrayOfNumbers as the bytes.
+ else if (arguments.length === 1 && Array.isArray(arguments[0])) {
+ var array = arguments[0];
+ this._bytes = B_ALLOC(array.length);
+ for (var i = 0; i < array.length; i++) {
+ var b = array[i];
+ // If any element is outside the range 0...255, an exception (TODO) is thrown.
+ if (b < -0x80 || b > 0xFF)
+ throw new Error("ByteString constructor argument Array of integers must be -128 - 255 ("+b+")");
+ // Java "bytes" are interpreted as 2's complement
+ //this._bytes[i] = (b < 128) ? b : -1 * ((b ^ 0xFF) + 1);
+ B_SET(this._bytes, i, b);
+ }
+ this._offset = 0;
+ this._length = B_LENGTH(this._bytes);
+ }
+ // ByteString(string, charset) - Convert a string. The ByteString will contain string encoded with charset.
+ else if ((arguments.length === 1 || (arguments.length === 2 && arguments[1] === undefined)) && typeof arguments[0] === "string") {
+ this._bytes = B_ENCODE_DEFAULT(arguments[0]);
+ this._offset = 0;
+ this._length = B_LENGTH(this._bytes);
+ }
+ else if (arguments.length === 2 && typeof arguments[0] === "string" && typeof arguments[1] === "string") {
+ this._bytes = B_ENCODE(arguments[0], arguments[1]);
+ this._offset = 0;
+ this._length = B_LENGTH(this._bytes);
+ }
+ // private: ByteString(bytes, offset, length)
+ else if (arguments.length === 3 && typeof arguments[1] === "number" && typeof arguments[2] === "number") {
+ this._bytes = arguments[0];
+ this._offset = arguments[1];
+ this._length = arguments[2];
+ }
+ else
+ throw new Error("Illegal arguments to ByteString constructor: [" +
+ Array.prototype.join.apply(arguments, [","]) + "] ("+arguments.length+")");
+
+ //seal(this);
+};
+
+ByteString.prototype = new Binary();
+
+ByteString.prototype.__defineGetter__("length", function() { return this._length; });
+ByteString.prototype.__defineSetter__("length", function(length) {});
+
+// toByteArray() - Returns a byte for byte copy in a ByteArray.
+// toByteArray(sourceCharset, targetCharset) - Returns a transcoded copy in a ByteArray.
+// - implemented on Binary
+
+// toByteString() - Returns itself, since there's no need to copy an immutable ByteString.
+// toByteString(sourceCharset, targetCharset) - Returns a transcoded copy.
+// - implemented on Binary
+
+// toArray() - Returns an array containing the bytes as numbers.
+// toArray(charset) - Returns an array containing the decoded Unicode code points.
+// - implemented on Binary
+
+// toString()
+ByteString.prototype.toString = function(charset) {
+ if (charset)
+ return this.decodeToString(charset);
+
+ return "[ByteString "+this.length+"]";
+};
+
+// decodeToString(charset) - Returns the decoded ByteArray as a string.
+// - implemented on Binary
+
+ByteString.prototype.byteAt =
+ByteString.prototype.charAt = function(offset) {
+ var byteValue = this.get(offset);
+
+ if (isNaN(byteValue))
+ return new ByteString();
+
+ return new ByteString([byteValue]);
+};
+
+// indexOf() - implemented on Binary
+// lastIndexOf() - implemented on Binary
+
+// charCodeAt(offset)
+ByteString.prototype.charCodeAt = Binary.prototype.get;
+
+// get(offset) - implemented on Binary
+
+// byteAt(offset) ByteString - implemented on Binary
+// charAt(offset) ByteString - implemented on Binary
+
+// split(delimiter, [options])
+ByteString.prototype.split = function(delimiters, options) {
+ var options = options || {},
+ count = options.count === undefined ? -1 : options.count,
+ includeDelimiter = options.includeDelimiter || false;
+
+ // standardize delimiters into an array of ByteStrings:
+ if (!Array.isArray(delimiters))
+ delimiters = [delimiters];
+
+ delimiters = delimiters.map(function(delimiter) {
+ if (typeof delimiter === "number")
+ delimiter = [delimiter];
+ return new ByteString(delimiter);
+ });
+
+ var components = [],
+ startOffset = this._offset,
+ currentOffset = this._offset;
+
+ // loop until there's no more bytes to consume
+ bytes_loop :
+ while (currentOffset < this._offset + this._length) {
+
+ // try each delimiter until we find a match
+ delimiters_loop :
+ for (var i = 0; i < delimiters.length; i++) {
+ var d = delimiters[i];
+
+ for (var j = 0; j < d._length; j++) {
+ // reached the end of the bytes, OR bytes not equal
+ if (currentOffset + j > this._offset + this._length ||
+ B_GET(this._bytes, currentOffset + j) !== B_GET(d._bytes, d._offset + j)) {
+ continue delimiters_loop;
+ }
+ }
+
+ // push the part before the delimiter
+ components.push(new ByteString(this._bytes, startOffset, currentOffset - startOffset));
+
+ // optionally push the delimiter
+ if (includeDelimiter)
+ components.push(new ByteString(this._bytes, currentOffset, d._length))
+
+ // reset the offsets
+ startOffset = currentOffset = currentOffset + d._length;
+
+ continue bytes_loop;
+ }
+
+ // if there was no match, increment currentOffset to try the next one
+ currentOffset++;
+ }
+
+ // push the remaining part, if any
+ if (currentOffset > startOffset)
+ components.push(new ByteString(this._bytes, startOffset, currentOffset - startOffset));
+
+ return components;
+};
+
+// slice()
+// slice(begin)
+// slice(begin, end)
+ByteString.prototype.slice = function(begin, end) {
+ if (begin === undefined)
+ begin = 0;
+ else if (begin < 0)
+ begin = this._length + begin;
+
+ if (end === undefined)
+ end = this._length;
+ else if (end < 0)
+ end = this._length + end;
+
+ begin = Math.min(this._length, Math.max(0, begin));
+ end = Math.min(this._length, Math.max(0, end));
+
+ return new ByteString(this._bytes, this._offset + begin, end - begin);
+};
+
+// substr(start)
+// substr(start, length)
+ByteString.prototype.substr = function(start, length) {
+ if (start !== undefined) {
+ if (length !== undefined)
+ return this.slice(start);
+ else
+ return this.slice(start, start + length);
+ }
+ return this.slice();
+};
+
+// substring(first)
+// substring(first, last)
+ByteString.prototype.substring = function(from, to) {
+ if (from !== undefined) {
+ if (to !== undefined)
+ return this.slice(Math.max(Math.min(begin, this._length), 0));
+ else
+ return this.slice(Math.max(Math.min(begin, this._length), 0),
+ Math.max(Math.min(end, this._length), 0));
+ }
+ return this.slice();
+};
+
+// [] ByteString - TODO
+
+// toSource()
+ByteString.prototype.toSource = function() {
+ return "ByteString(["+this.toArray().join(",")+"])";
+};
+
+/* ByteArray */
+
+// ByteArray() - New, empty ByteArray.
+// ByteArray(length) - New ByteArray filled with length zero bytes.
+// ByteArray(byteArray) - Copy byteArray.
+// ByteArray(byteString) - Copy contents of byteString.
+// ByteArray(arrayOfBytes) - Use numbers in arrayOfBytes as contents.
+// Throws an exception if any element is outside the range 0...255 (TODO).
+// ByteArray(string, charset) - Create a ByteArray from a Javascript string, the result being encoded with charset.
+var ByteArray = exports.ByteArray = function() {
+ if (!this instanceof ByteArray) {
+ if (arguments.length == 0)
+ return new ByteArray();
+ if (arguments.length == 1)
+ return new ByteArray(arguments[0]);
+ if (arguments.length == 2)
+ return new ByteArray(arguments[0], arguments[1]);
+ if (arguments.length == 3)
+ return new ByteArray(arguments[0], arguments[1], arguments[2]);
+ }
+
+ // ByteArray() - New, empty ByteArray.
+ if (arguments.length === 0) {
+ this._bytes = B_ALLOC(0); // null;
+ this._offset = 0;
+ this._length = 0;
+ }
+ // ByteArray(length) - New ByteArray filled with length zero bytes.
+ else if (arguments.length === 1 && typeof arguments[0] === "number") {
+ this._bytes = B_ALLOC(arguments[0]); // null;
+ this._offset = 0;
+ this._length = B_LENGTH(this._bytes);
+ }
+ // ByteArray(byteArray) - Copy byteArray.
+ // ByteArray(byteString) - Copy contents of byteString.
+ else if (arguments.length === 1 && (arguments[0] instanceof ByteArray || arguments[0] instanceof ByteString)) {
+ var byteArray = new ByteArray(arguments[0]._length);
+ B_COPY(arguments[0]._bytes, arguments[0]._offset, byteArray._bytes, byteArray._offset, byteArray._length);
+ return byteArray;
+ }
+ // ByteArray(arrayOfBytes) - Use numbers in arrayOfBytes as contents.
+ // Throws an exception if any element is outside the range 0...255 (TODO).
+ else if (arguments.length === 1 && Array.isArray(arguments[0])) {
+ var array = arguments[0];
+ this._bytes = B_ALLOC(array.length);
+ for (var i = 0; i < array.length; i++) {
+ var b = array[i];
+ // If any element is outside the range 0...255, an exception (TODO) is thrown.
+ if (b < 0 || b > 0xFF)
+ throw new Error("ByteString constructor argument Array of integers must be 0 - 255 ("+b+")");
+ // Java "bytes" are interpreted as 2's complement
+ //this._bytes[i] = (b < 128) ? b : -1 * ((b ^ 0xFF) + 1);
+ B_SET(this._bytes, i, b);
+ }
+ this._offset = 0;
+ this._length = B_LENGTH(this._bytes);
+ }
+ // ByteArray(string, charset) - Create a ByteArray from a Javascript string, the result being encoded with charset.
+ else if ((arguments.length === 1 || (arguments.length === 2 && arguments[1] === undefined)) && typeof arguments[0] === "string") {
+ this._bytes = B_ENCODE_DEFAULT(arguments[0]);
+ this._offset = 0;
+ this._length = B_LENGTH(this._bytes);
+ }
+ else if (arguments.length === 2 && typeof arguments[0] === "string" && typeof arguments[1] === "string") {
+ this._bytes = B_ENCODE(arguments[0], arguments[1]);
+ this._offset = 0;
+ this._length = B_LENGTH(this._bytes);
+ }
+ // private: ByteArray(bytes, offset, length)
+ else if (arguments.length === 3 && typeof arguments[1] === "number" && typeof arguments[2] === "number") {
+ this._bytes = arguments[0];
+ this._offset = arguments[1];
+ this._length = arguments[2];
+ }
+ else
+ throw new Error("Illegal arguments to ByteString constructor: [" +
+ Array.prototype.join.apply(arguments, [","]) + "] ("+arguments.length+")");
+};
+
+ByteArray.prototype = new Binary();
+
+ByteArray.prototype.__defineGetter__("length", function() { return this._length; });
+ByteArray.prototype.__defineSetter__("length", function(length) {
+ if (typeof length !== "number")
+ return;
+
+ // same length
+ if (length === this.length) {
+ return;
+ }
+ // new length is less, truncate
+ else if (length < this._length) {
+ this._length = length;
+ }
+ // new length is more, but fits without moving, just clear new bytes
+ else if (this._offset + length <= B_LENGTH(this._bytes)) {
+ B_FILL(this._bytes, this._length, this._offset + length - 1, 0);
+ this._length = length;
+ }
+ // new length is more, but fits if we shift to bottom, so do that.
+ else if (length <= B_LENGTH(this._bytes)) {
+ B_COPY(this._bytes, this._offset, this._bytes, 0, this._length);
+ this._offset = 0;
+ B_FILL(this._bytes, this._length, this._offset + length - 1, 0);
+ this._length = length;
+ }
+ // new length is more than the allocated bytes array, allocate a new one and copy the data
+ else {
+ var newBytes = B_ALLOC(length);
+ B_COPY(this._bytes, this._offset, newBytes, 0, this._length);
+ this._bytes = newBytes;
+ this._offset = 0;
+ this._length = length;
+ }
+});
+
+// FIXME: array notation for set and get
+ByteArray.prototype.set = function(index, b) {
+ // If any element is outside the range 0...255, an exception (TODO) is thrown.
+ if (b < 0 || b > 0xFF)
+ throw new Error("ByteString constructor argument Array of integers must be 0 - 255 ("+b+")");
+
+ if (index < 0 || index >= this._length)
+ throw new Error("Out of range");
+
+ // Java "bytes" are interpreted as 2's complement
+ //this._bytes[this._offset + index] = (b < 128) ? b : -1 * ((b ^ 0xFF) + 1);
+ B_SET(this._bytes, this._offset + index, b);
+};
+
+// toArray()
+// toArray(charset)
+// - implemented on Binary
+
+// toByteArray() - just a copy
+// toByteArray(sourceCharset, targetCharset) - transcoded
+// - implemented on Binary
+
+// toByteString() - byte for byte copy
+// toByteString(sourceCharset, targetCharset) - transcoded
+// - implemented on Binary
+
+// toString() - a string representation like "[ByteArray 10]"
+// toString(charset) - an alias for decodeToString(charset)
+ByteArray.prototype.toString = function(charset) {
+ if (charset)
+ return this.decodeToString(charset);
+
+ return "[ByteArray "+this.length+"]";
+};
+
+// decodeToString(charset) - implemented on Binary
+
+// byteAt(offset) ByteString - Return the byte at offset as a ByteString.
+// - implemented on Binary
+
+// get(offset) Number - Return the byte at offset as a Number.
+// - implemented on Binary
+
+// concat(other ByteArray|ByteString|Array)
+// TODO: I'm assuming Array means an array of ByteStrings/ByteArrays, not an array of integers.
+ByteArray.prototype.concat = function() {
+ var components = [this],
+ totalLength = this.length;
+
+ for (var i = 0; i < arguments.length; i++) {
+ var component = Array.isArray(component) ? arguments[i] : [component];
+
+ for (var j = 0; j < component.length; j++) {
+ var subcomponent = component[j];
+ if (!(subcomponent instanceof ByteString) && !(subcomponent instanceof ByteArray))
+ throw "Arguments to ByteArray.concat() must be ByteStrings, ByteArrays, or Arrays of those.";
+
+ components.push(subcomponent);
+ totalLength += subcomponent.length;
+ }
+ }
+
+ var result = new ByteArray(totalLength),
+ offset = 0;
+
+ components.forEach(function(component) {
+ B_COPY(component._bytes, component._offset, result._byte, offset, component._length);
+ offset += component._length;
+ });
+
+ return result;
+};
+
+// pop() -> byte Number
+ByteArray.prototype.pop = function() {
+ if (this._length === 0)
+ return undefined;
+
+ this._length--;
+
+ return B_GET(this._bytes, this._offset + this._length);
+};
+
+// push(...variadic Numbers...)-> count Number
+ByteArray.prototype.push = function() {
+ throw "NYI";
+};
+
+// extendRight(...variadic Numbers / Arrays / ByteArrays / ByteStrings ...)
+ByteArray.prototype.extendRight = function() {
+ throw "NYI";
+};
+
+// shift() -> byte Number
+ByteArray.prototype.shift = function() {
+ if (this._length === 0)
+ return undefined;
+
+ this._length--;
+ this._offset++;
+
+ return B_GET(this._bytes, this._offset - 1);
+};
+
+// unshift(...variadic Numbers...) -> count Number
+ByteArray.prototype.unshift = function() {
+ throw "NYI";
+};
+
+// extendLeft(...variadic Numbers / Arrays / ByteArrays / ByteStrings ...)
+ByteArray.prototype.extendLeft = function() {
+ throw "NYI";
+};
+
+// reverse() in place reversal
+ByteArray.prototype.reverse = function() {
+ // "limit" is halfway, rounded down. "top" is the last index.
+ var limit = Math.floor(this._length/2) + this._offset,
+ top = this._length - 1;
+
+ // swap each pair of bytes, up to the halfway point
+ for (var i = this._offset; i < limit; i++) {
+ var tmp = B_GET(this._bytes, i);
+ B_SET(this._bytes, i, B_GET(this._bytes, top - i));
+ B_SET(this._bytes, top - i, tmp);
+ }
+
+ return this;
+};
+
+// slice()
+ByteArray.prototype.slice = function() {
+ return new ByteArray(ByteString.prototype.apply.slice(this, arguments));
+};
+
+var numericCompareFunction = function(o1, o2) { return o1 - o2; };
+
+// sort([compareFunction])
+ByteArray.prototype.sort = function(compareFunction) {
+ // FIXME: inefficient?
+
+ var array = this.toArray();
+
+ if (arguments.length)
+ array.sort(compareFunction);
+ else
+ array.sort(numericCompareFunction);
+
+ for (var i = 0; i < array.length; i++)
+ this.set(i, array[i]);
+};
+
+// splice()
+ByteArray.prototype.splice = function() {
+ throw "NYI";
+};
+
+// indexOf() - implemented on Binary
+// lastIndexOf() - implemented on Binary
+
+// split() Returns an array of ByteArrays instead of ByteStrings.
+ByteArray.prototype.split = function() {
+ var components = ByteString.prototype.split.apply(this.toByteString(), arguments);
+
+ // convert ByteStrings to ByteArrays
+ for (var i = 0; i < components.length; i++) {
+ // we know we can use these byte buffers directly since we copied them above
+ components[i] = new ByteArray(components[i]._bytes, components[i]._offset, components[i]._length);
+ }
+
+ return components;
+};
+
+// filter(callback[, thisObject])
+ByteArray.prototype.filter = function(callback, thisObject) {
+ var result = new ByteArray(this.length);
+ for (var i = 0, length = this.length; i < length; i++) {
+ var value = this.get(i);
+ if (callback.apply(thisObject, [value, i, this]))
+ result.push(value);
+ }
+ return result;
+};
+
+// forEach(callback[, thisObject]);
+ByteArray.prototype.forEach = function(callback) {
+ for (var i = 0, length = this.length; i < length; i++)
+ callback.apply(thisObject, [this.get(i), i, this]);
+};
+
+// every(callback[, thisObject])
+ByteArray.prototype.every = function(callback, thisObject) {
+ for (var i = 0, length = this.length; i < length; i++)
+ if (!callback.apply(thisObject, [this.get(i), i, this]))
+ return false;
+ return true;
+};
+
+// some(callback[, thisObject])
+ByteArray.prototype.some = function(callback, thisObject) {
+ for (var i = 0, length = this.length; i < length; i++)
+ if (callback.apply(thisObject, [this.get(i), i, this]))
+ return true;
+ return false;
+};
+
+// map(callback[, thisObject]);
+ByteArray.prototype.map = function(callback, thisObject) {
+ var result = new ByteArray(this.length);
+ for (var i = 0, length = this.length; i < length; i++)
+ result.set(i, callback.apply(thisObject, [this.get(i), i, this]));
+ return result;
+};
+
+// reduce(callback[, initialValue])
+ByteArray.prototype.reduce = function(callback, initialValue) {
+ var value = initialValue;
+ for (var i = 0, length = this.length; i < length; i++)
+ value = callback(value, this.get(i), i, this);
+ return value;
+};
+
+// reduceRight(callback[, initialValue])
+ByteArray.prototype.reduceRight = function(callback, initialValue) {
+ var value = initialValue;
+ for (var i = this.length-1; i > 0; i--)
+ value = callback(value, this.get(i), i, this);
+ return value;
+};
+
+// displace(begin, end, values/ByteStrings/ByteArrays/Arrays...) -> length
+// begin/end are specified like for slice. Can be used like splice but does not return the removed elements.
+ByteArray.prototype.displace = function(begin, end) {
+ throw "NYI";
+};
+
+// toSource() returns a string like "ByteArray([])" for a null byte-array.
+ByteArray.prototype.toSource = function() {
+ return "ByteArray(["+this.toArray().join(",")+"])";
+};
+
+/* BinaryIO */
+
+exports.BinaryIO = function(binary) {
+ if (!binary)
+ throw "NYI";
+
+ var stream = new (require("io").IO)(new java.io.ByteArrayInputStream(binary._bytes, binary._offset, binary._length), null);
+ stream.length = binary.length;
+ return stream;
+};
+
diff --git a/utils/platforms/default/lib/os-platform.js b/utils/platforms/default/lib/os-platform.js
new file mode 100755
index 0000000..9d3a6f8
--- /dev/null
+++ b/utils/platforms/default/lib/os-platform.js
@@ -0,0 +1,3 @@
+exports.exit = function(status) {
+ throw new Error("Exiting with status="+status);
+}
diff --git a/utils/platforms/k7/bin/narwhal-k7 b/utils/platforms/k7/bin/narwhal-k7
new file mode 100755
index 0000000..495c9d8
--- /dev/null
+++ b/utils/platforms/k7/bin/narwhal-k7
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+# get the absolute path of the executable
+SELF_PATH=$(cd -P -- "$(dirname -- "$0")" && pwd -P) && SELF_PATH=$SELF_PATH/$(basename -- "$0")
+
+# resolve symlinks
+while [ -h $SELF_PATH ]; do
+ DIR=$(dirname -- "$SELF_PATH")
+ SYM=$(readlink $SELF_PATH)
+ SELF_PATH=$(cd $DIR && cd $(dirname -- "$SYM") && pwd)/$(basename -- "$SYM")
+done
+
+NARWHAL_PLATFORM_HOME=$(dirname $(dirname $SELF_PATH))
+BOOTSTRAP="$NARWHAL_PLATFORM_HOME/bootstrap.js"
+
+if [ ! "$NARWHAL_HOME" ]; then
+ NARWHAL_HOME=$(dirname $(dirname $NARWHAL_PLATFORM_HOME))
+fi
+
+export NARWHAL_HOME
+
+# uses rlwrap (readline wrapper) if present
+K7="$(which rlwrap) k7"
+
+# drop into shell if there are no additional arguments
+if [ $# -lt 1 ]; then
+ # FIXME: no way to explicitly drop into shell
+ $K7 $BOOTSTRAP "$@"
+else
+ MAIN=$(cd -P -- "$(dirname -- "$1")" && pwd -P) && MAIN=$MAIN/$(basename -- "$1" .js)
+ $K7 $BOOTSTRAP $MAIN "$0" "$@"
+fi
diff --git a/utils/platforms/k7/bootstrap.js b/utils/platforms/k7/bootstrap.js
new file mode 100755
index 0000000..4fc18f5
--- /dev/null
+++ b/utils/platforms/k7/bootstrap.js
@@ -0,0 +1,78 @@
+(function (evalGlobal) {
+
+ // NOTE: Newer version of K7 (>May 2009) does not but anything
+ // else than modules in the global namespace
+ if (typeof(ENV) == "undefined") {
+ GLOBAL = system.GLOBAL
+ ENV = system.ENV;
+ print = system.shell.print;
+ }
+
+ var prefix = ENV["NARWHAL_HOME"];
+ var debug = false;
+
+ _system = system;
+
+ var fopen = _system.posix.fopen,
+ fread = _system.posix.fread,
+ fclose = _system.posix.fclose;
+
+ var isFile = function (path) {
+ try { read(path); } catch(e) { return false; }
+ return true;
+ };
+
+ var read = function(path) {
+ var result = "",
+ fd = fopen(path, "r");
+ if (!fd)
+ throw new Error("File not found: " + path);
+ try {
+ var length = 1024,
+ data;
+ do {
+ length *= 2;
+ data = fread(1, length, fd);
+ result += data;
+ } while (data.length === length);
+ } finally {
+ fclose(fd);
+ }
+ if (result.length === 0)
+ throw new Error("File not found (length=0): " + path);
+ return result;
+ };
+
+ var isFile = function(path) {
+ return _system.posix.isFile(path);
+ }
+
+ var _print = print;
+ delete print;
+
+ eval(read(prefix + "/narwhal.js"))({
+ global: GLOBAL,
+ evalGlobal: evalGlobal,
+ platform: 'k7',
+ platforms: ['k7', 'v8', 'c', 'default'],
+ debug: debug,
+ print: function (string) {
+ _print("" + string);
+ },
+ evaluate: function (text) {
+ return eval("(function(require,exports,module,system,print){" + text + "/**/\n})");
+ },
+ fs: {
+ read: read,
+ isFile: isFile
+ },
+ prefix: prefix,
+ complianceStage: "system"
+ });
+
+})(function () {
+ return eval(arguments[0]);
+});
+
+//throw "Exiting. (FIXME: this exception does not mean an actual error occurred, we just need a better way to exit)";
+// EOF - vim: ts=4 sw=4 et
diff --git a/utils/tests/iojs/determinism/submodule/b.js b/utils/platforms/k7/lib/binary.js
index 139597f..139597f 100755
--- a/utils/tests/iojs/determinism/submodule/b.js
+++ b/utils/platforms/k7/lib/binary.js
diff --git a/utils/platforms/k7/lib/file-platform.js b/utils/platforms/k7/lib/file-platform.js
new file mode 100755
index 0000000..89680cc
--- /dev/null
+++ b/utils/platforms/k7/lib/file-platform.js
@@ -0,0 +1,116 @@
+
+var exports = require('./file');
+
+exports.SEPARATOR = '/';
+
+exports.cwd = function () {
+ throw Error("cwd not yet implemented.");
+};
+
+// TODO necessary for package loading
+exports.list = function (path) {
+ throw Error("list not yet implemented.");
+};
+
+// TODO necessary for package loading
+exports.canonical = function (path) {
+ throw Error("canonical not yet implemented.");
+};
+
+exports.exists = function (path) {
+ throw Error("exists not yet implemented.");
+};
+
+// TODO necessary for lazy module reloading in sandboxes
+exports.mtime = function (path) {
+ return exports.stat(path).mtime;
+};
+
+exports.size = function (path) {
+ throw Error("size not yet implemented.");
+};
+
+exports.stat = function (path) {
+ return _system.posix.stat(path);
+};
+
+// TODO necessary for package loading
+exports.isDirectory = function (path) {
+ throw Error("isDirectory not yet implemented.");
+};
+
+// TODO necessary for module loading
+exports.isFile = function (path) {
+ throw Error("isFile not yet implemented.");
+};
+
+exports.isFile = system.fs.isFile; // TEMPORARY HACK
+
+exports.isLink = function (path) {
+ throw Error("isLink not yet implemented.");
+};
+
+exports.isReadable = function (path) {
+ throw Error("isReadable not yet implemented.");
+};
+
+exports.isWritable = function (path) {
+ throw Error("isWritable not yet implemented.");
+};
+
+exports.rename = function (source, target) {
+ throw Error("rename not yet implemented.");
+};
+
+exports.move = function (source, target) {
+ throw Error("move not yet implemented.");
+};
+
+exports.remove = function (path) {
+ throw Error("remove not yet implemented.");
+};
+
+exports.mkdir = function (path) {
+ throw Error("mkdir not yet implemented.");
+};
+
+exports.rmdir = function(path) {
+ throw Error("rmdir not yet implemented.");
+};
+
+exports.touch = function (path, mtime) {
+ throw Error("touch not yet implemented.");
+};
+
+// FIXME temporary hack
+var read = system.fs.read; // from k7 bootstrap fixtures
+
+exports.FileIO = function (path, mode, permissions) {
+ mode = exports.mode(mode);
+ var read = mode.read,
+ write = mode.write,
+ append = mode.append,
+ update = mode.update;
+
+ if (update) {
+ throw new Error("Updating IO not yet implemented.");
+ } else if (write || append) {
+ throw new Error("Writing IO not yet implemented.");
+ } else if (read) {
+ // FIXME temporary hack
+ return {
+ 'read': function () {
+ return read(path);
+ },
+ 'close': function () {
+ },
+ 'isatty': function () {
+ return false;
+ }
+ };
+ } else {
+ throw new Error("Files must be opened either for read, write, or update mode.");
+ }
+};
+
+// vim: ts=4 sw=4 et
diff --git a/utils/platforms/k7/lib/io-platform.js b/utils/platforms/k7/lib/io-platform.js
new file mode 100755
index 0000000..363544f
--- /dev/null
+++ b/utils/platforms/k7/lib/io-platform.js
@@ -0,0 +1,8 @@
+
+exports.IO = function () {
+};
+
+exports.TextIOWrapper = function (raw, mode, lineBuffering, buffering, charset, options) {
+ return raw;
+};
+
diff --git a/utils/platforms/k7/lib/system.js b/utils/platforms/k7/lib/system.js
new file mode 100755
index 0000000..a92b8dd
--- /dev/null
+++ b/utils/platforms/k7/lib/system.js
@@ -0,0 +1,25 @@
+/*
+var IO = require("./io").IO;
+
+exports.stdin = new IO(function(){}, null);
+exports.stdout = new IO(null, function(string) { print(String(string).replace(/\n$/,"")); });
+exports.stderr = new IO(null, function(string) { print(String(string).replace(/\n$/,"")); });
+*/
+
+exports.args = ENV["argv"].slice(2);
+
+exports.env = {};
+
+for (var key in ENV)
+ if (key !== "argc" && key !== "argv")
+ exports.env[key] = ENV[key];
+
+delete ENV;
+
+exports.fs = require('./file');
+
+/*
+// default logger
+var Logger = require("logger").Logger;
+exports.log = new Logger(exports.stdout);
+*/
diff --git a/utils/platforms/rhino/bin/narwhal-rhino.cmd b/utils/platforms/rhino/bin/narwhal-rhino.cmd
new file mode 100755
index 0000000..646675a
--- /dev/null
+++ b/utils/platforms/rhino/bin/narwhal-rhino.cmd
@@ -0,0 +1,25 @@
+@echo off
+setlocal
+
+:: NARWHAL_PLATFORM_HOME is the parent the bin directory
+set NARWHAL_PLATFORM_HOME=%~dp0..
+
+set BOOTSTRAP=%NARWHAL_PLATFORM_HOME%\bootstrap.js
+
+if "%NARWHAL_HOME%" == "" (
+ set NARWHAL_HOME=%NARWHAL_PLATFORM_HOME%\..\..
+)
+
+set CLASSPATH=%NARWHAL_PLATFORM_HOME%\jars\js.jar;%NARWHAL_PLATFORM_HOME%\jars\jline.jar
+if not "%NARWHAL_CLASSPATH%" == "" (
+ set CLASSPATH=%NARWHAL_CLASSPATH%;%CLASSPATH%
+)
+
+set JAVA_MAIN=org.mozilla.javascript.tools.shell.Main
+
+:: drop into shell if there are no additional arguments
+if "%1" == "" (
+ java -cp "%CLASSPATH%" "%JAVA_MAIN%" -f "%BOOTSTRAP%" -f -
+) else (
+ java -cp "%CLASSPATH%" "%JAVA_MAIN%" "%BOOTSTRAP%" "%0" %*
+)
diff --git a/utils/platforms/rhino/lib/binary-platform.js b/utils/platforms/rhino/lib/binary-platform.js
new file mode 100755
index 0000000..fda53fa
--- /dev/null
+++ b/utils/platforms/rhino/lib/binary-platform.js
@@ -0,0 +1,44 @@
+exports.B_LENGTH = function(bytes) {
+ return bytes.length;
+}
+
+exports.B_ALLOC = function(length) {
+ return java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, length);
+}
+
+exports.B_FILL = function(bytes, length, offset, value) {
+ java.util.Arrays.fill(bytes, length, offset, value);
+}
+
+exports.B_COPY = function(src, srcOffset, dst, dstOffset, length) {
+ java.lang.System.arraycopy(src, srcOffset, dst, dstOffset, length);
+}
+
+exports.B_GET = function(bytes, index) {
+ var b = bytes[index];
+ return (b >= 0) ? b : -1 * ((b ^ 0xFF) + 1);
+}
+
+exports.B_SET = function(bytes, index, value) {
+ return bytes[index] = (value < 128) ? value : -1 * ((value ^ 0xFF) + 1);
+}
+
+exports.B_DECODE = function(bytes, offset, length, codec) {
+ return String(new java.lang.String(bytes, offset, length, codec));
+}
+
+exports.B_DECODE_DEFAULT = function(bytes, offset, length) {
+ return String(new java.lang.String(bytes, offset, length));
+}
+
+exports.B_ENCODE = function(string, codec) {
+ return new java.lang.String(string).getBytes(codec);
+}
+
+exports.B_ENCODE_DEFAULT = function(string) {
+ return new java.lang.String(string).getBytes();
+}
+
+exports.B_TRANSCODE = function(bytes, offset, length, sourceCodec, targetCodec) {
+ return new java.lang.String(bytes, offset, length, sourceCodec).getBytes(targetCodec);
+}
diff --git a/utils/tests/all-tests.js b/utils/tests/all-tests.js
deleted file mode 100755
index 2486f64..0000000
--- a/utils/tests/all-tests.js
+++ /dev/null
@@ -1,12 +0,0 @@
-exports.testSandbox = require("./iojs/program");
-exports.testString = require("./string-tests");
-exports.testURI = require("./uri-tests");
-exports.testCodecs = require("./codecs");
-exports.testOS = require("./os/all-tests");
-exports.testFile = require("./file/all-tests");
-exports.testUtil = require("./util/all-tests");
-
-exports.testServerJS = require("./serverjs/all-tests");
-
-if (require.main === module.id)
- require("os").exit(require("test/runner").run(exports));
diff --git a/utils/tests/base64.js b/utils/tests/base64.js
deleted file mode 100755
index 09bcd34..0000000
--- a/utils/tests/base64.js
+++ /dev/null
@@ -1,23 +0,0 @@
-
-var base64 = require('base64.js');
-var binary = require('binary');
-var assert = require('test/assert.js');
-
-var raw = "Once upon a time, in a far away land.\n";
-var encoded = 'T25jZSB1cG9uIGEgdGltZSwgaW4gYSBmYXIgYXdheSBsYW5kLgo=';
-
-exports.testEncode = function () {
- assert.eq(base64.encode(raw), encoded, 'encoded');
-};
-
-exports.testDecode = function () {
- assert.eq(base64.decode(encoded), raw, 'decoded');
-};
-
-exports.testEncodeDecode = function () {
- assert.eq(base64.decode(base64.encode(raw)), raw, 'encode decode identity');
-};
-
-if (require.main === module.id)
- require("os").exit(require("test/runner").run(exports));
-
diff --git a/utils/tests/codecs.js b/utils/tests/codecs.js
deleted file mode 100755
index c43c723..0000000
--- a/utils/tests/codecs.js
+++ /dev/null
@@ -1,65 +0,0 @@
-
-var assert = require('test/assert');
-var struct = require('struct');
-
-var raw = "Hello, World!";
-var md4 = require('md4');
-var md5 = require('md5');
-var sha = require('sha');
-var sha256 = require('sha256');
-var crc32 = require('crc32');
-
-exports.testMd4 = function () {
- assert.eq(md4.hash("test hash").toString(16), "549089516e75bd13c41ff098fbb58d5e");
- assert.eq(md4.hash("abc").toString(16), "a448017aaf21d8525fc10ae87aa6729d");
-};
-
-exports.testMd5 = function () {
- assert.eq(md5.hash(raw).toString(16), "65a8e27d8879283831b664bd8b7f0ad4", 'md5');
- assert.eq(md5.hash("message digest").toString(16), "f96b697d7cb7938d525a2f31aaf161d0");
- assert.eq(md5.hash("abc").toString(16), "900150983cd24fb0d6963f7d28e17f72");
-};
-
-exports.testSha = function () {
- assert.eq(sha.hash(raw).toString(16), "0a0a9f2a6772942557ab5355d76af442f8f65e01", 'sha1');
- assert.eq(sha.hash("160-bit hash").toString(16), "90d925d853c3d35cd54070bb75280fefad9de9e7");
-};
-
-exports.testSha256 = function () {
- assert.eq(sha256.hash(raw).toString(16), "dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f", 'sha256');
-};
-
-exports.testCrc32 = function () {
- assert.eq(crc32.hash(raw), -(parseInt("ec4ac3d0", 16) + 1) ^ -1, 'crc32');
-};
-
-/*
- http://pajhome.org.uk/crypt/md5/
-*/
-
-/*
-
- Original text Hello, World!
- Original bytes 48:65:6c:6c:6f:2c:20:57:6f:72:6c:64:21 (length=13)
- Adler32 1f9e046a
- CRC32 ec4ac3d0
- Haval 69329e93ccfd832bb1a4ee00d01344cf
- MD2 1c8f1e6a94aaa7145210bf90bb52871a
- MD4 94e3cb0fa9aa7a5ee3db74b79e915989
- MD5 65a8e27d8879283831b664bd8b7f0ad4
- RipeMD128 67f9fe75ca2886dc76ad00f7276bdeba
- RipeMD160 527a6a4b9a6da75607546842e0e00105350b1aaf
- SHA-1 0a0a9f2a6772942557ab5355d76af442f8f65e01
- SHA-256 dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
- SHA-384 5485cc9b3365b4305dfb4e8337e0a598a574f8242bf17289e0dd6c20a3cd44a089de16ab4ab308f63e44b1170eb5f515
- SHA-512 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387
- Tiger 252a5047009cd0710a1aa60525daf73ea55cb90319a39242
- Whirlpool 16c581089b6a6f356ae56e16a63a4c613eecd82a2a894b293f5ee45c37a31d09d7a8b60bfa7e414bd4a7166662cea882b5cf8c96b7d583fc610ad202591bcdb1
-
- http://www.fileformat.info/tool/hash.htm?text=Hello%2C+World%21
-
-*/
-
-if (require.main === module.id)
- require("os").exit(require("test/runner").run(exports));
-
diff --git a/utils/tests/file/all-tests.js b/utils/tests/file/all-tests.js
deleted file mode 100755
index 4730ec7..0000000
--- a/utils/tests/file/all-tests.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var assert = require("test/assert");
-var fs = require("file");
-
-exports.testRmtreeDoesNotFollowSymlinks = function () {
- var here = fs.path(module.path).dirname();
- if (here.join('foo').exists())
- here.join('foo').rmtree();
- try {
- here.join('foo', 'bar').mkdirs();
- here.join('foo', 'bar').symlink(here.join('foo', 'baz'));
- here.join('foo', 'baz').rmtree();
- assert.isTrue(here.join('foo', 'bar').exists());
- } finally {
- here.join('foo').rmtree();
- }
-};
-
-exports.testGlobStar = function () {
-};
-
-exports.testGlobQuestion = function () {
-};
-
-exports.testGlobStarStar = function () {
-};
-
-exports.testGlobDotDotDot = function () {
-};
-
-if (require.main === module.id)
- require("os").exit(require("test/runner").run(exports));
diff --git a/utils/tests/iojs/absolute/b.js b/utils/tests/iojs/absolute/b.js
deleted file mode 100755
index da5bf4f..0000000
--- a/utils/tests/iojs/absolute/b.js
+++ /dev/null
@@ -1 +0,0 @@
-exports.foo = function() {};
diff --git a/utils/tests/iojs/absolute/program.js b/utils/tests/iojs/absolute/program.js
deleted file mode 100755
index 149d40f..0000000
--- a/utils/tests/iojs/absolute/program.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var test = require('test');
-var a = require('submodule/a');
-var b = require('b');
-test.assert(a.foo().foo === b.foo, 'require works with absolute identifiers');
-print('DONE', 'info');
diff --git a/utils/tests/iojs/absolute/submodule/a.js b/utils/tests/iojs/absolute/submodule/a.js
deleted file mode 100755
index bc138b8..0000000
--- a/utils/tests/iojs/absolute/submodule/a.js
+++ /dev/null
@@ -1,3 +0,0 @@
-exports.foo = function () {
- return require('b');
-};
diff --git a/utils/tests/iojs/absolute/test.js b/utils/tests/iojs/absolute/test.js
deleted file mode 100755
index a690a2d..0000000
--- a/utils/tests/iojs/absolute/test.js
+++ /dev/null
@@ -1,9 +0,0 @@
-
-exports.assert = function (guard, message) {
- if (guard) {
- print('PASS ' + message, 'pass');
- } else {
- print('FAIL ' + message, 'fail');
- }
-};
-
diff --git a/utils/tests/iojs/config.js b/utils/tests/iojs/config.js
deleted file mode 100755
index e52293e..0000000
--- a/utils/tests/iojs/config.js
+++ /dev/null
@@ -1,11 +0,0 @@
-(function (env) {
- try {
- var sandbox = require('chiron/sandbox').sandbox;
- var base = require('chiron/base');
- var log = base.List();
- sandbox('test/iojs/program', {print: log.push});
- return [200, {'Content-type': 'text/plain'}, log.eachIter(base.add("\n"))];
- } catch (exception) {
- return [500, {'Content-type': 'text/plain'}, [''+(exception.message || exception)]];
- }
-});
diff --git a/utils/tests/iojs/cyclic/a.js b/utils/tests/iojs/cyclic/a.js
deleted file mode 100755
index e0188fa..0000000
--- a/utils/tests/iojs/cyclic/a.js
+++ /dev/null
@@ -1,4 +0,0 @@
-exports.a = function () {
- return b;
-};
-var b = require('b');
diff --git a/utils/tests/iojs/cyclic/b.js b/utils/tests/iojs/cyclic/b.js
deleted file mode 100755
index 873a305..0000000
--- a/utils/tests/iojs/cyclic/b.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var a = require('a');
-exports.b = function () {
- return a;
-};
diff --git a/utils/tests/iojs/cyclic/program.js b/utils/tests/iojs/cyclic/program.js
deleted file mode 100755
index 93c0330..0000000
--- a/utils/tests/iojs/cyclic/program.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var test = require('test');
-var a = require('a');
-var b = require('b');
-
-test.assert(a.a, 'a exists');
-test.assert(b.b, 'b exists')
-test.assert(a.a().b === b.b, 'a gets b');
-test.assert(b.b().a === a.a, 'b gets a');
-
-print('DONE', 'info');
diff --git a/utils/tests/iojs/cyclic/test.js b/utils/tests/iojs/cyclic/test.js
deleted file mode 100755
index a690a2d..0000000
--- a/utils/tests/iojs/cyclic/test.js
+++ /dev/null
@@ -1,9 +0,0 @@
-
-exports.assert = function (guard, message) {
- if (guard) {
- print('PASS ' + message, 'pass');
- } else {
- print('FAIL ' + message, 'fail');
- }
-};
-
diff --git a/utils/tests/iojs/determinism/program.js b/utils/tests/iojs/determinism/program.js
deleted file mode 100755
index 8ae9461..0000000
--- a/utils/tests/iojs/determinism/program.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var test = require('test');
-require('submodule/a');
-print('DONE', 'info');
diff --git a/utils/tests/iojs/determinism/submodule/a.js b/utils/tests/iojs/determinism/submodule/a.js
deleted file mode 100755
index 0221574..0000000
--- a/utils/tests/iojs/determinism/submodule/a.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var pass = false;
-var test = require('test');
-try {
- require('a');
-} catch (exception) {
- pass = true;
-}
-test.assert(pass, 'require does not fall back to relative modules when absolutes are not available.')
diff --git a/utils/tests/iojs/determinism/test.js b/utils/tests/iojs/determinism/test.js
deleted file mode 100755
index a690a2d..0000000
--- a/utils/tests/iojs/determinism/test.js
+++ /dev/null
@@ -1,9 +0,0 @@
-
-exports.assert = function (guard, message) {
- if (guard) {
- print('PASS ' + message, 'pass');
- } else {
- print('FAIL ' + message, 'fail');
- }
-};
-
diff --git a/utils/tests/iojs/exactExports/a.js b/utils/tests/iojs/exactExports/a.js
deleted file mode 100755
index 99c929e..0000000
--- a/utils/tests/iojs/exactExports/a.js
+++ /dev/null
@@ -1,3 +0,0 @@
-exports.program = function () {
- return require('program');
-};
diff --git a/utils/tests/iojs/exactExports/program.js b/utils/tests/iojs/exactExports/program.js
deleted file mode 100755
index e678431..0000000
--- a/utils/tests/iojs/exactExports/program.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var test = require('test');
-var a = require('a');
-test.assert(a.program() === exports, 'exact exports');
-print('DONE', 'info');
diff --git a/utils/tests/iojs/exactExports/test.js b/utils/tests/iojs/exactExports/test.js
deleted file mode 100755
index a690a2d..0000000
--- a/utils/tests/iojs/exactExports/test.js
+++ /dev/null
@@ -1,9 +0,0 @@
-
-exports.assert = function (guard, message) {
- if (guard) {
- print('PASS ' + message, 'pass');
- } else {
- print('FAIL ' + message, 'fail');
- }
-};
-
diff --git a/utils/tests/iojs/hasOwnProperty/program.js b/utils/tests/iojs/hasOwnProperty/program.js
deleted file mode 100755
index c574163..0000000
--- a/utils/tests/iojs/hasOwnProperty/program.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var hasOwnProperty = require('hasOwnProperty');
-var toString = require('toString');
-print('DONE', 'info');
diff --git a/utils/tests/iojs/hasOwnProperty/test.js b/utils/tests/iojs/hasOwnProperty/test.js
deleted file mode 100755
index a690a2d..0000000
--- a/utils/tests/iojs/hasOwnProperty/test.js
+++ /dev/null
@@ -1,9 +0,0 @@
-
-exports.assert = function (guard, message) {
- if (guard) {
- print('PASS ' + message, 'pass');
- } else {
- print('FAIL ' + message, 'fail');
- }
-};
-
diff --git a/utils/tests/iojs/method/a.js b/utils/tests/iojs/method/a.js
deleted file mode 100755
index 69c48af..0000000
--- a/utils/tests/iojs/method/a.js
+++ /dev/null
@@ -1,12 +0,0 @@
-exports.foo = function () {
- return this;
-};
-exports.set = function (x) {
- this.x = x;
-};
-exports.get = function () {
- return this.x;
-};
-exports.getClosed = function () {
- return exports.x;
-};
diff --git a/utils/tests/iojs/method/program.js b/utils/tests/iojs/method/program.js
deleted file mode 100755
index 611a109..0000000
--- a/utils/tests/iojs/method/program.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var test = require('test');
-var a = require('a');
-var foo = a.foo;
-test.assert(a.foo() == a, 'calling a module member');
-test.assert(foo() == (function (){return this})(), 'members not implicitly bound');
-a.set(10);
-test.assert(a.get() == 10, 'get and set')
-print('DONE', 'info');
diff --git a/utils/tests/iojs/method/test.js b/utils/tests/iojs/method/test.js
deleted file mode 100755
index a690a2d..0000000
--- a/utils/tests/iojs/method/test.js
+++ /dev/null
@@ -1,9 +0,0 @@
-
-exports.assert = function (guard, message) {
- if (guard) {
- print('PASS ' + message, 'pass');
- } else {
- print('FAIL ' + message, 'fail');
- }
-};
-
diff --git a/utils/tests/iojs/missing/program.js b/utils/tests/iojs/missing/program.js
deleted file mode 100755
index f8fd6f0..0000000
--- a/utils/tests/iojs/missing/program.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var test = require('test');
-try {
- require('bogus');
- print('FAIL require throws error when module missing', 'fail');
-} catch (exception) {
- print('PASS require throws error when module missing', 'pass');
-}
-print('DONE', 'info');
diff --git a/utils/tests/iojs/missing/test.js b/utils/tests/iojs/missing/test.js
deleted file mode 100755
index a690a2d..0000000
--- a/utils/tests/iojs/missing/test.js
+++ /dev/null
@@ -1,9 +0,0 @@
-
-exports.assert = function (guard, message) {
- if (guard) {
- print('PASS ' + message, 'pass');
- } else {
- print('FAIL ' + message, 'fail');
- }
-};
-
diff --git a/utils/tests/iojs/monkeys/a.js b/utils/tests/iojs/monkeys/a.js
deleted file mode 100755
index a949e1d..0000000
--- a/utils/tests/iojs/monkeys/a.js
+++ /dev/null
@@ -1 +0,0 @@
-require('program').monkey = 10;
diff --git a/utils/tests/iojs/monkeys/program.js b/utils/tests/iojs/monkeys/program.js
deleted file mode 100755
index af50d47..0000000
--- a/utils/tests/iojs/monkeys/program.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var a = require('a');
-var test = require('test');
-test.assert(exports.monkey == 10, 'monkeys permitted');
-print('DONE', 'info');
diff --git a/utils/tests/iojs/monkeys/test.js b/utils/tests/iojs/monkeys/test.js
deleted file mode 100755
index a690a2d..0000000
--- a/utils/tests/iojs/monkeys/test.js
+++ /dev/null
@@ -1,9 +0,0 @@
-
-exports.assert = function (guard, message) {
- if (guard) {
- print('PASS ' + message, 'pass');
- } else {
- print('FAIL ' + message, 'fail');
- }
-};
-
diff --git a/utils/tests/iojs/nested/a/b/c/d.js b/utils/tests/iojs/nested/a/b/c/d.js
deleted file mode 100755
index 69fd282..0000000
--- a/utils/tests/iojs/nested/a/b/c/d.js
+++ /dev/null
@@ -1,3 +0,0 @@
-exports.foo = function () {
- return 1;
-};
diff --git a/utils/tests/iojs/nested/program.js b/utils/tests/iojs/nested/program.js
deleted file mode 100755
index 54bfbe7..0000000
--- a/utils/tests/iojs/nested/program.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var test = require('test');
-test.assert(require('a/b/c/d').foo() == 1, 'nested module identifier');
-print('DONE', 'info');
diff --git a/utils/tests/iojs/nested/test.js b/utils/tests/iojs/nested/test.js
deleted file mode 100755
index a690a2d..0000000
--- a/utils/tests/iojs/nested/test.js
+++ /dev/null
@@ -1,9 +0,0 @@
-
-exports.assert = function (guard, message) {
- if (guard) {
- print('PASS ' + message, 'pass');
- } else {
- print('FAIL ' + message, 'fail');
- }
-};
-
diff --git a/utils/tests/iojs/program.js b/utils/tests/iojs/program.js
deleted file mode 100755
index 7e64b91..0000000
--- a/utils/tests/iojs/program.js
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env narwhal
-
-var assert = require('test/assert');
-var sandbox = require('sandbox').sandbox;
-var fs = require('file');
-
-[
- 'absolute',
- 'cyclic',
- 'exactExports',
- 'hasOwnProperty',
- 'method',
- 'missing',
- 'monkeys',
- 'nested',
- 'relative',
- 'transitive',
- 'determinism'
-].forEach(function (testName) {
- exports['test ' + testName] = function () {
- var prefix = fs.path(module.id).resolve(testName).join('');
- var done;
-
- var print = function (message) {
- assert.isFalse(/^FAIL/.test(message));
- if (/^ERROR/.test(message))
- throw new Error(message);
- if (/^DONE/.test(message))
- done = true;
- };
-
- sandbox(
- 'program',
- system,
- {
- prefix: prefix,
- loader: require.loader,
- print: print
- }
- );
- assert.isTrue(done, 'done');
- };
-});
-
-if (module.id == require.main)
- require('os').exit(require('test/runner').run(exports));
-
diff --git a/utils/tests/iojs/relative/program.js b/utils/tests/iojs/relative/program.js
deleted file mode 100755
index c7ed6e9..0000000
--- a/utils/tests/iojs/relative/program.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var test = require('test');
-var a = require('submodule/a');
-var b = require('submodule/b');
-test.assert(a.foo == b.foo, 'a and b share foo through a relative require');
-print('DONE', 'info');
diff --git a/utils/tests/iojs/relative/submodule/a.js b/utils/tests/iojs/relative/submodule/a.js
deleted file mode 100755
index 42e4ca0..0000000
--- a/utils/tests/iojs/relative/submodule/a.js
+++ /dev/null
@@ -1 +0,0 @@
-exports.foo = require('./b').foo;
diff --git a/utils/tests/iojs/relative/submodule/b.js b/utils/tests/iojs/relative/submodule/b.js
deleted file mode 100755
index 9042c16..0000000
--- a/utils/tests/iojs/relative/submodule/b.js
+++ /dev/null
@@ -1,2 +0,0 @@
-exports.foo = function () {
-};
diff --git a/utils/tests/iojs/relative/test.js b/utils/tests/iojs/relative/test.js
deleted file mode 100755
index a690a2d..0000000
--- a/utils/tests/iojs/relative/test.js
+++ /dev/null
@@ -1,9 +0,0 @@
-
-exports.assert = function (guard, message) {
- if (guard) {
- print('PASS ' + message, 'pass');
- } else {
- print('FAIL ' + message, 'fail');
- }
-};
-
diff --git a/utils/tests/iojs/transitive/a.js b/utils/tests/iojs/transitive/a.js
deleted file mode 100755
index 4df7bb8..0000000
--- a/utils/tests/iojs/transitive/a.js
+++ /dev/null
@@ -1 +0,0 @@
-exports.foo = require('b').foo;
diff --git a/utils/tests/iojs/transitive/b.js b/utils/tests/iojs/transitive/b.js
deleted file mode 100755
index 30ea70d..0000000
--- a/utils/tests/iojs/transitive/b.js
+++ /dev/null
@@ -1 +0,0 @@
-exports.foo = require('c').foo;
diff --git a/utils/tests/iojs/transitive/c.js b/utils/tests/iojs/transitive/c.js
deleted file mode 100755
index 69fd282..0000000
--- a/utils/tests/iojs/transitive/c.js
+++ /dev/null
@@ -1,3 +0,0 @@
-exports.foo = function () {
- return 1;
-};
diff --git a/utils/tests/iojs/transitive/program.js b/utils/tests/iojs/transitive/program.js
deleted file mode 100755
index 165f7ad..0000000
--- a/utils/tests/iojs/transitive/program.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var test = require('test');
-test.assert(require('a').foo() == 1, 'transitive');
-print('DONE', 'info');
diff --git a/utils/tests/iojs/transitive/test.js b/utils/tests/iojs/transitive/test.js
deleted file mode 100755
index a690a2d..0000000
--- a/utils/tests/iojs/transitive/test.js
+++ /dev/null
@@ -1,9 +0,0 @@
-
-exports.assert = function (guard, message) {
- if (guard) {
- print('PASS ' + message, 'pass');
- } else {
- print('FAIL ' + message, 'fail');
- }
-};
-
diff --git a/utils/tests/os/all-tests.js b/utils/tests/os/all-tests.js
deleted file mode 100755
index f99df4b..0000000
--- a/utils/tests/os/all-tests.js
+++ /dev/null
@@ -1,3 +0,0 @@
-exports.testPopen = require("./popen");
-if (require.main === module.id)
- require("os").exit(require("test/runner").run(exports));
diff --git a/utils/tests/os/popen.js b/utils/tests/os/popen.js
deleted file mode 100755
index d9c08f0..0000000
--- a/utils/tests/os/popen.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var assert = require("test/assert");
-var os = require("os");
-var io = require("io");
-
-exports.testArrayCommunicateStdout = function () {
- var list = io.StringIO();
- list.print("30");
- list.print("4");
- list.print("1000");
- list.print("200");
-
- var process = os.popen(["sort", "-n", "-"]);
- var lines = [];
- process.communicate(list).stdout.forEach(function (line) {
- lines.push(line);
- });
-
- assert.isSame(lines, ["4", "30", "200", "1000"]);
-};
-
-if (require.main === module.id)
- os.exit(require("test/runner").run(exports));
-
diff --git a/utils/tests/sandbox/byte-io.js b/utils/tests/sandbox/byte-io.js
deleted file mode 100755
index dc22fec..0000000
--- a/utils/tests/sandbox/byte-io.js
+++ /dev/null
@@ -1,20 +0,0 @@
-
-var fs = require('file');
-var file = fs.open(fs.resolve(module.path, 'utf-8.js'), 'rb');
-var content = file.read();
-print(typeof content);
-print(content.length);
-print('');
-
-var file = fs.open(fs.resolve(module.path, 'utf-8.js'), 'rt', {'charset': 'utf-8'});
-var content = file.read();
-print(typeof content);
-print(content.length);
-print('');
-
-var file = fs.open(fs.resolve(module.path, 'utf-8.js'), 'r');
-var content = file.read();
-print(typeof content);
-print(content.length);
-print('');
-
diff --git a/utils/tests/sandbox/fileName.js b/utils/tests/sandbox/fileName.js
deleted file mode 100755
index 452bb2f..0000000
--- a/utils/tests/sandbox/fileName.js
+++ /dev/null
@@ -1,3 +0,0 @@
-
-print(module.path);
-
diff --git a/utils/tests/serverjs/all-tests.js b/utils/tests/serverjs/all-tests.js
deleted file mode 100755
index 789f47e..0000000
--- a/utils/tests/serverjs/all-tests.js
+++ /dev/null
@@ -1,9 +0,0 @@
-exports.testFile = require("./file-tests");
-exports.testModules = require("./module-tests");
-exports.testByteArray = require("./bytearray-tests");
-exports.testByteString = require("./bytestring-tests");
-exports.testByteArrayEncodings = require("./bytearray-encodings-tests");
-exports.testByteStringEncodings = require("./bytestring-encodings-tests");
-
-if (require.main === module.id)
- require("os").exit(require("test/runner").run(exports));
diff --git a/utils/tests/serverjs/bytearray-tests.js b/utils/tests/serverjs/bytearray-tests.js
deleted file mode 100755
index 6d165d0..0000000
--- a/utils/tests/serverjs/bytearray-tests.js
+++ /dev/null
@@ -1,273 +0,0 @@
-var assert = require("test/assert");
-
-var Binary = require("binary").Binary,
- ByteString = require("binary").ByteString,
- ByteArray = require("binary").ByteArray;
-
-exports.testByteArrayConstructor = function() {
- var testArray = [1,2,3,4],
- b;
-
- // ByteArray()
- // New, empty ByteArray.
- b = new ByteArray();
- //assert.isTrue(b instanceof Binary, "not instanceof Binary");
- assert.isTrue(b instanceof ByteArray, "not instanceof ByteArray");
- assert.isEqual(0, b.length);
- b.length = 123;
- assert.isEqual(123, b.length);
- assert.isEqual(0, b.get(4));
-
- // ByteArray(length)
- // New ByteArray filled with length zero bytes.
- b = new ByteArray(10);
- assert.isEqual(10, b.length);
- for (var i = 0; i < 10; i++)
- assert.isEqual(0, b.get(i));
- assert.isNaN(b.get(10));
- b.length = 234;
- assert.isEqual(234, b.length);
- assert.isEqual(0, b.get(10));
- assert.isEqual(0, b.get(233));
- assert.isNaN(b.get(234));
-
- // ByteArray(byteString)
- // Copy contents of byteString.
- b = new ByteArray(new ByteString(testArray));
- assert.isEqual(testArray.length, b.length);
- b.length = 345;
- assert.isEqual(345, b.length);
- assert.isEqual(1, b.get(0));
- assert.isEqual(4, b.get(3));
- assert.isEqual(0, b.get(4));
-
- // ByteArray(byteArray)
- // Copy byteArray.
- b = new ByteArray(new ByteArray(testArray));
- assert.isEqual(testArray.length, b.length);
- b.length = 456;
- assert.isEqual(456, b.length);
- assert.isEqual(1, b.get(0));
- assert.isEqual(4, b.get(3));
- assert.isEqual(0, b.get(4));
-
- // ByteArray(arrayOfBytes)
- // Use numbers in arrayOfBytes as contents.
- // Throws an exception if any element is outside the range 0...255 (TODO).
- b = new ByteArray(testArray);
- assert.isEqual(testArray.length, b.length);
- b.length = 567;
- assert.isEqual(567, b.length);
- assert.isEqual(1, b.get(0));
- assert.isEqual(4, b.get(3));
- assert.isEqual(0, b.get(4));
-};
-
-exports.testByteArrayResizing = function() {
- var b1 = new ByteArray([0,1,2,3,4,5,6]);
- assert.isEqual(7, b1.length);
- assert.isNaN(b1.get(7));
-
- b1.length = 10;
- assert.isEqual(10, b1.length, "Length should change to 10");
- assert.isEqual(5, b1.get(5));
- assert.isEqual(0, b1.get(7));
-
- b1.length = 3;
- assert.isEqual(3, b1.length, "Length should change to 10");
- assert.isEqual(0, b1.get(0));
- assert.isNaN(b1.get(4));
-
- b1.length = 9;
- assert.isEqual(9, b1.length, "Length should change to 9");
- assert.isEqual(0, b1.get(0));
- assert.isEqual(0, b1.get(4));
-};
-
-exports.testToByteArray = function() {
- var b1 = new ByteArray([1,2,3]),
- b2 = b1.toByteArray();
-
- assert.isTrue(b2 instanceof ByteArray, "not instanceof ByteArray");
- assert.isEqual(b1.length, b2.length);
- assert.isEqual(b1.get(0), b2.get(0));
- assert.isEqual(b1.get(2), b2.get(2));
-
- assert.isEqual(1, b1.get(0));
- assert.isEqual(1, b2.get(0));
-
- b1.set(0, 10);
-
- assert.isEqual(10, b1.get(0));
- assert.isEqual(1, b2.get(0));
-};
-
-exports.testToByteString = function() {
- var b1 = new ByteArray([1,2,3]),
- b2 = b1.toByteString();
-
- assert.isEqual(b1.length, b2.length);
- assert.isEqual(b1.get(0), b2.get(0));
- assert.isEqual(b1.get(2), b2.get(2));
-
- assert.isEqual(1, b1.get(0));
- assert.isEqual(1, b2.get(0));
-
- b1.set(0, 10);
-
- assert.isEqual(10, b1.get(0));
- assert.isEqual(1, b2.get(0));
-};
-
-exports.testToArray = function() {
- var testArray = [0,1,254,255],
- b1 = new ByteArray(testArray),
- a1 = b1.toArray();
-
- assert.isEqual(testArray.length, a1.length);
- for (var i = 0; i < testArray.length; i++)
- assert.isEqual(testArray[i], a1[i]);
-};
-
-exports.testToString = function() {
- // the format of the resulting string isn't specified, but it shouldn't be the decoded string
- // TODO: is this an ok test?
-
- var testString = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"+
- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
- testArray = [];
- for (var i = 0; i < 128; i++) testArray.push(65);
-
- var resultString = new ByteArray(testArray).toString();
-
- assert.isTrue(resultString.length < 100);
- assert.isTrue(resultString !== testString);
-};
-
-exports.testIndexOf = function() {
- var b1 = new ByteArray([0,1,2,3,4,5,0,1,2,3,4,5]);
-
- assert.isEqual(-1, b1.indexOf(-1));
-
- assert.isEqual(0, b1.indexOf(0));
- assert.isEqual(5, b1.indexOf(5));
- assert.isEqual(-1, b1.indexOf(12));
-
- assert.isEqual(6, b1.indexOf(0, 6));
- assert.isEqual(11, b1.indexOf(5, 6));
- assert.isEqual(-1, b1.indexOf(12, 6));
-
- assert.isEqual(0, b1.indexOf(0, 0, 3));
- assert.isEqual(-1, b1.indexOf(5, 0, 3));
- assert.isEqual(-1, b1.indexOf(12, 0, 3));
-};
-
-exports.testLastIndexOf = function() {
- var b1 = new ByteArray([0,1,2,3,4,5,0,1,2,3,4,5]);
-
- assert.isEqual(-1, b1.lastIndexOf(-1));
-
- assert.isEqual(6, b1.lastIndexOf(0));
- assert.isEqual(11, b1.lastIndexOf(5));
- assert.isEqual(-1, b1.lastIndexOf(12));
-
- assert.isEqual(0, b1.lastIndexOf(0, 0, 6));
- assert.isEqual(5, b1.lastIndexOf(5, 0, 6));
- assert.isEqual(-1, b1.lastIndexOf(12, 0, 6));
-
- assert.isEqual(6, b1.lastIndexOf(0, 6, 9));
- assert.isEqual(-1, b1.lastIndexOf(5, 6, 9));
- assert.isEqual(-1, b1.lastIndexOf(12, 6, 9));
-};
-
-exports.testByteArrayReverse = function() {
- var testArray = [0,1,2,3,4,5,6];
-
- var b1 = new ByteArray(testArray),
- b2 = b1.reverse();
-
- assert.isEqual(b1, b2);
- assert.isEqual(b1.length, b2.length);
- for (var i = 0; i < testArray.length; i++)
- assert.isEqual(testArray[i], b2.get(testArray.length-i-1));
-
- testArray = [0,1,2,3,4,5,6,7];
-
- b1 = new ByteArray(testArray);
- b2 = b1.reverse();
-
- assert.isEqual(b1, b2);
- assert.isEqual(b1.length, b2.length);
- for (var i = 0; i < testArray.length; i++)
- assert.isEqual(testArray[i], b2.get(testArray.length-i-1));
-};
-
-exports.testByteArraySort = function() {
- var testArray = [];
- for (var i = 0; i < 1000; i++)
- testArray.push(Math.floor(Math.random()*256));
-
- var a = new ByteArray(testArray);
- a.sort();
-
- for (var i = 1; i < a.length; i++)
- assert.isTrue(a.get(i-1) <= a.get(i), "index="+i+"("+a.get(i-1)+","+a.get(i)+")");
-};
-
-exports.testByteArraySortCustom = function() {
- var testArray = [];
- for (var i = 0; i < 1000; i++)
- testArray.push(Math.floor(Math.random()*256));
-
- var a = new ByteArray(testArray);
- a.sort(function(o1, o2) { return o2-o1; });
-
- for (var i = 1; i < a.length; i++)
- assert.isTrue(a.get(i-1) >= a.get(i), "index="+i+"("+a.get(i-1)+","+a.get(i)+")");
-};
-
-exports.testSplit = function() {
- var b1 = new ByteArray([0,1,2,3,4,5]), a1;
-
- a1 = b1.split([]);
- assert.isEqual(1, a1.length);
- assert.isTrue(a1[0] instanceof ByteArray);
- assert.isEqual(6, a1[0].length);
- assert.isEqual(0, a1[0].get(0));
- assert.isEqual(5, a1[0].get(5));
-
- a1 = b1.split([2]);
- assert.isEqual(2, a1.length);
- assert.isTrue(a1[0] instanceof ByteArray);
- assert.isEqual(2, a1[0].length);
- assert.isEqual(0, a1[0].get(0));
- assert.isEqual(1, a1[0].get(1));
- assert.isEqual(3, a1[1].length);
- assert.isEqual(3, a1[1].get(0));
- assert.isEqual(5, a1[1].get(2));
-
- a1 = b1.split([2], { includeDelimiter : true });
- assert.isEqual(3, a1.length);
- assert.isTrue(a1[0] instanceof ByteArray);
- assert.isEqual(2, a1[0].length);
- assert.isEqual(0, a1[0].get(0));
- assert.isEqual(1, a1[0].get(1));
- assert.isEqual(1, a1[1].length);
- assert.isEqual(2, a1[1].get(0));
- assert.isEqual(3, a1[2].length);
- assert.isEqual(3, a1[2].get(0));
- assert.isEqual(5, a1[2].get(2));
-
- a1 = b1.split(new ByteString([2,3]));
- assert.isEqual(2, a1.length);
- assert.isTrue(a1[0] instanceof ByteArray);
- assert.isEqual(2, a1[0].length);
- assert.isEqual(0, a1[0].get(0));
- assert.isEqual(1, a1[0].get(1));
- assert.isEqual(2, a1[1].length);
- assert.isEqual(4, a1[1].get(0));
- assert.isEqual(5, a1[1].get(1));
-};
-
-if (require.main === module.id)
- require("os").exit(require("test/runner").run(exports));
diff --git a/utils/tests/serverjs/bytestring-tests.js b/utils/tests/serverjs/bytestring-tests.js
deleted file mode 100755
index b62db2c..0000000
--- a/utils/tests/serverjs/bytestring-tests.js
+++ /dev/null
@@ -1,263 +0,0 @@
-var assert = require("test/assert");
-
-var Binary = require("binary").Binary,
- ByteString = require("binary").ByteString,
- ByteArray = require("binary").ByteArray;
-
-exports.testByteStringConstructor = function() {
- var testArray = [1,2,3,4];
-
- // ByteString()
- // Construct an empty byte string.
- var b1 = new ByteString();
- //assert.isTrue(b1 instanceof Binary, "not instanceof Binary");
- assert.isTrue(b1 instanceof ByteString, "not instanceof ByteString");
- assert.isEqual(0, b1.length);
- b1.length = 123;
- assert.isEqual(0, b1.length);
-
- // ByteString(byteString)
- // Copies byteString.
- var b2 = new ByteString(new ByteString(testArray));
- assert.isEqual(testArray.length, b2.length);
- b2.length = 123;
- assert.isEqual(testArray.length, b2.length);
- assert.isEqual(1, b2.get(0));
- assert.isEqual(4, b2.get(3));
-
- // ByteString(byteArray)
- // Use the contents of byteArray.
- var b2 = new ByteString(new ByteArray(testArray));
- assert.isEqual(testArray.length, b2.length);
- b2.length = 123;
- assert.isEqual(testArray.length, b2.length);
- assert.isEqual(1, b2.get(0));
- assert.isEqual(4, b2.get(3));
-
- // ByteString(arrayOfNumbers)
- // Use the numbers in arrayOfNumbers as the bytes.
- // If any element is outside the range 0...255, an exception (TODO) is thrown.
- var b3 = new ByteString(testArray);
- assert.isEqual(testArray.length, b3.length);
- b3.length = 123;
- assert.isEqual(testArray.length, b3.length);
- assert.isEqual(1, b3.get(0));
- assert.isEqual(4, b3.get(3));
-};
-
-//exports.testByteStringJoin = function() {
-//}
-
-exports.testToByteArray = function() {
- var b1 = new ByteString([1,2,3]),
- b2 = b1.toByteArray();
-
- assert.isTrue(b2 instanceof ByteArray, "not instanceof ByteArray");
- assert.isEqual(b1.length, b2.length);
- assert.isEqual(b1.get(0), b2.get(0));
- assert.isEqual(b1.get(2), b2.get(2));
-};
-
-exports.testToByteString = function() {
- var b1 = new ByteString([1,2,3]),
- b2 = b1.toByteString();
-
- assert.isEqual(b1.length, b2.length);
- assert.isEqual(b1.get(0), b2.get(0));
- assert.isEqual(b1.get(2), b2.get(2));
-};
-
-exports.testToArray = function() {
- var testArray = [0,1,254,255],
- b1 = new ByteString(testArray),
- a1 = b1.toArray();
-
- assert.isEqual(testArray.length, a1.length);
- for (var i = 0; i < testArray.length; i++)
- assert.isEqual(testArray[i], a1[i]);
-};
-
-exports.testToString = function() {
- // the format of the resulting string isn't specified, but it shouldn't be the decoded string
- // TODO: is this an ok test?
-
- var testString = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"+
- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
- testArray = [];
- for (var i = 0; i < 128; i++) testArray.push(65);
-
- var resultString = new ByteString(testArray).toString();
-
- assert.isTrue(resultString.length < 100);
- assert.isTrue(resultString !== testString);
-};
-
-exports.testIndexOf = function() {
- var b1 = new ByteString([0,1,2,3,4,5,0,1,2,3,4,5]);
-
- assert.isEqual(-1, b1.indexOf(-1));
-
- assert.isEqual(0, b1.indexOf(0));
- assert.isEqual(5, b1.indexOf(5));
- assert.isEqual(-1, b1.indexOf(12));
-
- assert.isEqual(6, b1.indexOf(0, 6));
- assert.isEqual(11, b1.indexOf(5, 6));
- assert.isEqual(-1, b1.indexOf(12, 6));
-
- assert.isEqual(0, b1.indexOf(0, 0, 3));
- assert.isEqual(-1, b1.indexOf(5, 0, 3));
- assert.isEqual(-1, b1.indexOf(12, 0, 3));
-};
-
-exports.testLastIndexOf = function() {
- var b1 = new ByteString([0,1,2,3,4,5,0,1,2,3,4,5]);
-
- assert.isEqual(-1, b1.lastIndexOf(-1));
-
- assert.isEqual(6, b1.lastIndexOf(0));
- assert.isEqual(11, b1.lastIndexOf(5));
- assert.isEqual(-1, b1.lastIndexOf(12));
-
- assert.isEqual(0, b1.lastIndexOf(0, 0, 6));
- assert.isEqual(5, b1.lastIndexOf(5, 0, 6));
- assert.isEqual(-1, b1.lastIndexOf(12, 0, 6));
-
- assert.isEqual(6, b1.lastIndexOf(0, 6, 9));
- assert.isEqual(-1, b1.lastIndexOf(5, 6, 9));
- assert.isEqual(-1, b1.lastIndexOf(12, 6, 9));
-};
-
-exports.testCharCodeAt = function() {
- var b1 = new ByteString([0,1,2,3,4,255]);
-
- assert.isTrue(isNaN(b1.charCodeAt(-1)));
- assert.isEqual(0, b1.charCodeAt(0));
- assert.isEqual(255, b1.charCodeAt(5));
- assert.isTrue(isNaN(b1.charCodeAt(6)));
-};
-
-// identical to charCodeAt, test anyway?
-exports.testGet = function() {
- var b1 = new ByteString([0,1,2,3,4,255]);
-
- assert.isTrue(isNaN(b1.get(-1)));
- assert.isEqual(0, b1.get(0));
- assert.isEqual(255, b1.get(5));
- assert.isTrue(isNaN(b1.get(6)));
-};
-
-exports.testByteAt = function() {
- var b1 = new ByteString([0,1,2,3,4,255]), b2;
-
- b2 = b1.byteAt(-1);
- assert.isEqual(0, b2.length);
- b2 = b1.byteAt(0);
- assert.isEqual(1, b2.length);
- assert.isEqual(0, b2.get(0));
- b2 = b1.byteAt(5);
- assert.isEqual(1, b2.length);
- assert.isEqual(255, b2.get(0));
- b2 = b1.byteAt(6);
- assert.isEqual(0, b2.length);
-};
-
-// identical to byteAt, test anyway?
-exports.testCharAt = function() {
- var b1 = new ByteString([0,1,2,3,4,255]), b2;
-
- b2 = b1.charAt(-1);
- assert.isEqual(0, b2.length);
- b2 = b1.charAt(0);
- assert.isEqual(1, b2.length);
- assert.isEqual(0, b2.get(0));
- b2 = b1.charAt(5);
- assert.isEqual(1, b2.length);
- assert.isEqual(255, b2.get(0));
- b2 = b1.charAt(6);
- assert.isEqual(0, b2.length);
-};
-
-exports.testSplit = function() {
- var b1 = new ByteString([0,1,2,3,4,5]), a1;
-
- a1 = b1.split([]);
- assert.isEqual(1, a1.length);
- assert.isTrue(a1[0] instanceof ByteString);
- assert.isEqual(6, a1[0].length);
- assert.isEqual(0, a1[0].get(0));
- assert.isEqual(5, a1[0].get(5));
-
- a1 = b1.split([2]);
- assert.isEqual(2, a1.length);
- assert.isTrue(a1[0] instanceof ByteString);
- assert.isEqual(2, a1[0].length);
- assert.isEqual(0, a1[0].get(0));
- assert.isEqual(1, a1[0].get(1));
- assert.isEqual(3, a1[1].length);
- assert.isEqual(3, a1[1].get(0));
- assert.isEqual(5, a1[1].get(2));
-
- a1 = b1.split([2], { includeDelimiter : true });
- assert.isEqual(3, a1.length);
- assert.isTrue(a1[0] instanceof ByteString);
- assert.isEqual(2, a1[0].length);
- assert.isEqual(0, a1[0].get(0));
- assert.isEqual(1, a1[0].get(1));
- assert.isEqual(1, a1[1].length);
- assert.isEqual(2, a1[1].get(0));
- assert.isEqual(3, a1[2].length);
- assert.isEqual(3, a1[2].get(0));
- assert.isEqual(5, a1[2].get(2));
-
- a1 = b1.split(new ByteString([2,3]));
- assert.isEqual(2, a1.length);
- assert.isTrue(a1[0] instanceof ByteString);
- assert.isEqual(2, a1[0].length);
- assert.isEqual(0, a1[0].get(0));
- assert.isEqual(1, a1[0].get(1));
- assert.isEqual(2, a1[1].length);
- assert.isEqual(4, a1[1].get(0));
- assert.isEqual(5, a1[1].get(1));
-};
-
-exports.testSlice = function() {
- var b1 = new ByteString([0,1,2,3,4,5]), b2;
-
- b2 = b1.slice();
- assert.isEqual(6, b2.length);
- assert.isEqual(0, b2.get(0));
- assert.isEqual(5, b2.get(5));
-
- b2 = b1.slice(0);
- assert.isEqual(6, b2.length);
- assert.isEqual(0, b2.get(0));
- assert.isEqual(5, b2.get(5));
-
- b2 = b1.slice(1, 4);
- assert.isEqual(3, b2.length);
- assert.isEqual(1, b2.get(0));
- assert.isEqual(3, b2.get(2));
-
- b2 = b1.slice(0, -1);
- assert.isEqual(5, b2.length);
- assert.isEqual(0, b2.get(0));
- assert.isEqual(4, b2.get(4));
-
- b2 = b1.slice(-3, -1);
- assert.isEqual(2, b2.length);
- assert.isEqual(3, b2.get(0));
- assert.isEqual(4, b2.get(1));
-
- b2 = b1.slice(9, 10);
- assert.isEqual(0, b2.length);
-};
-
-exports.testByteStringNewless = function () {
- assert.isEqual(1, ByteString([0]).length);
- assert.isEqual(2, ByteString([0, 1], 0, 2).length);
-};
-
-if (require.main === module.id)
- require("os").exit(require("test/runner").run(exports));
-
diff --git a/utils/tests/serverjs/file-tests.js b/utils/tests/serverjs/file-tests.js
deleted file mode 100755
index 0db6ac2..0000000
--- a/utils/tests/serverjs/file-tests.js
+++ /dev/null
@@ -1,237 +0,0 @@
-
-var assert = require("test/assert");
-var fs = require("file");
-var binary = require('binary');
-
-exports.testWriteRead = function() {
- try {
- var path = "testWriteRead.txt";
- var content = "testWriteRead.txt\n";
- fs.write(path, content);
- assert.is(content, fs.read(path));
- } finally {
- fs.remove(path);
- }
-};
-
-exports.testOpenWriteReadWrongMode = function () {
- var path = "testOpenWriteReadWrongMode.txt";
- var content = "testOpenWriteReadWrongMode.txt\n";
- assert.throwsError(function () {
- fs.open(path).write(content).flush().close();
- fs.remove(path);
- });
-};
-
-exports.testOpenWriteFlushRead = function () {
- try {
- var path = "testOpenWriteRead.txt";
- var content = "testOpenWriteRead.txt\n";
- fs.open(path, 'w').write(content).flush().close();
- assert.is(content, fs.open(path).read());
- } finally {
- fs.remove(path);
- }
-};
-
-exports.testOpenWriteRead = function () {
- try {
- var path = "testOpenWriteRead.txt";
- var content = "testOpenWriteRead.txt\n";
- fs.open(path, 'w').write(content);
- assert.is("", fs.open(path).read());
- } finally {
- fs.remove(path);
- }
-};
-
-exports.testOpenWriteReadFlushOnClose = function () {
- try {
- var path = "testOpenWriteRead.txt";
- var content = "testOpenWriteRead.txt\n";
- fs.open(path, 'w').write(content).close();
- assert.is(content, fs.open(path).read());
- } finally {
- fs.remove(path);
- }
-};
-
-exports.testPathWriteRead = function () {
- try {
- var path = "testOpenWriteRead.txt";
- var content = "testOpenWriteRead.txt\n";
- fs.path(path).write(content);
- assert.is(content, fs.path(path).read());
- } finally {
- fs.remove(path);
- }
-};
-
-exports.testNewPathWriteRead = function () {
- try {
- var path = "testNewPathWriteRead.txt";
- var content = "testNewPathWriteRead.txt\n";
- new fs.Path(path).write(content);
- assert.is(content, new fs.Path(path).read());
- } finally {
- fs.remove(path);
- }
-};
-
-exports.testBigPathOpenWriteRead = function () {
- try {
- var path = "testBigPathWriteRead.txt";
- var content = "testBigPathWriteRead.txt\n";
- fs.Path(path).write(content);
- assert.is(content, fs.Path(path).read());
- } finally {
- fs.remove(path);
- }
-};
-
-exports.testLittlePathOpenWriteRead = function () {
- var path = "testLittlePathWriteRead.txt";
- var content = "testLittlePathWriteRead.txt\n";
- assert.throwsError(function () {
- fs.path(path).open().write(content).flush().close();
- fs.remove(path);
- });
-};
-
-exports.testLittlePathOpenWriteRead = function () {
- try {
- var path = "testLittlePathOpenWriteRead.txt";
- var content = "testLittlePathOpenWriteRead.txt\n";
- fs.path(path).open('w').write(content).flush().close();
- assert.is(content, fs.path(path).open().read());
- } finally {
- fs.remove(path);
- }
-};
-
-exports.testWriteReadNewlineEnforced = function() {
- try {
- var path = "testWriteReadNewlineEnforced.txt";
- var content = "testWriteReadNewlineEnforced.txt";
- fs.write(path, content);
- assert.is(content + "\n", fs.read(path));
- } finally {
- fs.remove(path);
- }
-};
-
-exports.testWriteReadBinaryWrongMode = function () {
- var path = "testWriteReadBinaryModeWrongMode.txt";
- var content = "\0\0\0".toByteString("ascii");
- assert.throwsError(function () {
- fs.path(path).open('b').write(content).flush().close();
- fs.remove(path);
- });
-};
-
-exports.testWriteReadBinary = function () {
- try {
- var path = "testWriteReadBinary.txt";
- var content = "aaa".toByteString("ascii");
- fs.path(path).open('wb').write(content).flush().close();
- assert.eq(content, fs.path(path).open('b').read());
- } finally {
- fs.remove(path);
- }
-};
-
-exports.testWriteReadBinaryNulls = function () {
- try {
- var path = "testWriteReadBinaryNulls.txt";
- var content = "\0\0\0".toByteString("ascii");
- fs.path(path).open('wb').write(content).flush().close();
- assert.eq(content, fs.path(path).open('b').read());
- } finally {
- fs.remove(path);
- }
-};
-
-exports.testPrintRead = function () {
- try {
- var path = "testPrintRead.txt";
- fs.path(path).open('w').print("hello").print("world");
- assert.is("hello\nworld\n", fs.path(path).open().read());
- } finally {
- fs.remove(path);
- }
-};
-
-exports.testCopy = function () {
- try {
- fs.path("testCopyA.txt").write("testCopy").copy("testCopyB.txt");
- assert.is("testCopy\n", fs.read("testCopyB.txt"));
- } finally {
- fs.remove("testCopyA.txt");
- fs.remove("testCopyB.txt");
- }
-};
-
-exports.testCopyChain = function () {
- try {
- fs.path("testCopyA.txt").write("testCopy").copy("testCopyB.txt").copy("testCopyC.txt");
- assert.is("testCopy\n", fs.read("testCopyC.txt"));
- } finally {
- fs.remove("testCopyA.txt");
- fs.remove("testCopyB.txt");
- fs.remove("testCopyC.txt");
- }
-};
-
-exports.testMoveExists = function () {
- try {
- fs.path("testCopyA.txt").write("testCopy").move("testCopyB.txt");
- assert.isFalse(fs.exists("testCopyA.txt"));
- assert.isTrue(fs.exists("testCopyB.txt"));
- } finally {
- if (fs.exists("testCopyA.txt"))
- fs.remove("testCopyA.txt");
- if (fs.exists("testCopyB.txt"))
- fs.remove("testCopyB.txt");
- }
-};
-
-exports.testsExists = function () {
- assert.isTrue(fs.exists(module.path));
- assert.isTrue(fs.path(module.path).exists());
-};
-
-exports.testsIsFile = function () {
- assert.isTrue(fs.isFile(module.path));
- assert.isTrue(fs.path(module.path).isFile());
-};
-
-exports.testsIsDirectoryDirname = function () {
- assert.isTrue(fs.path(module.path).dirname().isDirectory());
-};
-
-exports.testsIsDirectoryResolve = function () {
- assert.isTrue(fs.path(module.path).resolve('.').isDirectory());
-};
-
-exports.testsRenameList = function () {
- try {
- fs.mkdir('testsRename');
- fs.path('testsRename', 'A.txt').touch();
- assert.eq(fs.path('testsRename').list(), ['A.txt']);
- fs.path('testsRename', 'A.txt').rename('B.txt');
- assert.eq(fs.path('testsRename').list(), ['B.txt']);
- } finally {
- fs.rmtree('testsRename');
- }
-};
-
-exports.testIterator = require('./file/iterator');
-exports.testExtension = require('./file/extension');
-exports.testResolve = require('./file/resolve');
-exports.testNormal = require('./file/normal');
-exports.testDirname = require('./file/dirname');
-exports.testIsAbsolute = require('./file/is-absolute');
-
-if (require.main === module.id)
- require("os").exit(require("test/runner").run(exports));
-
diff --git a/utils/tests/serverjs/file/extension.js b/utils/tests/serverjs/file/extension.js
deleted file mode 100755
index 00e5959..0000000
--- a/utils/tests/serverjs/file/extension.js
+++ /dev/null
@@ -1,45 +0,0 @@
-
-var util = require('util');
-var assert = require('test/assert');
-var fs = require('file');
-
-util.forEachApply([
- ['', ''],
- ['.', ''],
- ['..', ''],
- ['.a', ''],
- ['..a', ''],
- ['.a.b', '.b'],
- ['a.b', '.b'],
- ['a.b.c', '.c'],
- ['/', ''],
- ['/.', ''],
- ['/..', ''],
- ['/..a', ''],
- ['/.a.b', '.b'],
- ['/a.b', '.b'],
- ['/a.b.c', '.c'],
- ['foo/', ''],
- ['foo/.', ''],
- ['foo/..', ''],
- ['foo/..a', ''],
- ['foo/.a.b', '.b'],
- ['foo/a.b', '.b'],
- ['foo/a.b.c', '.c'],
- ['/foo/', ''],
- ['/foo/.', ''],
- ['/foo/..', ''],
- ['/foo/..a', ''],
- ['/foo/.a.b', '.b'],
- ['/foo/a.b', '.b'],
- ['/foo/a.b.c', '.c']
-], function (path, expected) {
- exports['test ' + util.repr(path)] = function () {
- var actual = fs.extension(path);
- assert.eq(expected, actual, util.repr(path));
- };
-});
-
-if (require.main === module.id)
- require("os").exit(require("test/runner").run(exports));
-
diff --git a/utils/tests/serverjs/file/iterator.js b/utils/tests/serverjs/file/iterator.js
deleted file mode 100755
index 603bb51..0000000
--- a/utils/tests/serverjs/file/iterator.js
+++ /dev/null
@@ -1,101 +0,0 @@
-
-var assert = require("test/assert");
-var fs = require("file");
-
-/* a decorator that passes a path object corresponding
- to the test name and removes any files created
- therein afterward */
-var Test = function (block) {
- var args = arguments;
- var exported = function () {
- for (var name in exports) {
- if (exports[name] === exported) {
- try {
- var path = fs.path(
- fs.resolve(module.path, '.'),
- name
- );
- block(path);
- } finally {
- if (path.exists())
- path.rmtree();
- }
- }
- }
- };
- return exported;
-};
-
-exports.testPrintReadLine = Test(function (path) {
- var stream = path.open('w');
- stream.print('hello');
- stream.print('world');
- stream.close();
- stream = path.open('r');
- assert.is('hello\n', stream.readLine());
- assert.is('world\n', stream.readLine());
- assert.is('', stream.readLine());
-});
-
-exports.testPrintReadLineChain = Test(function (path) {
- var stream = path.open('w');
- stream.print('hello').print('world');
- stream.close();
- stream = path.open('r');
- assert.is('hello\n', stream.readLine());
- assert.is('world\n', stream.readLine());
- assert.is('', stream.readLine());
-});
-
-exports.testReadLines = Test(function (path) {
- var stream = path.open('w');
- stream.print('hello').print('world');
- stream.close();
- stream = path.open('r');
- assert.eq(['hello\n', 'world\n'], stream.readLines());
-});
-
-exports.testForEach = Test(function (path) {
- var output = path.open('w');
- var input = path.open('r');
- output.print('1');
- output.print('1');
- var count = 0;
- input.forEach(function (line) {
- assert.eq('1', line);
- count++;
- });
- assert.eq(2, count);
- output.print('2').print('2');
- input.forEach(function (line) {
- assert.eq('2', line);
- count++;
- });
- assert.eq(4, count);
- output.close();
- input.close();
-});
-
-exports.testNext = Test(function (path) {
- path.open('w').print('1').print('2').close();
- var iterator = path.open();
- assert.is('1', iterator.next());
- assert.is('2', iterator.next());
- assert.throwsError(function () {
- iterator.next();
- });
-});
-
-exports.testIterator = Test(function (path) {
- path.open('w').print('1').print('2').close();
- var iterator = path.open().iterator();
- assert.is('1', iterator.next());
- assert.is('2', iterator.next());
- assert.throwsError(function () {
- iterator.next();
- });
-});
-
-if (require.main === module.id)
- require("os").exit(require("test/runner").run(exports));
-
diff --git a/utils/tests/serverjs/file/normal.js b/utils/tests/serverjs/file/normal.js
deleted file mode 100755
index 8314b1d..0000000
--- a/utils/tests/serverjs/file/normal.js
+++ /dev/null
@@ -1,27 +0,0 @@
-
-var util = require('util');
-var assert = require('test/assert');
-var fs = require('file');
-
-util.forEachApply([
- ['', ''],
- ['.', ''],
- ['./', ''],
- ['../', '../'],
- ['../a', '../a'],
- ['../a/', '../a/'],
- ['a/..', ''],
- ['a/../', ''],
- ['a/../b', 'b'],
- ['a/../b/', 'b/'],
-], function (path, expected) {
- exports['test ' + util.repr(path)] = function () {
- var result = '';
- var actual = fs.normal(path);
- assert.eq(expected, actual, util.repr(path));
- };
-});
-
-if (require.main === module.id)
- require("os").exit(require("test/runner").run(exports));
-
diff --git a/utils/tests/serverjs/file/resolve.js b/utils/tests/serverjs/file/resolve.js
deleted file mode 100755
index dbd33f0..0000000
--- a/utils/tests/serverjs/file/resolve.js
+++ /dev/null
@@ -1,44 +0,0 @@
-
-var system = require('system');
-var util = require('util');
-var assert = require('test/assert');
-var fs = require('file');
-
-util.forEachApply([
- [['/'], '/'],
- [['/a'], '/a'],
- [['/a/'], '/a/'],
- [['/a', '/b'], '/b'],
- [['/a', '/b/'], '/b/'],
- [['/', 'a'], '/a'],
- [['/', 'a/'], '/a/'],
- [['/a', 'a'], '/a'],
- [['/a', 'a/'], '/a/'],
- [['/a/', 'a'], '/a/a'],
- [['/a/', 'a/'], '/a/a/'],
- [['..'], '../'],
- [['..', 'a'], '../a'],
- [['..', 'a/'], '../a/'],
- [['.'], ''],
- [['.', 'a'], 'a'],
- [['.', 'a/'], 'a/'],
- [['a', '.'], ''],
- [['a', '.', 'a'], 'a'],
- [['a', '.', 'a/'], 'a/'],
- [['a', '..'], '../'],
- [['a', '..', 'a'], '../a'],
- [['a', '..', 'a/'], '../a/'],
- [['a/', '..'], ''],
- [['a/', '..', 'a'], 'a'],
- [['a/', '..', 'a/'], 'a/'],
- [['a/b', ''], 'a/b'],
-], function (parts, expected) {
- exports['test ' + util.repr(parts)] = function () {
- var result = '';
- var actual = fs.resolve.apply(null, parts);
- assert.eq(expected, actual, util.repr(parts));
- };
-});
-
-if (require.main === module.id)
- require("os").exit(require("test/runner").run(exports));
diff --git a/utils/tests/serverjs/module-tests.js b/utils/tests/serverjs/module-tests.js
deleted file mode 100755
index 449351b..0000000
--- a/utils/tests/serverjs/module-tests.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var assert = require("test/assert");
-
-exports.testModuleCharsetIsUtf8 = function () {
- assert.isEqual(
- 1, "♥".length,
- 'unicode characters should have length of 1'
- );
-};
-
diff --git a/utils/tests/string-tests.js b/utils/tests/string-tests.js
deleted file mode 100755
index d337f07..0000000
--- a/utils/tests/string-tests.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var assert = require("test/assert");
-
-exports.testSqueze = function() {
- assert.isEqual("", "".squeeze());
- assert.isEqual("ok", "ok".squeeze());
- assert.isEqual("it works", "it works".squeeze());
- assert.isEqual("start", "ssstart".squeeze());
- assert.isEqual("end\n", "end\n\n\n".squeeze());
-};
-
-exports.testChomp = function() {
- assert.isEqual("hello", "hello".chomp());
- assert.isEqual("hello", "hello\n".chomp());
- assert.isEqual("hello", "hello\r\n".chomp());
- assert.isEqual("hello", "hello\n\r".chomp()); // FIXME: should fail!!! (== hello\n)
- assert.isEqual("hello", "hello\r".chomp());
- assert.isEqual("hello \n there", "hello \n there".chomp());
- assert.isEqual("he", "hello".chomp("llo"));
-};
-
-exports.testBegins = function() {
- assert.isTrue("Hello".begins("H"));
- assert.isTrue("Hello".begins("Hell"));
- assert.isTrue("Hello".begins("Hello"));
-};
-
-exports.testEnds = function() {
- assert.isTrue("Hello".ends("o"));
- assert.isTrue("Hello".ends("llo"));
- assert.isTrue("Hello".ends("Hello"));
-};
-
-if (require.main === module.id)
- require("os").exit(require("test/runner").run(exports));
diff --git a/utils/tests/uri-tests.js b/utils/tests/uri-tests.js
deleted file mode 100755
index b8f9978..0000000
--- a/utils/tests/uri-tests.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var assert = require("test/assert");
-
-var URI = require("uri").URI;
-
-exports.testConstructor = function() {
- var uri = new URI("http://www.narwhaljs.org/blog/categories?id=news");
-
- assert.isEqual("http", uri.scheme);
- assert.isEqual("www.narwhaljs.org", uri.authority);
- assert.isEqual("/blog/categories", uri.path);
- assert.isEqual("id=news", uri.query);
- assert.isNull(uri.fragment);
-}
-
-exports.testToString = function() {
- var uri = new URI("http://www.narwhaljs.org/blog/categories?id=news");
- assert.isEqual("http://www.narwhaljs.org/blog/categories?id=news", uri.toString());
-}