Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/examples/lessons/6_Maths_quickDivision
diff options
context:
space:
mode:
Diffstat (limited to 'examples/lessons/6_Maths_quickDivision')
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/audio/correct.wavbin111176 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/audio/incorrect.wavbin77660 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/bg_footer.pngbin137 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/bg_header.pngbin225 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/bg_title_block.pngbin274 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/borderWall.pngbin33182 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/btn_back.pngbin2665 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/btn_back_hover.pngbin4038 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/btn_help.pngbin2755 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/btn_help_hover.pngbin4190 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/btn_next.pngbin2773 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/btn_next_hover.pngbin3996 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/btn_ole.pngbin4842 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/btn_ole_hover.pngbin6253 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/btn_play_again.pngbin5627 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/btn_play_again_hover.pngbin5468 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/btn_play_again_mouse_down.pngbin5688 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/btn_start.pngbin5127 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/btn_start_hover.pngbin4966 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/btn_start_mouse_down.pngbin5109 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/cupBoard.pngbin40422 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/help.pngbin59741 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/title_block_lt.pngbin1057 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/title_block_rt.pngbin1074 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/assets/image/tv.pngbin19605 -> 0 bytes
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/css/lesson.css300
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/index.html41
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/js/jquery-1.3.2.min.js19
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/js/karma.js1018
-rwxr-xr-xexamples/lessons/6_Maths_quickDivision/js/lesson.js185
30 files changed, 0 insertions, 1563 deletions
diff --git a/examples/lessons/6_Maths_quickDivision/assets/audio/correct.wav b/examples/lessons/6_Maths_quickDivision/assets/audio/correct.wav
deleted file mode 100755
index a49ba33..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/audio/correct.wav
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/audio/incorrect.wav b/examples/lessons/6_Maths_quickDivision/assets/audio/incorrect.wav
deleted file mode 100755
index 906c6a3..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/audio/incorrect.wav
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/bg_footer.png b/examples/lessons/6_Maths_quickDivision/assets/image/bg_footer.png
deleted file mode 100755
index 4bd44fa..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/bg_footer.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/bg_header.png b/examples/lessons/6_Maths_quickDivision/assets/image/bg_header.png
deleted file mode 100755
index f421817..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/bg_header.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/bg_title_block.png b/examples/lessons/6_Maths_quickDivision/assets/image/bg_title_block.png
deleted file mode 100755
index 7311891..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/bg_title_block.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/borderWall.png b/examples/lessons/6_Maths_quickDivision/assets/image/borderWall.png
deleted file mode 100755
index adbacdc..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/borderWall.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/btn_back.png b/examples/lessons/6_Maths_quickDivision/assets/image/btn_back.png
deleted file mode 100755
index d9fbf14..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/btn_back.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/btn_back_hover.png b/examples/lessons/6_Maths_quickDivision/assets/image/btn_back_hover.png
deleted file mode 100755
index 0911fcc..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/btn_back_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/btn_help.png b/examples/lessons/6_Maths_quickDivision/assets/image/btn_help.png
deleted file mode 100755
index 6753e9c..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/btn_help.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/btn_help_hover.png b/examples/lessons/6_Maths_quickDivision/assets/image/btn_help_hover.png
deleted file mode 100755
index d3ccd92..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/btn_help_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/btn_next.png b/examples/lessons/6_Maths_quickDivision/assets/image/btn_next.png
deleted file mode 100755
index 9d70993..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/btn_next.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/btn_next_hover.png b/examples/lessons/6_Maths_quickDivision/assets/image/btn_next_hover.png
deleted file mode 100755
index 2cd4d37..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/btn_next_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/btn_ole.png b/examples/lessons/6_Maths_quickDivision/assets/image/btn_ole.png
deleted file mode 100755
index 0e775e9..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/btn_ole.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/btn_ole_hover.png b/examples/lessons/6_Maths_quickDivision/assets/image/btn_ole_hover.png
deleted file mode 100755
index c43c5f7..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/btn_ole_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/btn_play_again.png b/examples/lessons/6_Maths_quickDivision/assets/image/btn_play_again.png
deleted file mode 100755
index 3594d18..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/btn_play_again.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/btn_play_again_hover.png b/examples/lessons/6_Maths_quickDivision/assets/image/btn_play_again_hover.png
deleted file mode 100755
index ebb8f8c..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/btn_play_again_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/btn_play_again_mouse_down.png b/examples/lessons/6_Maths_quickDivision/assets/image/btn_play_again_mouse_down.png
deleted file mode 100755
index 07d6e45..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/btn_play_again_mouse_down.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/btn_start.png b/examples/lessons/6_Maths_quickDivision/assets/image/btn_start.png
deleted file mode 100755
index 32e5f20..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/btn_start.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/btn_start_hover.png b/examples/lessons/6_Maths_quickDivision/assets/image/btn_start_hover.png
deleted file mode 100755
index 811ce78..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/btn_start_hover.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/btn_start_mouse_down.png b/examples/lessons/6_Maths_quickDivision/assets/image/btn_start_mouse_down.png
deleted file mode 100755
index 5acd43b..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/btn_start_mouse_down.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/cupBoard.png b/examples/lessons/6_Maths_quickDivision/assets/image/cupBoard.png
deleted file mode 100755
index 98e9985..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/cupBoard.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/help.png b/examples/lessons/6_Maths_quickDivision/assets/image/help.png
deleted file mode 100755
index 0b22aa4..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/help.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/title_block_lt.png b/examples/lessons/6_Maths_quickDivision/assets/image/title_block_lt.png
deleted file mode 100755
index b1c0e90..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/title_block_lt.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/title_block_rt.png b/examples/lessons/6_Maths_quickDivision/assets/image/title_block_rt.png
deleted file mode 100755
index 275daaf..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/title_block_rt.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/assets/image/tv.png b/examples/lessons/6_Maths_quickDivision/assets/image/tv.png
deleted file mode 100755
index cbaa755..0000000
--- a/examples/lessons/6_Maths_quickDivision/assets/image/tv.png
+++ /dev/null
Binary files differ
diff --git a/examples/lessons/6_Maths_quickDivision/css/lesson.css b/examples/lessons/6_Maths_quickDivision/css/lesson.css
deleted file mode 100755
index e649943..0000000
--- a/examples/lessons/6_Maths_quickDivision/css/lesson.css
+++ /dev/null
@@ -1,300 +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: 98%;
- padding: 0.5em;
- height: 375px;
- background-color: #FCFFA4;
-}
- #section{
- width: 900px;
- height: 375px;
- margin: 0 auto;
- z-index: 1;
- }
-
- #left-side{
- float:left;
- width: 360px;
- height: 360px;
- z-index: 2;
- }
- #tv{
- position:relative;
- margin-left: 12px;
- width: 215px;
- height: 191px;
- background-image: url(../assets/image/tv.png);
- z-index:5;
- }
- #tvLayer{
- position:absolute;
- top: 17px;
- left: 16px;
- width: 179px;
- height: 128px;
- font: 40px/60px Verdana, Geneva, Arial, Helvetica, sans-serif;
- color: #FFF;
- text-align:center;
- font-weight:bold;
- -moz-border-radius : 10px;
- -webkit-border-radius : 10px;
- border-radius : 10px;
- z-index: 1;
- }
- .tvOff{
- background-color: #78040E;
- border: 2px solid #78040E;
-
- }
- .tvOn{
- background-color: #0000FF;
- border: 2px solid #0000FF;
- }
-
- #cupBoard{
- width: 280px;
- height: 259px;
- background: url(../assets/image/cupBoard.png) no-repeat;
- }
-
- #right-side{
- float:right;
- width: 420px;
- height: 365px;
- }
- #borderWall{
- position:relative;
- width: 420px;
- height: 320px;
- background: url(../assets/image/borderWall.png) no-repeat;
- }
- #imgDisplay{
- position:absolute;
- top: 53px;
- left: 62px;
- width: 294px;
- height:210px;
- }
- .default{
- float:left;
- width: 69px;
- height: 48px;
- background-color:#FCFFA4;
- border: 2px solid #FCFFA4;
- }
- .correct{
- float:left;
- width: 69px;
- height: 48px;
- background-color:#A6E4FE;
- border: 2px solid #F9F900;
- }
- #calcSection{
- margin-top: 10px;
- width: 420px;
- height: 35px;
- text-align:center;
- font: 30px/35px Verdana, Geneva, Arial, Helvetica, sans-serif;
- color: #000;
- font-weight: bold;
- }
-
- input.textBox{
- size:3;
- font: 30px/35px Verdana, Geneva, Arial, Helvetica, sans-serif;
- font-weight: bold;
- height:35px;
- width: 60px;
- text-align:center;
- }
- .focus {
- background-color: #FF9900;
- }
- .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;
- }
- #timerBar {
- float: left;
- margin-left: 300px;
- width: 150px;
- height:35px;
- padding-left: 10px;
- padding-top: 0px;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- color: #FFFF00;
- font-size: 16pt;
- font-weight: bold;
- }
- #timerTitle{
- float: left;
- margin-top: 20px;
- width: 50px;
- height: 35px;
- }
-
- .timerBoxes{ /* Show the timer running after the game has began.... */
- float:right;
- margin: 0.5em 0 0 0.1em;
- width: 80px;
- height: 30px;
- border: 2px dotted green;
- padding: 3px;
- color: blue;
- text-align:center;
- font : bold 25px Arial Black, Times New Roman;
- background: #ACC;
- }
diff --git a/examples/lessons/6_Maths_quickDivision/index.html b/examples/lessons/6_Maths_quickDivision/index.html
deleted file mode 100755
index f7e030f..0000000
--- a/examples/lessons/6_Maths_quickDivision/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<head>
- <title>Class 6 Maths Quick Division</title>
- <meta name="keywords" content="karma,javascript,html5,sugar,sugarlabs,gsoc,ole,nepal" />
- <link type="text/css" rel="stylesheet" href="css/lesson.css" />
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <link type="image/ico" rel="icon" href="../../assets/default/image/favicon.ico" />
- <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
- <script type="text/javascript" src="js/karma.js"></script>
- <script type="text/javascript" src="js/lesson.js"></script>
-</head>
-<body>
- <div id="header">
- <div id="topbtn_left"><a href="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" />
- Quick Division<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="help"></div>
- </div>
- <form name="delayForm">
- <input type="hidden" name="delayval" size="5">
- </form>
-
- <div id="footer">
- <div id ="timerBar">
- <div id="timerTitle">Timer:</div>
- <div id="timerBox1" class="timerBoxes"></div>
- </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>
-</body>
-</html>
diff --git a/examples/lessons/6_Maths_quickDivision/js/jquery-1.3.2.min.js b/examples/lessons/6_Maths_quickDivision/js/jquery-1.3.2.min.js
deleted file mode 100755
index b1ae21d..0000000
--- a/examples/lessons/6_Maths_quickDivision/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_quickDivision/js/karma.js b/examples/lessons/6_Maths_quickDivision/js/karma.js
deleted file mode 100755
index 03f027b..0000000
--- a/examples/lessons/6_Maths_quickDivision/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_quickDivision/js/lesson.js b/examples/lessons/6_Maths_quickDivision/js/lesson.js
deleted file mode 100755
index 6bbc937..0000000
--- a/examples/lessons/6_Maths_quickDivision/js/lesson.js
+++ /dev/null
@@ -1,185 +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 currentQuestion;
- var TOTAL_QUES = 16;
- var randPositions = [];
- var numFst;
- var num2nd;
- var s = 0; var play = 0; var restart = 0;
-
- var checkTime = function(timePara){
- if (timePara<10 )
- {
- timePara="0" + timePara;
- }
- return timePara;
- };
-
- var startTimer = function(){
- s=checkTime(s);
- $('#timerBox1').html(s);
- increaseTime();
- };
-
- var increaseTime = function(){
- if(play == 1){
- if(restart == 1){
- s = 0;
- }
- s++;
- s=checkTime(s);
- $('#timerBox1').html(s);
- var t=setTimeout(function(){increaseTime();},1000);
- }
- };
-
- var genRandPosition=function (){correctCounter = 0;
- 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 isInteger = function(s)
- {
- var i;
- s = s.toString();
- for (i = 0; i < s.length; i++)
- {
- var c = s.charAt(i);
- if (isNaN(c))
- {
-
- return false;
- }
- }
- return true;
- };
-
- var next_question = function (){
-
- var flag_done = 0;
- numFst = k.rand(12,99);
- num2nd = k.rand(2,12);
- do{
- numFst = k.rand(20,99);
- if(isInteger(numFst/num2nd)){
- flag_done = 1;
- }
- }while(flag_done!=1);
- $('#calcSection').html('').append(numFst +' &#247; '+num2nd+' = ');
- $('#calcSection').append('<input type="text" class="textBox" maxlength="3" />');
- foucs_blur();
- $('.textBox').focus();
-
- };
-
- function game_start(){
- genRandPosition();
- play = 1;
- startTimer();
- next_question();
- }
-
- function game() {
- totalCounter = 0;
- s = 0; play = 0; restart = 0;
- $('#section').html('').append('<div id="left-side"></div>');
- $('#left-side').append('<div id="tv"></div>');
- $('#tv').append('<div id="tvLayer"></div>');
- $('#tvLayer').addClass('tvOff');
- $('#left-side').append('<div id="cupBoard"></div>');
- $('#section').append('<div id="right-side"></div>');
- $('#right-side').append('<div id="borderWall"></div>');
- $('#borderWall').append('<div id="imgDisplay"></div>');
- for(var i = 0; i< TOTAL_QUES; i++){
- $('#imgDisplay').append('<div id="img'+i+'></div>');
- $('#img'+i).addClass('default');
- }
- $('#right-side').append('<div id="calcSection"></div>');
-
- $('#help').hide();
-
- }
- game();
- var delay_nextQues = function(){
- document.delayForm.delayval.value = 1;
- next_question();
- };
-
- var delay_gameOver = function(){
- document.delayForm.delayval.value = 1;
- $('#calcSection').html('');
- play = 0;
- for(var i = 0; i< TOTAL_QUES; i++){
- $('#imgDisplay').append('<div id="img'+i+'></div>');
- $('#img'+i).removeClass('correct').addClass('default');
- }
- $('#tvLayer').addClass('tvOn').append('खेल खत्तम।');
-
- };
-
- var check_answer = function(){
- textVal = $('.textBox').val();
- if((numFst/num2nd) == textVal){
- totalCounter++;
- k.audio.correct.play();
- $('#img'+randPositions[totalCounter]).removeClass('default').addClass('correct');
- if(totalCounter === TOTAL_QUES){
- t=setTimeout(function(){delay_gameOver();},1000);
- }
- else{
- t=setTimeout(function(){delay_nextQues();},1000);
- }
- }
- else{
- 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();
- }
-
- });
-
- }
-
- $('#linkStart').click(function(){
- game_start();
- });
-
- $('#linkPlayAgain').click(function(){
- 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