From 9d35718ba13e2c6586e71be8f2ddc0f1bb22c134 Mon Sep 17 00:00:00 2001 From: Andros Fenollosa Date: Mon, 14 Apr 2014 19:21:32 +0200 Subject: [PATCH] Finished version. In beta state. --- css/fonts.css | 9 + css/main.css | 431 +++++++++++++++++ css/normalize.css | 527 +++++++++++++++++++++ css/normalize.min.css | 1 + fonts/Bellerose.eot | Bin 0 -> 14136 bytes fonts/Bellerose.otf | Bin 0 -> 21772 bytes fonts/Bellerose.svg | 450 ++++++++++++++++++ fonts/Bellerose.ttf | Bin 0 -> 13964 bytes fonts/Bellerose.woff | Bin 0 -> 10548 bytes index.html | 58 +++ js/controlador.js | 17 + js/fastclick.js | 788 +++++++++++++++++++++++++++++++ js/main.js | 4 + js/metodo.js | 353 ++++++++++++++ js/vendor/jquery-1.11.0.min.js | 4 + js/vendor/modernizr-2.6.2.min.js | 4 + js/vista.js | 9 + 17 files changed, 2655 insertions(+) create mode 100644 css/fonts.css create mode 100644 css/main.css create mode 100644 css/normalize.css create mode 100644 css/normalize.min.css create mode 100644 fonts/Bellerose.eot create mode 100644 fonts/Bellerose.otf create mode 100644 fonts/Bellerose.svg create mode 100644 fonts/Bellerose.ttf create mode 100644 fonts/Bellerose.woff create mode 100644 index.html create mode 100644 js/controlador.js create mode 100644 js/fastclick.js create mode 100644 js/main.js create mode 100644 js/metodo.js create mode 100644 js/vendor/jquery-1.11.0.min.js create mode 100644 js/vendor/modernizr-2.6.2.min.js create mode 100644 js/vista.js diff --git a/css/fonts.css b/css/fonts.css new file mode 100644 index 0000000..d027653 --- /dev/null +++ b/css/fonts.css @@ -0,0 +1,9 @@ +/** Generated by FG **/ +@font-face { + font-family: 'Bellerose'; + src: url('../fonts/Bellerose.eot'); + src: local('☺'), url('../fonts/Bellerose.woff') format('woff'), url('../fonts/Bellerose.ttf') format('truetype'), url('../fonts/Bellerose.svg') format('svg'); + font-weight: normal; + font-style: normal; +} + diff --git a/css/main.css b/css/main.css new file mode 100644 index 0000000..4231125 --- /dev/null +++ b/css/main.css @@ -0,0 +1,431 @@ +/*! HTML5 Boilerplate v4.3.0 | MIT License | http://h5bp.com/ */ + +html, +button, +input, +select, +textarea { + color: #222; +} + +html { + font-size: 1em; + line-height: 1.4; +} + +::-moz-selection { + background: #b3d4fc; + text-shadow: none; +} + +::selection { + background: #b3d4fc; + text-shadow: none; +} + +hr { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #ccc; + margin: 1em 0; + padding: 0; +} + +audio, +canvas, +img, +video { + vertical-align: middle; +} + +fieldset { + border: 0; + margin: 0; + padding: 0; +} + +textarea { + resize: vertical; +} + +.browsehappy { + margin: 0.2em 0; + background: #ccc; + color: #000; + padding: 0.2em 0; +} + + +/* ========================================================================== + Author's custom styles + ========================================================================== */ +/* +rojo: #C92027 +naranja: #E37818 +amarillo: #E3BE32 +verde: #058C73 +morado: #5E5D7D + */ +* { + margin: 0; + padding: 0; + -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-tap-highlight-color: transparent; +} +#content { + position: relative; + width: 100%; + height: 100%; + background-color: #5FA689; + margin: 0 auto; + overflow: hidden; + font-family: "Bellerose"; +} +#titulo { + position: absolute; + color: #E37818; + margin: 0 auto; + left: 0; + right: 0; + top: 20px; + text-align: center; + font-size: 5em; + z-index: 4; + width: 230px; + height: 100px; + font-weight: bolder; +} +#botonEmpezar { + position: absolute; + text-align: center; + top: 150px; + margin: 0 auto; + left: 0; + right: 0; + width: 120px; + height: 70px; + padding-top: 10px; + font-size: 2em; + background-color: #C92027; + color: white; + cursor: pointer; + z-index: 5; +} +#botonEmpezar:hover { + background-color: #058C73; +} +#botonNewGame { + visibility: hidden; +} +#cartelNivel { + position: absolute; + width: 400px; + height: 180px; + margin-top: -90px; + margin-left: -200px; + top: 50%; + left: 50%; + text-align: center; + font-size: 4em; + z-index: 4; + color: #E37818; + font-weight: bolder; +} +#cuadro { + position: absolute; + width: 20%; + height: 0px; + background-color: #FFDC90; + bottom: 0; + left: -25%; + z-index: 5; +} +#tutorial { + position: absolute; + width: 400px; + height: auto; + margin-top: 15%; + right: 15%; + font-size: 2em; + visibility: hidden; + z-index: 9; +} +#pulsarTutorial { + float: right; + margin-top: 50%; +} +.pulsar { + width: 150px; + height: 150px; + line-height: 150px; + margin: 0 auto; + top: -100px; + position: absolute; + box-sizing: border-box; + text-align: center; + z-index: 0; + text-transform: uppercase; +} + +.pulsar:before, +.pulsar:after { + opacity: 0; + box-sizing: border-box; + content: "\0020"; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border-radius: 100px; + border: 5px solid #fff; + box-shadow: 0 0 50px #fff, inset 0 0 50px #fff; +} + +.pulsar:after { + z-index: 1; + animation: aniPulsar 2s infinite 1s; + -webkit-animation: aniPulsar 2s infinite 1s; +} + +.pulsar:before { + z-index: 2; + animation: aniPulsar 2s infinite 1s; + -webkit-animation: aniPulsar 2s infinite; +} + +@keyframes aniPulsar { + 0% { + -webkit-transform: scale(0); + opacity: 0; + } + 50% { + opacity: 1; + } + 100% { + -webkit-transform: scale(1); + opacity: 0; + } +} +@-webkit-keyframes aniPulsar { + 0% { + -webkit-transform: scale(0); + opacity: 0; + } + 50% { + opacity: 1; + } + 100% { + -webkit-transform: scale(1); + opacity: 0; + } +} +#nivel { + position: absolute; + width: 150px; + height: 50px; + bottom: 0; + left: 0; + padding: 50px; + font-size: 3em; + color: white; +} +#toques { + position: absolute; + width: 220px; + height: 50px; + bottom: 100px; + right: 20px; + font-size: 3em; + color: white; + z-index: 1; +} +#tiempo { + position: absolute; + width: 220px; + height: 50px; + bottom: 35px; + right: 20px; + font-size: 3em; + color: white; + z-index: 1; +} +.huecoBarras { + float: left; + width: 20%; + height: 500px; + position: relative; +} + +.barras { + position: absolute; + width: 100%; + height: 0px; + cursor: pointer; + z-index: 8; +} + +#barra1 { + background-color: #C92027; +} + +#barra2 { + background-color: #E37818; +} + +#barra3 { + background-color: #E3BE32; +} + +#barra4 { + background-color: #058C73; +} + +#barra5 { + background-color: #5E5D7D; +} + +/* ========================================================================== + Media Queries + ========================================================================== */ + +@media only screen and (min-width: 35em) { + +} + +@media print, + (-o-min-device-pixel-ratio: 5/4), + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + +} + +/* ========================================================================== + Helper classes + ========================================================================== */ + +.ir { + background-color: transparent; + border: 0; + overflow: hidden; + *text-indent: -9999px; +} + +.ir:before { + content: ""; + display: block; + width: 0; + height: 150%; +} + +.hidden { + display: none !important; + visibility: hidden; +} + +.visuallyhidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +.visuallyhidden.focusable:active, +.visuallyhidden.focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; +} + +.invisible { + visibility: hidden; +} + +.clearfix:before, +.clearfix:after { + content: " "; + display: table; +} + +.clearfix:after { + clear: both; +} + +.clearfix { + *zoom: 1; +} + +/* ========================================================================== + Print styles + ========================================================================== */ + +@media print { + * { + background: transparent !important; + color: #000 !important; + box-shadow: none !important; + text-shadow: none !important; + } + + a, + a:visited { + text-decoration: underline; + } + + a[href]:after { + content: " (" attr(href) ")"; + } + + abbr[title]:after { + content: " (" attr(title) ")"; + } + + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + + thead { + display: table-header-group; + } + + tr, + img { + page-break-inside: avoid; + } + + img { + max-width: 100% !important; + } + + @page { + margin: 0.5cm; + } + + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + + h2, + h3 { + page-break-after: avoid; + } +} \ No newline at end of file diff --git a/css/normalize.css b/css/normalize.css new file mode 100644 index 0000000..42e24d6 --- /dev/null +++ b/css/normalize.css @@ -0,0 +1,527 @@ +/*! normalize.css v1.1.3 | MIT License | git.io/normalize */ + +/* ========================================================================== + HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +/** + * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. + */ + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. + * Known issue: no IE 6 support. + */ + +[hidden] { + display: none; +} + +/* ========================================================================== + Base + ========================================================================== */ + +/** + * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using + * `em` units. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-size: 100%; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Address `font-family` inconsistency between `textarea` and other form + * elements. + */ + +html, +button, +input, +select, +textarea { + font-family: sans-serif; +} + +/** + * Address margins handled incorrectly in IE 6/7. + */ + +body { + margin: 0; +} + +/* ========================================================================== + Links + ========================================================================== */ + +/** + * Address `outline` inconsistency between Chrome and other browsers. + */ + +a:focus { + outline: thin dotted; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* ========================================================================== + Typography + ========================================================================== */ + +/** + * Address font sizes and margins set differently in IE 6/7. + * Address font sizes within `section` and `article` in Firefox 4+, Safari 5, + * and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +h2 { + font-size: 1.5em; + margin: 0.83em 0; +} + +h3 { + font-size: 1.17em; + margin: 1em 0; +} + +h4 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +/** + * Address styling not present in IE 7/8/9, Safari 5, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +blockquote { + margin: 1em 40px; +} + +/** + * Address styling not present in Safari 5 and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address differences between Firefox and other browsers. + * Known issue: no IE 6/7 normalization. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Address styling not present in IE 6/7/8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address margins set differently in IE 6/7. + */ + +p, +pre { + margin: 1em 0; +} + +/** + * Correct font family set oddly in IE 6, Safari 4/5, and Chrome. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + _font-family: 'courier new', monospace; + font-size: 1em; +} + +/** + * Improve readability of pre-formatted text in all browsers. + */ + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +/** + * Address CSS quotes not supported in IE 6/7. + */ + +q { + quotes: none; +} + +/** + * Address `quotes` property not supported in Safari 4. + */ + +q:before, +q:after { + content: ''; + content: none; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* ========================================================================== + Lists + ========================================================================== */ + +/** + * Address margins set differently in IE 6/7. + */ + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +/** + * Address paddings set differently in IE 6/7. + */ + +menu, +ol, +ul { + padding: 0 0 0 40px; +} + +/** + * Correct list images handled incorrectly in IE 7. + */ + +nav ul, +nav ol { + list-style: none; + list-style-image: none; +} + +/* ========================================================================== + Embedded content + ========================================================================== */ + +/** + * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. + * 2. Improve image quality when scaled in IE 7. + */ + +img { + border: 0; /* 1 */ + -ms-interpolation-mode: bicubic; /* 2 */ +} + +/** + * Correct overflow displayed oddly in IE 9. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* ========================================================================== + Figures + ========================================================================== */ + +/** + * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. + */ + +figure { + margin: 0; +} + +/* ========================================================================== + Forms + ========================================================================== */ + +/** + * Correct margin displayed oddly in IE 6/7. + */ + +form { + margin: 0; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct color not being inherited in IE 6/7/8/9. + * 2. Correct text not wrapping in Firefox 3. + * 3. Correct alignment displayed oddly in IE 6/7. + */ + +legend { + border: 0; /* 1 */ + padding: 0; + white-space: normal; /* 2 */ + *margin-left: -7px; /* 3 */ +} + +/** + * 1. Correct font size not being inherited in all browsers. + * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, + * and Chrome. + * 3. Improve appearance and consistency in all browsers. + */ + +button, +input, +select, +textarea { + font-size: 100%; /* 1 */ + margin: 0; /* 2 */ + vertical-align: baseline; /* 3 */ + *vertical-align: middle; /* 3 */ +} + +/** + * Address Firefox 3+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +button, +input { + line-height: normal; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. + * Correct `select` style inheritance in Firefox 4+ and Opera. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + * 4. Remove inner spacing in IE 7 without affecting normal text inputs. + * Known issue: inner spacing remains in IE 6. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ + *overflow: visible; /* 4 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * 1. Address box sizing set to content-box in IE 8/9. + * 2. Remove excess padding in IE 8/9. + * 3. Remove excess padding in IE 7. + * Known issue: excess padding remains in IE 6. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ + *height: 13px; /* 3 */ + *width: 13px; /* 3 */ +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Remove inner padding and border in Firefox 3+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * 1. Remove default vertical scrollbar in IE 6/7/8/9. + * 2. Improve readability and alignment in all browsers. + */ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + +/* ========================================================================== + Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/css/normalize.min.css b/css/normalize.min.css new file mode 100644 index 0000000..f33b6e9 --- /dev/null +++ b/css/normalize.min.css @@ -0,0 +1 @@ +/*! normalize.css v1.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-size:100%;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}html,button,input,select,textarea{font-family:sans-serif}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em;margin:.83em 0}h3{font-size:1.17em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:1em 40px}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}p,pre{margin:1em 0}code,kbd,pre,samp{font-family:monospace,serif;_font-family:'courier new',monospace;font-size:1em}pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word}q{quotes:none}q:before,q:after{content:'';content:none}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}dl,menu,ol,ul{margin:1em 0}dd{margin:0 0 0 40px}menu,ol,ul{padding:0 0 0 40px}nav ul,nav ol{list-style:none;list-style-image:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0;white-space:normal;*margin-left:-7px}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;*overflow:visible}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*height:13px;*width:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0} \ No newline at end of file diff --git a/fonts/Bellerose.eot b/fonts/Bellerose.eot new file mode 100644 index 0000000000000000000000000000000000000000..b3fddbc58e0641b301f18414f607f8021c81a100 GIT binary patch literal 14136 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 + + + +Created by FontForge 20090914 at Fri Apr 11 10:00:25 2014 + By www-data +©1992 by James M. Harris. All rights reserved. $15 shareware. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fonts/Bellerose.ttf b/fonts/Bellerose.ttf new file mode 100644 index 0000000000000000000000000000000000000000..30ef71ea219b116bb227c44df54599facc344d0b GIT binary patch literal 13964 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 literal 0 HcmV?d00001 diff --git a/fonts/Bellerose.woff b/fonts/Bellerose.woff new file mode 100644 index 0000000000000000000000000000000000000000..6f3e0501ca9c1f595a887c81beb3b790021ff9ae GIT binary patch literal 10548 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 + + + + + + + + + + + + + + + + + + + +
+
Bars
+
Start
+
+ +

Click to raise the bar

+
+
Level 1
+
Touches 0
+
Time 0s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + diff --git a/js/controlador.js b/js/controlador.js new file mode 100644 index 0000000..f639222 --- /dev/null +++ b/js/controlador.js @@ -0,0 +1,17 @@ +/* Quita delay de smartphones al hacer click */ +window.addEventListener('load', function () { + FastClick.attach(document.body); +}, false); + +$('.barras').click(function() { + $barra = $(this); + if(bJugando) gestionarBarra($barra); +}); + +$('#botonEmpezar').click(function() { + if(!bEmpezada) { + iniciarPartida(); + } else { + reiniciarPartida(); + } +}); \ No newline at end of file diff --git a/js/fastclick.js b/js/fastclick.js new file mode 100644 index 0000000..3482013 --- /dev/null +++ b/js/fastclick.js @@ -0,0 +1,788 @@ +/** + * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs. + * + * @version 0.6.11 + * @codingstandard ftlabs-jsv2 + * @copyright The Financial Times Limited [All Rights Reserved] + * @license MIT License (see LICENSE.txt) + */ + +/*jslint browser:true, node:true*/ +/*global define, Event, Node*/ + + +/** + * Instantiate fast-clicking listeners on the specificed layer. + * + * @constructor + * @param {Element} layer The layer to listen on + */ +function FastClick(layer) { + 'use strict'; + var oldOnClick, self = this; + + + /** + * Whether a click is currently being tracked. + * + * @type boolean + */ + this.trackingClick = false; + + + /** + * Timestamp for when when click tracking started. + * + * @type number + */ + this.trackingClickStart = 0; + + + /** + * The element being tracked for a click. + * + * @type EventTarget + */ + this.targetElement = null; + + + /** + * X-coordinate of touch start event. + * + * @type number + */ + this.touchStartX = 0; + + + /** + * Y-coordinate of touch start event. + * + * @type number + */ + this.touchStartY = 0; + + + /** + * ID of the last touch, retrieved from Touch.identifier. + * + * @type number + */ + this.lastTouchIdentifier = 0; + + + /** + * Touchmove boundary, beyond which a click will be cancelled. + * + * @type number + */ + this.touchBoundary = 10; + + + /** + * The FastClick layer. + * + * @type Element + */ + this.layer = layer; + + if (!layer || !layer.nodeType) { + throw new TypeError('Layer must be a document node'); + } + + /** @type function() */ + this.onClick = function() { return FastClick.prototype.onClick.apply(self, arguments); }; + + /** @type function() */ + this.onMouse = function() { return FastClick.prototype.onMouse.apply(self, arguments); }; + + /** @type function() */ + this.onTouchStart = function() { return FastClick.prototype.onTouchStart.apply(self, arguments); }; + + /** @type function() */ + this.onTouchMove = function() { return FastClick.prototype.onTouchMove.apply(self, arguments); }; + + /** @type function() */ + this.onTouchEnd = function() { return FastClick.prototype.onTouchEnd.apply(self, arguments); }; + + /** @type function() */ + this.onTouchCancel = function() { return FastClick.prototype.onTouchCancel.apply(self, arguments); }; + + if (FastClick.notNeeded(layer)) { + return; + } + + // Set up event handlers as required + if (this.deviceIsAndroid) { + layer.addEventListener('mouseover', this.onMouse, true); + layer.addEventListener('mousedown', this.onMouse, true); + layer.addEventListener('mouseup', this.onMouse, true); + } + + layer.addEventListener('click', this.onClick, true); + layer.addEventListener('touchstart', this.onTouchStart, false); + layer.addEventListener('touchmove', this.onTouchMove, false); + layer.addEventListener('touchend', this.onTouchEnd, false); + layer.addEventListener('touchcancel', this.onTouchCancel, false); + + // Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) + // which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick + // layer when they are cancelled. + if (!Event.prototype.stopImmediatePropagation) { + layer.removeEventListener = function(type, callback, capture) { + var rmv = Node.prototype.removeEventListener; + if (type === 'click') { + rmv.call(layer, type, callback.hijacked || callback, capture); + } else { + rmv.call(layer, type, callback, capture); + } + }; + + layer.addEventListener = function(type, callback, capture) { + var adv = Node.prototype.addEventListener; + if (type === 'click') { + adv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) { + if (!event.propagationStopped) { + callback(event); + } + }), capture); + } else { + adv.call(layer, type, callback, capture); + } + }; + } + + // If a handler is already declared in the element's onclick attribute, it will be fired before + // FastClick's onClick handler. Fix this by pulling out the user-defined handler function and + // adding it as listener. + if (typeof layer.onclick === 'function') { + + // Android browser on at least 3.2 requires a new reference to the function in layer.onclick + // - the old one won't work if passed to addEventListener directly. + oldOnClick = layer.onclick; + layer.addEventListener('click', function(event) { + oldOnClick(event); + }, false); + layer.onclick = null; + } +} + + +/** + * Android requires exceptions. + * + * @type boolean + */ +FastClick.prototype.deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0; + + +/** + * iOS requires exceptions. + * + * @type boolean + */ +FastClick.prototype.deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent); + + +/** + * iOS 4 requires an exception for select elements. + * + * @type boolean + */ +FastClick.prototype.deviceIsIOS4 = FastClick.prototype.deviceIsIOS && (/OS 4_\d(_\d)?/).test(navigator.userAgent); + + +/** + * iOS 6.0(+?) requires the target element to be manually derived + * + * @type boolean + */ +FastClick.prototype.deviceIsIOSWithBadTarget = FastClick.prototype.deviceIsIOS && (/OS ([6-9]|\d{2})_\d/).test(navigator.userAgent); + + +/** + * Determine whether a given element requires a native click. + * + * @param {EventTarget|Element} target Target DOM element + * @returns {boolean} Returns true if the element needs a native click + */ +FastClick.prototype.needsClick = function(target) { + 'use strict'; + switch (target.nodeName.toLowerCase()) { + + // Don't send a synthetic click to disabled inputs (issue #62) + case 'button': + case 'select': + case 'textarea': + if (target.disabled) { + return true; + } + + break; + case 'input': + + // File inputs need real clicks on iOS 6 due to a browser bug (issue #68) + if ((this.deviceIsIOS && target.type === 'file') || target.disabled) { + return true; + } + + break; + case 'label': + case 'video': + return true; + } + + return (/\bneedsclick\b/).test(target.className); +}; + + +/** + * Determine whether a given element requires a call to focus to simulate click into element. + * + * @param {EventTarget|Element} target Target DOM element + * @returns {boolean} Returns true if the element requires a call to focus to simulate native click. + */ +FastClick.prototype.needsFocus = function(target) { + 'use strict'; + switch (target.nodeName.toLowerCase()) { + case 'textarea': + return true; + case 'select': + return !this.deviceIsAndroid; + case 'input': + switch (target.type) { + case 'button': + case 'checkbox': + case 'file': + case 'image': + case 'radio': + case 'submit': + return false; + } + + // No point in attempting to focus disabled inputs + return !target.disabled && !target.readOnly; + default: + return (/\bneedsfocus\b/).test(target.className); + } +}; + + +/** + * Send a click event to the specified element. + * + * @param {EventTarget|Element} targetElement + * @param {Event} event + */ +FastClick.prototype.sendClick = function(targetElement, event) { + 'use strict'; + var clickEvent, touch; + + // On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect (#24) + if (document.activeElement && document.activeElement !== targetElement) { + document.activeElement.blur(); + } + + touch = event.changedTouches[0]; + + // Synthesise a click event, with an extra attribute so it can be tracked + clickEvent = document.createEvent('MouseEvents'); + clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null); + clickEvent.forwardedTouchEvent = true; + targetElement.dispatchEvent(clickEvent); +}; + +FastClick.prototype.determineEventType = function(targetElement) { + 'use strict'; + + //Issue #159: Android Chrome Select Box does not open with a synthetic click event + if (this.deviceIsAndroid && targetElement.tagName.toLowerCase() === 'select') { + return 'mousedown'; + } + + return 'click'; +}; + + +/** + * @param {EventTarget|Element} targetElement + */ +FastClick.prototype.focus = function(targetElement) { + 'use strict'; + var length; + + // Issue #160: on iOS 7, some input elements (e.g. date datetime) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724. + if (this.deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time') { + length = targetElement.value.length; + targetElement.setSelectionRange(length, length); + } else { + targetElement.focus(); + } +}; + + +/** + * Check whether the given target element is a child of a scrollable layer and if so, set a flag on it. + * + * @param {EventTarget|Element} targetElement + */ +FastClick.prototype.updateScrollParent = function(targetElement) { + 'use strict'; + var scrollParent, parentElement; + + scrollParent = targetElement.fastClickScrollParent; + + // Attempt to discover whether the target element is contained within a scrollable layer. Re-check if the + // target element was moved to another parent. + if (!scrollParent || !scrollParent.contains(targetElement)) { + parentElement = targetElement; + do { + if (parentElement.scrollHeight > parentElement.offsetHeight) { + scrollParent = parentElement; + targetElement.fastClickScrollParent = parentElement; + break; + } + + parentElement = parentElement.parentElement; + } while (parentElement); + } + + // Always update the scroll top tracker if possible. + if (scrollParent) { + scrollParent.fastClickLastScrollTop = scrollParent.scrollTop; + } +}; + + +/** + * @param {EventTarget} targetElement + * @returns {Element|EventTarget} + */ +FastClick.prototype.getTargetElementFromEventTarget = function(eventTarget) { + 'use strict'; + + // On some older browsers (notably Safari on iOS 4.1 - see issue #56) the event target may be a text node. + if (eventTarget.nodeType === Node.TEXT_NODE) { + return eventTarget.parentNode; + } + + return eventTarget; +}; + + +/** + * On touch start, record the position and scroll offset. + * + * @param {Event} event + * @returns {boolean} + */ +FastClick.prototype.onTouchStart = function(event) { + 'use strict'; + var targetElement, touch, selection; + + // Ignore multiple touches, otherwise pinch-to-zoom is prevented if both fingers are on the FastClick element (issue #111). + if (event.targetTouches.length > 1) { + return true; + } + + targetElement = this.getTargetElementFromEventTarget(event.target); + touch = event.targetTouches[0]; + + if (this.deviceIsIOS) { + + // Only trusted events will deselect text on iOS (issue #49) + selection = window.getSelection(); + if (selection.rangeCount && !selection.isCollapsed) { + return true; + } + + if (!this.deviceIsIOS4) { + + // Weird things happen on iOS when an alert or confirm dialog is opened from a click event callback (issue #23): + // when the user next taps anywhere else on the page, new touchstart and touchend events are dispatched + // with the same identifier as the touch event that previously triggered the click that triggered the alert. + // Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an + // immediately preceeding touch event (issue #52), so this fix is unavailable on that platform. + if (touch.identifier === this.lastTouchIdentifier) { + event.preventDefault(); + return false; + } + + this.lastTouchIdentifier = touch.identifier; + + // If the target element is a child of a scrollable layer (using -webkit-overflow-scrolling: touch) and: + // 1) the user does a fling scroll on the scrollable layer + // 2) the user stops the fling scroll with another tap + // then the event.target of the last 'touchend' event will be the element that was under the user's finger + // when the fling scroll was started, causing FastClick to send a click event to that layer - unless a check + // is made to ensure that a parent layer was not scrolled before sending a synthetic click (issue #42). + this.updateScrollParent(targetElement); + } + } + + this.trackingClick = true; + this.trackingClickStart = event.timeStamp; + this.targetElement = targetElement; + + this.touchStartX = touch.pageX; + this.touchStartY = touch.pageY; + + // Prevent phantom clicks on fast double-tap (issue #36) + if ((event.timeStamp - this.lastClickTime) < 200) { + event.preventDefault(); + } + + return true; +}; + + +/** + * Based on a touchmove event object, check whether the touch has moved past a boundary since it started. + * + * @param {Event} event + * @returns {boolean} + */ +FastClick.prototype.touchHasMoved = function(event) { + 'use strict'; + var touch = event.changedTouches[0], boundary = this.touchBoundary; + + if (Math.abs(touch.pageX - this.touchStartX) > boundary || Math.abs(touch.pageY - this.touchStartY) > boundary) { + return true; + } + + return false; +}; + + +/** + * Update the last position. + * + * @param {Event} event + * @returns {boolean} + */ +FastClick.prototype.onTouchMove = function(event) { + 'use strict'; + if (!this.trackingClick) { + return true; + } + + // If the touch has moved, cancel the click tracking + if (this.targetElement !== this.getTargetElementFromEventTarget(event.target) || this.touchHasMoved(event)) { + this.trackingClick = false; + this.targetElement = null; + } + + return true; +}; + + +/** + * Attempt to find the labelled control for the given label element. + * + * @param {EventTarget|HTMLLabelElement} labelElement + * @returns {Element|null} + */ +FastClick.prototype.findControl = function(labelElement) { + 'use strict'; + + // Fast path for newer browsers supporting the HTML5 control attribute + if (labelElement.control !== undefined) { + return labelElement.control; + } + + // All browsers under test that support touch events also support the HTML5 htmlFor attribute + if (labelElement.htmlFor) { + return document.getElementById(labelElement.htmlFor); + } + + // If no for attribute exists, attempt to retrieve the first labellable descendant element + // the list of which is defined here: http://www.w3.org/TR/html5/forms.html#category-label + return labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea'); +}; + + +/** + * On touch end, determine whether to send a click event at once. + * + * @param {Event} event + * @returns {boolean} + */ +FastClick.prototype.onTouchEnd = function(event) { + 'use strict'; + var forElement, trackingClickStart, targetTagName, scrollParent, touch, targetElement = this.targetElement; + + if (!this.trackingClick) { + return true; + } + + // Prevent phantom clicks on fast double-tap (issue #36) + if ((event.timeStamp - this.lastClickTime) < 200) { + this.cancelNextClick = true; + return true; + } + + // Reset to prevent wrong click cancel on input (issue #156). + this.cancelNextClick = false; + + this.lastClickTime = event.timeStamp; + + trackingClickStart = this.trackingClickStart; + this.trackingClick = false; + this.trackingClickStart = 0; + + // On some iOS devices, the targetElement supplied with the event is invalid if the layer + // is performing a transition or scroll, and has to be re-detected manually. Note that + // for this to function correctly, it must be called *after* the event target is checked! + // See issue #57; also filed as rdar://13048589 . + if (this.deviceIsIOSWithBadTarget) { + touch = event.changedTouches[0]; + + // In certain cases arguments of elementFromPoint can be negative, so prevent setting targetElement to null + targetElement = document.elementFromPoint(touch.pageX - window.pageXOffset, touch.pageY - window.pageYOffset) || targetElement; + targetElement.fastClickScrollParent = this.targetElement.fastClickScrollParent; + } + + targetTagName = targetElement.tagName.toLowerCase(); + if (targetTagName === 'label') { + forElement = this.findControl(targetElement); + if (forElement) { + this.focus(targetElement); + if (this.deviceIsAndroid) { + return false; + } + + targetElement = forElement; + } + } else if (this.needsFocus(targetElement)) { + + // Case 1: If the touch started a while ago (best guess is 100ms based on tests for issue #36) then focus will be triggered anyway. Return early and unset the target element reference so that the subsequent click will be allowed through. + // Case 2: Without this exception for input elements tapped when the document is contained in an iframe, then any inputted text won't be visible even though the value attribute is updated as the user types (issue #37). + if ((event.timeStamp - trackingClickStart) > 100 || (this.deviceIsIOS && window.top !== window && targetTagName === 'input')) { + this.targetElement = null; + return false; + } + + this.focus(targetElement); + + // Select elements need the event to go through on iOS 4, otherwise the selector menu won't open. + if (!this.deviceIsIOS4 || targetTagName !== 'select') { + this.targetElement = null; + event.preventDefault(); + } + + return false; + } + + if (this.deviceIsIOS && !this.deviceIsIOS4) { + + // Don't send a synthetic click event if the target element is contained within a parent layer that was scrolled + // and this tap is being used to stop the scrolling (usually initiated by a fling - issue #42). + scrollParent = targetElement.fastClickScrollParent; + if (scrollParent && scrollParent.fastClickLastScrollTop !== scrollParent.scrollTop) { + return true; + } + } + + // Prevent the actual click from going though - unless the target node is marked as requiring + // real clicks or if it is in the whitelist in which case only non-programmatic clicks are permitted. + if (!this.needsClick(targetElement)) { + event.preventDefault(); + this.sendClick(targetElement, event); + } + + return false; +}; + + +/** + * On touch cancel, stop tracking the click. + * + * @returns {void} + */ +FastClick.prototype.onTouchCancel = function() { + 'use strict'; + this.trackingClick = false; + this.targetElement = null; +}; + + +/** + * Determine mouse events which should be permitted. + * + * @param {Event} event + * @returns {boolean} + */ +FastClick.prototype.onMouse = function(event) { + 'use strict'; + + // If a target element was never set (because a touch event was never fired) allow the event + if (!this.targetElement) { + return true; + } + + if (event.forwardedTouchEvent) { + return true; + } + + // Programmatically generated events targeting a specific element should be permitted + if (!event.cancelable) { + return true; + } + + // Derive and check the target element to see whether the mouse event needs to be permitted; + // unless explicitly enabled, prevent non-touch click events from triggering actions, + // to prevent ghost/doubleclicks. + if (!this.needsClick(this.targetElement) || this.cancelNextClick) { + + // Prevent any user-added listeners declared on FastClick element from being fired. + if (event.stopImmediatePropagation) { + event.stopImmediatePropagation(); + } else { + + // Part of the hack for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) + event.propagationStopped = true; + } + + // Cancel the event + event.stopPropagation(); + event.preventDefault(); + + return false; + } + + // If the mouse event is permitted, return true for the action to go through. + return true; +}; + + +/** + * On actual clicks, determine whether this is a touch-generated click, a click action occurring + * naturally after a delay after a touch (which needs to be cancelled to avoid duplication), or + * an actual click which should be permitted. + * + * @param {Event} event + * @returns {boolean} + */ +FastClick.prototype.onClick = function(event) { + 'use strict'; + var permitted; + + // It's possible for another FastClick-like library delivered with third-party code to fire a click event before FastClick does (issue #44). In that case, set the click-tracking flag back to false and return early. This will cause onTouchEnd to return early. + if (this.trackingClick) { + this.targetElement = null; + this.trackingClick = false; + return true; + } + + // Very odd behaviour on iOS (issue #18): if a submit element is present inside a form and the user hits enter in the iOS simulator or clicks the Go button on the pop-up OS keyboard the a kind of 'fake' click event will be triggered with the submit-type input element as the target. + if (event.target.type === 'submit' && event.detail === 0) { + return true; + } + + permitted = this.onMouse(event); + + // Only unset targetElement if the click is not permitted. This will ensure that the check for !targetElement in onMouse fails and the browser's click doesn't go through. + if (!permitted) { + this.targetElement = null; + } + + // If clicks are permitted, return true for the action to go through. + return permitted; +}; + + +/** + * Remove all FastClick's event listeners. + * + * @returns {void} + */ +FastClick.prototype.destroy = function() { + 'use strict'; + var layer = this.layer; + + if (this.deviceIsAndroid) { + layer.removeEventListener('mouseover', this.onMouse, true); + layer.removeEventListener('mousedown', this.onMouse, true); + layer.removeEventListener('mouseup', this.onMouse, true); + } + + layer.removeEventListener('click', this.onClick, true); + layer.removeEventListener('touchstart', this.onTouchStart, false); + layer.removeEventListener('touchmove', this.onTouchMove, false); + layer.removeEventListener('touchend', this.onTouchEnd, false); + layer.removeEventListener('touchcancel', this.onTouchCancel, false); +}; + + +/** + * Check whether FastClick is needed. + * + * @param {Element} layer The layer to listen on + */ +FastClick.notNeeded = function(layer) { + 'use strict'; + var metaViewport; + var chromeVersion; + + // Devices that don't support touch don't need FastClick + if (typeof window.ontouchstart === 'undefined') { + return true; + } + + // Chrome version - zero for other browsers + chromeVersion = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1]; + + if (chromeVersion) { + + if (FastClick.prototype.deviceIsAndroid) { + metaViewport = document.querySelector('meta[name=viewport]'); + + if (metaViewport) { + // Chrome on Android with user-scalable="no" doesn't need FastClick (issue #89) + if (metaViewport.content.indexOf('user-scalable=no') !== -1) { + return true; + } + // Chrome 32 and above with width=device-width or less don't need FastClick + if (chromeVersion > 31 && window.innerWidth <= window.screen.width) { + return true; + } + } + + // Chrome desktop doesn't need FastClick (issue #15) + } else { + return true; + } + } + + // IE10 with -ms-touch-action: none, which disables double-tap-to-zoom (issue #97) + if (layer.style.msTouchAction === 'none') { + return true; + } + + return false; +}; + + +/** + * Factory method for creating a FastClick object + * + * @param {Element} layer The layer to listen on + */ +FastClick.attach = function(layer) { + 'use strict'; + return new FastClick(layer); +}; + + +if (typeof define !== 'undefined' && define.amd) { + + // AMD. Register as an anonymous module. + define(function() { + 'use strict'; + return FastClick; + }); +} else if (typeof module !== 'undefined' && module.exports) { + module.exports = FastClick.attach; + module.exports.FastClick = FastClick; +} else { + window.FastClick = FastClick; +} diff --git a/js/main.js b/js/main.js new file mode 100644 index 0000000..a585f9f --- /dev/null +++ b/js/main.js @@ -0,0 +1,4 @@ +$(document).ready(function() { + +}); + diff --git a/js/metodo.js b/js/metodo.js new file mode 100644 index 0000000..11d2b91 --- /dev/null +++ b/js/metodo.js @@ -0,0 +1,353 @@ +//Variables +var iNumBarras = 5; +var iInterNewBar = 5; +var iContBarPuls = 0; +var iTiemCaidaBarr = 5000; +var iTiemSubirBarr = 500; +var iTiemDesapaCuadro = 2000; +var $botonEmpezar = $('#botonEmpezar'); +var sTextReinicio = 'Replay'; +var iTiemDelayTutorial = 3000; +var aBarrasOrden = new Array(); +var $titulo = $('#titulo'); +var $barras = $('.barras'); +var $cuadro = $('#cuadro'); +var $barra1 = $('#barra1'); +var $barra2 = $('#barra2'); +var $barra3 = $('#barra3'); +var $barra4 = $('#barra4'); +var $barra5 = $('#barra5'); +var $tutorial = $('#tutorial'); +var mostrarTutorial = false; +var bEmpezada = false; +var bJugando = false; +var iNivel = 1; +var iToques = 0; +var iTiem = 0; +var $nivel = $('#nivel'); +var $nivelNum = $('#nivel #numero'); +var $toques = $('#toques'); +var $toquesNum = $('#toques #numeros'); +var $tiempo = $('#tiempo'); +var $tiempoNum = $('#tiempo #segundos'); +var $cartelNivel = $('#cartelNivel'); +$cartelNivel.hide(); +$nivel.hide(); +$toques.hide(); +$tiempo.hide(); + +/* GESTION DE PARTIDA */ + +/** + * Método que inicia la partida + */ +var iniciarPartida = function() { + console.log('Iniciando'); + bEmpezada = true; + generarNivel(); + //Quitar titulo y boton de inicio + $titulo.fadeOut(iTiemDesapaCuadro); + $botonEmpezar.fadeOut(iTiemDesapaCuadro, 'linear', function() { + //Muestra el nivel + $cartelNivel.fadeIn(iTiemDesapaCuadro).delay(iTiemDesapaCuadro).fadeOut(iTiemDesapaCuadro, function() { + //Mover barras + $barra3.animate({ + height: iAltura + }, iTiemCaidaBarr, 'linear'); + //Mostrar carteles de tiempo, toques y nivel + $nivel.fadeIn(iTiemDesapaCuadro); + $toques.fadeIn(iTiemDesapaCuadro); + $tiempo.fadeIn(iTiemDesapaCuadro); + //Mover cuadro + moverCuadro(); + //Muestra tutorial + setTimeout('mostrarTutorial()', iTiemDelayTutorial / 2); + //Cambiar posición de botón + $botonEmpezar.css('top', '90px'); + + bJugando = true; + }); + }); +} + +/** + * Método que reinicia la partida + */ +var reiniciarPartida = function() { + console.log('Reiniciando'); + generarNivel(); + //Quitar boton + $botonEmpezar.fadeOut(iTiemDesapaCuadro, 'linear', function() { + //Reinicia cuadro + $cuadro.css('left', '-25%'); + $cuadro.fadeIn(1); + //Mover cuadro + moverCuadro(); + bJugando = true; + //Reinicia barras + $barras.css('height', '0'); + $barras.fadeIn(1); + //Mover barras + $barra3.animate({ + height: iAltura + }, iTiemCaidaBarr, 'linear'); + }); +} + +/** + * Método para terminar la partida + */ +var finPartida = function() { + console.log('Fin partida'); + bJugando = false; + $barras.stop(); + //Quitar barras + $barras.fadeOut(iTiemDesapaCuadro); + //Mostrar boton de reinicio + $botonEmpezar.html(sTextReinicio); + $botonEmpezar.fadeIn(iTiemDesapaCuadro); + //Quitar cuadro + $cuadro.stop(); + $cuadro.fadeOut(iTiemDesapaCuadro); + $cuadro.stop(); + $cuadro.fadeOut(iTiemDesapaCuadro); + $cuadro.stop(); + $cuadro.fadeOut(iTiemDesapaCuadro); + $cuadro.stop(); + $cuadro.fadeOut(iTiemDesapaCuadro); + $cuadro.stop(); + $cuadro.fadeOut(iTiemDesapaCuadro); +} + +var generarNivel = function() { + switch(iNivel) { + case 1: + iTiem = 20; + iToques = 15; + iInterNewBar = 5; + break; + case 2: + iTiem = 30; + iToques = 30; + iInterNewBar = 4; + break; + case 3: + iTiem = 30; + iToques = 25; + iInterNewBar = 4; + break; + case 4: + iTiem = 40; + iToques = 40; + iInterNewBar = 2; + break; + case 5: + iTiem = 30; + iToques = 20; + iInterNewBar = 4; + break; + default: + iTiem = 30; + iToques = 25 - iNivel; + iInterNewBar = 1; + break; + } + aBarrasOrden = new Array(); + iContBarPuls = 0; + $tiempoNum.html(iTiem); + $nivelNum.html(iNivel); + $toquesNum.html(iToques); + $cartelNivel.html($nivel.html()); +} + +var gestionarTiempo = function() { + if(iTiem > 0 && bJugando) { + iTiem--; + $tiempoNum.html(iTiem); + } else if(iTiem == 0 && bJugando) { + cambiarNivel(); + } +} + +setInterval('gestionarTiempo()', 1000); + +var cambiarNivel = function() { + iNivel++; + console.log('Cambiando a nivel' + iNivel); + bJugando = false; + $barras.stop(); + //Quitar barras + $barras.fadeOut(iTiemDesapaCuadro); + //Quitar cuadro + $cuadro.stop(); + $cuadro.fadeOut(iTiemDesapaCuadro); + $cuadro.stop(); + $cuadro.fadeOut(iTiemDesapaCuadro); + $cuadro.stop(); + $cuadro.fadeOut(iTiemDesapaCuadro); + $cuadro.stop(); + $cuadro.fadeOut(iTiemDesapaCuadro); + $cuadro.stop(); + $cuadro.fadeOut(iTiemDesapaCuadro); + //Mostrar cartel + $nivelNum.html(iNivel); + $cartelNivel.html($nivel.html()); + $cartelNivel.fadeIn(iTiemDesapaCuadro).delay(iTiemDesapaCuadro).fadeOut(iTiemDesapaCuadro, function() { + //Empezar partida + reiniciarPartida(); + }); +} + +/* GESTION DE BARRAS */ + +/** + * Método que devuelve entre 1 y iLim + * @return {Int} + */ +var numeroAlAzar = function(iniLim) { + return Math.floor((Math.random() * iniLim) + 1); +} + +/** + * Método que mueve las barras según toca + */ +var moverOtrasBarras = function() { + //Genera posiciones aleatorias + if(aBarrasOrden.length < iNumBarras) { + var iAzar = 0; + var bMeter = true; + aBarrasOrden.push(3); + while(aBarrasOrden.length < iNumBarras) { + iAzar = numeroAlAzar(iNumBarras); + if(iAzar != 3 && aBarrasOrden.indexOf(iAzar) == -1) { + aBarrasOrden.push(iAzar); + } + } + } + //Cuenta las veces que se pulsa + iContBarPuls++; + //Inicia nueva barra + if((iContBarPuls % iInterNewBar) == 0 + && iContBarPuls / iInterNewBar < aBarrasOrden.length) { + var iPosSig = iContBarPuls / iInterNewBar; + reiniciarBarra(eval('$barra' + aBarrasOrden[iPosSig])); + } +} + +/** + * Método que gestiona el toque de la barra + */ +var gestionarBarra = function($inBarra) { + if(iToques > 0) { + reiniciarBarra($inBarra); + iToques--; + $toquesNum.html(iToques); + if(mostrarTutorial) { + ocultarTutorial(); + } + moverOtrasBarras(); + } else { + finPartida(); + } + +} + +/** + * Método que reinicia la posición de la barra + * @param {JQuery} $inBarra + */ +var reiniciarBarra = function($inBarra) { + $inBarra.stop(); + $inBarra.animate({ + height: 0 + }, iTiemSubirBarr, 'linear', function() { + $inBarra.animate({ + height: iAltura + }, iTiemCaidaBarr, 'linear'); + }); +} + +/* GESTION DE CUADRO */ + +/** + * Método que mueve el cuadro + */ +var moverCuadro = function() { + $cuadro.animate({ + left: iAnchura + }, iTiemCaidaBarr, 'linear', function() { + $cuadro.css('left', '-25%'); + moverCuadro(); + }); +} + +/* GESTION DE TUTORIAL */ + +/** + * Método que muestra el tutorial + */ +var mostrarTutorial = function() { + if(typeof(Storage) !== 'undefined') { + if(localStorage.getItem('tutorial') == null) { + localStorage.setItem('tutorial', '1'); + $barras.stop(); + $cuadro.stop(); + $tutorial.css('visibility', 'visible'); + $barra3.append('
'); + mostrarTutorial = true; + } + } +} + +/** + * Método que oculta el tutorial + * @return {[type]} [description] + */ +var ocultarTutorial = function() { + $tutorial.css('visibility', 'hidden'); + $barra3.html(''); + moverCuadro(); + mostrarTutorial = false; +} + +/* COLISIONES */ + +/** + * Método que comprueba el final del juego + */ +var comprobarFinJuego = function() { + if((collision($barra1, $cuadro) + || collision($barra2, $cuadro) + || collision($barra3, $cuadro) + || collision($barra4, $cuadro) + || collision($barra5, $cuadro)) + && bJugando) { + finPartida(); + } +} + +setInterval('comprobarFinJuego()', 50); + +/** + * Método que comprueba si ha colisionado dos divs + * @param {JQuery} $div1 + * @param {JQuery} $div2 + * @return {boolean} + */ +function collision($div1, $div2) { + var x1 = $div1.offset().left; + var y1 = $div1.offset().top; + var h1 = $div1.outerHeight(true); + var w1 = $div1.outerWidth(true); + var b1 = y1 + h1; + var r1 = x1 + w1; + var x2 = $div2.offset().left; + var y2 = $div2.offset().top; + var h2 = $div2.outerHeight(true); + var w2 = $div2.outerWidth(true); + var b2 = y2 + h2; + var r2 = x2 + w2; + + if (b1 < y2 || y1 > b2 || r1 < x2 || x1 > r2) return false; + return true; + } \ No newline at end of file diff --git a/js/vendor/jquery-1.11.0.min.js b/js/vendor/jquery-1.11.0.min.js new file mode 100644 index 0000000..73f33fb --- /dev/null +++ b/js/vendor/jquery-1.11.0.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="
",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f +}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML="
a",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/\s*$/g,sb={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:l.htmlSerialize?[0,"",""]:[1,"X
","
"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?""!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("