Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/examples/lessons/6_English_syllables
diff options
context:
space:
mode:
Diffstat (limited to 'examples/lessons/6_English_syllables')
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/audio/correct.oggbin12811 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/audio/incorrect.oggbin12683 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/bgContainer.pngbin68896 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/bg_footer.pngbin185 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/bg_header.pngbin307 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/bg_title_block.pngbin366 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/btn_back.pngbin2665 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/btn_back_hover.pngbin4038 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/btn_help.pngbin2755 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/btn_help_hover.pngbin4190 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/btn_next.pngbin2773 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/btn_next_hover.pngbin3996 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/btn_ole.pngbin4842 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/btn_ole_hover.pngbin6253 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/btn_play_again.pngbin5627 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/btn_play_again_hover.pngbin5468 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/btn_play_again_mouse_down.pngbin5688 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/btn_start.pngbin5127 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/btn_start_hover.pngbin4966 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/btn_start_mouse_down.pngbin5109 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/computer_base.pngbin5140 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/computer_body.pngbin4239 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/computer_top.pngbin4936 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/help.pngbin122707 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/player_base.pngbin5765 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/player_body.pngbin4904 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/player_top.pngbin5540 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/title_block_lt.pngbin1337 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/assets/image/title_block_rt.pngbin1362 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_English_syllables/css/lesson.css295
-rwxr-xr-xexamples/lessons/6_English_syllables/index.html44
-rwxr-xr-xexamples/lessons/6_English_syllables/js/jquery-1.3.2.min.js19
-rwxr-xr-xexamples/lessons/6_English_syllables/js/karma.js1018
-rwxr-xr-xexamples/lessons/6_English_syllables/js/lesson.js359
34 files changed, 0 insertions, 1735 deletions
diff --git a/examples/lessons/6_English_syllables/assets/audio/correct.ogg b/examples/lessons/6_English_syllables/assets/audio/correct.ogg
deleted file mode 100755
index a0d9e3a..0000000
--- a/examples/lessons/6_English_syllables/assets/audio/correct.ogg
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/audio/incorrect.ogg b/examples/lessons/6_English_syllables/assets/audio/incorrect.ogg
deleted file mode 100755
index 4805e55..0000000
--- a/examples/lessons/6_English_syllables/assets/audio/incorrect.ogg
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/bgContainer.png b/examples/lessons/6_English_syllables/assets/image/bgContainer.png
deleted file mode 100755
index a81304e..0000000
--- a/examples/lessons/6_English_syllables/assets/image/bgContainer.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/bg_footer.png b/examples/lessons/6_English_syllables/assets/image/bg_footer.png
deleted file mode 100755
index 8982264..0000000
--- a/examples/lessons/6_English_syllables/assets/image/bg_footer.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/bg_header.png b/examples/lessons/6_English_syllables/assets/image/bg_header.png
deleted file mode 100755
index 98213f7..0000000
--- a/examples/lessons/6_English_syllables/assets/image/bg_header.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/bg_title_block.png b/examples/lessons/6_English_syllables/assets/image/bg_title_block.png
deleted file mode 100755
index 2c9dacf..0000000
--- a/examples/lessons/6_English_syllables/assets/image/bg_title_block.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/btn_back.png b/examples/lessons/6_English_syllables/assets/image/btn_back.png
deleted file mode 100755
index d9fbf14..0000000
--- a/examples/lessons/6_English_syllables/assets/image/btn_back.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/btn_back_hover.png b/examples/lessons/6_English_syllables/assets/image/btn_back_hover.png
deleted file mode 100755
index 0911fcc..0000000
--- a/examples/lessons/6_English_syllables/assets/image/btn_back_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/btn_help.png b/examples/lessons/6_English_syllables/assets/image/btn_help.png
deleted file mode 100755
index 6753e9c..0000000
--- a/examples/lessons/6_English_syllables/assets/image/btn_help.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/btn_help_hover.png b/examples/lessons/6_English_syllables/assets/image/btn_help_hover.png
deleted file mode 100755
index d3ccd92..0000000
--- a/examples/lessons/6_English_syllables/assets/image/btn_help_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/btn_next.png b/examples/lessons/6_English_syllables/assets/image/btn_next.png
deleted file mode 100755
index 9d70993..0000000
--- a/examples/lessons/6_English_syllables/assets/image/btn_next.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/btn_next_hover.png b/examples/lessons/6_English_syllables/assets/image/btn_next_hover.png
deleted file mode 100755
index 2cd4d37..0000000
--- a/examples/lessons/6_English_syllables/assets/image/btn_next_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/btn_ole.png b/examples/lessons/6_English_syllables/assets/image/btn_ole.png
deleted file mode 100755
index 0e775e9..0000000
--- a/examples/lessons/6_English_syllables/assets/image/btn_ole.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/btn_ole_hover.png b/examples/lessons/6_English_syllables/assets/image/btn_ole_hover.png
deleted file mode 100755
index c43c5f7..0000000
--- a/examples/lessons/6_English_syllables/assets/image/btn_ole_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/btn_play_again.png b/examples/lessons/6_English_syllables/assets/image/btn_play_again.png
deleted file mode 100755
index 3594d18..0000000
--- a/examples/lessons/6_English_syllables/assets/image/btn_play_again.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/btn_play_again_hover.png b/examples/lessons/6_English_syllables/assets/image/btn_play_again_hover.png
deleted file mode 100755
index ebb8f8c..0000000
--- a/examples/lessons/6_English_syllables/assets/image/btn_play_again_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/btn_play_again_mouse_down.png b/examples/lessons/6_English_syllables/assets/image/btn_play_again_mouse_down.png
deleted file mode 100755
index 07d6e45..0000000
--- a/examples/lessons/6_English_syllables/assets/image/btn_play_again_mouse_down.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/btn_start.png b/examples/lessons/6_English_syllables/assets/image/btn_start.png
deleted file mode 100755
index 32e5f20..0000000
--- a/examples/lessons/6_English_syllables/assets/image/btn_start.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/btn_start_hover.png b/examples/lessons/6_English_syllables/assets/image/btn_start_hover.png
deleted file mode 100755
index 811ce78..0000000
--- a/examples/lessons/6_English_syllables/assets/image/btn_start_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/btn_start_mouse_down.png b/examples/lessons/6_English_syllables/assets/image/btn_start_mouse_down.png
deleted file mode 100755
index 5acd43b..0000000
--- a/examples/lessons/6_English_syllables/assets/image/btn_start_mouse_down.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/computer_base.png b/examples/lessons/6_English_syllables/assets/image/computer_base.png
deleted file mode 100755
index b18175d..0000000
--- a/examples/lessons/6_English_syllables/assets/image/computer_base.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/computer_body.png b/examples/lessons/6_English_syllables/assets/image/computer_body.png
deleted file mode 100755
index a083144..0000000
--- a/examples/lessons/6_English_syllables/assets/image/computer_body.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/computer_top.png b/examples/lessons/6_English_syllables/assets/image/computer_top.png
deleted file mode 100755
index 0ea98fa..0000000
--- a/examples/lessons/6_English_syllables/assets/image/computer_top.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/help.png b/examples/lessons/6_English_syllables/assets/image/help.png
deleted file mode 100755
index 4cde516..0000000
--- a/examples/lessons/6_English_syllables/assets/image/help.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/player_base.png b/examples/lessons/6_English_syllables/assets/image/player_base.png
deleted file mode 100755
index 4b25b30..0000000
--- a/examples/lessons/6_English_syllables/assets/image/player_base.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/player_body.png b/examples/lessons/6_English_syllables/assets/image/player_body.png
deleted file mode 100755
index e1d1bb7..0000000
--- a/examples/lessons/6_English_syllables/assets/image/player_body.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/player_top.png b/examples/lessons/6_English_syllables/assets/image/player_top.png
deleted file mode 100755
index 9d95c18..0000000
--- a/examples/lessons/6_English_syllables/assets/image/player_top.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/title_block_lt.png b/examples/lessons/6_English_syllables/assets/image/title_block_lt.png
deleted file mode 100755
index 4696182..0000000
--- a/examples/lessons/6_English_syllables/assets/image/title_block_lt.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/assets/image/title_block_rt.png b/examples/lessons/6_English_syllables/assets/image/title_block_rt.png
deleted file mode 100755
index 37cc44a..0000000
--- a/examples/lessons/6_English_syllables/assets/image/title_block_rt.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_English_syllables/css/lesson.css b/examples/lessons/6_English_syllables/css/lesson.css
deleted file mode 100755
index 94e9e24..0000000
--- a/examples/lessons/6_English_syllables/css/lesson.css
+++ /dev/null
@@ -1,295 +0,0 @@
-@CHARSET "UTF-8";
-/****** Page Styles ****/
-
-/* Designed for 1200*900 px screen resolution */
-
-body {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10pt;
- margin: 0px;
- background-color: #FFFFCC;
-}
-#header {
- background-image: url(../assets/image/bg_header.png);
- background-repeat: repeat-x;
- height: 75px;
- width: 100%;
- position: absolute;
- left: 0px;
- top: 0px;
-}
-#topbtn_left {
- float: left;
- height: 60px;
- width: 60px;
- padding-top: 6px;
- padding-left: 15px;
-}
-
-
- .linkBack{
- width: 60px; height: 59px;
- background:url(../assets/image/btn_back.png);
- }
- .linkBack:hover{
- background:url(../assets/image/btn_back_hover.png);
- }
-
-#lesson_title {
- float: left;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 16pt;
- font-weight: bold;
- color: #FFFFFF;
- margin-left: 10px;
- background-image: url(../assets/image/bg_title_block.png);
-}
-#topbtn_right {
- float: right;
- height: 60px;
- width: 60px;
- padding-top: 6px;
- padding-right: 15px;
-}
- #linkHelp{
- width: 60px; height: 60px;
- background:url(../assets/image/btn_help.png);
- }
- #linkHelp:hover{
- background:url(../assets/image/btn_help_hover.png);
- }
- #linkOle{
- width: 60px; height: 60px;
- background:url(../assets/image/btn_ole.png);
- }
- #linkOle:hover{
- background:url(../assets/image/btn_ole_hover.png);
- }
- .linkNext{
- width: 60px; height: 60px;
- background:url(../assets/image/btn_next.png);
- }
- .linkNext:hover{
- background:url(../assets/image/btn_next_hover.png);
- }
-#footer {
- position:relative;
- background-image: url(../assets/image/bg_footer.png);
- background-repeat: repeat-x;
- height: 75px;
- width: 100%;
- left: 0px;
- bottom: 0px;
-}
-#score_box {
- float: left;
- padding-left: 5px;
- padding-top: 10px;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- color: #FFFF00;
- font-size: 16pt;
- font-weight: bold;
-}
-#botbtn_right {
- float: right;
- height: 55px;
- padding-right: 5px;
- padding-top: 10px;
-}
- #linkCheck{
- margin: 1em 3em 0 0;
- width: 101px; height: 30px;
- background-image: url(../assets/image/check.png);
- }
-
- #linkStart{
- width: 251px; height: 55px;
- background:url(../assets/image/btn_start.png);
- }
- #linkStart:hover{
- background:url(../assets/image/btn_start_hover.png);
- }
- #linkStart:active{
- background:url(../assets/image/btn_start_mouse_down.png);
- }
- #linkPlayAgain{
- width: 251px; height: 55px;
- background:url(../assets/image/btn_play_again.png);
- }
- #linkPlayAgain:hover{
- background:url(../assets/image/btn_play_again_hover.png);
- }
- #linkPlayAgain:active{
- background:url(../assets/image/btn_play_again_mouse_down.png);
- }
-#linkNextExercise{
- position:absolute;
- bottom: 75px;
- right: 10px;
-}
-#linkPrevExercise{
- position:absolute;
- bottom: 75px;
- left: 10px;
-}
-/**** End of the page style ****/
-
-/**** Game Styles ****/
-
-a{
- color:#FFFFCC;
-}
-#currentTitle{
- width: 150px;
- height: 80xp;
- font:25px/30px "Courier New", Courier, monospace;
- font-weight: bold;
- color: red;
-}
-#content{
- margin: 0 auto;
- margin-top: 75px;
- width: 1180px;
- height: 550px;
- padding: 0.5em;
-}
- #left-side{
- position:relative;
- margin: 40px auto;
- margin-bottom:0;
- padding-top:50px;
- float:left;
- width: 170px;
- height: 450px;
- border: 4px solid #000;
- }
- #leftText{
- position:absolute;
- top: -30px;
- left: 0px;
- text-align:center;
- height: 40px;
- font : 20px/25px Verdana,Helvetica,Arial Black, Times New Roman;
- color: #FF0000;
- }
- .default{
- float:left;
- margin: 0px auto;
- text-align:center;
- width: 170px;
- height: 44px;
- }
- #right-side{
- position:relative;
- margin: 40px auto;
- margin-bottom:0;
- padding-top: 50px;
- float:right;
- width: 170px;
- height: 450px;
- border: 4px solid #000;
- }
- #rightText{
- position:absolute;
- top: -30px;
- left: 10px;
- text-align:center;
- height: 40px;
- font : 20px/25px Verdana,Helvetica,Arial Black, Times New Roman;
- color: #FF0000;
- }
- #main-content{
- margin-top: 10px;
- float:left;
- margin-left: 90px;
- width: 650px;
- height: 525px;
- }
- #topText{
- text-align:center;
- height: 40px;
- font : 20px/25px Verdana,Helvetica,Arial Black, Times New Roman;
- }
- #container{
- position:relative;
- margin: 5px auto;
- width : 598px;
- height: 390px;
- border: 4px solid #000;
- background:url(../assets/image/bgContainer.png);
- }
- #joinSyllable{
- margin: 10px auto;
- width : 525px;
- height: 60px;
- border: 4px solid #000;
- }
- .sign{
- float:left;
- width: 20px;
- height: 30px;
- padding: 5px;
- text-align:center;
- font : 30px/35px Verdana,Helvetica,Arial Black, Times New Roman;
- }
- .drophover{
- background-color: #FF9900;
- }
-
- .correctWord{
- border:none
- color: #FF00FF;
- }
-
-
-
- #help{
- display:none;
- position:absolute;
- right: 60px;
- top: 75px;;
- width: 256px;
- height: 600px;
- background:url(../assets/image/help.png);
- z-index:40;
- }
- .backOpaque{
- background-color: #A4A4A4;
- opacity: 0.2;
- }
- #timerBar {
- float: left;
- margin-left:50px;
- width: 200px;
- height:35px;
- padding-left: 10px;
- padding-top: 7px;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- color: #FFFF00;
- font-size: 16pt;
- font-weight: bold;
- }
-
- .timerBoxes{ /* Show the timer running after the game has began.... */
- float:left;
- margin: 0.5em 0 0 0.1em;
- width: 50px;
- height: 30px;
- border: 2px dotted green;
- padding: 3px;
- color: blue;
- text-align:center;
- font : bold 25px Arial Black, Times New Roman;
- background: #ACC;
- }
-
- #gameOver{
- opacity: 1;
- display:none;
- position:absolute;
- top:5%;
- left: 40%;
- color: blue;
- text-align:center;
- font : bold 25px/35px Arial Black, Times New Roman;
-}
diff --git a/examples/lessons/6_English_syllables/index.html b/examples/lessons/6_English_syllables/index.html
deleted file mode 100755
index 74d1095..0000000
--- a/examples/lessons/6_English_syllables/index.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html>
-<head>
- <title>Class 6 English Syllabus</title>
- <meta name="keywords" content="karma,javascript,html5,sugar,sugarlabs,gsoc,ole,nepal" />
- <link type="text/css" rel="stylesheet" href="css/lesson.css" />
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <link type="image/ico" rel="icon" href="../../assets/default/image/favicon.ico" />
- <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
- <script type="text/javascript" src="js/karma.js"></script>
- <script type="text/javascript" src="js/lesson.js"></script>
-</head>
-<body>
- <div id="header">
- <div id="topbtn_left"><a href="#"><div id="linkBackLesson" class="linkBack"></div></a></div>
- <div id="lesson_title">
- <img src="assets/image/title_block_lt.png" width="33" height="75" align="absmiddle" />
- English Syllabus<span id="currentTitle"></span>
- <img src="assets/image/title_block_rt.png" width="33" height="75" align="absmiddle" />
- </div>
- <div id="topbtn_right"><a href="#"><div id="linkHelp"></div></a></div>
- <div id="topbtn_right"><a href="http://olenepal.org"><div id="linkOle"></div></a></div>
- </div>
-
- <div id="content"></div>
- <div id="help"></div>
- <div id="gameOver">Game Over!!!</div>
- <form name="delayForm">
- <input type="hidden" name="delayval" size="5">
- </form>
-
- <div id="footer">
- <a href="#"><div id="linkNextExercise" class ="linkNext"></div></a>
- <a href="#"><div id="linkPrevExercise" class ="linkBack"></div></a>
- <!-- Timer Section -->
- <div id ="timerBar">
- <div id="timerBox3" class="timerBoxes">00</div>
- <div id="timerBox2" class="timerBoxes">00</div>
- <div id="timerBox1" class="timerBoxes">00</div>
- </div>
- <div id="botbtn_right"><a href="#"><div id="linkPlayAgain"></div></a></div>
- <div id="botbtn_right"><a href="#"><div id="linkStart"></div></a></div>
- </div>
-</body>
-</html>
diff --git a/examples/lessons/6_English_syllables/js/jquery-1.3.2.min.js b/examples/lessons/6_English_syllables/js/jquery-1.3.2.min.js
deleted file mode 100755
index b1ae21d..0000000
--- a/examples/lessons/6_English_syllables/js/jquery-1.3.2.min.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * jQuery JavaScript Library v1.3.2
- * http://jquery.com/
- *
- * Copyright (c) 2009 John Resig
- * Dual licensed under the MIT and GPL licenses.
- * http://docs.jquery.com/License
- *
- * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
- * Revision: 6246
- */
-(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
-/*
- * Sizzle CSS Selector Engine - v0.9.3
- * Copyright 2009, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- * More information: http://sizzlejs.com/
- */
-(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file
diff --git a/examples/lessons/6_English_syllables/js/karma.js b/examples/lessons/6_English_syllables/js/karma.js
deleted file mode 100755
index 03f027b..0000000
--- a/examples/lessons/6_English_syllables/js/karma.js
+++ /dev/null
@@ -1,1018 +0,0 @@
-/* Documentation Note:
- * Public methods and properties are commented with /** some text *\/
- * and private methods and properties are commented with //
- *
- * Please leave it that way to keep this documentation sane
- */
-
-
-/*
-* Karma Framework
-* http://karmaeducation.org
-*
-* Copyright (c) 2009
-* Bryan W Berry bryan@olenepal.org
-* Felipe López Toledo zer.subzero@gmail.com
-*
-* 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.
-*/
-
-/**
-* @fileOverview Contains karma library
-* @author Bryan Berry <bryan@olenepal.org>
-* @author Felipe Lopez Toledo <zer.subzero@gmail.com>
-*/
-
-
-//common.js modules use exports object
-if(!this.exports) {
- exports = {};
-}
-
-
-
-/** Checks if the current document type is set to HTML 5, throws
- * an error otherwise, then initializes the karma object and returns
- * a reference to that object.
- * @namespace Global namespace for Karma library
- * @param {Object} [options={}] options for intializing Karma library
- * @param {String} [options.locale=''] sets current locale Not Yet Implemented
- * @param {Array} [options.image=[]] array of images to be converted into a collection
- * @param {Array} [options.audio=[]] array of audio to be converted into a collection
- * @param {Array} [options.video=[]] array of videos to be converted into a collection
- * @param {Array} [options.svg=[]] array of SVG elements to be
- * converted into a collection. Each SVG element must already exist in the html document
- * @param {Array} [options.canvas=[]] array of canvas elements
- * to be converted into a collection. Each canvas element must already exist in the
- * html document and width and height of each element must be set as attributes
- * @throws {Error} if the document type declaration is not set to HTML 5, e.g.
- * <!DOCTYPE html>
- * @throws {Error} If any of the initialization parameters are invalid values
- * @returns {Object} Karma.karma -- reference to the initialized Karma library
- * @example
- *
- * var k = Karma({
- * image: [
- * {name: "ninja", file: "ninja.png"},
- * {name: "cowboy", file: "cowboy.png"}
- * ],
- * audio: [
- * {name: "woosh", file: "woosh.ogg"},
- * {name: "yeehaw", file: "yeehaw.ogg"}
- * ],
- * video: [
- * {name: "attack", file: "attack.ogv"},
- * {name: "ride", file: "ride.ogv"}
- * ]
- * canvas: [
- * {name: "ninja", domId: "ninjaCanvas"},
- * {name: "cowboy", domId: "cowboyCanvas"}
- * ],
- * svg: [
- * {name: "ninja", domId: "ninjaSvg"},
- * {name: "cowboy", domId: "cowboySvg"}
- * ],
- * });
- * Next, call the ready function with a callback to your program code
- *
- * k.ready(function () { ... your application code . . . }
- *
- * after that you can access each asset like so
- * k.image.ninja;
- * k.svg.cowboy;
- * k.audio.yeehaw.play();
- * k.canvas.ninja.drawImage(k.image.ninja, 0, 0);
- *
- */
-var Karma = exports.Karma = function (options) {
- Karma._isHtml5(document.doctype.nodeName);
-
- if ( Karma.karma._initialized === true ) {
- return Karma.karma;
- } else {
- return Karma.karma._init(options);
- }
-};
-
-
-//helper functions
-
-/**This emulates the Object.create method in ecmascript 5 spec
- * This isn't a full implementation as it doesn't support
- * This has the same functionality as Crockford's beget method
- * and this primary building block for prototypal inheritance in
- * this library
- * @param {Object} target that the new object's prototype should point to
- * @returns {Object} object whose prototype points to target
- * @example
- *
- * var ninja = { weapon : "sword" };
- * var ninja1 = Karma.create(ninja);
- * ninja1.sword === "sword"
- */
-Karma.create = function (target){
- function F () {};
- F.prototype = target;
- return new F();
-};
-
-/** Returns a shallow copy of the passed in object
- * @param {Object} target to be copied
- * @returns {Object} a shallow copy of target
- */
-Karma.clone = function (target){
- var copy = {};
- for ( var i in target ) {
- if(target.hasOwnProperty(i)){
- copy[i] = target[i];
- }
- }
- return copy;
-};
-
-/** Extends properties of the target object with those of
- * the source object
- * @param {Object} target object to be extended
- * @param {Object} source whose properties will extend target
- * @returns {Object} target extended by source
- */
-Karma.objectPlus = function (target, source){
- for ( var i in source){
- if (source.hasOwnProperty(i)){
- target[i] = source[i];
- }
- }
- return target;
-};
-
-/** Creates a new object that is a prototype of the first argument
- * then extends it with the properties of the second argument
- * @param {Object} parent1 will be prototype of returned object
- * @param {Object} parent2 will extend properties of returned object
- * @returns {Object} object that whose prototype is parent1 and has
- * been extended with properties of parent2
- */
-Karma.copyObjectPlus = function (parent1, parent2){
- function F () {};
- F.prototype = parent1;
- var G = new F();
- return Karma.objectPlus(G, parent2);
-};
-
-//Enables function chaining for a specified list of function names
-//IMPORTANT: use of closures here with "this" and "that" is __very__
-//complicated here
-Karma._makeChain = function (chainingFunctions) {
- var that = this;
- var _chainFunction = function ( name ){
- that[ name ] = function ( ){
- var type = typeof this.ctx[name];
- if ( type === "function") {
- this.ctx[ name ].apply( this.ctx, arguments );
- }else if ( type === "string" ){
- this.ctx[ name ] = arguments[0];
- }else {
- throw ("wtf?!: impossible to chain " + name + "!");
- }
- return this;
- };
- };
-
- for (var i = 0; i < chainingFunctions.length; i++){
- _chainFunction( chainingFunctions[ i ] );
- }
-};
-
-//Throws big ugly error if doctype isn't html5
-Karma._isHtml5 = function (doctype){
- var regex = new RegExp('^html$', 'i');
- if(!regex.test(doctype)){
- var errorMsg = "ERROR: The doctype must be set to <!DOCTYPE html> " +
- "in order to use Karma. Karma require you use html5";
- var errorElem = document.createElement('div');
- errorElem.setAttribute('id', 'errorDoctype');
- errorElem.innerText = errorMsg;
- document.body.appendChild(errorElem);
- throw new Error(errorMsg);
- }
-};
-
-
-/** Stores global settings for the Karma library
- * @class This object stores the global settings for the Karma library
- */
-Karma.karma = {
- /** This is the global locale as passed to Karma(),
- * such as "en", "es_SP"
- * @type string
- * @default undefined
- */
- locale : undefined,
- /** Collection of images with special helper
- * methods added to each reference
- * @type object
- * @default empty object
- */
- image : {},
- /** Collection of audio with special helper
- * methods added to each reference
- * @type object
- * @default empty object
- */
- audio : {},
- /** Collection of canvas with special helper
- * methods added to each reference
- * @type object
- * @default empty object
- */
- canvas : {},
- /** Collection of svgs with special helper
- * methods added to each reference
- * @type object
- * @default empty object
- */
- svg : {},
- /** Collection of videos with special helper
- * methods added to each reference
- * @type object
- * @default empty object
- */
- video : {},
- _localized : false,
- _assetPath : "assets/",
- _localePath : "",
- _initialized : false,
- _statusDiv: undefined,
- _loaderDiv : undefined,
- _counters : { total : 0, errors : 0, loaded : 0},
-
- //init initializes all the assets passed to Karma, that's it
- //it returns 'this' so it can be used for function chaining
- _init: function(options) {
- this._initialized = true;
-
- //set up message that show count of assets loaded
- //and has an ordered list to append error messages to
- var _statusDiv = this._statusDiv = document.createElement('div');
- this._loaderDiv = this._loaderDiv = document.createElement('div');
- var errorList = document.createElement('ol');
-
- _statusDiv.setAttribute('id', 'karma-status');
- _statusDiv.setAttribute('style', 'position:absolute;');
- _statusDiv.innerHTML = 'Karma is loading ...';
- this._loaderDiv.setAttribute('id', 'karma-loader');
- this._loaderDiv.setAttribute('class', 'status');
- errorList.setAttribute('id', 'errorList');
-
- _statusDiv.appendChild(this._loaderDiv);
- this._statusDiv.appendChild(errorList);
- document.body.appendChild(_statusDiv);
-
-
- //chain the functions for kCanvas and kSvg
- Karma._makeChain.call(Karma.kCanvas,
- Karma.kCanvas._chainingFunctions);
- //Karma._makeChain.apply(Karma.kSvg, Karma.kSvg._chainingFunctions);
-
-
-
- //regular expression that matches the name of aprivate property
- // the karma object
- var regexPrivate = new RegExp('^_.*');
-
- for ( var option in options ) {
- if (options.hasOwnProperty(option)){
- if (option === "image" || option === "audio" || option ===
- "svg" || option === "video" || option === "canvas"){
-
- if(!(options[option] instanceof Array)){
- throw new Error("" + option + " must be an array");
- } else if (options[option].length === 0){
- continue;
- }
- } else if (regexPrivate.test(option)){
- //don't overwrite a private property of karma object
- continue;
- }
-
- switch (option){
- case "locale":
-
- if (this._isValidLocale(options[option])){
- this.locale = this._normalizeLocale(options[option]);
- this._localized = true;
- this._localePath = Karma._computeLocalePath(this.locale);
- } else {
- throw new Error("locale provided to karma._init() is invalid");
- }
-
- break;
- case "image":
- options[option]._type = 'image';
- Karma._makeImages(options[option]);
- break;
- case "audio":
- options[option]._type = 'audio';
- Karma._makeAudio(options[option]);
- break;
- case "video":
- options[option]._type = 'video';
- Karma._makeVideos(options[option]);
- break;
- case "svg":
- options[option]._type = 'svg';
- Karma._makeSvgs(options[option]);
- break;
- case "canvas":
- options[option]._type = 'canvas';
- Karma._makeCanvases(options[option]);
- break;
- }
- }
- }
-
-
-
- return this;
- },
-
- /** Waits until all assets loaded, i.e. ready, then calls callback
- * @param {Function} [cb] callback function
- * @returns this
- * @throws {Error} if Karma.karma is not initialized with the
- * Karma({ options }) function
- * @example
- *
- * var k = Karma({ . . . your assets here . . . });
- * k.ready(function(){ .. your code here . . .});
- *
- * your code will not be called until all assets have been loaded
- *
- */
- ready : function( cb ) {
- var that = this;
- if (Karma.karma._initialized !== true){
- throw new Error("Karma.karma not initialized");
- }
-
- if (this._counters.loaded !== this._counters.total){
- setTimeout(function(){ that.ready(cb);}, 5);
- } else if (cb) {
- //hide the "Karma is loading..." message
- this._statusDiv.setAttribute('style', 'display:none;');
-
- cb();
- } else if (!cb) {
- //hide the "Karma is loading..." message
- this._statusDiv.setAttribute('style', 'display:none;');
-
- //if no options passed, show it works message
- this._showStarterMessage();
- }
-
-
-
-
- return this;
- },
-
- //Display Apache-like "It works" message if no options
- _showStarterMessage : function (){
- var starterMsg = document.createElement('div');
- starterMsg.setAttribute('id', 'starterMsg');
- starterMsg.innerHTML = "<h1>It Works</h1>";
- document.body.appendChild(starterMsg);
- },
-
- //Updates visible counter of how many assets are loaded
- _updateStatus : function (errorMsg) {
- var loaded = this._counters.loaded;
- var total = this._counters.total;
- var errors = this._counters.errors;
- this._loaderDiv.innerHTML = "Loaded " + loaded + " / " + total +
- "" + (errors > 0 ? " Errors [ " + errors +" ]" : '');
- if (errorMsg) {
- var liError = document.createElement('li');
- liError.innerHTML = errorMsg;
- var errorList = document.getElementById('errorList');
- errorList.appendChild(liError);
- }
- },
-
- //matches 2 letter country code then optionally
- //a dash or underscore followed by a country or language identifier
- //i currently only allow a language identifier 2-3 chars long
- _isValidLocale : function (locale) {
- var localeRegex = new RegExp('^[a-zA-Z][a-zA-Z]([-_][a-zA-z]{2,3})?$');
- return localeRegex.test(locale);
- },
-
- _normalizeLocale : function(locale) {
- var lang = "";
- var country = "";
- var divider = "";
-
- lang = locale.slice(0, 2).toLowerCase();
- divider = "_";
- country = locale.slice(3, 6).toUpperCase();
-
- return locale.length > 2 ? "" + lang + divider + country : lang;
- },
-
- // Below are geometry and math helper methods
-
- /**
- * Converts a value from degrees to radians.
- * @param {Number} angle The angle in degrees
- * @returns {Number} The angle in radians
- */
- radians : function( angle ){
- return ( angle / 180 ) * Math.PI;
- },
- /**
- * Gets the square of the Euclidian (ordinary) distance between 2 points.
- * @param {Object} Point No. 0
- * @param {Number} Point0.x
- * @param {Number} Point0.y
- * @param {Object} Point No. 1
- * @param {Number} Point1.x
- * @param {Number} Point1.y
- * @returns {Number} The square of the Euclidian distance
- * @example
- *
- * p0 = {x:0, y:1};
- * p1 = {x:50, y:70};
- * var d = distance2(p0, p1);
- *
- */
- distance2 : function ( p0, p1 ) {
- return (p1.x - p0.x) * (p1.x - p0.x) + (p1.y - p1.y) * (p1.y - p1.y);
- },
- /**
- * Gets the Euclidian (ordinary) distance between 2 points.<br>
- * <b>Warning:</b> It's slower than distance2 function
- * @param {Object} Point No. 0
- * @param {Number} Point0.x
- * @param {Number} Point0.y
- * @param {Object} Point No. 1
- * @param {Number} Point1.x
- * @param {Number} Point1.y
- * @returns {Number} The Euclidian distance
- * @example
- *
- * p0 = {x:0, y:1};
- * p1 = {x:50, y:70};
- * var d = distance2(p0, p1);
- *
- */
- distance : function ( p0, p1 ) {
- return Math.sqrt( this.distance2( p0, p1 ) );
- },
- /** Returns a random number within the range provided
- * @param {Number} lower limit of the range, lowest number that can be returned
- * @param {Number} upper limit of the range, highest number that can be returned
- * @returns {Number} number that is >= lower and <= upper
- * @example
- *
- * var num = rand(0, 10);
- *
- * num could be 0, 1, 2, 3 ... or 10
- *
- */
- rand : function ( lower, upper ){
- return Math.round( Math.random() * (upper - lower) + lower );
- }
-
-};
-
-/** Prototypal object for images, videos, and audio files but
- * does not include svg or canvas elements
- * @class This object is the prototype for images, videos, and audio files but
- * does not include svg or canvas elements
- * @ throws {Error} if the individual asset is set to be localized but
- * the globale locale is not set on the Karma.karma object
- * @ throws {Error} if the name and file properties are not supplied
- * @example
- * kMedia is the prototype object for images, audio, and videos.
- * These 'media' assets are loaded in a distinctly different way
- * from the canvas or svg assets. They also have distinctly different
- * helper methods
- *
- * You initialize the kMedia assets by passing an array of objects
- */
-Karma.kMedia = {
- /** file location of asset
- * @type String
- * @default ""
- */
- file : "",
- /** media object
- * @type Audio|Image|Video
- * @default undefined
- */
- media : undefined,
- //actual path to the file
- _path : "",
- //if using localized version of this asset
- _localized : false,
- //audio, image, or video
- _type : "",
- //initializes kMedia instance with values provided by user
- _init : function (asset) {
- asset._localized = asset._localized || false;
- Karma.karma._counters.total++;
-
- if (asset.name === undefined || asset.file === undefined){
- throw new Error("properties name and file have to be defined");
- } else {
- this.name = asset.name;
- this.file = asset.file;
- }
-
- //_type is a private variable used internally
- if (asset._type === undefined){
- throw new Error("the _type property must be set. " +
- "Blame the karma library authors as this is an internal value");
- } else {
- if (Karma._isValidType(asset._type)){
- this._type = asset._type;
- switch ( this._type ) {
- case "image": this.media = new Image();
- break;
- case "audio": this.media = new Audio();
- break;
- //case "video":
- //NYI
- //this.media = new Video();
- break;
- default: throw new Error("Media type not supported");
- }
-
- } else {
- throw new Error("the _type property supplied is invalid. " +
- "Blame the karma library authors as this is an internal value");
- }
- }
-
- if(Karma._isLocalized(asset._localized)){
- this._localized = asset._localized;
- this._path = Karma.karma._localePath +
- this._type + "/";
- } else {
- this._path = Karma.karma._assetPath +
- this._type + "/";
- }
-
-
- //IMPORTANT: This one magic line loads the file
- this.media.src = this.src = this._path + this.file;
-
- //add event handlers
- this._addEventHandlers();
-
- if (this._type === "audio"){
- this.media.autobuffer = true;
- this.media.load();
- }
-
-
- return this;
- },
- //Adds event handlers to update the counters when
- //the asset is successfully or unsuccessfully loaded
- _addEventHandlers : function () {
- var that = this;
- var loadEvent = "load";
- //Browser Hack recommended by chromium devs
- //http://code.google.com/p/chromium/issues/detail?id=20251&q=loading%20audio&colspec=ID%20Stars%20Pri%20Area%20Type%20Status%20Summary%20Modified%20Owner%20Mstone%20OS#c4
- if (this._type === "audio" || this._type === "video"){
- loadEvent = "canplaythrough";
- }
-
- that.media.addEventListener(
- loadEvent,
- function (e) {
- Karma.karma._counters.loaded++;
- Karma.karma._updateStatus();
- that.status = "loaded";}, false);
-
- that.media.addEventListener(
- "error",
- function (e) {
- Karma.karma._counters.errors++;
- that.status = "error";
- var errorMsg = "Error: " + that._type.toUpperCase() +
- " " + that.name + " cannot be loaded.";
- Karma.karma._updateStatus(errorMsg);
- },
- false);
- that.media.addEventListener(
- "abort",
- function (e) {
- Karma.karma._counters.total++;
- that.status = "aborted";
- var errorMsg = "ABORT: " + that._type.toUpperCase() +
- " " + that.name + " loading was aborted.";
- Karma.karma._updateStatus(errorMsg);
-
- }, false);
-
- }
-
-};
-
-//determine if it is a valid type of asset
-Karma._isValidType = function (type){
- return type === "image" ||
- type === "svg" ||
- type === "audio" ||
- type === "video" ||
- type === "canvas";
-};
-
-Karma._isLocalized = function (boolLocalized) {
- if (typeof boolLocalized === "boolean" ) {
- if(boolLocalized === true &&
- Karma.karma.locale === undefined){
- throw new Error("You cannot localize a media asset" +
- " if the global locale for Karma isn't set");
- } else {
- return boolLocalized;
- }
- } else if (typeof boolLocalized === undefined){
- return false;
- } else{
- throw new Error("This is not a valid value for the localized option");
- }
-};
-
-Karma._computeLocalePath = function(locale) {
- return Karma.karma._assetPath + locale + "/";
-};
-
-Karma._makeImages = function (imgConfigs){
- var makeImage = function (imgConfig){
- var image = undefined;
- imgConfig._type = "image";
- image = Karma.create(Karma.kMedia)._init(imgConfig);
- Karma.karma.image[imgConfig.name] = image;
- };
-
- imgConfigs.forEach(function(imgConfig){ makeImage(imgConfig);});
-
-};
-
-Karma._makeAudio = function (audioConfigs){
- var makeAudio = function (audioConfig){
- var audio = undefined;
- audioConfig._type = "audio";
- audio = Karma.create(Karma.kMedia)._init(audioConfig);
- audio.play = function () {
- //hack to fix the audio "stuttering" problem
- //more info: https://bugs.launchpad.net/karma/+bug/426108
- this.media.currentTime = 0.1;
- this.media.play();
- };
- Karma.karma.audio[audioConfig.name] = audio;
- };
-
- audioConfigs.forEach(function(audioConfig){ makeAudio(audioConfig);});
-
-};
-
-
-Karma._makeCanvases = function (canvasConfigs){
- var makeCanvas = function (canvasConfig){
- var canvas = undefined;
- canvas = Karma.create(Karma.kCanvas)._init(canvasConfig);
- Karma.karma.canvas[canvasConfig.name] = canvas;
- };
-
- canvasConfigs.forEach(function(canvasConfig){ makeCanvas(canvasConfig);});
-
-};
-
-/** Prototypal object for each canvas element submitted to Karma in the
- * Karma() method
- * @throws {Error} if the name and domId for the canvas element are not specified
- * @thows {Error} if the supplied domId does not match an element in the DOM
- * @class This object is the prototype for each canvas element submitted to Karma in the
- * Karma() method
- */
-Karma.kCanvas = {
- /** Name of the canvas, used internally by karma.js
- * @type String
- * @default ''
- */
- name : '',
- /** Width of canvas element
- * @type Number
- * @default 0
- */
- width: 0,
- /** Height of canvas element
- * @type Number
- * @default 0
- */
- height: 0,
- /** Whether canvas is visible
- * @type boolean
- * @default true
- */
- visible: true,
- /** Element ID for canvas element in html document
- * @type String
- * @default undefined
- */
- domId: undefined,
- /** Reference to the DOM element
- * @type DOMElement
- * @default undefined
- */
- node: undefined,
- /** The 2 Dimensional Rendering context property for this canvas
- * @type 2DRenderingContext
- * @default undefined
- */
- ctx: undefined,
- /** Frames Per Second, I don't know what the purpose of this is,
- * Felipe made it up
- * @type Number
- * @default 24
- */
- fps: 24,
-
- //initializes object with values provides by user
- _init: function (config) {
- for (var option in config){
- if (config.hasOwnProperty(option)){
- switch (option){
- case "name":
- this.name = config[option];
- break;
- case "domId":
- this.domId = config[option];
- break;
- case "width":
- if(!this.height){
- throw new Error("If you specify a width you must also" +
- "specify a height");
- }
- this.width = config[option];
- break;
- case "height":
- if(!this.width){
- throw new Error("If you specify a height you must also" +
- "specify a width");
- }
- this.height = parseInt(config.option, 10);
- break;
- case "fps":
- this.fps = parseInt(config.option, 10);
- break;
- }
- }
- }
-
- if(this.domId && document.getElementById(this.domId)){
- this.node = document.getElementById(this.domId);
- this.ctx = this.node.getContext('2d');
- } else {
- throw new Error('you must specify a valid domId that' +
- 'is in your html page');
- }
-
- if(!config.height && !config.width){
- this.width = parseInt(this.node.getAttribute('width'), 10);
- this.height = parseInt(this.node.getAttribute('height'), 10);
- }
-
- return this;
- },
- /** Clear area of canvas element specified by parameters, if no
- * parameters supplied, clears entire canvas
- * @param {Number} [x=0] x coordinate, defaults to zero if left blank
- * @param {Number} [y=0] y coordinate, defaults to zero if left blank
- * @param {Number} [width=0] width of area to be cleared, defaults
- * entire width of canvas
- * @param {Number} [height=0] height of area to be cleared, defaults
- * entire height of canvas
- * @returns this
- * @example
- *
- * k.canvas.ninja.clear();
- * // clears the entire ninja canvas
- *
- * k.canvas.ninja.clear(0, 10, 20, 30);
- * //clears a specific portion of the ninja canvas
- *
- */
- clear : function ( x, y, width, height ) {
- var that = this;
- that.ctx.clearRect(
- x || 0,
- y || 0,
- width || that.width,
- height || that.height
- );
- return that;
- },
-
- //These are all properties or methods of the canvas element's
- //2 dimensional context
- _chainingFunctions : [
- "globalAlpha", "globalCompositeOperation", "lineWidth", "lineCap",
- "lineJoin", "miterLimit", "font", "textAlign", "textBaseline", "save",
- "restore", "scale", "rotate", "translate", "transform", "setTransform",
- "clearRect", "fillRect", "strokeRect", "beginPath", "closePath",
- "moveTo", "lineTo", "quadraticCurveTo", "bezierCurveTo", "arcTo",
- "arc", "rect", "fill", "stroke", "clip", "fillText", "strokeText",
- "measureText", "isPointInPath", "strokeStyle", "fillStyle",
- "createLinearGradient", "createRadialGradient", "createPattern",
- "shadowOffsetX", "shadowOffsetY", "shadowBlur", "shadowColor",
- //"mozTextStyle", "mozDrawText", "mozMeasureText", "mozPathText",
- "mozTextAlongPath", "drawImage", "getImageData", "putImageData",
- "createImageData", "drawWindow"
- ]
-};
-
-
-
-Karma._makeSvgs = function (svgConfigs){
- var makeSvg = function (svgConfig){
- var svg = undefined;
- svg = Karma.create(Karma.kSvg)._init(svgConfig);
- Karma.karma.svg[svgConfig.name] = svg;
- };
-
- svgConfigs.forEach(function(svgConfig){ makeSvg(svgConfig);});
-
-};
-
-/** Prototypal object for each svg element submitted to Karma in the
- * Karma() method
- * @throws {Error} if the name and domId for the svg element are not specified
- * @thows {Error} if the supplied domId does not match an element in the DOM
- * @class This object is the prototype for each svg element submitted to Karma in the
- * Karma() method
- */
-Karma.kSvg = {
- /** name of instance, used internally
- * @typeof string
- * @default ""
- */
- name : "",
- /** width of element
- * @type number
- * @default 0
- */
- width: 0,
- /** height of element
- * @type number
- * @default 0
- */
- height: 0,
- /** Status of element, either "loaded" or "error"
- * @type string
- * @default ""
- */
- status: "",
- /** Whether canvas is visible
- * @type boolean
- * @default true
- */
- visible: true,
- /** Element ID for canvas element in html document
- * @type String
- * @default undefined
- */
- domId: undefined,
- /** Reference to the DOM element
- * @type DOMElement
- * @default undefined
- */
- node: undefined,
- /** Reference to the SVGDocument
- * @type SVGDocument
- * @default undefined
- */
- doc: undefined,
- /** Reference to the root element of the SVG Document
- * @type DocumentElement
- * @default undefined
- */
- root: undefined,
- _localized : undefined,
- _chainingFunctions: [],
- _init: function (config) {
- Karma.karma._counters.total++;
-
- for (var option in config){
- if (config.hasOwnProperty(option)){
- switch (option){
- case "name":
- this.name = config[option];
- break;
- case "domId":
- this.domId = config[option];
- break;
- case "width":
- if(!this.height){
- throw new Error("If you specify a width you must also" +
- "specify a height");
- }
- this.width = parseInt(config[option], 10);
- break;
- case "height":
- if(!this.width){
- throw new Error("If you specify a height you must also" +
- "specify a width");
- }
- this.height = config[option];
- break;
- case "fps":
- this.fps = config[option];
- break;
- }
- }
- }
-
- if(this.domId && document.getElementById(this.domId)){
- this.node = document.getElementById(this.domId);
- } else {
- throw new Error('you must specify a valid domId that' +
- 'is in your html page');
- }
-
- if(!config.height && !config.width){
- this.width = parseInt(this.node.getAttribute('width'), 10);
- this.height = parseInt(this.node.getAttribute('height'), 10);
- }
-
- var that = this;
- that._addEventHandlers();
-
- return this;
-
-
- },
- _addEventHandlers : function () {
- var that = this;
- that.doc = that.node.getSVGDocument();
- that.node.addEventListener(
- "load",
- function (e) {
- that.doc = that.node.getSVGDocument();
- that.root = that.doc.documentElement;
- Karma.karma._counters.loaded++;
- Karma.karma._updateStatus();
- that.status = "loaded";
- }, false);
-
- that.node.addEventListener(
- "error",
- function (e) {
- Karma.karma._counters.loaded--;
- Karma.karma._counters.errors++;
- that.status = "error";
- var errorMsg = "Error: " + that._type.toUpperCase() +
- " " + that.name + " cannot be loaded.";
- Karma.karma._updateStatus(errorMsg);
- },
- false);
- that.node.addEventListener(
- "abort",
- function (e) {
- that.status = "aborted";
- var errorMsg = "ABORT: " + that._type.toUpperCase() +
- " " + that.name + " loading was aborted.";
- Karma.karma._updateStatus(errorMsg);
-
- }, false);
-
- }
-};
-
-Karma._makeVideos = function (video){
-
-};
diff --git a/examples/lessons/6_English_syllables/js/lesson.js b/examples/lessons/6_English_syllables/js/lesson.js
deleted file mode 100755
index ca45a59..0000000
--- a/examples/lessons/6_English_syllables/js/lesson.js
+++ /dev/null
@@ -1,359 +0,0 @@
-$(document).ready(function(){
- var k = Karma({
- audio: [{'name':'correct','file':'correct.ogg'},
- {'name':'incorrect','file':'incorrect.ogg'}
- ]});
-
- k.ready(function(){
- var i,j;
- var totalCounter;
- var currentQuestion;
- var TOTAL_QUES = 10;
- var currentDragObject;
- var prevDragObject;
- var dropNum;
- var sectionNum;
- var randPositions = [];
- var compCounter;
- var playerCounter;
- var fstSyllableId;
- var fstSyllableId;
- var checked;
- var gamePlay;
- var s,m,h,play;
- var currentBlock; //flag for which side increases the score 1-player 0-computer
- var completedWords = [];
- var syllableWord1= new Array('be','en','ti','tues','stu','chil','eng','hap','sun','in',
- 'sen','com','pro','prac','talk','pic','num','tea','mar','comp'
- );
- var syllableWord2 = new Array('lieve','gine','ger','key','dent','ly','lish','py','day','sect',
- 'tence','plete','noun','tice','ing','nic','ber','cher','ket','uter'
- );
-
-
- var genRandPosition=function (){
- randPositions[0] = k.rand(0,19);
- for(i=1; i<20; i++){
- do{
- flag = 0;
- randPositions[i] = k.rand(0,19);
- for(j=0; j<i; j++){
- if(randPositions[i] === randPositions[j]){
- flag++;
- }
- }
- }while(flag != 0 ); //end of do while loop
- }
- };
-
-
- var checkTime = function(timePara){
- if (timePara<10 )
- {
- timePara="0" + timePara;
- }
- return timePara;
- };
-
-
- var resetTimer = function(){
- play = 0;
- s = 10;
- s=checkTime(s);
- $('#timerBox1').html(s);
- };
-
- var increaseTime = function(){
- if(play === 1){
- s--;
- s=checkTime(s);
- if(s == 00){ //computer score increase
- k.audio.incorrect.play();
- checked = 0;
- t=setTimeout(function(){delay_correct();},2000);
- currentBlock = 0;
- assignBuildBlocks();
- compCounter++;
- dropNum = 0;
- resetTimer();
- }
- else{
- $('#timerBox1').html(s);
- var t=setTimeout(function(){increaseTime();},1000);
- }
- }
- };
- var startTimer = function(){
- play = 1;
- increaseTime();
-
- };
-
- var check_game_over = function(){
- var flag_game = 0;
- if(totalCounter === 40){ //game over
- $('#content').addClass('backOpaque');
- $('#gameOver').show();
- resetTimer();
- }
- else if(totalCounter === 20){
- if(playerCounter < 10 || compCounter <10){ //u were missed play again
- $('#topText').html('Sorry U missed the chance !!! Click Play Again.'); }
- flag_game = 1;
- }
- else if(compCounter === 10){ //computer wins
- $('#leftText').html('Computer Wins');
- $('#topText').html('Sorry U missed the chance !!! Click Play Again.');
- flag_game = 1;
- }
- else if(playerCounter === 10){ //player wins
- $('#rightText').html('Player Wins');
- $('#topText').html('Great Job !!! Click Next Button to proceed to next level.');
- flag_game = 1;
- }
- if(flag_game === 1){
- playerCounter = 10;
- compCounter = 10;
- if(gamePlay === 0){
- $('#linkNextExercise').show();
- }
- else{
- $('#linkPrevExercise').show();
- }
- }
-
-
- };
- var assignBuildBlocks = function(){
- var compName,playerName;
- if((currentBlock === 1 && playerCounter === 9) || (currentBlock === 0 && compCounter === 9)){
- compName = 'computer_top';
- playerName = 'player_top';
-
- }
- else if((currentBlock === 1 && playerCounter === 0) || (currentBlock === 0 && compCounter === 0)){
- compName = 'computer_base';
- playerName = 'player_base';
- }
- else{
- compName = 'computer_body';
- playerName = 'player_body';
- }
-
- if(currentBlock === 1){
- $('#playerBuild'+(9-playerCounter)).append('<img src="assets/image/'+playerName+'.png" />');
- }
- else{
- $('#compBuild'+(9-compCounter)).append('<img src="assets/image/'+compName+'.png" />');
- }
-
- };
-
- var delay_correct = function(){
- document.delayForm.delayval.value = 1;
- if(checked ===1 ){
- $('#drag'+completedWords[totalCounter-2]).hide();
- $('#drag'+completedWords[totalCounter-1]).hide();
- }
- $('#drop0').html('----------');
- $('#drop1').html('----------');
- $('#drop2').html('------------');
- };
- var check_answers = function(){
- var flag_correct = 0;
- var secStart = sectionNum * 10;
- var secStop = (sectionNum+1) * 10;
- for( i = secStart ; i<secStop; i++){
- var fstSyllable = $('#drag'+fstSyllableId).text();
- var secondSyllable = $('#drag'+secondSyllableId).text();
- if(fstSyllable === syllableWord1[i] && secondSyllable === syllableWord2[i]){
- k.audio.correct.play();
- $('#drop2').html(fstSyllable+secondSyllable);
- totalCounter += 2;
- completedWords[totalCounter-2] = fstSyllableId;
- completedWords[totalCounter-1] = secondSyllableId;
- flag_correct = 1;
- correctCounter++;
- //check with timer and populate the side bar
- //if done within 10 seconds
- currentBlock = 1;
- assignBuildBlocks();
- playerCounter++;
- checked = 1;
- t=setTimeout(function(){delay_correct();},1000);
- }
- }
- if(flag_correct === 0){ //rearrange them
- checked = 0;
- k.audio.incorrect.play();
- $('#drop2').html('Not a Valid Word');
- currentBlock = 0;
- assignBuildBlocks();
- compCounter++;
- t=setTimeout(function(){delay_correct();},1000);
- }
-
- };
-
- var assignSyllableWords = function(sId){
- if(sId<10){
- sysId = sId+(10*sectionNum);
- $('#container').append('<div id="drag'+sId+'" >'+syllableWord1[sysId]+'</div>');
- }
- else{
- sysId = ((10*(sectionNum+2)) - 1)-sId;
- $('#container').append('<div id="drag'+sId+'" >'+syllableWord2[sysId]+'</div>');
- }
-
- var dragObjCss = {
- 'float':'left','position':'relative','cursor': 'move','margin': '1em',
- 'width':'100px','height':'30px','border': '2px solid black',
- 'font':'20px/25px bold Arial,Verdana,Geneva,Helvetica',
- 'text-align':'center'
- };
- $('#drag'+sId).css(dragObjCss);
- $('#drag'+sId).click(function(){
- currentSyllable = $(this).text();
- if(dropNum === 0){
- fstSyllableId = $(this).attr('id');
- fstSyllableId = parseInt(fstSyllableId.substring(4));
- startTimer();
-
- }
- else{
- secondSyllableId = $(this).attr('id');
- secondSyllableId = parseInt(secondSyllableId.substring(4));
- }
- $('#drop'+dropNum).html(currentSyllable);
- dropNum++;
- if(dropNum === 2){
- dropNum = 0;
- resetTimer();
- check_answers();
- }
- check_game_over();
- });
-
- };
-
- var assignDropPlaces = function(drpId){
- $('#joinSyllable').append('<div id="drop'+drpId+'" class="dropObjects"></div>');
- var dropObjCss = {
- 'float':'left','width':'100px','height': '45px','margin': '0.5em 0.5em',
- 'font':'20px/35px bold Arial,Verdana,Geneva,Helvetica',
- 'text-align':'center','color':'#FF00FF'
- };
-
- if(drpId === 2){
- $('#drop'+drpId).css(dropObjCss).css({'width':'200px'}).html('------------');
- }
- else{
- $('#drop'+drpId).css(dropObjCss).html('----------');
- }
- };
-
-
- var next_syllables = function(){
- resetTimer();
- $('#content').removeClass('backOpaque').html('');
- $('#content').append('<div id="left-side"></div>');
- $('#content').append('<div id="main-content"></div>');
- $('#content').append('<div id="right-side"></div>');
- $('#left-side').append('<div id="leftText"></div>');
- $('#leftText').html('Computer Building');
- $('#right-side').append('<div id="rightText"></div>');
- $('#rightText').html('Player Building');
-
-
- $('#main-content').append('<div id="topText">Join two syllables to make one word</div>');
- $('#main-content').append('<div id="container"></div>');
- $('#main-content').append('<div id="joinSyllable"></div>');
- genRandPosition();
- playerCounter = 0;
- compCounter = 0;
- for(i = 0; i< 20; i++){
- var randNum = randPositions[i];
- assignSyllableWords(randNum);
- }
- $('#joinSyllable').html('');
- for(i = 0; i< 3;i++){
- assignDropPlaces(i);
- if(i === 0){
- $('#joinSyllable').append('<div class="sign">+</div>');
- }
- else if(i === 1){
- $('#joinSyllable').append('<div class="sign">=</div>');
- }
- }
- for(var i = 0; i< TOTAL_QUES; i++){
- $('#left-side').append('<div id="compBuild'+i+'></div>');
- $('#compBuild'+i).addClass('default');
- $('#right-side').append('<div id="playerBuild'+i+'></div>');
- $('#playerBuild'+i).addClass('default');
- }
-
- };
-
- function game_start(){
- gamePlay = 0;
-
-
- $('#linkNextExercise').hide();
- $('#linkPrevExercise').hide();
- $('#gameOver').hide();
- dropNum = 0;
- correctCounter = 0;
- totalCounter = 0;
- sectionNum = k.rand(0,1);
- next_syllables();
- }
-
- function game(){
-
-
- $('#linkNextExercise').hide();
- $('#linkPrevExercise').hide();
- $('#gameOver').hide();
-
- }
-
- game();
-
- $('#linkNextExercise').click(function(){
- $('#linkNextExercise').hide();
- if(sectionNum === 0){
- sectionNum += 1;
- }
- else{
- sectionNum -= 1;
- }
- gamePlay++;
- next_syllables();
- });
- $('#linkPrevExercise').click(function(){
- $('#linkPrevExercise').hide();
- if(sectionNum === 0){
- sectionNum += 1;
- }
- else{
- sectionNum -= 1;
- }
- gamePlay--;
- next_syllables();
- });
- $('#linkStart').click(function(){
- game_start();
- });
-
- $('#linkPlayAgain').click(function(){
- game_start();
- });
- $('#linkHelp').mouseover(function(){
- $('#help').slideDown(2000);
- })
- .mouseout(function(){
- $('#help').slideUp(2000);
- });
- }); //end of k.ready
- }); //end of document.read
-