diff options
author | root <bryan@olenepal.org> | 2009-09-03 03:30:56 (GMT) |
---|---|---|
committer | root <bryan@olenepal.org> | 2009-09-03 03:30:56 (GMT) |
commit | f05b800a5fbd9bbfa2ab4f38717b7f27e7ad66ef (patch) | |
tree | 65d9be2f9db6b9e66a39eb4d6bf3bdc5316d8d6f | |
parent | d8f598902d77f6b89e4b4e0dfc3dac0620960d01 (diff) |
cleaned out extraneous files, such as old versions of karma plugin
188 files changed, 3733 insertions, 14981 deletions
diff --git a/assets/default/images/back.png b/assets/default/images/back.png Binary files differindex fbb0910..fbb0910 100644..100755 --- a/assets/default/images/back.png +++ b/assets/default/images/back.png diff --git a/assets/default/images/back_bw.png b/assets/default/images/back_bw.png Binary files differindex 126380d..126380d 100644..100755 --- a/assets/default/images/back_bw.png +++ b/assets/default/images/back_bw.png diff --git a/assets/default/images/chakra_logo.png b/assets/default/images/chakra_logo.png Binary files differindex b7f9b3a..b7f9b3a 100644..100755 --- a/assets/default/images/chakra_logo.png +++ b/assets/default/images/chakra_logo.png diff --git a/assets/default/images/english.png b/assets/default/images/english.png Binary files differindex 6a3eaab..6a3eaab 100644..100755 --- a/assets/default/images/english.png +++ b/assets/default/images/english.png diff --git a/assets/default/images/exercise.png b/assets/default/images/exercise.png Binary files differindex ebb2ead..ebb2ead 100644..100755 --- a/assets/default/images/exercise.png +++ b/assets/default/images/exercise.png diff --git a/assets/default/images/exercise_bw.png b/assets/default/images/exercise_bw.png Binary files differindex e2cf4f7..e2cf4f7 100644..100755 --- a/assets/default/images/exercise_bw.png +++ b/assets/default/images/exercise_bw.png diff --git a/assets/default/images/games.png b/assets/default/images/games.png Binary files differindex a7177f2..a7177f2 100644..100755 --- a/assets/default/images/games.png +++ b/assets/default/images/games.png diff --git a/assets/default/images/games_bw.png b/assets/default/images/games_bw.png Binary files differindex fd3c3cb..fd3c3cb 100644..100755 --- a/assets/default/images/games_bw.png +++ b/assets/default/images/games_bw.png diff --git a/assets/default/images/geography.png b/assets/default/images/geography.png Binary files differindex 3a9a2dc..3a9a2dc 100644..100755 --- a/assets/default/images/geography.png +++ b/assets/default/images/geography.png diff --git a/assets/default/images/grade1.png b/assets/default/images/grade1.png Binary files differindex 2e27b65..2e27b65 100644..100755 --- a/assets/default/images/grade1.png +++ b/assets/default/images/grade1.png diff --git a/assets/default/images/grade1_bw.png b/assets/default/images/grade1_bw.png Binary files differindex 0034ace..0034ace 100644..100755 --- a/assets/default/images/grade1_bw.png +++ b/assets/default/images/grade1_bw.png diff --git a/assets/default/images/grade2.png b/assets/default/images/grade2.png Binary files differindex 496d0d2..496d0d2 100644..100755 --- a/assets/default/images/grade2.png +++ b/assets/default/images/grade2.png diff --git a/assets/default/images/grade2_bw.png b/assets/default/images/grade2_bw.png Binary files differindex 28eb7c0..28eb7c0 100644..100755 --- a/assets/default/images/grade2_bw.png +++ b/assets/default/images/grade2_bw.png diff --git a/assets/default/images/grade3.png b/assets/default/images/grade3.png Binary files differindex 8248bf0..8248bf0 100644..100755 --- a/assets/default/images/grade3.png +++ b/assets/default/images/grade3.png diff --git a/assets/default/images/grade3_bw.png b/assets/default/images/grade3_bw.png Binary files differindex 0e8cd09..0e8cd09 100644..100755 --- a/assets/default/images/grade3_bw.png +++ b/assets/default/images/grade3_bw.png diff --git a/assets/default/images/grade4.png b/assets/default/images/grade4.png Binary files differindex 25ac532..25ac532 100644..100755 --- a/assets/default/images/grade4.png +++ b/assets/default/images/grade4.png diff --git a/assets/default/images/grade4_bw.png b/assets/default/images/grade4_bw.png Binary files differindex c597442..c597442 100644..100755 --- a/assets/default/images/grade4_bw.png +++ b/assets/default/images/grade4_bw.png diff --git a/assets/default/images/grade5.png b/assets/default/images/grade5.png Binary files differindex 1ad416a..1ad416a 100644..100755 --- a/assets/default/images/grade5.png +++ b/assets/default/images/grade5.png diff --git a/assets/default/images/grade5_bw.png b/assets/default/images/grade5_bw.png Binary files differindex a8a9d8a..a8a9d8a 100644..100755 --- a/assets/default/images/grade5_bw.png +++ b/assets/default/images/grade5_bw.png diff --git a/assets/default/images/grade6.png b/assets/default/images/grade6.png Binary files differindex 26e6f9b..26e6f9b 100644..100755 --- a/assets/default/images/grade6.png +++ b/assets/default/images/grade6.png diff --git a/assets/default/images/grade6_bw.png b/assets/default/images/grade6_bw.png Binary files differindex 07e6e0d..07e6e0d 100644..100755 --- a/assets/default/images/grade6_bw.png +++ b/assets/default/images/grade6_bw.png diff --git a/assets/default/images/grade7.png b/assets/default/images/grade7.png Binary files differindex 333b61e..333b61e 100644..100755 --- a/assets/default/images/grade7.png +++ b/assets/default/images/grade7.png diff --git a/assets/default/images/grade7_bw.png b/assets/default/images/grade7_bw.png Binary files differindex 6ff1dd1..6ff1dd1 100644..100755 --- a/assets/default/images/grade7_bw.png +++ b/assets/default/images/grade7_bw.png diff --git a/assets/default/images/grade8.png b/assets/default/images/grade8.png Binary files differindex 77542a7..77542a7 100644..100755 --- a/assets/default/images/grade8.png +++ b/assets/default/images/grade8.png diff --git a/assets/default/images/grade8_bw.png b/assets/default/images/grade8_bw.png Binary files differindex 15b3be7..15b3be7 100644..100755 --- a/assets/default/images/grade8_bw.png +++ b/assets/default/images/grade8_bw.png diff --git a/assets/default/images/health.png b/assets/default/images/health.png Binary files differindex 305c8d0..305c8d0 100644..100755 --- a/assets/default/images/health.png +++ b/assets/default/images/health.png diff --git a/assets/default/images/help.png b/assets/default/images/help.png Binary files differindex 9209167..9209167 100644..100755 --- a/assets/default/images/help.png +++ b/assets/default/images/help.png diff --git a/assets/default/images/history.png b/assets/default/images/history.png Binary files differindex 79a79c0..79a79c0 100644..100755 --- a/assets/default/images/history.png +++ b/assets/default/images/history.png diff --git a/assets/default/images/karma_logo.png b/assets/default/images/karma_logo.png Binary files differindex dc8610a..dc8610a 100644..100755 --- a/assets/default/images/karma_logo.png +++ b/assets/default/images/karma_logo.png diff --git a/assets/default/images/mathematics.png b/assets/default/images/mathematics.png Binary files differindex e8a6ee2..e8a6ee2 100644..100755 --- a/assets/default/images/mathematics.png +++ b/assets/default/images/mathematics.png diff --git a/assets/default/images/music.png b/assets/default/images/music.png Binary files differindex 0530497..0530497 100644..100755 --- a/assets/default/images/music.png +++ b/assets/default/images/music.png diff --git a/assets/default/images/mystuff.png b/assets/default/images/mystuff.png Binary files differindex 40d3dba..40d3dba 100644..100755 --- a/assets/default/images/mystuff.png +++ b/assets/default/images/mystuff.png diff --git a/assets/default/images/nepali.png b/assets/default/images/nepali.png Binary files differindex 08b82a7..08b82a7 100644..100755 --- a/assets/default/images/nepali.png +++ b/assets/default/images/nepali.png diff --git a/assets/default/images/preview1.jpg b/assets/default/images/preview1.jpg Binary files differindex 9801ffb..9801ffb 100644..100755 --- a/assets/default/images/preview1.jpg +++ b/assets/default/images/preview1.jpg diff --git a/assets/default/images/preview2.jpg b/assets/default/images/preview2.jpg Binary files differindex 41762a2..41762a2 100644..100755 --- a/assets/default/images/preview2.jpg +++ b/assets/default/images/preview2.jpg diff --git a/assets/default/images/preview3.jpg b/assets/default/images/preview3.jpg Binary files differindex 385bef2..385bef2 100644..100755 --- a/assets/default/images/preview3.jpg +++ b/assets/default/images/preview3.jpg diff --git a/assets/default/images/preview4.jpg b/assets/default/images/preview4.jpg Binary files differindex e75def8..e75def8 100644..100755 --- a/assets/default/images/preview4.jpg +++ b/assets/default/images/preview4.jpg diff --git a/assets/default/images/profile.png b/assets/default/images/profile.png Binary files differindex 16b5f9b..16b5f9b 100644..100755 --- a/assets/default/images/profile.png +++ b/assets/default/images/profile.png diff --git a/assets/default/images/resources.png b/assets/default/images/resources.png Binary files differindex 473bedf..473bedf 100644..100755 --- a/assets/default/images/resources.png +++ b/assets/default/images/resources.png diff --git a/assets/default/images/resources_bw.png b/assets/default/images/resources_bw.png Binary files differindex 4a1c27d..4a1c27d 100644..100755 --- a/assets/default/images/resources_bw.png +++ b/assets/default/images/resources_bw.png diff --git a/assets/default/images/science.png b/assets/default/images/science.png Binary files differindex 7422dcb..7422dcb 100644..100755 --- a/assets/default/images/science.png +++ b/assets/default/images/science.png diff --git a/assets/default/images/tutorial.png b/assets/default/images/tutorial.png Binary files differindex 6c2fc4a..6c2fc4a 100644..100755 --- a/assets/default/images/tutorial.png +++ b/assets/default/images/tutorial.png diff --git a/assets/default/images/tutorial_bw.png b/assets/default/images/tutorial_bw.png Binary files differindex b25328b..b25328b 100644..100755 --- a/assets/default/images/tutorial_bw.png +++ b/assets/default/images/tutorial_bw.png 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 Binary files differnew file mode 100755 index 0000000..5e721c9 --- /dev/null +++ b/examples/adding_up_to_10/assets/generic/images/happyChimp_120x125.png 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 Binary files differnew file mode 100755 index 0000000..a731df4 --- /dev/null +++ b/examples/adding_up_to_10/assets/generic/images/normalChimp_120x125.png 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 Binary files differnew file mode 100755 index 0000000..1dec5f0 --- /dev/null +++ b/examples/adding_up_to_10/assets/generic/images/sadChimp_120x125.png 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 Binary files differdeleted file mode 100644 index 522fb66..0000000 --- a/experiments/ball.png +++ /dev/null diff --git a/experiments/banana.png b/experiments/banana.png Binary files differdeleted file mode 100755 index 7600af1..0000000 --- a/experiments/banana.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 9357e21..0000000 --- a/experiments/yellowBox300px.png +++ /dev/null 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"> </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"> </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"><static> </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"><static> </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"><static> - - - <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"><static> - - - <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"> </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"> </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"> </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"> </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"><static> </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"><static> </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"><static> - - - <span class="light">KMedia.</span><b>isReady</b>() - - </div> - <div class="description"> - - - - </div> - - - - - - - - - - - - <hr /> - - <a name=".play"> </a> - <div class="fixedFont"><static> - - - <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"><inner> </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"><inner> - <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"><inner> </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"><inner> - <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"><inner> </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"><inner> - <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"><inner> </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"><inner> - <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"> </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"> </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"> </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"> </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"> </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"><static> </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"><static> </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"><static> </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"><static> - - <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"><static> - - <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"><static> - - <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"> </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"><static> </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"><static> </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"><static> - - - <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"><static> - - - <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"> </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"><static> </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"><static> - - <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"> </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"> </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"> </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"><inner> </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"> </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"><inner> </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"> </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"> </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"><inner> </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"><inner> </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"> </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"> </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"> </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"> </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"><inner> - - <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"><inner> - - <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"><inner> - - <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"><inner> - - - <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"> </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"> </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"> </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"> </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"> </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] <SRC_DIR> <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=<PATH> or --directory=<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=<ENCODING> or --encoding=<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=<PATH> or --out=<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=<DEPTH> or --recurse=<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=<PATH> or --template=<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=<EXT>[,EXT]... or --ext=<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} <br> -<span class='line'>108</span> *lang: country - language two letters code represented as xx-YY, example: en-US.<br> -<span class='line'>109</span> *langCode*: language code represented as xx, example: en.<br> -<span class='line'>110</span> *countryCode*: country code represented as YY, example: US.<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> <p>creates a new Gettext object and returns a shortcut function to translate strings</p> -<span class='line'>133</span> we use karma.Gettext.js it's a modification of <a href=http://jsgettext.berlios.de/doc/html/Gettext.html> -<span class='line'>134</span> Gettext.js</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 <br> -<span class='line'>137</span> <ul> -<span class='line'>138</span> <li>1 argument = msgid</li> -<span class='line'>139</span> <li>2 arguments = context, msgid</li> -<span class='line'>140</span> <li>3 arguments = number, singular, plural</li> -<span class='line'>141</span> <li>4 arguments = number, context, singular, plural</li> -<span class='line'>142</span> </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"><</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> <p>It will attempt to load a language file, the posible languages are defined on language.alternatives -<span class='line'>186</span> (constructor param).</p> -<span class='line'>187</span> <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.</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"><</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"><</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"><</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"><</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 < 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"><</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"><=</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"><=</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"><</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 <a href="mailto:zer.subzero@gmail.com">Felipe L�pez</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"><</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"><</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"><</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"><</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"><</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 < 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"><</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"><=</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"><=</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"><</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'.<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> <ul> -<span class='line'> 73</span> <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.<li> -<span class='line'> 76</span> <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> </li> -<span class='line'> 79</span> </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} <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.<br> -<span class='line'>123</span> countryCode*: country code represented as YY, example: US.<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.<br>We use karma.Gettext.js it's a modification of -<span class='line'>147</span> <a href=http://jsgettext.berlios.de/doc/html/Gettext.html> -<span class='line'>148</span> Gettext.js</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> <table> -<span class='line'>154</span> <tr> -<span class='line'>155</span> <th>No. params</th> -<span class='line'>156</span> <th>Parameters</th> -<span class='line'>157</span> <th>Gettext function called</th> -<span class='line'>158</span> </tr> -<span class='line'>159</span> <tr> -<span class='line'>160</span> <td>1</td> -<span class='line'>161</span> <td>msgid</td> -<span class='line'>162</span> <td>gettext</td> -<span class='line'>163</span> <tr> -<span class='line'>164</span> <td>2</td> -<span class='line'>165</span> <td>context, msgid</td> -<span class='line'>166</span> <td>pgettext</td> -<span class='line'>167</span> </tr> -<span class='line'>168</span> <tr> -<span class='line'>169</span> <td>3</td> -<span class='line'>170</span> <td>number, singular, plural</td> -<span class='line'>171</span> <td>ngettext</td> -<span class='line'>172</span> </tr> -<span class='line'>173</span> <tr> -<span class='line'>174</span> <td>4</td> -<span class='line'>175</span> <td>number, context, singular, plural</td> -<span class='line'>176</span> <td>npgettext</td> -<span class='line'>177</span> </tr> -<span class='line'>178</span> </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> <b>Note:</b>Inline html localisation under development<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 <a href="http://wiki.sugarlabs.org/go/Karma/Bundle_layout"> -<span class='line'>211</span> Karma Bundle_layout</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"><</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> <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.</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"><</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.<br> -<span class='line'>406</span> <b>Warning:</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.<br> -<span class='line'>416</span> <b>Warning:</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.<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.<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.<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"><</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"><</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.<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.<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"><</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 < 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"><</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"><=</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"><=</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"><</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()); -} |