Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/examples/lessons/6_Maths_AddingAndSubtractingVariables
diff options
context:
space:
mode:
Diffstat (limited to 'examples/lessons/6_Maths_AddingAndSubtractingVariables')
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/audio/correct.wavbin111176 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/audio/incorrect.wavbin77660 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bgLeft.pngbin12661 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bg_footer.pngbin137 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bg_header.pngbin225 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bg_title_block.pngbin274 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_back.pngbin2665 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_back_hover.pngbin4038 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_help.pngbin2755 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_help_hover.pngbin4190 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_next.pngbin2773 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_next_hover.pngbin3996 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_ole.pngbin4842 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_ole_hover.pngbin6253 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_play_again.pngbin5627 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_play_again_hover.pngbin5468 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_play_again_mouse_down.pngbin5688 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_start.pngbin5127 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_start_hover.pngbin4966 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_start_mouse_down.pngbin5109 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/check.pngbin1901 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/gameOver.pngbin15508 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/help.pngbin61687 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img0.pngbin92834 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img1.pngbin29653 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img2.pngbin45874 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img3.pngbin78008 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img4.pngbin82002 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img5.pngbin77528 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques0.pngbin29973 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques1.pngbin32515 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques2.pngbin28743 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques3.pngbin25482 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques4.pngbin19551 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques5.pngbin29018 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/title_block_lt.pngbin1057 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/title_block_rt.pngbin1074 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/css/lesson.css273
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/css/ui.scoreboard.css62
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/index.html46
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/js/jquery-1.3.2.min.js19
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/js/karma.js1018
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/js/lesson.js215
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.core.js519
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.draggable.js766
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.droppable.js282
-rwxr-xr-xexamples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.scoreboard.js107
47 files changed, 0 insertions, 3307 deletions
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/audio/correct.wav b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/audio/correct.wav
deleted file mode 100755
index a49ba33..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/audio/correct.wav
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/audio/incorrect.wav b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/audio/incorrect.wav
deleted file mode 100755
index 906c6a3..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/audio/incorrect.wav
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bgLeft.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bgLeft.png
deleted file mode 100755
index 18fc2e1..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bgLeft.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bg_footer.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bg_footer.png
deleted file mode 100755
index 4bd44fa..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bg_footer.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bg_header.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bg_header.png
deleted file mode 100755
index f421817..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bg_header.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bg_title_block.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bg_title_block.png
deleted file mode 100755
index 7311891..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/bg_title_block.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_back.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_back.png
deleted file mode 100755
index d9fbf14..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_back.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_back_hover.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_back_hover.png
deleted file mode 100755
index 0911fcc..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_back_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_help.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_help.png
deleted file mode 100755
index 6753e9c..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_help.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_help_hover.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_help_hover.png
deleted file mode 100755
index d3ccd92..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_help_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_next.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_next.png
deleted file mode 100755
index 9d70993..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_next.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_next_hover.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_next_hover.png
deleted file mode 100755
index 2cd4d37..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_next_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_ole.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_ole.png
deleted file mode 100755
index 0e775e9..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_ole.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_ole_hover.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_ole_hover.png
deleted file mode 100755
index c43c5f7..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_ole_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_play_again.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_play_again.png
deleted file mode 100755
index 3594d18..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_play_again.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_play_again_hover.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_play_again_hover.png
deleted file mode 100755
index ebb8f8c..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_play_again_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_play_again_mouse_down.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_play_again_mouse_down.png
deleted file mode 100755
index 07d6e45..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_play_again_mouse_down.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_start.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_start.png
deleted file mode 100755
index 32e5f20..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_start.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_start_hover.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_start_hover.png
deleted file mode 100755
index 811ce78..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_start_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_start_mouse_down.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_start_mouse_down.png
deleted file mode 100755
index 5acd43b..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/btn_start_mouse_down.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/check.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/check.png
deleted file mode 100755
index bd0afcb..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/check.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/gameOver.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/gameOver.png
deleted file mode 100755
index 81c403b..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/gameOver.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/help.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/help.png
deleted file mode 100755
index f3505e7..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/help.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img0.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img0.png
deleted file mode 100755
index ed86909..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img0.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img1.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img1.png
deleted file mode 100755
index b87cab4..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img1.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img2.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img2.png
deleted file mode 100755
index 15de5ef..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img2.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img3.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img3.png
deleted file mode 100755
index 915e20a..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img3.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img4.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img4.png
deleted file mode 100755
index d172dac..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img4.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img5.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img5.png
deleted file mode 100755
index 011aea5..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/img5.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques0.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques0.png
deleted file mode 100755
index c35776e..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques0.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques1.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques1.png
deleted file mode 100755
index cec454c..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques1.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques2.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques2.png
deleted file mode 100755
index eba02bd..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques2.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques3.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques3.png
deleted file mode 100755
index 6008fa0..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques3.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques4.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques4.png
deleted file mode 100755
index 8b5397f..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques4.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques5.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques5.png
deleted file mode 100755
index ee8d142..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/ques5.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/title_block_lt.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/title_block_lt.png
deleted file mode 100755
index b1c0e90..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/title_block_lt.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/title_block_rt.png b/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/title_block_rt.png
deleted file mode 100755
index 275daaf..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/assets/image/title_block_rt.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/css/lesson.css b/examples/lessons/6_Maths_AddingAndSubtractingVariables/css/lesson.css
deleted file mode 100755
index 283bf25..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/css/lesson.css
+++ /dev/null
@@ -1,273 +0,0 @@
-@CHARSET "UTF-8";
-/****** Page Styles ****/
-
-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: 89px;
- width: 100%;
- position: absolute;
- left: 0px;
- top: 0px;
-}
-#topbtn_left {
- float: left;
- height: 60px;
- width: 60px;
- padding-top: 13px;
- padding-left: 5px;
-}
-
-
- #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: 13px;
- padding-right: 5px;
-}
- #linkHelp{
- width: 60px; height: 60px;
- background:url(../assets/image/btn_help.png);
- }bgCalculation
- #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 {
- background-image: url(../assets/image/bg_footer.png);
- background-repeat: repeat-x;
- position: abbgCalculationsolute;
- height: 69px;
- 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;
- /*width: 25bgCalculation1px;*/
- padding-right: 5px;
- padding-top: 5px;
-}
- #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);
- }
-
-/**** 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: 85px;
- width: 95%;
- padding: 0.5em;
- height: 375px;
-}
- #section{
- width: 900px;
- height: 400px;
- margin: 0 auto;
- }
-
- #left-side{
- padding-top: 80px;
- margin: 0em auto;
- float:left;
- width: 360px;
- height: 285px;
- border: 2px solid black;
- text-align:center;
- background: url(../assets/image/bgLeft.png);
- -moz-border-radius : 20px;
- -webkit-border-radius : 20px;
- border-radius : 20px;
- }
-
- #right-side{
- float:right;
- width: 383px;
- height: 365px;
- border: 2px solid black;
- -moz-border-radius : 20px;
- -webkit-border-radius : 20px;
- border-radius : 20px;
- background-color: #7FFFC9;
-
- }
-
- #rightBack{
- background-repeat: no-repeat;
- width: 383px;
- height: 365px;
- }
-
- .bgCalculation{
- position:absolute;
- top: 58%;
- right: 8%;
- padding-top: 5px;
- width: 360px;
- height: 90px;
- text-align:center;
-
- }
-
- #textQues1{
- float:right;
- width: 300px;
- height:30px;
- letter-spacing: 5px;
- font: 20px/25px Verdana, Geneva, Arial, Helvetica, sans-serif;
- padding-right: 20px;
-
- text-align:right;
- }
- #textQues2{
- float:right;
- width: 350px;
- height:30px;
- letter-spacing: 5px;
- text-align:right;
- font: 20px/25px Verdana, Geneva, Arial, Helvetica, sans-serif;
- padding-right: 15px;
- }
- #textQues3{
- margin-top: 5px;
- float:right;
- text-align:right;
- width: 300px;
- height: 30px;
- padding-right: 15px;
- }
- .blankBoxes{
- padding-left: 15px;
- width: 35px;
- height: 40px;
- border-bottom : 2px solid black;
- font: 20px/25px Verdana, Geneva, Arial, Helvetica, sans-serif;
- }
- .quesText{
- font: 20px/25px Verdana, Geneva, Arial, Helvetica, sans-serif;
- color: #000000;
- }
- input.textBox{
- size:3;
- font: 15px/20px Verdana, Geneva, Arial, Helvetica, sans-serif;
- font-weight: bold;
- height:20px;
- width: 30px;
- text-align:center;
- }
- .focus {
- background-color: #FFEEAA;
- }
- .correct{
- background-color: #C0F9F3;
- }
- .incorrect{
- background-color: #FFFF00;
- }
-
- #help{
- display:none;
- position:absolute;
- right: 20%;
- top: 1%;
- width: 224px;
- height: 525px;
- background:url(../assets/image/help.png);
- z-index:40;
- }
- .backOpaque{
- background-color: #A4A4A4;
- opacity: 0.2;
- }
- #gameOver{
- display:none;
- position:absolute;
- top: 40%;
- left: 25%;
- width: 432px;
- height: 68px;
- background: url('../assets/image/gameOver.png');
- } \ No newline at end of file
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/css/ui.scoreboard.css b/examples/lessons/6_Maths_AddingAndSubtractingVariables/css/ui.scoreboard.css
deleted file mode 100755
index 11cdbb5..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/css/ui.scoreboard.css
+++ /dev/null
@@ -1,62 +0,0 @@
-.ui-scoreboard-container-h{
-max-width: 800em;
-max-height: 200px;
-float:left;
-padding-top:0.4em;
-padding-bottom:0.4em;
-}
-
-.ui-scoreboard-spacing-h{
-max-width: 200em;
-max-height: 300em;
-display:inline;
-margin-left:0.2em;
-margin-right:0.4em;
-}
-
-.ui-scoreboard-text{
-font-size:larger;
-text-align: center;
-}
-
-.ui-scoreboard-number-h {
-background-color:black;
-color: white;
-padding-left:0.4em;
-padding-right:0.4em;
-font-size:larger;
-}
-
-.ui-scoreboard-button{
-float:right;
-cursor:pointer;
-}
-
-button .ui-scoreboard-icon{
-float: left;
-margin-right:0.3em;
-}
-.ui-scoreboard-container-v{
-max-width: 200px;
-max-height: 400px;
-float:left;
-padding-top:0.4em;
-padding-bottom:0.4em;
-}
-.ui-scoreboard-spacing-v{
-display:block;
-margin: 0.4em;
-}
-
-.ui-scoreboard-number-v{
-background-color:black;
-color: white;
-width: 1em;
-text-align:center;
-margin-left:auto;
-margin-right: auto;
-padding:0.4em;
-font-size:larger;
-}
-
-
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/index.html b/examples/lessons/6_Maths_AddingAndSubtractingVariables/index.html
deleted file mode 100755
index 736b381..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/index.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html>
-<head>
- <title>Class 6 Maths Adding and Subtracting Variables</title>
- <meta name="keywords" content="karma,javascript,html5,sugar,sugarlabs,gsoc,ole,nepal" />
- <link type="text/css" rel="stylesheet" href="css/lesson.css" />
- <link type="text/css" rel="stylesheet" href="css/ui.scoreboard.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/ui.core.js"></script>
- <script type="text/javascript" src="js/ui.draggable.js"></script>
- <script type="text/javascript" src="js/ui.droppable.js"></script>
- <script type="text/javascript" src="js/karma.js"></script>
- <script type="text/javascript" src="js/ui.scoreboard.js"></script>
- <script type="text/javascript" src="js/lesson.js"></script>
-</head>
-<body>
- <div id="header">
- <div id="topbtn_left"><a href="http://olenepal.org"><div id="linkOle"></div></a></div>
- <div id="lesson_title">
- <img src="assets/image/title_block_lt.png" width="33" height="89" align="absmiddle" />
- Adding and Subtracting Variables||<span id="currentTitle">सजातीय पद हरुको जोड र घटाउ</span>
- <img src="assets/image/title_block_rt.png" width="33" height="89" 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 id="section"></div>
- <div id="displayImgArea"></div>
- <div id="gameOver"></div>
- <div id="help"></div>
- </div>
- <form name="delayForm">
- <input type="hidden" name="delayval" size="5">
- </form>
-
- <div id="footer">
- <div id="score_box"></div>
- <div id="botbtn_right"><a href="#"><div id="linkStart"></div></a></div>
- <div id="botbtn_right"><a href="#"><div id="linkPlayAgain"></div></a></div>
- <div id="botbtn_right"><a href="#"><div id="linkCheck"></div></a></div>
- </div>
-</body>
-</html>
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/jquery-1.3.2.min.js b/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/jquery-1.3.2.min.js
deleted file mode 100755
index b1ae21d..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/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_Maths_AddingAndSubtractingVariables/js/karma.js b/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/karma.js
deleted file mode 100755
index 03f027b..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/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_Maths_AddingAndSubtractingVariables/js/lesson.js b/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/lesson.js
deleted file mode 100755
index 9f094ca..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/lesson.js
+++ /dev/null
@@ -1,215 +0,0 @@
-$(document).ready(function(){
- var k = Karma({
- audio: [{'name':'correct','file':'correct.wav'},
- {'name':'incorrect','file':'incorrect.wav'}
- ]});
-
- k.ready(function(){
- var i,j;
- var totalCounter;
- var correctCounter;
- var currentQuestion;
- var TOTAL_QUES = 6;
- var flag_correct;
- var randPositions = [];
- var check_num;
-
- var variableName = new Array('x','p','y','x','x','r');
- var perPack = new Array('16','80','25','30','15','70');
- var quantity = new Array('4','1','2','3','2','1');
- var finishedQty = new Array('8','30','16','7','7','22');
-
- var answers = new Array('58','50','34','97','37','48');
-
-
- var scoreboard = $('#score_box').scoreboard({'layout':'horizontal',
- 'winningScore': TOTAL_QUES});
-
- var genRandPosition=function (){
- randPositions[0] = k.rand(0,TOTAL_QUES-1);
- for(i=1; i<TOTAL_QUES; i++){
- do{
- flag = 0;
- randPositions[i] = k.rand(0,TOTAL_QUES-1);
- for(j=0; j<i; j++){
- if(randPositions[i] === randPositions[j]){
- flag++;
- }
- }
- }while(flag != 0 ); //end of do while loop
- }
- };
-
- var next_question = function (){
- if(totalCounter === TOTAL_QUES){
- t=setTimeout(function(){delay_gameOver();},1000);
- }
- else{
- currentQuestion = randPositions[totalCounter];
- currentQuestion = totalCounter;
- flag_correct = 1;
- check_num = 0;
- var sign;
- $('#linkCheck').show();
- $('#left-side').html('<img id="img'+currentQuestion+'" src="assets/image/img'+currentQuestion+'.png" />');
- //$('#left-side').html('<img id="img'+currentQuestion+'" src="assets/image/img0.png" />');
-
- $('#rightBack').css({'background':'url(assets/image/ques'+currentQuestion+'.png)'});
- $('.bgCalculation').html('').append('<div id="textQues1"></div>');
- $('.bgCalculation').append('<div id="textQues2"></div>');
-
- if(currentQuestion ===3 || currentQuestion === 4){
- sign = '+';
- }
- else{
- sign = '-';
-
- }
- for( i = 0; i< quantity[currentQuestion]; i++){
- $('#textQues1').append(variableName[currentQuestion]);
- $('#textQues2').append('<span class="blankBoxes"></span>');
- if(i != quantity[currentQuestion]-1){
- $('#textQues1').append('+');
- $('#textQues2').append('+');
- }
- else{
-
- if(parseInt(quantity[currentQuestion]) === 1){
- $('#textQues1').append(sign+''+finishedQty[currentQuestion]);
- $('#textQues1').append(' = ').append(variableName[currentQuestion]);
- $('#textQues1').append(sign+''+finishedQty[currentQuestion]);
- $('#textQues2').append(sign+''+finishedQty[currentQuestion]);
- $('#textQues2').append(' = ').append('<input type="text" id="text1" class="textBox" maxLength="2"/>');
- $('#textQues2').append(sign+''+finishedQty[currentQuestion]);
- }
- else{
- $('#textQues1').append(sign+''+finishedQty[currentQuestion]);
- $('#textQues1').append(' = ').append(quantity[currentQuestion]+' * '+variableName[currentQuestion]);
- $('#textQues1').append(sign+''+finishedQty[currentQuestion]);
- $('#textQues2').append(sign+''+finishedQty[currentQuestion]);
- $('#textQues2').append(' = ').append(quantity[currentQuestion]+' *'+'<input type="text" id="text1" class="textBox" maxLength="2"/>');
- $('#textQues2').append(sign+''+finishedQty[currentQuestion]);
- }
-
-
- }
- $("input#text1").focus();
- }
-
-
- foucs_blur();
-
- }
-
- };
-
- function game_start(){
- $('#gameOver').hide();
- $('#linkCheck').show();
- $('#section').removeClass('backOpaque');
- genRandPosition();
- next_question();
- }
-
- function game() {
- totalCounter = 0;
- correctCounter = 0;
- $('#section').html('').append('<div id="left-side"></div>');
- $('#section').append('<div id="right-side"></div>');
- $('#right-side').append('<div id="rightBack"></div>');
- $('#right-side').append('<div class="bgCalculation"></div>');
- $('#help').hide();
- $('#linkCheck').hide();
- $('#gameOver').hide();
- }
-
- game();
-
- var delay_nextQues = function(){
- document.delayForm.delayval.value = 1;
- next_question();
- };
-
- var delay_gameOver = function(){
- document.delayForm.delayval.value = 1;
- $('#section').addClass('backOpaque');
- $('#linkCheck').hide();
- $('#gameOver').show();
- };
-
- var check_answer = function(){
- if(check_num === 0){
- var textVal = $('#text1').val();
- if(textVal === perPack[currentQuestion]){ // first one is correct
- k.audio.correct.play();
- $('.bgCalculation').append('<div id="textQues3"></div>');
- $('.bgCalculation').append('<div id="textQues4"></div>');
- $('#textQues3').append(' = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;').append('<input type="text" id="text2" class="textBox" maxLength="3"/>');
- $('#text1').attr("disabled", true);
- $('.blankBoxes').css({'padding':'0'}).html(perPack[currentQuestion]);
- check_num++;
- $("input#text2").focus();
- foucs_blur();
- }
- else{
- k.audio.incorrect.play();
- flag_correct = 0;
- }
- }
- else{
- textVal = $('#text2').val();
- //if(textVal === perPack[currentQuestion] * quantity[currentQuestion]){
- if(textVal === answers[currentQuestion]){
- k.audio.correct.play();
- if(flag_correct === 1){
- scoreboard.scoreboard('inc');
- correctCounter++;
- }
- scoreboard.scoreboard('incTotal');
- totalCounter++;
- t=setTimeout(function(){delay_nextQues();},1000);
- }
- else{
- flag_correct = 0;
- k.audio.incorrect.play();
- }
- }
- };
-
- function foucs_blur(){
-
- $('input[type="text"]')
- .focus(function() {
- $(this).removeClass('incorrect').addClass("focus");
- })
- .blur(function() {
- $(this).removeClass("focus");
- })
- .keypress(function(event) {
- if(event.which === 13){
- check_answer();
- }
-
- });
-
- $('#linkCheck').click(function(){
- check_answer();
- });
- }
-
- $('#linkStart').click(function(){
- game_start();
- });
-
- $('#linkPlayAgain').click(function(){
- scoreboard.scoreboard('reset');
- game_start();
- });
- $('#linkHelp').click(function(){
- $('#help').slideDown(2000);
- })
- .mouseout(function(){
- $('#help').slideUp(2000);
- });
- }); //end of k.ready
-}); //end of document.ready \ No newline at end of file
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.core.js b/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.core.js
deleted file mode 100755
index 5493e0a..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.core.js
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
- * jQuery UI 1.7.2
- *
- * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI
- */
-;jQuery.ui || (function($) {
-
-var _remove = $.fn.remove,
- isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9);
-
-//Helper functions and ui object
-$.ui = {
- version: "1.7.2",
-
- // $.ui.plugin is deprecated. Use the proxy pattern instead.
- plugin: {
- add: function(module, option, set) {
- var proto = $.ui[module].prototype;
- for(var i in set) {
- proto.plugins[i] = proto.plugins[i] || [];
- proto.plugins[i].push([option, set[i]]);
- }
- },
- call: function(instance, name, args) {
- var set = instance.plugins[name];
- if(!set || !instance.element[0].parentNode) { return; }
-
- for (var i = 0; i < set.length; i++) {
- if (instance.options[set[i][0]]) {
- set[i][1].apply(instance.element, args);
- }
- }
- }
- },
-
- contains: function(a, b) {
- return document.compareDocumentPosition
- ? a.compareDocumentPosition(b) & 16
- : a !== b && a.contains(b);
- },
-
- hasScroll: function(el, a) {
-
- //If overflow is hidden, the element might have extra content, but the user wants to hide it
- if ($(el).css('overflow') == 'hidden') { return false; }
-
- var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop',
- has = false;
-
- if (el[scroll] > 0) { return true; }
-
- // TODO: determine which cases actually cause this to happen
- // if the element doesn't have the scroll set, see if it's possible to
- // set the scroll
- el[scroll] = 1;
- has = (el[scroll] > 0);
- el[scroll] = 0;
- return has;
- },
-
- isOverAxis: function(x, reference, size) {
- //Determines when x coordinate is over "b" element axis
- return (x > reference) && (x < (reference + size));
- },
-
- isOver: function(y, x, top, left, height, width) {
- //Determines when x, y coordinates is over "b" element
- return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);
- },
-
- keyCode: {
- BACKSPACE: 8,
- CAPS_LOCK: 20,
- COMMA: 188,
- CONTROL: 17,
- DELETE: 46,
- DOWN: 40,
- END: 35,
- ENTER: 13,
- ESCAPE: 27,
- HOME: 36,
- INSERT: 45,
- LEFT: 37,
- NUMPAD_ADD: 107,
- NUMPAD_DECIMAL: 110,
- NUMPAD_DIVIDE: 111,
- NUMPAD_ENTER: 108,
- NUMPAD_MULTIPLY: 106,
- NUMPAD_SUBTRACT: 109,
- PAGE_DOWN: 34,
- PAGE_UP: 33,
- PERIOD: 190,
- RIGHT: 39,
- SHIFT: 16,
- SPACE: 32,
- TAB: 9,
- UP: 38
- }
-};
-
-// WAI-ARIA normalization
-if (isFF2) {
- var attr = $.attr,
- removeAttr = $.fn.removeAttr,
- ariaNS = "http://www.w3.org/2005/07/aaa",
- ariaState = /^aria-/,
- ariaRole = /^wairole:/;
-
- $.attr = function(elem, name, value) {
- var set = value !== undefined;
-
- return (name == 'role'
- ? (set
- ? attr.call(this, elem, name, "wairole:" + value)
- : (attr.apply(this, arguments) || "").replace(ariaRole, ""))
- : (ariaState.test(name)
- ? (set
- ? elem.setAttributeNS(ariaNS,
- name.replace(ariaState, "aaa:"), value)
- : attr.call(this, elem, name.replace(ariaState, "aaa:")))
- : attr.apply(this, arguments)));
- };
-
- $.fn.removeAttr = function(name) {
- return (ariaState.test(name)
- ? this.each(function() {
- this.removeAttributeNS(ariaNS, name.replace(ariaState, ""));
- }) : removeAttr.call(this, name));
- };
-}
-
-//jQuery plugins
-$.fn.extend({
- remove: function() {
- // Safari has a native remove event which actually removes DOM elements,
- // so we have to use triggerHandler instead of trigger (#3037).
- $("*", this).add(this).each(function() {
- $(this).triggerHandler("remove");
- });
- return _remove.apply(this, arguments );
- },
-
- enableSelection: function() {
- return this
- .attr('unselectable', 'off')
- .css('MozUserSelect', '')
- .unbind('selectstart.ui');
- },
-
- disableSelection: function() {
- return this
- .attr('unselectable', 'on')
- .css('MozUserSelect', 'none')
- .bind('selectstart.ui', function() { return false; });
- },
-
- scrollParent: function() {
- var scrollParent;
- if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
- scrollParent = this.parents().filter(function() {
- return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
- }).eq(0);
- } else {
- scrollParent = this.parents().filter(function() {
- return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
- }).eq(0);
- }
-
- return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
- }
-});
-
-
-//Additional selectors
-$.extend($.expr[':'], {
- data: function(elem, i, match) {
- return !!$.data(elem, match[3]);
- },
-
- focusable: function(element) {
- var nodeName = element.nodeName.toLowerCase(),
- tabIndex = $.attr(element, 'tabindex');
- return (/input|select|textarea|button|object/.test(nodeName)
- ? !element.disabled
- : 'a' == nodeName || 'area' == nodeName
- ? element.href || !isNaN(tabIndex)
- : !isNaN(tabIndex))
- // the element and all of its ancestors must be visible
- // the browser may report that the area is hidden
- && !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;
- },
-
- tabbable: function(element) {
- var tabIndex = $.attr(element, 'tabindex');
- return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');
- }
-});
-
-
-// $.widget is a factory to create jQuery plugins
-// taking some boilerplate code out of the plugin code
-function getter(namespace, plugin, method, args) {
- function getMethods(type) {
- var methods = $[namespace][plugin][type] || [];
- return (typeof methods == 'string' ? methods.split(/,?\s+/) : methods);
- }
-
- var methods = getMethods('getter');
- if (args.length == 1 && typeof args[0] == 'string') {
- methods = methods.concat(getMethods('getterSetter'));
- }
- return ($.inArray(method, methods) != -1);
-}
-
-$.widget = function(name, prototype) {
- var namespace = name.split(".")[0];
- name = name.split(".")[1];
-
- // create plugin method
- $.fn[name] = function(options) {
- var isMethodCall = (typeof options == 'string'),
- args = Array.prototype.slice.call(arguments, 1);
-
- // prevent calls to internal methods
- if (isMethodCall && options.substring(0, 1) == '_') {
- return this;
- }
-
- // handle getter methods
- if (isMethodCall && getter(namespace, name, options, args)) {
- var instance = $.data(this[0], name);
- return (instance ? instance[options].apply(instance, args)
- : undefined);
- }
-
- // handle initialization and non-getter methods
- return this.each(function() {
- var instance = $.data(this, name);
-
- // constructor
- (!instance && !isMethodCall &&
- $.data(this, name, new $[namespace][name](this, options))._init());
-
- // method call
- (instance && isMethodCall && $.isFunction(instance[options]) &&
- instance[options].apply(instance, args));
- });
- };
-
- // create widget constructor
- $[namespace] = $[namespace] || {};
- $[namespace][name] = function(element, options) {
- var self = this;
-
- this.namespace = namespace;
- this.widgetName = name;
- this.widgetEventPrefix = $[namespace][name].eventPrefix || name;
- this.widgetBaseClass = namespace + '-' + name;
-
- this.options = $.extend({},
- $.widget.defaults,
- $[namespace][name].defaults,
- $.metadata && $.metadata.get(element)[name],
- options);
-
- this.element = $(element)
- .bind('setData.' + name, function(event, key, value) {
- if (event.target == element) {
- return self._setData(key, value);
- }
- })
- .bind('getData.' + name, function(event, key) {
- if (event.target == element) {
- return self._getData(key);
- }
- })
- .bind('remove', function() {
- return self.destroy();
- });
- };
-
- // add widget prototype
- $[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype);
-
- // TODO: merge getter and getterSetter properties from widget prototype
- // and plugin prototype
- $[namespace][name].getterSetter = 'option';
-};
-
-$.widget.prototype = {
- _init: function() {},
- destroy: function() {
- this.element.removeData(this.widgetName)
- .removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled')
- .removeAttr('aria-disabled');
- },
-
- option: function(key, value) {
- var options = key,
- self = this;
-
- if (typeof key == "string") {
- if (value === undefined) {
- return this._getData(key);
- }
- options = {};
- options[key] = value;
- }
-
- $.each(options, function(key, value) {
- self._setData(key, value);
- });
- },
- _getData: function(key) {
- return this.options[key];
- },
- _setData: function(key, value) {
- this.options[key] = value;
-
- if (key == 'disabled') {
- this.element
- [value ? 'addClass' : 'removeClass'](
- this.widgetBaseClass + '-disabled' + ' ' +
- this.namespace + '-state-disabled')
- .attr("aria-disabled", value);
- }
- },
-
- enable: function() {
- this._setData('disabled', false);
- },
- disable: function() {
- this._setData('disabled', true);
- },
-
- _trigger: function(type, event, data) {
- var callback = this.options[type],
- eventName = (type == this.widgetEventPrefix
- ? type : this.widgetEventPrefix + type);
-
- event = $.Event(event);
- event.type = eventName;
-
- // copy original event properties over to the new event
- // this would happen if we could call $.event.fix instead of $.Event
- // but we don't have a way to force an event to be fixed multiple times
- if (event.originalEvent) {
- for (var i = $.event.props.length, prop; i;) {
- prop = $.event.props[--i];
- event[prop] = event.originalEvent[prop];
- }
- }
-
- this.element.trigger(event, data);
-
- return !($.isFunction(callback) && callback.call(this.element[0], event, data) === false
- || event.isDefaultPrevented());
- }
-};
-
-$.widget.defaults = {
- disabled: false
-};
-
-
-/** Mouse Interaction Plugin **/
-
-$.ui.mouse = {
- _mouseInit: function() {
- var self = this;
-
- this.element
- .bind('mousedown.'+this.widgetName, function(event) {
- return self._mouseDown(event);
- })
- .bind('click.'+this.widgetName, function(event) {
- if(self._preventClickEvent) {
- self._preventClickEvent = false;
- event.stopImmediatePropagation();
- return false;
- }
- });
-
- // Prevent text selection in IE
- if ($.browser.msie) {
- this._mouseUnselectable = this.element.attr('unselectable');
- this.element.attr('unselectable', 'on');
- }
-
- this.started = false;
- },
-
- // TODO: make sure destroying one instance of mouse doesn't mess with
- // other instances of mouse
- _mouseDestroy: function() {
- this.element.unbind('.'+this.widgetName);
-
- // Restore text selection in IE
- ($.browser.msie
- && this.element.attr('unselectable', this._mouseUnselectable));
- },
-
- _mouseDown: function(event) {
- // don't let more than one widget handle mouseStart
- // TODO: figure out why we have to use originalEvent
- event.originalEvent = event.originalEvent || {};
- if (event.originalEvent.mouseHandled) { return; }
-
- // we may have missed mouseup (out of window)
- (this._mouseStarted && this._mouseUp(event));
-
- this._mouseDownEvent = event;
-
- var self = this,
- btnIsLeft = (event.which == 1),
- elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);
- if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
- return true;
- }
-
- this.mouseDelayMet = !this.options.delay;
- if (!this.mouseDelayMet) {
- this._mouseDelayTimer = setTimeout(function() {
- self.mouseDelayMet = true;
- }, this.options.delay);
- }
-
- if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
- this._mouseStarted = (this._mouseStart(event) !== false);
- if (!this._mouseStarted) {
- event.preventDefault();
- return true;
- }
- }
-
- // these delegates are required to keep context
- this._mouseMoveDelegate = function(event) {
- return self._mouseMove(event);
- };
- this._mouseUpDelegate = function(event) {
- return self._mouseUp(event);
- };
- $(document)
- .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
- .bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
-
- // preventDefault() is used to prevent the selection of text here -
- // however, in Safari, this causes select boxes not to be selectable
- // anymore, so this fix is needed
- ($.browser.safari || event.preventDefault());
-
- event.originalEvent.mouseHandled = true;
- return true;
- },
-
- _mouseMove: function(event) {
- // IE mouseup check - mouseup happened when mouse was out of window
- if ($.browser.msie && !event.button) {
- return this._mouseUp(event);
- }
-
- if (this._mouseStarted) {
- this._mouseDrag(event);
- return event.preventDefault();
- }
-
- if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
- this._mouseStarted =
- (this._mouseStart(this._mouseDownEvent, event) !== false);
- (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
- }
-
- return !this._mouseStarted;
- },
-
- _mouseUp: function(event) {
- $(document)
- .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
- .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);
-
- if (this._mouseStarted) {
- this._mouseStarted = false;
- this._preventClickEvent = (event.target == this._mouseDownEvent.target);
- this._mouseStop(event);
- }
-
- return false;
- },
-
- _mouseDistanceMet: function(event) {
- return (Math.max(
- Math.abs(this._mouseDownEvent.pageX - event.pageX),
- Math.abs(this._mouseDownEvent.pageY - event.pageY)
- ) >= this.options.distance
- );
- },
-
- _mouseDelayMet: function(event) {
- return this.mouseDelayMet;
- },
-
- // These are placeholder methods, to be overriden by extending plugin
- _mouseStart: function(event) {},
- _mouseDrag: function(event) {},
- _mouseStop: function(event) {},
- _mouseCapture: function(event) { return true; }
-};
-
-$.ui.mouse.defaults = {
- cancel: null,
- distance: 1,
- delay: 0
-};
-
-})(jQuery);
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.draggable.js b/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.draggable.js
deleted file mode 100755
index 0402f0e..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.draggable.js
+++ /dev/null
@@ -1,766 +0,0 @@
-/*
- * jQuery UI Draggable 1.7.2
- *
- * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Draggables
- *
- * Depends:
- * ui.core.js
- */
-(function($) {
-
-$.widget("ui.draggable", $.extend({}, $.ui.mouse, {
-
- _init: function() {
-
- if (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css("position")))
- this.element[0].style.position = 'relative';
-
- (this.options.addClasses && this.element.addClass("ui-draggable"));
- (this.options.disabled && this.element.addClass("ui-draggable-disabled"));
-
- this._mouseInit();
-
- },
-
- destroy: function() {
- if(!this.element.data('draggable')) return;
- this.element
- .removeData("draggable")
- .unbind(".draggable")
- .removeClass("ui-draggable"
- + " ui-draggable-dragging"
- + " ui-draggable-disabled");
- this._mouseDestroy();
- },
-
- _mouseCapture: function(event) {
-
- var o = this.options;
-
- if (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle'))
- return false;
-
- //Quit if we're not on a valid handle
- this.handle = this._getHandle(event);
- if (!this.handle)
- return false;
-
- return true;
-
- },
-
- _mouseStart: function(event) {
-
- var o = this.options;
-
- //Create and append the visible helper
- this.helper = this._createHelper(event);
-
- //Cache the helper size
- this._cacheHelperProportions();
-
- //If ddmanager is used for droppables, set the global draggable
- if($.ui.ddmanager)
- $.ui.ddmanager.current = this;
-
- /*
- * - Position generation -
- * This block generates everything position related - it's the core of draggables.
- */
-
- //Cache the margins of the original element
- this._cacheMargins();
-
- //Store the helper's css position
- this.cssPosition = this.helper.css("position");
- this.scrollParent = this.helper.scrollParent();
-
- //The element's absolute position on the page minus margins
- this.offset = this.element.offset();
- this.offset = {
- top: this.offset.top - this.margins.top,
- left: this.offset.left - this.margins.left
- };
-
- $.extend(this.offset, {
- click: { //Where the click happened, relative to the element
- left: event.pageX - this.offset.left,
- top: event.pageY - this.offset.top
- },
- parent: this._getParentOffset(),
- relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
- });
-
- //Generate the original position
- this.originalPosition = this._generatePosition(event);
- this.originalPageX = event.pageX;
- this.originalPageY = event.pageY;
-
- //Adjust the mouse offset relative to the helper if 'cursorAt' is supplied
- if(o.cursorAt)
- this._adjustOffsetFromHelper(o.cursorAt);
-
- //Set a containment if given in the options
- if(o.containment)
- this._setContainment();
-
- //Call plugins and callbacks
- this._trigger("start", event);
-
- //Recache the helper size
- this._cacheHelperProportions();
-
- //Prepare the droppable offsets
- if ($.ui.ddmanager && !o.dropBehaviour)
- $.ui.ddmanager.prepareOffsets(this, event);
-
- this.helper.addClass("ui-draggable-dragging");
- this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
- return true;
- },
-
- _mouseDrag: function(event, noPropagation) {
-
- //Compute the helpers position
- this.position = this._generatePosition(event);
- this.positionAbs = this._convertPositionTo("absolute");
-
- //Call plugins and callbacks and use the resulting position if something is returned
- if (!noPropagation) {
- var ui = this._uiHash();
- this._trigger('drag', event, ui);
- this.position = ui.position;
- }
-
- if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px';
- if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px';
- if($.ui.ddmanager) $.ui.ddmanager.drag(this, event);
-
- return false;
- },
-
- _mouseStop: function(event) {
-
- //If we are using droppables, inform the manager about the drop
- var dropped = false;
- if ($.ui.ddmanager && !this.options.dropBehaviour)
- dropped = $.ui.ddmanager.drop(this, event);
-
- //if a drop comes from outside (a sortable)
- if(this.dropped) {
- dropped = this.dropped;
- this.dropped = false;
- }
-
- if((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
- var self = this;
- $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
- self._trigger("stop", event);
- self._clear();
- });
- } else {
- this._trigger("stop", event);
- this._clear();
- }
-
- return false;
- },
-
- _getHandle: function(event) {
-
- var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;
- $(this.options.handle, this.element)
- .find("*")
- .andSelf()
- .each(function() {
- if(this == event.target) handle = true;
- });
-
- return handle;
-
- },
-
- _createHelper: function(event) {
-
- var o = this.options;
- var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone() : this.element);
-
- if(!helper.parents('body').length)
- helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));
-
- if(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css("position")))
- helper.css("position", "absolute");
-
- return helper;
-
- },
-
- _adjustOffsetFromHelper: function(obj) {
- if(obj.left != undefined) this.offset.click.left = obj.left + this.margins.left;
- if(obj.right != undefined) this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
- if(obj.top != undefined) this.offset.click.top = obj.top + this.margins.top;
- if(obj.bottom != undefined) this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
- },
-
- _getParentOffset: function() {
-
- //Get the offsetParent and cache its position
- this.offsetParent = this.helper.offsetParent();
- var po = this.offsetParent.offset();
-
- // This is a special case where we need to modify a offset calculated on start, since the following happened:
- // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
- // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
- // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
- if(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) {
- po.left += this.scrollParent.scrollLeft();
- po.top += this.scrollParent.scrollTop();
- }
-
- if((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information
- || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) //Ugly IE fix
- po = { top: 0, left: 0 };
-
- return {
- top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
- left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
- };
-
- },
-
- _getRelativeOffset: function() {
-
- if(this.cssPosition == "relative") {
- var p = this.element.position();
- return {
- top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
- left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
- };
- } else {
- return { top: 0, left: 0 };
- }
-
- },
-
- _cacheMargins: function() {
- this.margins = {
- left: (parseInt(this.element.css("marginLeft"),10) || 0),
- top: (parseInt(this.element.css("marginTop"),10) || 0)
- };
- },
-
- _cacheHelperProportions: function() {
- this.helperProportions = {
- width: this.helper.outerWidth(),
- height: this.helper.outerHeight()
- };
- },
-
- _setContainment: function() {
-
- var o = this.options;
- if(o.containment == 'parent') o.containment = this.helper[0].parentNode;
- if(o.containment == 'document' || o.containment == 'window') this.containment = [
- 0 - this.offset.relative.left - this.offset.parent.left,
- 0 - this.offset.relative.top - this.offset.parent.top,
- $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,
- ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
- ];
-
- if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {
- var ce = $(o.containment)[0]; if(!ce) return;
- var co = $(o.containment).offset();
- var over = ($(ce).css("overflow") != 'hidden');
-
- this.containment = [
- co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,
- co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,
- co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,
- co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top
- ];
- } else if(o.containment.constructor == Array) {
- this.containment = o.containment;
- }
-
- },
-
- _convertPositionTo: function(d, pos) {
-
- if(!pos) pos = this.position;
- var mod = d == "absolute" ? 1 : -1;
- var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
-
- return {
- top: (
- pos.top // The absolute mouse position
- + this.offset.relative.top * mod // Only for relative positioned nodes: Relative offset from element to offset parent
- + this.offset.parent.top * mod // The offsetParent's offset without borders (offset + border)
- - ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
- ),
- left: (
- pos.left // The absolute mouse position
- + this.offset.relative.left * mod // Only for relative positioned nodes: Relative offset from element to offset parent
- + this.offset.parent.left * mod // The offsetParent's offset without borders (offset + border)
- - ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
- )
- };
-
- },
-
- _generatePosition: function(event) {
-
- var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
-
- // This is another very weird special case that only happens for relative elements:
- // 1. If the css position is relative
- // 2. and the scroll parent is the document or similar to the offset parent
- // we have to refresh the relative offset during the scroll so there are no jumps
- if(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {
- this.offset.relative = this._getRelativeOffset();
- }
-
- var pageX = event.pageX;
- var pageY = event.pageY;
-
- /*
- * - Position constraining -
- * Constrain the position to a mix of grid, containment.
- */
-
- if(this.originalPosition) { //If we are not dragging yet, we won't check for options
-
- if(this.containment) {
- if(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;
- if(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;
- if(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;
- if(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;
- }
-
- if(o.grid) {
- var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
- pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
-
- var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
- pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
- }
-
- }
-
- return {
- top: (
- pageY // The absolute mouse position
- - this.offset.click.top // Click offset (relative to the element)
- - this.offset.relative.top // Only for relative positioned nodes: Relative offset from element to offset parent
- - this.offset.parent.top // The offsetParent's offset without borders (offset + border)
- + ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
- ),
- left: (
- pageX // The absolute mouse position
- - this.offset.click.left // Click offset (relative to the element)
- - this.offset.relative.left // Only for relative positioned nodes: Relative offset from element to offset parent
- - this.offset.parent.left // The offsetParent's offset without borders (offset + border)
- + ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
- )
- };
-
- },
-
- _clear: function() {
- this.helper.removeClass("ui-draggable-dragging");
- if(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();
- //if($.ui.ddmanager) $.ui.ddmanager.current = null;
- this.helper = null;
- this.cancelHelperRemoval = false;
- },
-
- // From now on bulk stuff - mainly helpers
-
- _trigger: function(type, event, ui) {
- ui = ui || this._uiHash();
- $.ui.plugin.call(this, type, [event, ui]);
- if(type == "drag") this.positionAbs = this._convertPositionTo("absolute"); //The absolute position has to be recalculated after plugins
- return $.widget.prototype._trigger.call(this, type, event, ui);
- },
-
- plugins: {},
-
- _uiHash: function(event) {
- return {
- helper: this.helper,
- position: this.position,
- absolutePosition: this.positionAbs, //deprecated
- offset: this.positionAbs
- };
- }
-
-}));
-
-$.extend($.ui.draggable, {
- version: "1.7.2",
- eventPrefix: "drag",
- defaults: {
- addClasses: true,
- appendTo: "parent",
- axis: false,
- cancel: ":input,option",
- connectToSortable: false,
- containment: false,
- cursor: "auto",
- cursorAt: false,
- delay: 0,
- distance: 1,
- grid: false,
- handle: false,
- helper: "original",
- iframeFix: false,
- opacity: false,
- refreshPositions: false,
- revert: false,
- revertDuration: 500,
- scope: "default",
- scroll: true,
- scrollSensitivity: 20,
- scrollSpeed: 20,
- snap: false,
- snapMode: "both",
- snapTolerance: 20,
- stack: false,
- zIndex: false
- }
-});
-
-$.ui.plugin.add("draggable", "connectToSortable", {
- start: function(event, ui) {
-
- var inst = $(this).data("draggable"), o = inst.options,
- uiSortable = $.extend({}, ui, { item: inst.element });
- inst.sortables = [];
- $(o.connectToSortable).each(function() {
- var sortable = $.data(this, 'sortable');
- if (sortable && !sortable.options.disabled) {
- inst.sortables.push({
- instance: sortable,
- shouldRevert: sortable.options.revert
- });
- sortable._refreshItems(); //Do a one-time refresh at start to refresh the containerCache
- sortable._trigger("activate", event, uiSortable);
- }
- });
-
- },
- stop: function(event, ui) {
-
- //If we are still over the sortable, we fake the stop event of the sortable, but also remove helper
- var inst = $(this).data("draggable"),
- uiSortable = $.extend({}, ui, { item: inst.element });
-
- $.each(inst.sortables, function() {
- if(this.instance.isOver) {
-
- this.instance.isOver = 0;
-
- inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance
- this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)
-
- //The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid'
- if(this.shouldRevert) this.instance.options.revert = true;
-
- //Trigger the stop of the sortable
- this.instance._mouseStop(event);
-
- this.instance.options.helper = this.instance.options._helper;
-
- //If the helper has been the original item, restore properties in the sortable
- if(inst.options.helper == 'original')
- this.instance.currentItem.css({ top: 'auto', left: 'auto' });
-
- } else {
- this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance
- this.instance._trigger("deactivate", event, uiSortable);
- }
-
- });
-
- },
- drag: function(event, ui) {
-
- var inst = $(this).data("draggable"), self = this;
-
- var checkPos = function(o) {
- var dyClick = this.offset.click.top, dxClick = this.offset.click.left;
- var helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left;
- var itemHeight = o.height, itemWidth = o.width;
- var itemTop = o.top, itemLeft = o.left;
-
- return $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);
- };
-
- $.each(inst.sortables, function(i) {
-
- //Copy over some variables to allow calling the sortable's native _intersectsWith
- this.instance.positionAbs = inst.positionAbs;
- this.instance.helperProportions = inst.helperProportions;
- this.instance.offset.click = inst.offset.click;
-
- if(this.instance._intersectsWith(this.instance.containerCache)) {
-
- //If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
- if(!this.instance.isOver) {
-
- this.instance.isOver = 1;
- //Now we fake the start of dragging for the sortable instance,
- //by cloning the list group item, appending it to the sortable and using it as inst.currentItem
- //We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)
- this.instance.currentItem = $(self).clone().appendTo(this.instance.element).data("sortable-item", true);
- this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it
- this.instance.options.helper = function() { return ui.helper[0]; };
-
- event.target = this.instance.currentItem[0];
- this.instance._mouseCapture(event, true);
- this.instance._mouseStart(event, true, true);
-
- //Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes
- this.instance.offset.click.top = inst.offset.click.top;
- this.instance.offset.click.left = inst.offset.click.left;
- this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;
- this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;
-
- inst._trigger("toSortable", event);
- inst.dropped = this.instance.element; //draggable revert needs that
- //hack so receive/update callbacks work (mostly)
- inst.currentItem = inst.element;
- this.instance.fromOutside = inst;
-
- }
-
- //Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable
- if(this.instance.currentItem) this.instance._mouseDrag(event);
-
- } else {
-
- //If it doesn't intersect with the sortable, and it intersected before,
- //we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval
- if(this.instance.isOver) {
-
- this.instance.isOver = 0;
- this.instance.cancelHelperRemoval = true;
-
- //Prevent reverting on this forced stop
- this.instance.options.revert = false;
-
- // The out event needs to be triggered independently
- this.instance._trigger('out', event, this.instance._uiHash(this.instance));
-
- this.instance._mouseStop(event, true);
- this.instance.options.helper = this.instance.options._helper;
-
- //Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size
- this.instance.currentItem.remove();
- if(this.instance.placeholder) this.instance.placeholder.remove();
-
- inst._trigger("fromSortable", event);
- inst.dropped = false; //draggable revert needs that
- }
-
- };
-
- });
-
- }
-});
-
-$.ui.plugin.add("draggable", "cursor", {
- start: function(event, ui) {
- var t = $('body'), o = $(this).data('draggable').options;
- if (t.css("cursor")) o._cursor = t.css("cursor");
- t.css("cursor", o.cursor);
- },
- stop: function(event, ui) {
- var o = $(this).data('draggable').options;
- if (o._cursor) $('body').css("cursor", o._cursor);
- }
-});
-
-$.ui.plugin.add("draggable", "iframeFix", {
- start: function(event, ui) {
- var o = $(this).data('draggable').options;
- $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
- $('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
- .css({
- width: this.offsetWidth+"px", height: this.offsetHeight+"px",
- position: "absolute", opacity: "0.001", zIndex: 1000
- })
- .css($(this).offset())
- .appendTo("body");
- });
- },
- stop: function(event, ui) {
- $("div.ui-draggable-iframeFix").each(function() { this.parentNode.removeChild(this); }); //Remove frame helpers
- }
-});
-
-$.ui.plugin.add("draggable", "opacity", {
- start: function(event, ui) {
- var t = $(ui.helper), o = $(this).data('draggable').options;
- if(t.css("opacity")) o._opacity = t.css("opacity");
- t.css('opacity', o.opacity);
- },
- stop: function(event, ui) {
- var o = $(this).data('draggable').options;
- if(o._opacity) $(ui.helper).css('opacity', o._opacity);
- }
-});
-
-$.ui.plugin.add("draggable", "scroll", {
- start: function(event, ui) {
- var i = $(this).data("draggable");
- if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();
- },
- drag: function(event, ui) {
-
- var i = $(this).data("draggable"), o = i.options, scrolled = false;
-
- if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') {
-
- if(!o.axis || o.axis != 'x') {
- if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)
- i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;
- else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity)
- i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;
- }
-
- if(!o.axis || o.axis != 'y') {
- if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)
- i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;
- else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity)
- i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;
- }
-
- } else {
-
- if(!o.axis || o.axis != 'x') {
- if(event.pageY - $(document).scrollTop() < o.scrollSensitivity)
- scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
- else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)
- scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
- }
-
- if(!o.axis || o.axis != 'y') {
- if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)
- scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
- else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)
- scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
- }
-
- }
-
- if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)
- $.ui.ddmanager.prepareOffsets(i, event);
-
- }
-});
-
-$.ui.plugin.add("draggable", "snap", {
- start: function(event, ui) {
-
- var i = $(this).data("draggable"), o = i.options;
- i.snapElements = [];
-
- $(o.snap.constructor != String ? ( o.snap.items || ':data(draggable)' ) : o.snap).each(function() {
- var $t = $(this); var $o = $t.offset();
- if(this != i.element[0]) i.snapElements.push({
- item: this,
- width: $t.outerWidth(), height: $t.outerHeight(),
- top: $o.top, left: $o.left
- });
- });
-
- },
- drag: function(event, ui) {
-
- var inst = $(this).data("draggable"), o = inst.options;
- var d = o.snapTolerance;
-
- var x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
- y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
-
- for (var i = inst.snapElements.length - 1; i >= 0; i--){
-
- var l = inst.snapElements[i].left, r = l + inst.snapElements[i].width,
- t = inst.snapElements[i].top, b = t + inst.snapElements[i].height;
-
- //Yes, I know, this is insane ;)
- if(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {
- if(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
- inst.snapElements[i].snapping = false;
- continue;
- }
-
- if(o.snapMode != 'inner') {
- var ts = Math.abs(t - y2) <= d;
- var bs = Math.abs(b - y1) <= d;
- var ls = Math.abs(l - x2) <= d;
- var rs = Math.abs(r - x1) <= d;
- if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
- if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top;
- if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;
- if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left;
- }
-
- var first = (ts || bs || ls || rs);
-
- if(o.snapMode != 'outer') {
- var ts = Math.abs(t - y1) <= d;
- var bs = Math.abs(b - y2) <= d;
- var ls = Math.abs(l - x1) <= d;
- var rs = Math.abs(r - x2) <= d;
- if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top;
- if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
- if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left;
- if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;
- }
-
- if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))
- (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
- inst.snapElements[i].snapping = (ts || bs || ls || rs || first);
-
- };
-
- }
-});
-
-$.ui.plugin.add("draggable", "stack", {
- start: function(event, ui) {
-
- var o = $(this).data("draggable").options;
-
- var group = $.makeArray($(o.stack.group)).sort(function(a,b) {
- return (parseInt($(a).css("zIndex"),10) || o.stack.min) - (parseInt($(b).css("zIndex"),10) || o.stack.min);
- });
-
- $(group).each(function(i) {
- this.style.zIndex = o.stack.min + i;
- });
-
- this[0].style.zIndex = o.stack.min + group.length;
-
- }
-});
-
-$.ui.plugin.add("draggable", "zIndex", {
- start: function(event, ui) {
- var t = $(ui.helper), o = $(this).data("draggable").options;
- if(t.css("zIndex")) o._zIndex = t.css("zIndex");
- t.css('zIndex', o.zIndex);
- },
- stop: function(event, ui) {
- var o = $(this).data("draggable").options;
- if(o._zIndex) $(ui.helper).css('zIndex', o._zIndex);
- }
-});
-
-})(jQuery);
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.droppable.js b/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.droppable.js
deleted file mode 100755
index 8e7be33..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.droppable.js
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * jQuery UI Droppable 1.7.2
- *
- * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Droppables
- *
- * Depends:
- * ui.core.js
- * ui.draggable.js
- */
-(function($) {
-
-$.widget("ui.droppable", {
-
- _init: function() {
-
- var o = this.options, accept = o.accept;
- this.isover = 0; this.isout = 1;
-
- this.options.accept = this.options.accept && $.isFunction(this.options.accept) ? this.options.accept : function(d) {
- return d.is(accept);
- };
-
- //Store the droppable's proportions
- this.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };
-
- // Add the reference and positions to the manager
- $.ui.ddmanager.droppables[this.options.scope] = $.ui.ddmanager.droppables[this.options.scope] || [];
- $.ui.ddmanager.droppables[this.options.scope].push(this);
-
- (this.options.addClasses && this.element.addClass("ui-droppable"));
-
- },
-
- destroy: function() {
- var drop = $.ui.ddmanager.droppables[this.options.scope];
- for ( var i = 0; i < drop.length; i++ )
- if ( drop[i] == this )
- drop.splice(i, 1);
-
- this.element
- .removeClass("ui-droppable ui-droppable-disabled")
- .removeData("droppable")
- .unbind(".droppable");
- },
-
- _setData: function(key, value) {
-
- if(key == 'accept') {
- this.options.accept = value && $.isFunction(value) ? value : function(d) {
- return d.is(value);
- };
- } else {
- $.widget.prototype._setData.apply(this, arguments);
- }
-
- },
-
- _activate: function(event) {
- var draggable = $.ui.ddmanager.current;
- if(this.options.activeClass) this.element.addClass(this.options.activeClass);
- (draggable && this._trigger('activate', event, this.ui(draggable)));
- },
-
- _deactivate: function(event) {
- var draggable = $.ui.ddmanager.current;
- if(this.options.activeClass) this.element.removeClass(this.options.activeClass);
- (draggable && this._trigger('deactivate', event, this.ui(draggable)));
- },
-
- _over: function(event) {
-
- var draggable = $.ui.ddmanager.current;
- if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element
-
- if (this.options.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
- if(this.options.hoverClass) this.element.addClass(this.options.hoverClass);
- this._trigger('over', event, this.ui(draggable));
- }
-
- },
-
- _out: function(event) {
-
- var draggable = $.ui.ddmanager.current;
- if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element
-
- if (this.options.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
- if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);
- this._trigger('out', event, this.ui(draggable));
- }
-
- },
-
- _drop: function(event,custom) {
-
- var draggable = custom || $.ui.ddmanager.current;
- if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; // Bail if draggable and droppable are same element
-
- var childrenIntersection = false;
- this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function() {
- var inst = $.data(this, 'droppable');
- if(inst.options.greedy && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)) {
- childrenIntersection = true; return false;
- }
- });
- if(childrenIntersection) return false;
-
- if(this.options.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
- if(this.options.activeClass) this.element.removeClass(this.options.activeClass);
- if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);
- this._trigger('drop', event, this.ui(draggable));
- return this.element;
- }
-
- return false;
-
- },
-
- ui: function(c) {
- return {
- draggable: (c.currentItem || c.element),
- helper: c.helper,
- position: c.position,
- absolutePosition: c.positionAbs, //deprecated
- offset: c.positionAbs
- };
- }
-
-});
-
-$.extend($.ui.droppable, {
- version: "1.7.2",
- eventPrefix: 'drop',
- defaults: {
- accept: '*',
- activeClass: false,
- addClasses: true,
- greedy: false,
- hoverClass: false,
- scope: 'default',
- tolerance: 'intersect'
- }
-});
-
-$.ui.intersect = function(draggable, droppable, toleranceMode) {
-
- if (!droppable.offset) return false;
-
- var x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,
- y1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height;
- var l = droppable.offset.left, r = l + droppable.proportions.width,
- t = droppable.offset.top, b = t + droppable.proportions.height;
-
- switch (toleranceMode) {
- case 'fit':
- return (l < x1 && x2 < r
- && t < y1 && y2 < b);
- break;
- case 'intersect':
- return (l < x1 + (draggable.helperProportions.width / 2) // Right Half
- && x2 - (draggable.helperProportions.width / 2) < r // Left Half
- && t < y1 + (draggable.helperProportions.height / 2) // Bottom Half
- && y2 - (draggable.helperProportions.height / 2) < b ); // Top Half
- break;
- case 'pointer':
- var draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),
- draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),
- isOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);
- return isOver;
- break;
- case 'touch':
- return (
- (y1 >= t && y1 <= b) || // Top edge touching
- (y2 >= t && y2 <= b) || // Bottom edge touching
- (y1 < t && y2 > b) // Surrounded vertically
- ) && (
- (x1 >= l && x1 <= r) || // Left edge touching
- (x2 >= l && x2 <= r) || // Right edge touching
- (x1 < l && x2 > r) // Surrounded horizontally
- );
- break;
- default:
- return false;
- break;
- }
-
-};
-
-/*
- This manager tracks offsets of draggables and droppables
-*/
-$.ui.ddmanager = {
- current: null,
- droppables: { 'default': [] },
- prepareOffsets: function(t, event) {
-
- var m = $.ui.ddmanager.droppables[t.options.scope];
- var type = event ? event.type : null; // workaround for #2317
- var list = (t.currentItem || t.element).find(":data(droppable)").andSelf();
-
- droppablesLoop: for (var i = 0; i < m.length; i++) {
-
- if(m[i].options.disabled || (t && !m[i].options.accept.call(m[i].element[0],(t.currentItem || t.element)))) continue; //No disabled and non-accepted
- for (var j=0; j < list.length; j++) { if(list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item
- m[i].visible = m[i].element.css("display") != "none"; if(!m[i].visible) continue; //If the element is not visible, continue
-
- m[i].offset = m[i].element.offset();
- m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };
-
- if(type == "mousedown") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables
-
- }
-
- },
- drop: function(draggable, event) {
-
- var dropped = false;
- $.each($.ui.ddmanager.droppables[draggable.options.scope], function() {
-
- if(!this.options) return;
- if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))
- dropped = this._drop.call(this, event);
-
- if (!this.options.disabled && this.visible && this.options.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
- this.isout = 1; this.isover = 0;
- this._deactivate.call(this, event);
- }
-
- });
- return dropped;
-
- },
- drag: function(draggable, event) {
-
- //If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.
- if(draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);
-
- //Run through all droppables and check their positions based on specific tolerance options
-
- $.each($.ui.ddmanager.droppables[draggable.options.scope], function() {
-
- if(this.options.disabled || this.greedyChild || !this.visible) return;
- var intersects = $.ui.intersect(draggable, this, this.options.tolerance);
-
- var c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null);
- if(!c) return;
-
- var parentInstance;
- if (this.options.greedy) {
- var parent = this.element.parents(':data(droppable):eq(0)');
- if (parent.length) {
- parentInstance = $.data(parent[0], 'droppable');
- parentInstance.greedyChild = (c == 'isover' ? 1 : 0);
- }
- }
-
- // we just moved into a greedy child
- if (parentInstance && c == 'isover') {
- parentInstance['isover'] = 0;
- parentInstance['isout'] = 1;
- parentInstance._out.call(parentInstance, event);
- }
-
- this[c] = 1; this[c == 'isout' ? 'isover' : 'isout'] = 0;
- this[c == "isover" ? "_over" : "_out"].call(this, event);
-
- // we just moved out of a greedy child
- if (parentInstance && c == 'isout') {
- parentInstance['isout'] = 0;
- parentInstance['isover'] = 1;
- parentInstance._over.call(parentInstance, event);
- }
- });
-
- }
-};
-
-})(jQuery);
diff --git a/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.scoreboard.js b/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.scoreboard.js
deleted file mode 100755
index 53a930a..0000000
--- a/examples/lessons/6_Maths_AddingAndSubtractingVariables/js/ui.scoreboard.js
+++ /dev/null
@@ -1,107 +0,0 @@
-(function($){
- $.widget('ui.scoreboard',
- {
- getScore : function(){
- return this._getData('score');
- },
- setScore : function(newScore){
- this._setData('score', parseInt(newScore));
- this._refresh();
- },
- getTotal : function(){
- return this._getData('total');
- },
- setTotal : function(newTotal){
- this._setData('total', parseInt(newTotal));
- this._refresh();
- },
- reset : function(){
- this._setData('score', this._getData('initialScore'));
- this._setData('total', this._getData('initialTotal'));
- this._refresh();
- },
- inc : function(val){
- var incVal = parseInt(val) || 1;
- this._setData('score', this._getData('score') + incVal);
- this._refresh();
- if(this._getData('winScore') === this._getData('score')){
- this.element.trigger('winGame');
- }
- },
- incTotal : function(val){
- var incVal = parseInt(val) || 1;
- this._setData('total', this._getData('total') + incVal);
- this._refresh();
- },
- dec : function(val){
- var decVal = parseInt(val) || 1;
- this._setData('score', this._getData('score') - decVal);
- this._refresh();
- },
- decTotal : function(val){
- var decVal = parseInt(val) || 1;
- this._setData('total', this._getData('total') - decVal);
- this._refresh();
- },
- _init : function(){
-
- var divDisplay = "inline";
- var score = this.options.score;
- var total = this.options.total;
- var layoutId = "h";
- var self = this;
-
-
- this._setData('initialScore', parseInt(this.options.score));
- this._setData('initialTotal', parseInt(this.options.total));
- this._setData('score', parseInt(this.options.score));
- this._setData('total', parseInt(this.options.total));
- this._setData('winScore', parseInt(this.options.winningScore) || 0);
-
- if(this.options.layout === "vertical"){
- layoutId = "v";
- }
-
- this.evWinGame = document.createEvent('Events');
-
- this.element.addClass('ui-scoreboard-container-' + layoutId +
- ' ui-widget ui-widget-content ui-corner-all');
-
- var clone = $('<div>')
- .addClass('ui-scoreboard-spacing-' + layoutId);
- this._scoreText = $("<div>Score</div>")
- .addClass('ui-scoreboard-spacing-'+ layoutId +
- ' ui-corner-all ui-scoreboard-text')
- .appendTo(this.element);
- this._score = $("<div>" + score + "</div>")
- .addClass('ui-scoreboard-spacing-' + layoutId +
- ' ui-scoreboard-number-' + layoutId)
- .appendTo(this.element);
- $("<div>Total</div>")
- .addClass('ui-scoreboard-spacing-' + layoutId +
- ' ui-corner-all ' +
- 'ui-scoreboard-text')
- .appendTo(this.element);
- this._total = $("<div>" + total + "</div>")
- .addClass('ui-scoreboard-spacing-' + layoutId +
- ' ui-scoreboard-number-' + layoutId)
- .appendTo(this.element);
- },
- _refresh : function(){
- this._score.text(this._getData('score'));
- this._total.text(this._getData('total'));
- },
- destroy : function(){
- this.element.remove();
- $.widget.prototype.destroy.apply(this, arguments);
- }
-
-
- });
-
- $.ui.scoreboard.getter = ['getScore', 'getTotal'];
- $.ui.scoreboard.defaults = {
- score: 0, total: 0, layout: "horizontal", winningScore: 0
- };
-
- })(jQuery); \ No newline at end of file