├── js ├── testCase.js ├── i.js ├── gedrag.js └── libs │ ├── javascript.js │ ├── codemirror-compressed.js │ └── jquery-1.7.2.min.js ├── examples ├── template.js ├── examples.css ├── galFly │ ├── index.html │ ├── stijl.css │ ├── gedrag.js │ └── stringified.js ├── imgurOpen.js ├── twitter-hide.js ├── reddit.js ├── template.html ├── viewportMobile.js ├── removeWebArchiveHeader.js ├── youtube-timestamp.js ├── galNum │ ├── index.html │ ├── stijl.css │ └── gedrag.js ├── showAlt.js ├── comoir.js ├── swfGet.js ├── layout-compare.js ├── hideliminator.js ├── link-github-package-json.js ├── minutedock.html ├── minutedock.js ├── galFly.js ├── galNum.js ├── download-torrent.js └── openLinks.js ├── README ├── .gitignore ├── css ├── theme-default.css ├── stijl.css └── codemirror.css ├── MIT-LICENSE.txt └── index.html /js/testCase.js: -------------------------------------------------------------------------------- 1 | // To be used inside the page itself, including this commentary 2 | 3 | $("body").css({"background-color":"red"}); // Do a barrel roll 4 | $('h1').css({'background-color':'green'}); 5 | var texty = "This is so \"wrong\" that I wanna grab a \\ character and put it here"; 6 | $('small').after(texty) -------------------------------------------------------------------------------- /examples/template.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - Sitename - http://www.siteurl.com/ - *\ 6 | |* - Comment - *| 7 | \* - v1.0 - */ 8 | 9 | 10 | /* - /Sitename - */ 11 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | From: 2 | http://mcdlr.com/ 3 | 4 | See it live at: 5 | http://mcdlr.com/js-inject/ 6 | 7 | With this tool creating a Bookmarklet is much easier. Just type the code, assign a name and an Anchor element with your code will be created below for you to drag to your bookmarks. 8 | 9 | You also have the possibility of adding jQuery to the target page so you can write you javascript using jQuery, just a checkbox away! 10 | -------------------------------------------------------------------------------- /examples/examples.css: -------------------------------------------------------------------------------- 1 | html { 2 | font-size: 100%; 3 | } 4 | body { 5 | font-size: 2em; 6 | margin: 0; 7 | padding: 1em 0; 8 | font-family: Helvetica, Arial, sans-serif; 9 | text-align: center; 10 | } 11 | small { 12 | margin-top: 20%; 13 | } 14 | small + a { 15 | display: inline-block; 16 | width: 77%; 17 | margin: .2em 0; 18 | padding: 1em; 19 | font-size: 2em; 20 | color: #00f; 21 | background-color: #ddf; 22 | } 23 | -------------------------------------------------------------------------------- /examples/galFly/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | galFly 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 |
    15 |
  1. 16 |
  2. 17 |
  3. 🔍
  4. 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /examples/imgurOpen.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - Imgur - http://imgur.com/gallery - *\ 6 | |* - Open several images in new tabs - *| 7 | \* - v1.1 - */ 8 | 9 | 10 | $('#imagelist .posts').find('a').each(function(e){ 11 | if(e >= 50){ 12 | return false; 13 | } 14 | var url = $(this).attr('href'); 15 | window.open(url); 16 | }); 17 | 18 | 19 | /* - /Imgur - */ 20 | -------------------------------------------------------------------------------- /js/i.js: -------------------------------------------------------------------------------- 1 | javascript:(function(){ 2 | 3 | if (typeof ZHJ1bW1lcg === 'undefined') { 4 | var jQueryScript = document.createElement('script'); 5 | jQueryScript.setAttribute('src', '//ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js'); 6 | var caput = document.getElementsByTagName('head'); 7 | caput[0].appendChild(jQueryScript); 8 | ZHJ1bW1lcg = true; 9 | } 10 | 11 | setTimeout(function(){ 12 | $(document).ready(function(){ 13 | /* your jQuery code starts here */ 14 | 15 | 16 | 17 | /* your jQuery code ends here */ 18 | }); 19 | },200); 20 | 21 | })(); 22 | -------------------------------------------------------------------------------- /examples/twitter-hide.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - Twitter - https://twitter.com/ - *\ 6 | |* - Remove replies to other people on someone's timeline, - *| 7 | |* - akin to only seeing what you would see if you followed - *| 8 | |* - that person (to judge whether to follow or not) - *| 9 | \* - v1.0 - */ 10 | 11 | 12 | $('head').append('') 13 | 14 | 15 | /* - /Twitter - */ 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## OSX.gitignore 2 | 3 | .DS_Store 4 | 5 | # Thumbnails 6 | ._* 7 | 8 | # Files that might appear on external disk 9 | .Spotlight-V100 10 | .Trashes 11 | 12 | 13 | ## vim.gitignore 14 | .*.sw[a-z] 15 | *.un~ 16 | Session.vim 17 | 18 | 19 | ## Archives.gitignore 20 | 21 | # It's better to unpack these files and commit the raw source because 22 | # git has its own built in compression methods. 23 | *.7z 24 | *.jar 25 | *.rar 26 | *.zip 27 | *.gz 28 | *.bzip 29 | *.xz 30 | *.lzma 31 | 32 | #packing-only formats 33 | *.iso 34 | *.tar 35 | 36 | #package management formats 37 | *.dmg 38 | *.xpi 39 | *.gem 40 | *.egg 41 | *.deb 42 | *.rpm 43 | -------------------------------------------------------------------------------- /examples/reddit.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - reddit - http://www.reddit.com/ - *\ 6 | |* - Open all submissions and comments visible - *| 7 | \* - v1.0 - */ 8 | 9 | 10 | var entries = $('#siteTable').find('.entry'); 11 | 12 | entries.each(function(){ 13 | var I = $(this); 14 | var link = I.find('a.title').attr('href'); 15 | var comments = I.find('a.comments').attr('href'); //remove this line if only want submissions 16 | 17 | window.open(comments); //remove this line if only want submissions 18 | window.open(link); 19 | 20 | }); 21 | 22 | 23 | /* - /reddit - */ 24 | -------------------------------------------------------------------------------- /examples/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {nomen} 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 | Go to mcdlr homepage 14 |
15 |
16 | Fork me on Github! 17 |
18 |
19 | 20 | Drag the below link to your bookmarks 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /examples/viewportMobile.js: -------------------------------------------------------------------------------- 1 | /* - These is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - viewportMobile - *\ 6 | |* - Some sites don't allow you to zoom freely on mobile, probably because ads - *| 7 | |* - With this snippet you can recover your freedomz - *| 8 | \* - v1.0 - */ 9 | 10 | 11 | var head = document.querySelector('head'); 12 | var viewport = head.querySelector('meta[name="viewport"]'); 13 | if(head.contains(viewport)){ 14 | viewport.setAttribute('content', 'width=device-width, initial-scale=1'); 15 | }; 16 | 17 | 18 | /* - /viewportMobile - */ 19 | -------------------------------------------------------------------------------- /examples/removeWebArchiveHeader.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - Wayback Machine - https://web.archive.org/web/ - *\ 6 | |* - Remove the header, for display purposes of old created sites - *| 7 | \* - v1.0 - */ 8 | 9 | 10 | const webArchiveHead = document.querySelector('#wm-ipp'); 11 | 12 | const removeUntilComment = elem => { 13 | const next = elem.nextSibling; 14 | if (next.nodeName === "#comment" && next.nodeValue === " END WAYBACK TOOLBAR INSERT ") { 15 | next.remove(); 16 | } else { 17 | removeUntilComment(next); 18 | elem.remove(); 19 | } 20 | }; 21 | 22 | removeUntilComment(webArchiveHead); 23 | 24 | 25 | /* - /Wayback Machine - */ 26 | -------------------------------------------------------------------------------- /examples/youtube-timestamp.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - YouTube - https://www.youtube.com - *\ 6 | |* - After pausing a long video, add timestamp to video - *| 7 | |* - (bookmarking, restarting computer) - *| 8 | \* - v1.0 - */ 9 | 10 | var time = document 11 | .querySelector('.ytp-time-current') 12 | .textContent 13 | .split(':') 14 | .reverse(); 15 | 16 | var timeUnit = ['s', 'm', 'h'] 17 | var timeString = time 18 | .reduce((acc, curr, index) => 19 | `${curr}${timeUnit[index]}${acc}`,'') 20 | 21 | window.location.assign( 22 | `${window 23 | .location 24 | .href 25 | .replace(/&t=.*$/, '')}&t=${timeString}` 26 | ) 27 | 28 | /* - /YouTube - */ 29 | -------------------------------------------------------------------------------- /examples/galNum/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | galNum 5 | 6 | 7 | 8 | 9 | 10 |
11 |
12 |
13 |
14 | 17 | 20 | 21 |
22 |
23 |
24 |
25 |
26 | 27 |
    28 |
  1. 29 |
  2. 30 |
  3. 🔍
  4. 31 |
32 | 33 | 34 | 35 | 36 | 37 | 40 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /css/theme-default.css: -------------------------------------------------------------------------------- 1 | .cm-s-default span.cm-keyword {color: #708;} 2 | .cm-s-default span.cm-atom {color: #219;} 3 | .cm-s-default span.cm-number {color: #164;} 4 | .cm-s-default span.cm-def {color: #00f;} 5 | .cm-s-default span.cm-variable {color: black;} 6 | .cm-s-default span.cm-variable-2 {color: #05a;} 7 | .cm-s-default span.cm-variable-3 {color: #0a5;} 8 | .cm-s-default span.cm-property {color: black;} 9 | .cm-s-default span.cm-operator {color: black;} 10 | .cm-s-default span.cm-comment {color: #a50;} 11 | .cm-s-default span.cm-string {color: #a11;} 12 | .cm-s-default span.cm-string-2 {color: #f50;} 13 | .cm-s-default span.cm-meta {color: #555;} 14 | .cm-s-default span.cm-error {color: #f00;} 15 | .cm-s-default span.cm-qualifier {color: #555;} 16 | .cm-s-default span.cm-builtin {color: #30a;} 17 | .cm-s-default span.cm-bracket {color: #cc7;} 18 | .cm-s-default span.cm-tag {color: #170;} 19 | .cm-s-default span.cm-attribute {color: #00c;} 20 | -------------------------------------------------------------------------------- /examples/showAlt.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - showAlt - *\ 6 | |* - Show alt text of img elements - *| 7 | \* - v0.1 - */ 8 | 9 | 10 | (function(document){ 11 | 12 | document.querySelector('head').insertAdjacentHTML('beforeEnd',''); 13 | 14 | var imgs = Array.prototype.slice.call(document.querySelectorAll('img')); 15 | 16 | imgs.forEach(function(val, i, arr){ 17 | var alt = val.getAttribute('alt'); 18 | var title = val.getAttribute('title'); 19 | if(alt){ 20 | val.insertAdjacentHTML('afterEnd','

alt = “'+alt+'”

'); 21 | } 22 | if(title){ 23 | val.insertAdjacentHTML('afterEnd','

title = “'+title+'”

'); 24 | } 25 | }); 26 | 27 | })(document) 28 | 29 | 30 | /* - /Sitename - */ 31 | -------------------------------------------------------------------------------- /examples/comoir.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - Cómo ir - http://comoir.montevideo.gub.uy/stmWEB/ - *\ 6 | |* - Make the map area significantly bigger - *| 7 | |* - Automatically fill departure point - *| 8 | |* - NOTE: Change {{address}} and {{number}} - *| 9 | \* - v1.0 - */ 10 | 11 | 12 | var style = document.createElement('style'); 13 | style.innerHTML = 'body > table {' + 14 | ' width: 94%;' + 15 | '}' + 16 | '#map {' + 17 | ' width: 100%;' + 18 | ' height: 640px;' + 19 | '}'; 20 | 21 | var head = document.querySelector('head'); 22 | head.appendChild(style); 23 | 24 | document.getElementById('form_input:panel_input_combinada:filtroGrupo').value = '{{address}}'; 25 | document.getElementById('form_input:panel_input_combinada:filtroEsquina').value = '{{number}}'; 26 | document.getElementById('form_input:panel_input_combinada:ido').onclick(); 27 | 28 | 29 | /* - /Cómo ir - */ 30 | -------------------------------------------------------------------------------- /examples/swfGet.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - swfGet - *\ 6 | |* - Open swf on the page on new tab - *| 7 | |* - Handy for playing games in full view - *| 8 | \* - v1.0 - */ 9 | 10 | 11 | (function(window, document, undefined){ 12 | 13 | 14 | 15 | 16 | var $ = function(selector){ 17 | return Array.prototype.slice.call(document.querySelectorAll(selector)); 18 | }; 19 | 20 | var objects = $('object'); 21 | 22 | if(objects.length){ 23 | objects.forEach(function(element){ 24 | var paramValue = element.querySelector('param[name="movie"]') ? element.querySelector('param[name="movie"]').getAttribute('value') : undefined; 25 | var embed = element.querySelector('embed') ? element.querySelector('embed').getAttribute('src') : undefined; 26 | var data = element.getAttribute('data'); 27 | window.open(embed || paramValue || data); 28 | }); 29 | } 30 | 31 | 32 | 33 | 34 | })(window, document); 35 | 36 | 37 | 38 | /* - /swfGet - */ 39 | -------------------------------------------------------------------------------- /MIT-LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2012 Nicolas Barrera 2 | http://mcdlr.com/ 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining 5 | a copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so, subject to 10 | the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /css/stijl.css: -------------------------------------------------------------------------------- 1 | /* *\ 2 | Styles by DrummerHead 3 | \* */ 4 | 5 | body, 6 | html { 7 | margin: 0; 8 | padding: 0; 9 | font-family: courier, monospace; 10 | color: #222; 11 | background-color: #e1ffd3; 12 | } 13 | label[for='hasJQuery'] { 14 | float: right; 15 | margin: 0; 16 | } 17 | #hasJQuery { 18 | width: auto; 19 | height: 14px; 20 | float: right; 21 | margin: 1px 4px; 22 | } 23 | #container { 24 | width: 800px; 25 | margin: 0 auto; 26 | padding: .2em 0 2em; 27 | } 28 | label { 29 | display: block; 30 | margin: 16px 0 0 0; 31 | } 32 | textarea { 33 | width: 97%; 34 | height: 330px; 35 | padding: 12px 0 12px 12px; 36 | margin: 4px 0 0 0; 37 | } 38 | input { 39 | width: 600px; 40 | height: 25px; 41 | } 42 | input[type="submit"] { 43 | width: 180px; 44 | cursor: pointer; 45 | } 46 | small { 47 | margin-top: 25px; 48 | display: block; 49 | } 50 | #a-holder { 51 | height: 64px; 52 | margin: .5em 0; 53 | border: 1px solid #ddd; 54 | font-size: 2em; 55 | text-align: center; 56 | background-color: #f0fbe1; 57 | } 58 | #a-holder a { 59 | cursor: move; 60 | background-color: lightBlue; 61 | display: block; 62 | line-height: 1; 63 | padding: .5em; 64 | } 65 | -------------------------------------------------------------------------------- /examples/layout-compare.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - layout-compare - any site - *\ 6 | |* - Overlay an image to compare layout positioning - *| 7 | \* - v1.0 - */ 8 | 9 | 10 | (function(window, document, undefined){ 11 | 'use strict'; 12 | 13 | var randomId = 'layout-compare-' + Math.random().toString(36).substr(2, 9); 14 | var imageStyles = 'position: absolute; top: 0; left: 0; opacity: .5'; 15 | 16 | var createImageString = function(imageSrc, randomId, imageStyles){ 17 | return ''; 21 | }; 22 | 23 | var askForImageSrc = function(){ 24 | var src = prompt('Full URL of image source'); 25 | return src; 26 | }; 27 | 28 | var injectImage = function(imageSrc, randomId, imageStyles){ 29 | document.body.insertAdjacentHTML( 30 | 'beforeend', 31 | createImageString(imageSrc, randomId, imageStyles) 32 | ); 33 | }; 34 | 35 | injectImage(askForImageSrc(), randomId, imageStyles); 36 | 37 | })(window, document); 38 | 39 | 40 | /* - /layout-compare - */ 41 | -------------------------------------------------------------------------------- /examples/galFly/stijl.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: sans-serif; 4 | text-align: center; 5 | } 6 | #gal { 7 | padding: 1em; 8 | margin: 0; 9 | list-style-type: none; 10 | } 11 | #gal li { 12 | min-height: "+innerHeight+"px; 13 | padding: 4em 0; 14 | } 15 | #gal img { 16 | display: block; 17 | max-width: 100%; 18 | margin: 0 auto; 19 | font-size: 3em; 20 | color: #ccc; 21 | } 22 | #gal a { 23 | display: inline-block; 24 | padding: 1em; 25 | text-decoration: none; 26 | color: #ccc; 27 | } 28 | #gal a:hover { 29 | color: #808080; 30 | text-decoration: underline; 31 | } 32 | #move { 33 | position: fixed; 34 | bottom: 0; 35 | left: 0; 36 | width: 5em; 37 | padding: 0; 38 | margin: 0; 39 | font-size: 1.4em; 40 | list-style-type: none; 41 | color: #888; 42 | -webkit-user-select: none; 43 | -moz-user-select: none; 44 | user-select: none; 45 | } 46 | #move li { 47 | float: left; 48 | width: 2.75em; 49 | height: 2em; 50 | line-height: 2em; 51 | cursor: pointer; 52 | } 53 | #move li:hover { 54 | color: #444; 55 | } 56 | #up, 57 | #down { 58 | text-indent: .5em; 59 | } 60 | #down { 61 | clear: left; 62 | } 63 | #move #zoom { 64 | width: 2em; 65 | text-indent: -.5em; 66 | } 67 | #more { 68 | padding: 1em; 69 | font-size: 1.5em; 70 | font-weight: bold; 71 | background-color: #eee; 72 | color: #888; 73 | cursor: pointer; 74 | } 75 | #more:hover { 76 | background-color: #ddd; 77 | color: #777; 78 | } 79 | #end { 80 | background-color: #ffb1ba; 81 | height: 10em; 82 | } 83 | -------------------------------------------------------------------------------- /css/codemirror.css: -------------------------------------------------------------------------------- 1 | .CodeMirror { 2 | line-height: 1em; 3 | font-family: monospace; 4 | background-color: #fff; 5 | margin: 10px 0; 6 | } 7 | 8 | .CodeMirror-scroll { 9 | width: 100% 10 | height: auto; 11 | overflow-y: hidden; 12 | overflow-x: auto; 13 | min-height: 300px; 14 | } 15 | 16 | .CodeMirror-gutter { 17 | position: absolute; left: 0; top: 0; 18 | z-index: 10; 19 | background-color: #f7f7f7; 20 | border-right: 1px solid #eee; 21 | min-width: 2em; 22 | height: 100%; 23 | } 24 | .CodeMirror-gutter-text { 25 | color: #aaa; 26 | text-align: right; 27 | padding: .4em .2em .4em .4em; 28 | } 29 | .CodeMirror-lines { 30 | padding: .4em; 31 | } 32 | 33 | .CodeMirror pre { 34 | -moz-border-radius: 0; 35 | -webkit-border-radius: 0; 36 | -o-border-radius: 0; 37 | border-radius: 0; 38 | border-width: 0; margin: 0; padding: 0; background: transparent; 39 | font-family: inherit; 40 | font-size: inherit; 41 | padding: 0; margin: 0; 42 | white-space: pre; 43 | word-wrap: normal; 44 | } 45 | 46 | .CodeMirror textarea { 47 | font-family: inherit !important; 48 | font-size: inherit !important; 49 | } 50 | 51 | .CodeMirror-cursor { 52 | z-index: 10; 53 | position: absolute; 54 | visibility: hidden; 55 | border-left: 1px solid black !important; 56 | } 57 | .CodeMirror-focused .CodeMirror-cursor { 58 | visibility: visible; 59 | } 60 | 61 | span.CodeMirror-selected { 62 | background: #ccc !important; 63 | color: HighlightText !important; 64 | } 65 | .CodeMirror-focused span.CodeMirror-selected { 66 | background: Highlight !important; 67 | } 68 | 69 | .CodeMirror-matchingbracket {color: #0f0 !important;} 70 | .CodeMirror-nonmatchingbracket {color: #f22 !important;} 71 | -------------------------------------------------------------------------------- /examples/hideliminator.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - Hideliminator - Any website - *\ 6 | |* - Hide elements on command - *| 7 | \* - v2.0 - */ 8 | 9 | 10 | 11 | 12 | (function(document){ 13 | 14 | 15 | document.querySelector('head').insertAdjacentHTML('beforeEnd', ''); 16 | 17 | var bod = document.body; 18 | var targetSuspect = function(event){ 19 | event.target.classList.add('gun-point'); 20 | }; 21 | var dismissSuspect = function(event){ 22 | event.target.classList.remove('gun-point'); 23 | }; 24 | var killSuspect = function(event){ 25 | event.preventDefault(); 26 | event.target.parentNode.removeChild(event.target); 27 | }; 28 | 29 | bod.insertAdjacentHTML('beforeEnd','
Stop judgement
'); 30 | 31 | bod.addEventListener('mouseover', targetSuspect, false); 32 | bod.addEventListener('mouseout', dismissSuspect, false); 33 | bod.addEventListener('click', killSuspect, false); 34 | 35 | document.querySelector('#retirement').addEventListener('click', function(event){ 36 | bod.removeEventListener('mouseover', targetSuspect, false); 37 | bod.removeEventListener('mouseout', dismissSuspect, false); 38 | bod.removeEventListener('click', killSuspect, false); 39 | this.parentNode.removeChild(this); 40 | }); 41 | 42 | 43 | })(document) 44 | 45 | 46 | 47 | 48 | 49 | /* - /Hideliminator - */ 50 | -------------------------------------------------------------------------------- /examples/link-github-package-json.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - GitHub - https://github.com/any-repo/package.json - *\ 6 | |* - Link package dependencies on a package.json to npm - *| 7 | \* - v1.0 - */ 8 | 9 | 10 | const findParentBySelector = (elem, selector) => { 11 | const parent = elem.parentNode; 12 | if (parent.matches(selector)) { 13 | return parent; 14 | } else { 15 | return findParentBySelector(parent, selector); 16 | } 17 | }; 18 | 19 | const isStartOfObject = (row) => /{/.test(row.textContent); 20 | 21 | const isEndOfObject = (row) => /}/.test(row.textContent); 22 | 23 | const linkToNMP = (tr) => { 24 | const packageEl = tr.querySelector('.pl-s:first-child'); 25 | const packageText = packageEl.textContent; 26 | const packageName = packageText.replace(/["']*/g, ''); 27 | packageEl.innerHTML = `${packageText}`; 28 | }; 29 | 30 | const traverseTrs = (dep) => { 31 | const trFather = dep.matches('tr') ? dep : findParentBySelector(dep, 'tr'); 32 | const trSibling = trFather.nextElementSibling; 33 | 34 | if(!isEndOfObject(trFather)){ 35 | if(isStartOfObject(trFather)){ 36 | traverseTrs(trSibling); 37 | } else { 38 | linkToNMP(trFather); 39 | traverseTrs(trSibling); 40 | } 41 | } 42 | 43 | }; 44 | 45 | if (window.location.host === 'github.com' && window.location.pathname.endsWith('package.json')) { 46 | const deps = Array.from(document.querySelectorAll('.pl-s:first-child')) 47 | .filter((el, i) => /"(dev)?[Dd]ependencies"/.test(el.textContent)); 48 | for(dep of deps){ 49 | traverseTrs(dep); 50 | }; 51 | } else { 52 | alert('This is not a package.json file on github.com'); 53 | } 54 | 55 | /* - /GitHub - */ 56 | -------------------------------------------------------------------------------- /js/gedrag.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | 3 | 4 | 5 | 6 | // Start codeMirror 7 | CodeMirror.fromTextArea(document.getElementById('codeInput'), { 8 | lineNumbers: true, 9 | matchBrackets: true 10 | }); 11 | 12 | 13 | // Define DOM areas 14 | var $form = $('#magia') 15 | , $targetLink = $('#a-holder') 16 | , $codeOutput = $('#codeOutput') 17 | , $codeInput = $('#codeInput') 18 | , $linkName = $('#nome') 19 | 20 | 21 | // Make the form parse JS User Input 22 | $form.submit(function(e){ 23 | e.preventDefault(); 24 | 25 | var raw = $codeInput.val() 26 | , parsedJs = raw 27 | .replace(/\/\*[\s\S]*?\*\//g,'') // Delete block commentaries 28 | .replace(/(https?:)\/\//g,'$1aHR0cHMvLw') // Preserve URLs hack (no lookbehind in js) 29 | .replace(/\/\/.*/g,'') // Delete single line commentaries 30 | .replace(/aHR0cHMvLw/g,'//') // Return URL's // 31 | .replace(/%/g,'%25') // Safe porcentage 32 | .replace(/'/g,'%27') // Safe single quotes 33 | .replace(/"/g,'%22') // Safe double quotes 34 | .replace(/&/g,'%26') // Safe ampersand 35 | .replace(/[\r\n\t]/g,' ') // No newlines or tabs 36 | .replace(/ +/g,' ') // No extra spaces 37 | , nome = $linkName.val() 38 | , hasJq = $('#hasJQuery:checked').length 39 | , aHref = hasJq ? 40 | "javascript:(function(){if(typeof ZHJ1bW1lcg === 'undefined'){var jQueryScript=document.createElement('script');jQueryScript.setAttribute('src','//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js');var caput=document.getElementsByTagName('head');caput[0].appendChild(jQueryScript);ZHJ1bW1lcg=true;}setTimeout(function(){$(document).ready(function(){"+ parsedJs +"});},200);})();" 41 | : 42 | "javascript:(function(){"+ parsedJs +"})();" 43 | , aElement = ''+nome+'' 44 | 45 | $targetLink.empty().append(aElement); 46 | $codeOutput.empty().text(aElement) 47 | }); 48 | 49 | 50 | 51 | 52 | })(jQuery) 53 | -------------------------------------------------------------------------------- /examples/galNum/stijl.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: sans-serif; 3 | margin: 0; 4 | } 5 | header { 6 | background-color: #eee; 7 | } 8 | .vessel { 9 | max-width: 40em; 10 | margin: 0 auto; 11 | padding: 1em 0; 12 | } 13 | #hb { 14 | font-size: 1.2em; 15 | } 16 | #hb span { 17 | color: #808080; 18 | } 19 | #hb b { 20 | color: #444; 21 | cursor: pointer; 22 | } 23 | #hb.done b { 24 | color: #808080; 25 | cursor: auto; 26 | font-weight: normal; 27 | } 28 | #hb b.s { 29 | color: #444; 30 | cursor: auto; 31 | font-weight: bold; 32 | } 33 | form { 34 | display: none; 35 | margin-top: 1em; 36 | } 37 | .v { 38 | display: block; 39 | } 40 | main, 41 | #move { 42 | text-align: center; 43 | } 44 | #gal { 45 | padding: 1em; 46 | margin: 0; 47 | list-style-type: none; 48 | } 49 | #gal li { 50 | min-height: "+innerHeight+"px; 51 | padding: 4em 0; 52 | } 53 | #gal img { 54 | display: block; 55 | max-width: 100%; 56 | margin: 0 auto; 57 | font-size: 3em; 58 | color: #ccc; 59 | } 60 | #gal a { 61 | display: inline-block; 62 | padding: 1em; 63 | text-decoration: none; 64 | color: #ccc; 65 | } 66 | #gal a:hover { 67 | color: #808080; 68 | text-decoration: underline; 69 | } 70 | #move { 71 | position: fixed; 72 | bottom: 0; 73 | left: 0; 74 | width: 5em; 75 | padding: 0; 76 | margin: 0; 77 | font-size: 1.4em; 78 | list-style-type: none; 79 | color: #888; 80 | -webkit-user-select: none; 81 | -moz-user-select: none; 82 | user-select: none; 83 | } 84 | #move li { 85 | float: left; 86 | width: 2.75em; 87 | height: 2em; 88 | line-height: 2em; 89 | cursor: pointer; 90 | } 91 | #move li:hover { 92 | color: #444; 93 | } 94 | #up, 95 | #down { 96 | text-indent: .5em; 97 | } 98 | #down { 99 | clear: left; 100 | } 101 | #move #zoom { 102 | width: 2em; 103 | text-indent: -.5em; 104 | } 105 | #more { 106 | padding: 1em; 107 | font-size: 1.5em; 108 | font-weight: bold; 109 | background-color: #eee; 110 | color: #888; 111 | cursor: pointer; 112 | } 113 | #more:hover { 114 | background-color: #ddd; 115 | color: #777; 116 | } 117 | -------------------------------------------------------------------------------- /examples/minutedock.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | timeBar 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 | Go to mcdlr homepage 14 |
15 |
16 | Fork me on Github! 17 |
18 |
19 | 20 | Drag the below link to your bookmarks 21 | timeBar 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JS inject · mcdlr 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 |
23 | Go to mcdlr homepage 24 |
25 |
26 | Fork me on Github! 27 |
28 |
29 | 30 |
31 |

JS inject

32 |

Here you can create a Bookmarklet in an easy way. Just type the code that you want executed and the link will be generated for you to drag to your Bookmarks bar.

33 |

You also have a jQuery script injection if you want to work with jQuery regardless of it being present on the target page. Just tick the checkbox to have it.

34 | 35 |
36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 |
44 | 45 | Drag the Bookmarklet that will appear here to your bookmarks bar and then use it in any page you want 46 |
47 |

Interested in injecting some CSS instead? You should check CSS Inject!

48 | 49 | 50 |
51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /examples/minutedock.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - MinuteDock - http://minutedock.com/ - *\ 6 | |* - Add timeBar to visualize progress on Goals - *| 7 | \* - v1.4 - */ 8 | 9 | 10 | 11 | 12 | var today = new Date() 13 | , todayStarted = new Date().setHours(0, 0, 0, 0) 14 | 15 | , miliInADay = 86400000 16 | , miliInAWorkingWeek = miliInADay * 5 17 | , miliInAMonth = miliInADay * 30 18 | 19 | , rightNow = today.getTime() 20 | , miliElapsedToday = rightNow - todayStarted 21 | , dayPercentage = miliElapsedToday * 100 / miliInADay 22 | 23 | , weekDay = (today.getDay() + 6) %7 24 | , weekDayMili = weekDay * miliInADay 25 | , miliElapsedInWeek = weekDayMili + miliElapsedToday 26 | , weekPercentageOverflow = miliElapsedInWeek * 100 / miliInAWorkingWeek 27 | , weekPercentage = ( weekPercentageOverflow < 100 ? weekPercentageOverflow : 100 ) 28 | 29 | , monthFirstDay = today.setDate(1) 30 | , monthBegins = today.setHours(0, 0, 0, 0) 31 | , monthNow = rightNow - monthBegins 32 | , monthPercentage = monthNow * 100 / miliInAMonth 33 | 34 | , $brief = $$('.brief') 35 | , regexMonthly = /monthly/ 36 | , regexWeekly = /weekly/ 37 | , regexDaily = /daily/ 38 | ; 39 | 40 | 41 | /* * / 42 | console.log('rightNow = ' + rightNow + ' - ' + new Date(rightNow)); 43 | console.log('todayStarted = ' + todayStarted + ' - ' + new Date(todayStarted)); 44 | console.log('miliElapsedToday = ' + miliElapsedToday + ' - ' + new Date(miliElapsedToday)); 45 | console.log('dayPercentage = ' + dayPercentage); 46 | 47 | console.log('weekDay = ' + weekDay); 48 | console.log('weekDayMili = ' + weekDayMili + ' - ' + new Date(weekDayMili)); 49 | console.log('miliElapsedInWeek = ' + miliElapsedInWeek + ' - ' + new Date(miliElapsedInWeek)); 50 | console.log('weekPercentage = ' + weekPercentage); 51 | 52 | console.log('monthFirstDay = ' + monthFirstDay + ' - ' + new Date(monthFirstDay)); 53 | console.log('monthBegins = ' + monthBegins + ' - ' + new Date(monthBegins)); 54 | console.log('rightNow = ' + rightNow + ' - ' + new Date(rightNow)); 55 | console.log('monthNow = ' + monthNow + ' - ' + new Date(monthNow)); 56 | console.log('monthPercentage = ' + monthPercentage); 57 | /* */ 58 | //console.log('x = ' + x + ' - ' + new Date(x)); 59 | 60 | 61 | var makeTimeBar = function(percentageDelta, isWorkAboveTime, timePercentage){ 62 | var barHTML = '
'; 63 | return barHTML 64 | }; 65 | 66 | 67 | $brief.each(function(el){ 68 | var periodText = el.down('.normal .period').textContent.strip() 69 | , $progressBarTrack = el.down('.progress_bar_track') 70 | , $progress = el.down('.progress') 71 | , progressPercentage = ( $progress ? parseInt(el.down('.progress').getStyle('width')) : 0 ) 72 | , isMonth = regexMonthly.test(periodText) 73 | , isWeek = regexWeekly.test(periodText) 74 | , isDay = regexDaily.test(periodText) 75 | , timePercentage 76 | ; 77 | 78 | if(isMonth){ 79 | timePercentage = monthPercentage 80 | } 81 | else if(isWeek){ 82 | timePercentage = weekPercentage 83 | } 84 | else if(isDay){ 85 | timePercentage = dayPercentage 86 | } 87 | 88 | var isWorkAboveTime = progressPercentage >= timePercentage 89 | , percentageDelta = (progressPercentage - timePercentage).toFixed(1) 90 | ; 91 | 92 | $progressBarTrack.insert({after : makeTimeBar(percentageDelta, isWorkAboveTime, timePercentage)}); 93 | }); 94 | 95 | 96 | 97 | 98 | /* - /MinuteDock - */ 99 | -------------------------------------------------------------------------------- /examples/galFly/gedrag.js: -------------------------------------------------------------------------------- 1 | (function(document, stringified){ 2 | 3 | 4 | 5 | // Helper functions 6 | // 7 | var $ = function(element){ 8 | return document.querySelector(element) 9 | }; 10 | 11 | 12 | // Features common to galFly and galNum 13 | // 14 | var galCommons = (function(){ 15 | return { 16 | defaultShift: 25, 17 | currentImage: 0, 18 | minImage: 0, 19 | maxImage: this.defaultShift, 20 | 21 | init: function(galWidthElement){ 22 | var _this = this; 23 | _this.galWidth = parseInt(getComputedStyle(galWidthElement).getPropertyValue('width'), 10); 24 | onkeypress = function(e){ 25 | if(e.charCode == 106){ 26 | _this.goToImage(true); 27 | } 28 | else if(e.charCode == 107){ 29 | _this.goToImage(false); 30 | } 31 | else if(e.charCode == 108){ 32 | _this.zoom($('#a' + _this.currentImage)); 33 | } 34 | }; 35 | $('#down').addEventListener('click', function(){ 36 | _this.goToImage(true); 37 | }); 38 | $('#up').addEventListener('click', function(){ 39 | _this.goToImage(false); 40 | }); 41 | $('#zoom').addEventListener('click', function(){ 42 | _this.zoom($('#a' + _this.currentImage)); 43 | }); 44 | }, 45 | 46 | goToImage: function(isGoingDown){ 47 | if(isGoingDown){ 48 | if((this.currentImage + 1) >= this.maxImage){ 49 | scrollTo(0, document.body.scrollHeight); 50 | } 51 | else{ 52 | scrollTo(0, $('#a' + ++this.currentImage).offsetTop - 5); 53 | } 54 | } 55 | else{ 56 | if((this.currentImage - 1) >= this.minImage){ 57 | scrollTo(0, $('#a' + --this.currentImage).offsetTop - 5); 58 | } 59 | } 60 | }, 61 | 62 | zoom: function(el){ 63 | var t = el.currentTarget || el; 64 | var newWidth = t.naturalWidth * (t.ct + 1); 65 | if(newWidth <= this.galWidth){ 66 | t.ct++; 67 | t.setAttribute('style', 'width:' + newWidth + 'px;height:' + t.naturalHeight * t.ct + 'px'); 68 | } 69 | else{ 70 | t.ct = 0; 71 | t.setAttribute('style', 'width:100%'); 72 | } 73 | }, 74 | 75 | bindResize: function(imgs){ 76 | for(var i = 0; i < imgs.length; i++){ 77 | var I = imgs.item(i); 78 | I.ct = 1; 79 | I.addEventListener('click', this.zoom.bind(this)); 80 | } 81 | } 82 | } 83 | })(); 84 | 85 | 86 | // Selector variables and source of data 87 | // 88 | var $gal = $('#gal'); 89 | var imageLinks = JSON.parse(stringified); 90 | var increase = galCommons.defaultShift; 91 | 92 | 93 | // Specifics of galFly related to creating the gallery and injecting 94 | // 95 | var createGal = function(start){ 96 | var galleryHTML = $gal.innerHTML = ''; 97 | galCommons.currentImage = galCommons.minImage = start; 98 | 99 | if(imageLinks.length > increase){ 100 | for(var i = start; i < start + galCommons.defaultShift; i++){ 101 | galleryHTML += imageLinks[i]; 102 | } 103 | increase += galCommons.defaultShift; 104 | galCommons.maxImage = start + galCommons.defaultShift; 105 | 106 | $gal.insertAdjacentHTML('afterEnd', '
Load more
'); 107 | $('#more').addEventListener('click', function(){ 108 | scrollTo(0, 0); 109 | this.outerHTML = ''; 110 | createGal(start + galCommons.defaultShift); 111 | }); 112 | } 113 | else { 114 | for(var i = start; i < imageLinks.length; i++){ 115 | galleryHTML += imageLinks[i]; 116 | } 117 | galCommons.maxImage = imageLinks.length; 118 | $gal.insertAdjacentHTML('afterEnd', '
'); 119 | } 120 | 121 | $gal.innerHTML = galleryHTML; 122 | galCommons.bindResize(document.querySelectorAll('img')); 123 | }; 124 | 125 | 126 | galCommons.init($gal); 127 | 128 | createGal(0); 129 | 130 | 131 | 132 | 133 | })(document, stringified) 134 | -------------------------------------------------------------------------------- /examples/galFly.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - galFly - *\ 6 | |* - Render linked images from current page, move with j & k, - *| 7 | |* - increase image size by clicking the image - *| 8 | \* - v2.6 - */ 9 | 10 | 11 | 12 | 13 | var imgs = Array.prototype.filter.call(document.links, function(val){ 14 | return /\.(jpe?g|gif|png|tiff|svg)(\?.*)?$/i.test(val.href); 15 | }); 16 | 17 | var noRepeats = []; 18 | 19 | for(var i = 0; i < imgs.length; i++){ 20 | if(imgs[i].href !== imgs[(i+1) % imgs.length].href){ 21 | noRepeats.push(imgs[i]) 22 | } 23 | } 24 | 25 | var lis = noRepeats.map(function(val, i){ 26 | return '
  • ' + val.href + '' + val.textContent + '
  • '; 27 | }); 28 | 29 | var stringified = JSON.stringify(lis).replace(/\\/g, '\\\\').replace(/'/g, '\\\''); 30 | 31 | var css = "body{margin:0;font-family:sans-serif;text-align:center}#gal{padding:1em;margin:0;list-style-type:none}#gal li{min-height:"+innerHeight+"px;padding:4em 0}#gal img{display:block;max-width:100%;margin:0 auto;font-size:3em;color:#ccc}#gal a{display:inline-block;padding:1em;text-decoration:none;color:#ccc}#gal a:hover{color:gray;text-decoration:underline}#move{position:fixed;bottom:0;left:0;width:5em;padding:0;margin:0;font-size:1.4em;list-style-type:none;color:#888;-webkit-user-select:none;-moz-user-select:none;user-select:none}#move li{float:left;width:2.75em;height:2em;line-height:2em;cursor:pointer}#move li:hover{color:#444}#down,#up{text-indent:.5em}#down{clear:left}#move #zoom{width:2em;text-indent:-.5em}#more{padding:1em;font-size:1.5em;font-weight:700;background-color:#eee;color:#888;cursor:pointer}#more:hover{background-color:#ddd;color:#777}#end{background-color:#ffb1ba;height:10em}"; 32 | 33 | var js = '!function(t,e){var n=function(e){return t.querySelector(e)},i=function(){return{defaultShift:25,currentImage:0,minImage:0,maxImage:this.defaultShift,init:function(t){var e=this;e.galWidth=parseInt(getComputedStyle(t).getPropertyValue("width"),10),onkeypress=function(t){106==t.charCode?e.goToImage(!0):107==t.charCode?e.goToImage(!1):108==t.charCode&&e.zoom(n("#a"+e.currentImage))},n("#down").addEventListener("click",function(){e.goToImage(!0)}),n("#up").addEventListener("click",function(){e.goToImage(!1)}),n("#zoom").addEventListener("click",function(){e.zoom(n("#a"+e.currentImage))})},goToImage:function(t){t?this.currentImage+1>=this.maxImage?scrollTo(0,scrollMaxY):scrollTo(0,n("#a"+ ++this.currentImage).offsetTop-5):this.currentImage-1>=this.minImage&&scrollTo(0,n("#a"+--this.currentImage).offsetTop-5)},zoom:function(t){var e=t.currentTarget||t,n=e.naturalWidth*(e.ct+1);n<=this.galWidth?(e.ct++,e.setAttribute("style","width:"+n+"px;height:"+e.naturalHeight*e.ct+"px")):(e.ct=0,e.setAttribute("style","width:100%"))},bindResize:function(t){for(var e=0;eo){for(var u=e;uLoad more\'),n("#more").addEventListener("click",function(){scrollTo(0,0),this.outerHTML="",c(e+i.defaultShift)})}else{for(var u=e;u\')}r.innerHTML=s,i.bindResize(t.querySelectorAll("img"))};i.init(r),c(0)}(document,stringified)'; 34 | 35 | var html = "galFly
      1. 🔍
      "; 40 | 41 | // window.open('data:text/html,' + encodeURIComponent(html)); 42 | document.write(html); 43 | document.close(); 44 | 45 | 46 | 47 | 48 | /* - /galFly - */ 49 | -------------------------------------------------------------------------------- /examples/galNum.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - galNum - *\ 6 | |* - Create numbered sequence of images based on current one, - *| 7 | |* - Similar to http://mcdlr.com/gal/ but better - *| 8 | \* - v2.2 - */ 9 | 10 | 11 | 12 | 13 | var css = "body{font-family:sans-serif;margin:0}header{background-color:#eee}.vessel{max-width:40em;margin:0 auto;padding:1em 0}#hb{font-size:1.2em}#hb span{color:gray}#hb b{color:#444;cursor:pointer}#hb.done b{color:gray;cursor:auto;font-weight:400}#hb b.s{color:#444;cursor:auto;font-weight:700}form{display:none;margin-top:1em}.v{display:block}#move,main{text-align:center}#gal{padding:1em;margin:0;list-style-type:none}#gal li{min-height:"+innerHeight+"px;padding:4em 0}#gal img{display:block;max-width:100%;margin:0 auto;font-size:3em;color:#ccc}#gal a{display:inline-block;padding:1em;text-decoration:none;color:#ccc}#gal a:hover{color:gray;text-decoration:underline}#move{position:fixed;bottom:0;left:0;width:5em;padding:0;margin:0;font-size:1.4em;list-style-type:none;color:#888;-webkit-user-select:none;-moz-user-select:none;user-select:none}#move li{float:left;width:2.75em;height:2em;line-height:2em;cursor:pointer}#move li:hover{color:#444}#down,#up{text-indent:.5em}#down{clear:left}#move #zoom{width:2em;text-indent:-.5em}#more{padding:1em;font-size:1.5em;font-weight:700;background-color:#eee;color:#888;cursor:pointer}#more:hover{background-color:#ddd;color:#777}"; 14 | 15 | var js = '!function(t,e){var n,i=function(e){return t.querySelector(e)},r=function(t){return parseInt(t,10)},a=function(){return{defaultShift:25,currentImage:0,minImage:0,maxImage:this.defaultShift,init:function(t){var e=this;e.galWidth=parseInt(getComputedStyle(t).getPropertyValue("width"),10),onkeypress=function(t){106==t.charCode?e.goToImage(!0):107==t.charCode?e.goToImage(!1):108==t.charCode&&e.zoom(i("#a"+e.currentImage))},i("#down").addEventListener("click",function(){e.goToImage(!0)}),i("#up").addEventListener("click",function(){e.goToImage(!1)}),i("#zoom").addEventListener("click",function(){e.zoom(i("#a"+e.currentImage))})},goToImage:function(t){t?this.currentImage+1>=this.maxImage?scrollTo(0,scrollMaxY):scrollTo(0,i("#a"+ ++this.currentImage).offsetTop-5):this.currentImage-1>=this.minImage&&scrollTo(0,i("#a"+--this.currentImage).offsetTop-5)},zoom:function(t){var e=t.currentTarget||t,n=e.naturalWidth*(e.ct+1);n<=this.galWidth?(e.ct++,e.setAttribute("style","width:"+n+"px;height:"+e.naturalHeight*e.ct+"px")):(e.ct=0,e.setAttribute("style","width:100%"))},bindResize:function(t){for(var e=0;e\',u=/^0*/.test(e),d=a.maxImage=r(e)+r(o);a.currentImage=a.minImage=r(e);for(var m=r(e);d>m;m++){var h=u?f(m,e.length):m,v=n[0]+h+n[1];s+=\'
    • \'+h+\'\'+v+"
    • "}s+="",l.innerHTML=s,l.insertAdjacentHTML("beforeEnd",\'
      Load more
      \'),i("#more").addEventListener("click",function(){scrollTo(0,0);var t=u?f(d,e.length):d;c.value=t,g(t,o)}),a.bindResize(t.querySelectorAll("img"))};for(part in m){var v=m[part];d+=v.isN?\'\'+v.prt+"":""+v.prt+""}o.innerHTML=d;for(var p=t.querySelectorAll("#hb b"),I=0;I
      1. 🔍
      "; 22 | 23 | // window.open('data:text/html,' + encodeURIComponent(html)); 24 | document.write(html); 25 | document.close(); 26 | 27 | 28 | 29 | 30 | /* - /galNum - */ 31 | -------------------------------------------------------------------------------- /examples/download-torrent.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - Multisite - *\ 6 | |* - Clicks on correct download torrent link - *| 7 | \* - v1.0 - */ 8 | 9 | (function(document){ 10 | 11 | var flash = function(message, isNice){ 12 | document.querySelector('body').insertAdjacentHTML('beforeEnd', '
      ' + message + '
      '); 13 | }; 14 | 15 | var c = function(target) { 16 | var click = new MouseEvent('click', { 17 | 'view': window, 18 | 'bubbles': true, 19 | 'cancelable': true 20 | }); 21 | var targetElement = document.querySelector(target); 22 | if(document.contains(targetElement)){ 23 | targetElement.dispatchEvent(click); 24 | flash('Downloaded successfully', true); 25 | } 26 | else{ 27 | flash('The element does not exist', false); 28 | } 29 | }; 30 | 31 | var host = window.location.host; 32 | 33 | switch(host){ 34 | case 'thepiratebay.se': 35 | case 'baymirror.com': 36 | case 'fastpiratebay.eu': 37 | case 'thepiratebay.mn': 38 | c('.download a:first-child'); 39 | break; 40 | case 'yourbittorrent.com': 41 | c('#main .row a[href$=torrent]'); 42 | break; 43 | case 'www.monova.org': 44 | c('#downloadbox h2 a'); 45 | break; 46 | case 'www.seedpeer.me': 47 | case 'www.seedpeer.eu': 48 | c('.leftSideHolder .downloadMenu .downloadTorrent > a:first-child'); 49 | break; 50 | case 'www.torrentdownloads.me': 51 | c('.inner_container .download li:nth-child(2) > a'); 52 | break; 53 | case 'www.torrents.net': 54 | c('.holder .download-holder a.btn2-download'); 55 | break; 56 | case 'www.torrentfunk.com': 57 | c('.content table[cellspacing="4"] tr:first-child td:nth-child(2) > a'); 58 | break; 59 | case 'www.limetorrents.com': 60 | case 'www.limetorrents.cc': 61 | c('.dltorrent a.csprite_dltorrent'); 62 | break; 63 | case 'torrentcrazy.com': 64 | c('#dl-links > a:first-child'); 65 | break; 66 | case 'kickass.to': 67 | case 'kickass.so': 68 | case 'kickmirror.com': 69 | case 'katproxy.com': 70 | case 'kat.cr': 71 | c('.downloadButtonGroup a.verifTorrentButton'); 72 | break; 73 | case 'torcache.net': 74 | c('.container-fluid > .row-fluid > center:nth-of-type(2) a'); 75 | break; 76 | case 'bitsnoop.com': 77 | c('#dload a.dlbtn.dl_tor2'); 78 | break; 79 | case 'www.torrentreactor.net': 80 | c('a#download-magnet'); 81 | break; 82 | case 'publichd.se': 83 | c('#torrmain tr:nth-child(5) td:nth-child(2) a'); 84 | break; 85 | case '1337x.org': 86 | case '1337x.to': 87 | c('a.torrent'); 88 | break; 89 | case 'extratorrent.cc': 90 | c('.tabledata0 a[title="Download"]'); 91 | break; 92 | case 'www.torrenthound.com': 93 | case 'www.houndmirror.com': 94 | c('#torrent a'); 95 | break; 96 | case 'www.torlock.com': 97 | c('a[href^="/tor/"]'); 98 | break; 99 | case 'www.torrentzap.com': 100 | c('#rightside .downbuts a.downloadLink'); 101 | break; 102 | case 'rarbg.com': 103 | case 'rarbg.to': 104 | c('table.lista tr:first-child td.lista a'); 105 | break; 106 | case 'www.vertor.com': 107 | case 'vertor.eu': 108 | c('.down_but li:nth-child(2) a.downloadLink'); 109 | break; 110 | case 'www.fulldls.com': 111 | c('.downl-buttons .btn-grp a:first-child'); 112 | break; 113 | case 'www.newtorrents.info': 114 | c('#tablediv .sm tr:first-child td:nth-child(2) a'); 115 | break; 116 | case 'h33t.to': 117 | c('table.lista tr:nth-child(2) td:nth-child(2) table td:nth-child(2) a'); 118 | break; 119 | case 'www.torrentbit.net': 120 | c('.tor_item a[title="Download torrent"]'); 121 | break; 122 | case 'torrentproject.se': 123 | c('#download .usite:nth-child(2) a'); 124 | break; 125 | case 'www.bt-chat.com': 126 | window.open(document.querySelector('a[href^="download"]').getAttribute('href').replace('download', 'download1') + '&type=torrent'); 127 | flash('Downloaded in new tab', true); 128 | break; 129 | case 'www.demonoid.pw': 130 | c('[src="/images/arrows/blue.png"]'); 131 | break; 132 | case 'yts.re': 133 | c('.std-btn.torrentDwl'); 134 | break; 135 | case 'isohunt.to': 136 | c('.btn-download'); 137 | break; 138 | case 'yts.to': 139 | if(document.querySelector('.modal-download .modal-content .modal-torrent:nth-child(2)') === null){ 140 | c('.modal-download a.download-torrent'); 141 | } 142 | else{ 143 | c('.modal-download .modal-content .modal-torrent:nth-child(2) a.download-torrent'); 144 | } 145 | break; 146 | 147 | /* 148 | case '': 149 | c(''); 150 | break; 151 | */ 152 | 153 | default: 154 | flash('Unknown site', false); 155 | } 156 | 157 | 158 | })(document); 159 | 160 | 161 | /* 162 | console.log(window.location.host); 163 | * */ 164 | 165 | 166 | /* - /Multisite - */ 167 | -------------------------------------------------------------------------------- /examples/galNum/gedrag.js: -------------------------------------------------------------------------------- 1 | (function(document, href){ 2 | 3 | 4 | 5 | // Helper functions 6 | // 7 | var $ = function(element){ 8 | return document.querySelector(element) 9 | }; 10 | var p = function(num){ 11 | return parseInt(num, 10); 12 | }; 13 | 14 | 15 | // Features common to galFly and galNum 16 | // 17 | var galCommons = (function(){ 18 | return { 19 | defaultShift: 25, 20 | currentImage: 0, 21 | minImage: 0, 22 | maxImage: this.defaultShift, 23 | 24 | init: function(galWidthElement){ 25 | var _this = this; 26 | _this.galWidth = parseInt(getComputedStyle(galWidthElement).getPropertyValue('width'), 10); 27 | onkeypress = function(e){ 28 | if(e.charCode == 106){ 29 | _this.goToImage(true); 30 | } 31 | else if(e.charCode == 107){ 32 | _this.goToImage(false); 33 | } 34 | else if(e.charCode == 108){ 35 | _this.zoom($('#a' + _this.currentImage)); 36 | } 37 | }; 38 | $('#down').addEventListener('click', function(){ 39 | _this.goToImage(true); 40 | }); 41 | $('#up').addEventListener('click', function(){ 42 | _this.goToImage(false); 43 | }); 44 | $('#zoom').addEventListener('click', function(){ 45 | _this.zoom($('#a' + _this.currentImage)); 46 | }); 47 | }, 48 | 49 | goToImage: function(isGoingDown){ 50 | if(isGoingDown){ 51 | if((this.currentImage + 1) >= this.maxImage){ 52 | scrollTo(0, document.body.scrollHeight); 53 | } 54 | else{ 55 | scrollTo(0, $('#a' + ++this.currentImage).offsetTop - 5); 56 | } 57 | } 58 | else{ 59 | if((this.currentImage - 1) >= this.minImage){ 60 | scrollTo(0, $('#a' + --this.currentImage).offsetTop - 5); 61 | } 62 | } 63 | }, 64 | 65 | zoom: function(el){ 66 | var t = el.currentTarget || el; 67 | var newWidth = t.naturalWidth * (t.ct + 1); 68 | if(newWidth <= this.galWidth){ 69 | t.ct++; 70 | t.setAttribute('style', 'width:' + newWidth + 'px;height:' + t.naturalHeight * t.ct + 'px'); 71 | } 72 | else{ 73 | t.ct = 0; 74 | t.setAttribute('style', 'width:100%'); 75 | } 76 | }, 77 | 78 | bindResize: function(imgs){ 79 | for(var i = 0; i < imgs.length; i++){ 80 | var I = imgs.item(i); 81 | I.ct = 1; 82 | I.addEventListener('click', this.zoom.bind(this)); 83 | } 84 | } 85 | } 86 | })(); 87 | 88 | 89 | // Selector variables and source of data 90 | // 91 | var $hrefBar = $('#hb'); 92 | var $start = $('#start'); 93 | var $shift = $('#shift'); 94 | var $form = $('form'); 95 | var $main = $('main'); 96 | var hrefBarContent = ''; 97 | var constantHref; 98 | var hrefParts = href.split(/(\d+)/).map(function(part){ 99 | return { 100 | 'prt' : part, 101 | 'isN' : /^\d+$/.test(part), 102 | 'isS' : false 103 | } 104 | }); 105 | 106 | 107 | // Specifics of galNum related to creating the gallery and injecting 108 | // 109 | var splitBySelected = function(object){ 110 | var result = ['', '']; 111 | var position = 0; 112 | for(chunk in object){ 113 | object[chunk].isS ? position = 1 : result[position] += object[chunk].prt; 114 | } 115 | return result; 116 | }; 117 | 118 | var zeroize = function(number, length){ 119 | var num = number.toString(); 120 | while(num.length < length){ 121 | num = '0' + num; 122 | } 123 | return num; 124 | }; 125 | 126 | var createGal = function(start, shift){ 127 | $main.innerHTML = ''; 128 | var galleryHTML = '
        '; 129 | var hasZeros = /^0*/.test(start); 130 | var end = galCommons.maxImage = p(start) + p(shift); 131 | galCommons.currentImage = galCommons.minImage = p(start); 132 | 133 | for(var i = p(start); i < end; i++){ 134 | var num = (hasZeros ? zeroize(i, start.length) : i); 135 | var src = constantHref[0] + num + constantHref[1]; 136 | galleryHTML += '
      • ' + num + '' + src + '
      • '; 137 | } 138 | galleryHTML += '
      '; 139 | $main.innerHTML = galleryHTML; 140 | 141 | $main.insertAdjacentHTML('beforeEnd', '
      Load more
      '); 142 | $('#more').addEventListener('click', function(){ 143 | scrollTo(0, 0); 144 | var newStart = (hasZeros ? zeroize(end, start.length) : end); 145 | $start.value = newStart; 146 | createGal(newStart, shift); 147 | }); 148 | 149 | galCommons.bindResize(document.querySelectorAll('img')); 150 | }; 151 | 152 | 153 | for(part in hrefParts){ 154 | var I = hrefParts[part]; 155 | hrefBarContent += ( I.isN ? '' + I.prt + '' : '' + I.prt + '' ); 156 | } 157 | $hrefBar.innerHTML = hrefBarContent; 158 | var $numbers = document.querySelectorAll('#hb b'); 159 | 160 | for(var i = 0; i < $numbers.length; i++){ 161 | var I = $numbers.item(i); 162 | I.addEventListener('click', function(e){ 163 | $form.classList.add('v'); 164 | $hrefBar.classList.add('done'); 165 | this.classList.add('s'); 166 | hrefParts[this.getAttribute('data-position')].isS = true; 167 | constantHref = splitBySelected(hrefParts); 168 | $start.value = this.textContent; 169 | $shift.value = galCommons.defaultShift; 170 | }); 171 | } 172 | 173 | galCommons.init($main); 174 | 175 | $form.addEventListener('submit', function(e){ 176 | e.preventDefault(); 177 | createGal($start.value, $shift.value); 178 | }); 179 | 180 | 181 | 182 | 183 | })(document, href) 184 | -------------------------------------------------------------------------------- /examples/openLinks.js: -------------------------------------------------------------------------------- 1 | /* - This is a javascript snippet to be used with 2 | http://mcdlr.com/js-inject/ - */ 3 | 4 | 5 | /* - Any site - *\ 6 | |* - Opens links - *| 7 | \* - v1.0 - */ 8 | 9 | 10 | // Global state, sorry 11 | let selectingParent = false; 12 | 13 | class Menu { 14 | constructor(StyleClass, rmvEvntLstnr) { 15 | this.StyleClass = StyleClass; 16 | this.style = null; 17 | this.element = null; 18 | this.rmvEvntLstnr = rmvEvntLstnr; 19 | this.state = { 20 | selector: 'Hover over a link to consider as target', 21 | parentSelector: '', 22 | links: [], 23 | lastLinks: [], 24 | linkDelta: 10, 25 | elementTentativelyChosen: false, 26 | linksArrayHasContent: false, 27 | selectorChosen: false, 28 | willReverseLinks: false, 29 | }; 30 | this.initialize(); 31 | 32 | this.handleOpen = this.handleOpen.bind(this); 33 | this.handleTryAgain = this.handleTryAgain.bind(this); 34 | this.handleRange = this.handleRange.bind(this); 35 | } 36 | 37 | initialize() { 38 | document.body.insertAdjacentHTML('beforeend', ''); 39 | this.element = document.querySelector('.openLinks__menu'); 40 | this.style = new this.StyleClass({ id: 'openLinksMenuStyle', content: ` 41 | .openLinks__menu { 42 | position: fixed; 43 | bottom: 0; 44 | right: 0; 45 | left: 0; 46 | padding: 1em; 47 | background-color: #eee; 48 | color: #222; 49 | box-shadow: 0 -.2em .5em rgba(0, 0, 0, .1); 50 | } 51 | .openLinks__menu__selectorDisplay { 52 | font-family: monospace; 53 | margin: 0 0 .6em; 54 | } 55 | .openLinks__menu__button { 56 | display: inline-block; 57 | background-color: #81d4fa; 58 | cursor: pointer; 59 | padding: .6em .8em; 60 | margin: .2em .2em 0 0; 61 | } 62 | .openLinks__menu__range { 63 | float: right; 64 | } 65 | .openLinks__menu__range input { 66 | display: inline-block; 67 | width: 10em; 68 | vertical-align: middle; 69 | } 70 | .openLinks__menu__range span { 71 | display: inline-block; 72 | width: 2em; 73 | } 74 | ` }); 75 | document.addEventListener('keydown', (event) => { 76 | if (event.keyCode === 82) { 77 | this.state.willReverseLinks = true; 78 | } else if (event.keyCode >= 65 && event.keyCode <= 90) { 79 | this.handleSelectparent(); 80 | } else if (event.keyCode === 32) { 81 | event.preventDefault(); 82 | this.handleOpen(); 83 | } else if (event.keyCode === 13) { 84 | this.handleTryAgain(); 85 | } 86 | }); 87 | this.render(); 88 | } 89 | 90 | setSelector(selector) { 91 | this.state.selector = selector; 92 | this.state.elementTentativelyChosen = true; 93 | this.render(); 94 | } 95 | 96 | setParentSelector(selector) { 97 | this.state.parentSelector = selector; 98 | this.render(); 99 | } 100 | 101 | openLinks() { 102 | const linksToOpen = this.state.links.slice(0, this.state.linkDelta); 103 | const RemainingLinks = this.state.links.slice(this.state.linkDelta); 104 | this.state.lastLinks = linksToOpen; 105 | this.state.links = RemainingLinks; 106 | 107 | for (const link of this.state.lastLinks) { 108 | const href = link.getAttribute('href'); 109 | console.log(href); 110 | window.open(href); 111 | } 112 | 113 | this.render(); 114 | } 115 | 116 | handleOpen() { 117 | if (!this.state.linksArrayHasContent) { 118 | this.state.linksArrayHasContent = true; 119 | this.state.links = Array 120 | .from(document.querySelectorAll(`${this.state.parentSelector} ${this.state.selector}`)) 121 | .filter((aElem) => { 122 | const href = aElem.getAttribute('href'); 123 | return href && href.length > 1; 124 | }); 125 | if (this.state.willReverseLinks) { 126 | this.state.links = this.state.links.reverse(); 127 | } 128 | this.rmvEvntLstnr(); 129 | } 130 | this.openLinks(); 131 | } 132 | 133 | handleSelectparent() { 134 | // global var 135 | selectingParent = true; 136 | } 137 | 138 | handleTryAgain() { 139 | for (const link of this.state.lastLinks) { 140 | const href = link.getAttribute('href'); 141 | console.log(href); 142 | window.open(href); 143 | } 144 | } 145 | 146 | handleRange(event) { 147 | this.state.linkDelta = event.target.value; 148 | document.querySelector('.openLinks__menu__range span').textContent = this.state.linkDelta; 149 | document.querySelector('.openLinks__menu__open').textContent = this.getOpenLinkText(); 150 | } 151 | 152 | getOpenLinkText() { 153 | if (!this.state.linksArrayHasContent) { 154 | return 'Open [spacebar]'; 155 | } else if (this.state.links.length <= 0) { 156 | return 'No more links'; 157 | } 158 | const toOpenLength = this.state.links.length < this.state.linkDelta 159 | ? this.state.links.length 160 | : this.state.linkDelta; 161 | return `Open next ${toOpenLength} links [spacebar]`; 162 | } 163 | 164 | render() { 165 | const childNodes = Array.from(this.element.childNodes); 166 | for (const node of childNodes) { 167 | node.remove(); 168 | } 169 | this.element.insertAdjacentHTML('beforeend', 170 | ` 171 | ${this.state.elementTentativelyChosen 172 | ? `${this.getOpenLinkText()} 173 | ${this.state.linksArrayHasContent 174 | ? 'try again [enter]' 175 | : 'Select parent [any key]' 176 | }` 177 | : '' 178 | } 179 | 184 | `); 185 | 186 | const openLinksMenuOpen = this.element.querySelector('.openLinks__menu__open'); 187 | const openLinksMenuSelectparent = this.element.querySelector('.openLinks__menu__selectparent'); 188 | const openLinksMenuTryAgain = this.element.querySelector('.openLinks__menu__tryagain'); 189 | const openLinksMenuRange = this.element.querySelector('.openLinks__menu__range input'); 190 | 191 | if (openLinksMenuOpen) { 192 | openLinksMenuOpen.addEventListener('click', this.handleOpen); 193 | } 194 | if (openLinksMenuSelectparent) { 195 | openLinksMenuSelectparent.addEventListener('click', this.handleSelectparent); 196 | } 197 | if (openLinksMenuTryAgain) { 198 | openLinksMenuTryAgain.addEventListener('click', this.handleTryAgain); 199 | } 200 | openLinksMenuRange.addEventListener('input', this.handleRange); 201 | } 202 | } 203 | 204 | class Style { 205 | constructor({ id, content = '.cmFuZG9tIHNoaXQ { visibility: visible; }' }) { 206 | this.id = id; 207 | this.state = { 208 | content, 209 | element: null, 210 | }; 211 | this.initialize(); 212 | } 213 | 214 | initialize() { 215 | document.head.insertAdjacentHTML('beforeend', ``); 216 | this.state.element = document.getElementById(this.id); 217 | } 218 | 219 | setContent(content) { 220 | this.state.element.sheet.deleteRule(0); 221 | this.state.element.sheet.insertRule(content, 0); 222 | } 223 | } 224 | 225 | const getSelectorFromClassList = (nodeName, classList) => { 226 | const classArray = Array.from(classList); 227 | return `${nodeName.toLowerCase()}${classArray.reduce((prev, curr) => `${prev}.${curr}`, '')}`; 228 | }; 229 | 230 | 231 | const styleManager = new Style({ id: 'c3R5bGU' }); 232 | const parentStyleManager = new Style({ id: 'cGFyZW50' }); 233 | 234 | const menu = new Menu(Style, () => { 235 | document.removeEventListener('mouseover', handleMouseOver, false); 236 | }); 237 | 238 | const handleMouseOver = (event) => { 239 | // global var 240 | if (selectingParent) { 241 | const selector = getSelectorFromClassList(event.target.nodeName, event.target.classList); 242 | const rule = `${selector} {outline: .15em solid green}`; 243 | parentStyleManager.setContent(rule); 244 | menu.setParentSelector(selector); 245 | } else { 246 | if (event.target.nodeName === 'A') { 247 | const selector = getSelectorFromClassList('A', event.target.classList); 248 | const rule = `${selector} {outline: .1em solid red; color: red}`; 249 | styleManager.setContent(rule); 250 | menu.setSelector(selector); 251 | } 252 | } 253 | }; 254 | 255 | document.addEventListener('mouseover', handleMouseOver, false); 256 | -------------------------------------------------------------------------------- /examples/galFly/stringified.js: -------------------------------------------------------------------------------- 1 | var stringified = '["
    • \\"http://i.imgur.com/0huQR.jpg\\"Kirk Van Houten - Can I Borrow a Feeling? [1024x1024]
    • ","
    • \\"http://i.imgur.com/Gne9qB6.jpg\\"Storm Thorgerson has sadly died. In his honour let us appreciate his most famous piece. Pink Floyd - Dark Side of the Moon [1600x1133]
    • ","
    • \\"http://i.imgur.com/gD4y826.jpg\\"Before photoshop, artists did things like type the name of the band and album in some aluminum and take a picture of the band\'s reflection in it. Deep Purple - Machine Head [1500x1500]
    • ","
    • \\"http://i.imgur.com/RfucDMx.jpg\\"Gorillaz - Plastic Beach (japanese version) [1000x1000]
    • ","
    • \\"http://i.imgur.com/5ShDH3C.jpg\\"Pink Floyd - Wish You Were Here [1984x1984]
    • ","
    • \\"http://i.imgur.com/JNUwE95.jpg\\"Taking this sub literally. The Jimi Hendrix Experience - Electric Ladyland (gatefold) [1200x600]
    • ","
    • \\"http://i.imgur.com/fabeB.jpg\\"Tycho - Dive (2012) [1400x1400]
    • ","
    • \\"http://i.imgur.com/beHKaN8.jpg\\"Daft Punk-Random Access Memories [658x658]
    • ","
    • \\"http://i.imgur.com/ZYra0.jpg\\"Joy Division - Unknown Pleasures [1448x1449]
    • ","
    • \\"http://www.imgur.com/I7oHks7.jpeg\\"Gorillaz - \\"Plastic Beach\\" [1418x1418]
    • ","
    • \\"http://i.imgur.com/15wV9.jpg\\"South Park - Faith + 1 [1000x1000]
    • ","
    • \\"http://i.imgur.com/9BbhM8t.jpg\\"Ben Howard - The Wolves [960x960]
    • ","
    • \\"http://i.imgur.com/gUA6u.jpg\\"Godspeed You! Cat Emperor - Lift Yr Skinny Paws Like Antennas To Human [500x500]
    • ","
    • \\"http://i.imgur.com/IJCtOS4.jpg\\"Pink Floyd - Dark Side of the Moon (40th Anniversary Release; Alternate Artwork) [500x500]
    • ","
    • \\"http://i.imgur.com/YUaj9.jpg\\"The original artwork used for the cover of In The Airplane Over The Sea by Neutral Milk Hotel. [1935x3000]
    • ","
    • \\"http://i.imgur.com/iYMjq.jpg\\"STS9 - When the Dust Settles [1258x1258]
    • ","
    • \\"http://i.imgur.com/LRisE.jpg\\"Tame Impala - Lonerism (back) [800x802]
    • ","
    • \\"http://i.imgur.com/bfL0zln.jpg\\"Thelonious Monk - Underground (1968) [1600×1601px]
    • ","
    • \\"http://i.imgur.com/CjuzO2N.jpg\\"The XX - Coexist [3490 x 3478]
    • ","
    • \\"http://i.imgur.com/ZI8cuJD.jpg\\"Madvillain - Madvillainy [1920 x 1080]
    • ","
    • \\"http://i.imgur.com/oltWzft.jpg\\"Mastodon - Crack the Skye [1600x1600]
    • ","
    • \\"http://i.imgur.com/DhCxd6z.jpg\\"For its 20th birthday, Green Day - Dookie [800x800]
    • ","
    • \\"http://i.imgur.com/gD2EDU9.jpg\\"Death Grips-Ex-Military [540x540]
    • ","
    • \\"http://i.imgur.com/2Ra8P.jpg\\"Modest Mouse - Good News For People Who Love Bad News [1009x1000]
    • ","
    • \\"http://i.imgur.com/KODdNNP.jpg\\"Monty Python - The Album Of The Soundtrack Of The Trailer Of The Film Of Monty Python And The Holy Grail (Executive Version) [1000x1000]
    • ","
    • \\"http://i.imgur.com/16SDx.jpg\\"I\'ll see your Mastodon - Leviathan cover and raise you the full, original image (art by Paul Romano) [1239x1227]
    • ","
    • \\"http://f0.bcbits.com/img/a3988699246_10.jpg\\"Danny Baranowsky - Super Meat Boy Soundtrack (Nice to Meat You CD Edition) [1200 x 1200] {OS}
    • ","
    • \\"http://i.imgur.com/gtjXRh3l.jpg\\"Childish Gambino - Because the Internet [640x640]
    • ","
    • \\"http://i.imgur.com/ddN1iQ4.jpg\\"Funki Porcini - Fast Asleep [655x650]
    • ","
    • \\"http://i.imgur.com/yNQYHJC.jpg\\"Neutral Milk Hotel - In an Aeroplane Over the Sea Back Cover [522x442]
    • ","
    • \\"http://i.imgur.com/RPNR2.jpg\\"Duke Silver - Memories of Now [500 x 698]
    • ","
    • \\"http://i.imgur.com/JeWkd.jpg\\"King Crimson - In The Court Of The Crimson King [1440x900]
    • ","
    • \\"http://i.imgur.com/JXFaktg.jpg\\"Supertramp- Breakfast in America [2394x2394]
    • ","
    • \\"http://i.imgur.com/POz7M.jpg\\"A Tribe Called Quest - The Low End Theory [1500x1500]
    • ","
    • \\"http://i.imgur.com/fziSENL.jpg\\"Pink Floyd- Animals [1000x1000]
    • ","
    • \\"http://i.imgur.com/5votyaT.jpg\\"Monty Python - Another Monty Python Record [1000x1000]
    • ","
    • \\"http://behance.vo.llnwd.net/profiles16/510410/projects/6163161/fe55cf43401a712576f368289c232514.png\\"I created the album art for the EP of my friends\' band - Yolanda [OC] [600x600]
    • ","
    • \\"http://i.imgur.com/bsGE6Mo.jpg\\"Flying Lotus - Cosmogramma [2000 X 2000]
    • ","
    • \\"http://i.imgur.com/6hU4fEG.jpg\\"Slow Magic - ▲ [2304x2300]
    • ","
    • \\"http://i.imgur.com/tU1YWsY.jpg\\"Septa - The Lover [800x800]
    • ","
    • \\"http://i.imgur.com/uZZgh.jpg\\"Dog is Dead - All Our Favourite Stories [2362x2362]
    • ","
    • \\"http://i.imgur.com/FUQxYV9.jpg\\"Flying Lotus - Pattern+Grid World [1000x1000]
    • ","
    • \\"http://i.imgur.com/eshPicR.jpg\\"Rage Against The Machine - Bulls On Parade (single) [1441x1464]
    • ","
    • \\"http://i.imgur.com/8IOp4nj.jpg\\"Frank Zappa - Ship Arriving Too Late to Save a Drowning Witch (1417x1417)
    • "]'; 2 | -------------------------------------------------------------------------------- /js/libs/javascript.js: -------------------------------------------------------------------------------- 1 | CodeMirror.defineMode("javascript", function(config, parserConfig) { 2 | var indentUnit = config.indentUnit; 3 | var jsonMode = parserConfig.json; 4 | 5 | // Tokenizer 6 | 7 | var keywords = function(){ 8 | function kw(type) {return {type: type, style: "keyword"};} 9 | var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); 10 | var operator = kw("operator"), atom = {type: "atom", style: "atom"}; 11 | return { 12 | "if": A, "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, 13 | "return": C, "break": C, "continue": C, "new": C, "delete": C, "throw": C, 14 | "var": kw("var"), "function": kw("function"), "catch": kw("catch"), 15 | "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), 16 | "in": operator, "typeof": operator, "instanceof": operator, 17 | "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom 18 | }; 19 | }(); 20 | 21 | var isOperatorChar = /[+\-*&%=<>!?|]/; 22 | 23 | function chain(stream, state, f) { 24 | state.tokenize = f; 25 | return f(stream, state); 26 | } 27 | 28 | function nextUntilUnescaped(stream, end) { 29 | var escaped = false, next; 30 | while ((next = stream.next()) != null) { 31 | if (next == end && !escaped) 32 | return false; 33 | escaped = !escaped && next == "\\"; 34 | } 35 | return escaped; 36 | } 37 | 38 | // Used as scratch variables to communicate multiple values without 39 | // consing up tons of objects. 40 | var type, content; 41 | function ret(tp, style, cont) { 42 | type = tp; content = cont; 43 | return style; 44 | } 45 | 46 | function jsTokenBase(stream, state) { 47 | var ch = stream.next(); 48 | if (ch == '"' || ch == "'") 49 | return chain(stream, state, jsTokenString(ch)); 50 | else if (/[\[\]{}\(\),;\:\.]/.test(ch)) 51 | return ret(ch); 52 | else if (ch == "0" && stream.eat(/x/i)) { 53 | stream.eatWhile(/[\da-f]/i); 54 | return ret("number", "number"); 55 | } 56 | else if (/\d/.test(ch)) { 57 | stream.match(/^\d*(?:\.\d*)?(?:e[+\-]?\d+)?/); 58 | return ret("number", "number"); 59 | } 60 | else if (ch == "/") { 61 | if (stream.eat("*")) { 62 | return chain(stream, state, jsTokenComment); 63 | } 64 | else if (stream.eat("/")) { 65 | stream.skipToEnd(); 66 | return ret("comment", "comment"); 67 | } 68 | else if (state.reAllowed) { 69 | nextUntilUnescaped(stream, "/"); 70 | stream.eatWhile(/[gimy]/); // 'y' is "sticky" option in Mozilla 71 | return ret("regexp", "string"); 72 | } 73 | else { 74 | stream.eatWhile(isOperatorChar); 75 | return ret("operator", null, stream.current()); 76 | } 77 | } 78 | else if (ch == "#") { 79 | stream.skipToEnd(); 80 | return ret("error", "error"); 81 | } 82 | else if (isOperatorChar.test(ch)) { 83 | stream.eatWhile(isOperatorChar); 84 | return ret("operator", null, stream.current()); 85 | } 86 | else { 87 | stream.eatWhile(/[\w\$_]/); 88 | var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; 89 | return known ? ret(known.type, known.style, word) : 90 | ret("variable", "variable", word); 91 | } 92 | } 93 | 94 | function jsTokenString(quote) { 95 | return function(stream, state) { 96 | if (!nextUntilUnescaped(stream, quote)) 97 | state.tokenize = jsTokenBase; 98 | return ret("string", "string"); 99 | }; 100 | } 101 | 102 | function jsTokenComment(stream, state) { 103 | var maybeEnd = false, ch; 104 | while (ch = stream.next()) { 105 | if (ch == "/" && maybeEnd) { 106 | state.tokenize = jsTokenBase; 107 | break; 108 | } 109 | maybeEnd = (ch == "*"); 110 | } 111 | return ret("comment", "comment"); 112 | } 113 | 114 | // Parser 115 | 116 | var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true}; 117 | 118 | function JSLexical(indented, column, type, align, prev, info) { 119 | this.indented = indented; 120 | this.column = column; 121 | this.type = type; 122 | this.prev = prev; 123 | this.info = info; 124 | if (align != null) this.align = align; 125 | } 126 | 127 | function inScope(state, varname) { 128 | for (var v = state.localVars; v; v = v.next) 129 | if (v.name == varname) return true; 130 | } 131 | 132 | function parseJS(state, style, type, content, stream) { 133 | var cc = state.cc; 134 | // Communicate our context to the combinators. 135 | // (Less wasteful than consing up a hundred closures on every call.) 136 | cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; 137 | 138 | if (!state.lexical.hasOwnProperty("align")) 139 | state.lexical.align = true; 140 | 141 | while(true) { 142 | var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; 143 | if (combinator(type, content)) { 144 | while(cc.length && cc[cc.length - 1].lex) 145 | cc.pop()(); 146 | if (cx.marked) return cx.marked; 147 | if (type == "variable" && inScope(state, content)) return "variable-2"; 148 | return style; 149 | } 150 | } 151 | } 152 | 153 | // Combinator utils 154 | 155 | var cx = {state: null, column: null, marked: null, cc: null}; 156 | function pass() { 157 | for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); 158 | } 159 | function cont() { 160 | pass.apply(null, arguments); 161 | return true; 162 | } 163 | function register(varname) { 164 | var state = cx.state; 165 | if (state.context) { 166 | cx.marked = "def"; 167 | for (var v = state.localVars; v; v = v.next) 168 | if (v.name == varname) return; 169 | state.localVars = {name: varname, next: state.localVars}; 170 | } 171 | } 172 | 173 | // Combinators 174 | 175 | var defaultVars = {name: "this", next: {name: "arguments"}}; 176 | function pushcontext() { 177 | if (!cx.state.context) cx.state.localVars = defaultVars; 178 | cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; 179 | } 180 | function popcontext() { 181 | cx.state.localVars = cx.state.context.vars; 182 | cx.state.context = cx.state.context.prev; 183 | } 184 | function pushlex(type, info) { 185 | var result = function() { 186 | var state = cx.state; 187 | state.lexical = new JSLexical(state.indented, cx.stream.column(), type, null, state.lexical, info) 188 | }; 189 | result.lex = true; 190 | return result; 191 | } 192 | function poplex() { 193 | var state = cx.state; 194 | if (state.lexical.prev) { 195 | if (state.lexical.type == ")") 196 | state.indented = state.lexical.indented; 197 | state.lexical = state.lexical.prev; 198 | } 199 | } 200 | poplex.lex = true; 201 | 202 | function expect(wanted) { 203 | return function expecting(type) { 204 | if (type == wanted) return cont(); 205 | else if (wanted == ";") return pass(); 206 | else return cont(arguments.callee); 207 | }; 208 | } 209 | 210 | function statement(type) { 211 | if (type == "var") return cont(pushlex("vardef"), vardef1, expect(";"), poplex); 212 | if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); 213 | if (type == "keyword b") return cont(pushlex("form"), statement, poplex); 214 | if (type == "{") return cont(pushlex("}"), block, poplex); 215 | if (type == ";") return cont(); 216 | if (type == "function") return cont(functiondef); 217 | if (type == "for") return cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"), 218 | poplex, statement, poplex); 219 | if (type == "variable") return cont(pushlex("stat"), maybelabel); 220 | if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), 221 | block, poplex, poplex); 222 | if (type == "case") return cont(expression, expect(":")); 223 | if (type == "default") return cont(expect(":")); 224 | if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), 225 | statement, poplex, popcontext); 226 | return pass(pushlex("stat"), expression, expect(";"), poplex); 227 | } 228 | function expression(type) { 229 | if (atomicTypes.hasOwnProperty(type)) return cont(maybeoperator); 230 | if (type == "function") return cont(functiondef); 231 | if (type == "keyword c") return cont(expression); 232 | if (type == "(") return cont(pushlex(")"), expression, expect(")"), poplex, maybeoperator); 233 | if (type == "operator") return cont(expression); 234 | if (type == "[") return cont(pushlex("]"), commasep(expression, "]"), poplex, maybeoperator); 235 | if (type == "{") return cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeoperator); 236 | return cont(); 237 | } 238 | function maybeoperator(type, value) { 239 | if (type == "operator" && /\+\+|--/.test(value)) return cont(maybeoperator); 240 | if (type == "operator") return cont(expression); 241 | if (type == ";") return; 242 | if (type == "(") return cont(pushlex(")"), commasep(expression, ")"), poplex, maybeoperator); 243 | if (type == ".") return cont(property, maybeoperator); 244 | if (type == "[") return cont(pushlex("]"), expression, expect("]"), poplex, maybeoperator); 245 | } 246 | function maybelabel(type) { 247 | if (type == ":") return cont(poplex, statement); 248 | return pass(maybeoperator, expect(";"), poplex); 249 | } 250 | function property(type) { 251 | if (type == "variable") {cx.marked = "property"; return cont();} 252 | } 253 | function objprop(type) { 254 | if (type == "variable") cx.marked = "property"; 255 | if (atomicTypes.hasOwnProperty(type)) return cont(expect(":"), expression); 256 | } 257 | function commasep(what, end) { 258 | function proceed(type) { 259 | if (type == ",") return cont(what, proceed); 260 | if (type == end) return cont(); 261 | return cont(expect(end)); 262 | } 263 | return function commaSeparated(type) { 264 | if (type == end) return cont(); 265 | else return pass(what, proceed); 266 | }; 267 | } 268 | function block(type) { 269 | if (type == "}") return cont(); 270 | return pass(statement, block); 271 | } 272 | function vardef1(type, value) { 273 | if (type == "variable"){register(value); return cont(vardef2);} 274 | return cont(); 275 | } 276 | function vardef2(type, value) { 277 | if (value == "=") return cont(expression, vardef2); 278 | if (type == ",") return cont(vardef1); 279 | } 280 | function forspec1(type) { 281 | if (type == "var") return cont(vardef1, forspec2); 282 | if (type == ";") return pass(forspec2); 283 | if (type == "variable") return cont(formaybein); 284 | return pass(forspec2); 285 | } 286 | function formaybein(type, value) { 287 | if (value == "in") return cont(expression); 288 | return cont(maybeoperator, forspec2); 289 | } 290 | function forspec2(type, value) { 291 | if (type == ";") return cont(forspec3); 292 | if (value == "in") return cont(expression); 293 | return cont(expression, expect(";"), forspec3); 294 | } 295 | function forspec3(type) { 296 | if (type != ")") cont(expression); 297 | } 298 | function functiondef(type, value) { 299 | if (type == "variable") {register(value); return cont(functiondef);} 300 | if (type == "(") return cont(pushlex(")"), pushcontext, commasep(funarg, ")"), poplex, statement, popcontext); 301 | } 302 | function funarg(type, value) { 303 | if (type == "variable") {register(value); return cont();} 304 | } 305 | 306 | // Interface 307 | 308 | return { 309 | startState: function(basecolumn) { 310 | return { 311 | tokenize: jsTokenBase, 312 | reAllowed: true, 313 | cc: [], 314 | lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), 315 | localVars: null, 316 | context: null, 317 | indented: 0 318 | }; 319 | }, 320 | 321 | token: function(stream, state) { 322 | if (stream.sol()) { 323 | if (!state.lexical.hasOwnProperty("align")) 324 | state.lexical.align = false; 325 | state.indented = stream.indentation(); 326 | } 327 | if (stream.eatSpace()) return null; 328 | var style = state.tokenize(stream, state); 329 | if (type == "comment") return style; 330 | state.reAllowed = type == "operator" || type == "keyword c" || type.match(/^[\[{}\(,;:]$/); 331 | return parseJS(state, style, type, content, stream); 332 | }, 333 | 334 | indent: function(state, textAfter) { 335 | if (state.tokenize != jsTokenBase) return 0; 336 | var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, 337 | type = lexical.type, closing = firstChar == type; 338 | if (type == "vardef") return lexical.indented + 4; 339 | else if (type == "form" && firstChar == "{") return lexical.indented; 340 | else if (type == "stat" || type == "form") return lexical.indented + indentUnit; 341 | else if (lexical.info == "switch" && !closing) 342 | return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); 343 | else if (lexical.align) return lexical.column + (closing ? 0 : 1); 344 | else return lexical.indented + (closing ? 0 : indentUnit); 345 | }, 346 | 347 | electricChars: ":{}" 348 | }; 349 | }); 350 | 351 | CodeMirror.defineMIME("text/javascript", "javascript"); 352 | CodeMirror.defineMIME("application/json", {name: "javascript", json: true}); 353 | -------------------------------------------------------------------------------- /js/libs/codemirror-compressed.js: -------------------------------------------------------------------------------- 1 | var CodeMirror=function(){function a(b,c){function bA(a){return a>=0&&a=d.to||b.lined-400)return m(a),ct(c.line);if(bi>d-400)return bj=d,m(a),cs(c);bi=d;var e=c,f;if(u&&!H(bf.from,bf.to)&&!I(c,bf.from)&&!I(bf.to,c)){var h=r(n,"mouseup",c$(function(b){h(),Math.abs(a.clientX-b.clientX)+Math.abs(a.clientY-b.clientY)<10&&(m(b),cm(c.line,c.ch,!0),ca())}),!0);return}m(a),cm(c.line,c.ch,!0);var j=r(n,"mousemove",c$(function(a){clearTimeout(f),m(a),i(a)}),!0),h=r(n,"mouseup",c$(function(a){clearTimeout(f);var b=cN(a);b&&ck(c,b),m(a),ca(),bk=!0,j(),h()}),!0)}function bF(a){var b=cN(a);if(!b)return;bj=+(new Date),m(a),cs(b)}function bG(a){a.preventDefault();var b=cN(a,!0),c=a.dataTransfer.files;if(!b||g.readOnly)return;if(c&&c.length&&window.FileReader&&window.File){function d(a,c){var d=new FileReader;d.onload=function(){f[c]=d.result,++h==e&&bS(f.join(""),co(b),co(b))},d.readAsText(a)}var e=c.length,f=Array(e),h=0;for(var i=0;i-1&&setTimeout(c$(function(){cx(bf.to.line,"smart")}),50)}var c=a.keyCode;c==13?(g.readOnly||cu(),m(a)):!a.ctrlKey&&!a.altKey&&!a.metaKey&&c==9&&g.tabMode!="default"?m(a):bZ(bt)}function bL(){if(g.readOnly=="nocursor")return;be||(g.onFocus&&g.onFocus(bB),be=!0,x.className.search(/\bCodeMirror-focused\b/)==-1&&(x.className+=" CodeMirror-focused"),bo||b_()),bY(),cP()}function bM(){be&&(g.onBlur&&g.onBlur(bB),be=!1,x.className=x.className.replace(" CodeMirror-focused","")),clearInterval(_),setTimeout(function(){be||(bg=null)},150)}function bN(a,b,c,d,e){if(bd){var f=[];for(var h=a.line,i=b.line+1;hg.undoDepth)bd.done.shift()}bR(a,b,c,d,e)}function bO(a,b){var c=a.pop();if(c){var d=[],e=c.start+c.added;for(var f=c.start;fg&&(bw=o,g=o.length,bx=null,f=!1)}if(f){g=0,bw="",bx=null;for(var i=0,n=bb.length;ig&&(g=o.length,bw=o)}}var p=[],q=c.length-j-1;for(var i=0,o=bc.length;ib.line&&p.push(r+q)}c.length<5?(cU(a.line,a.line+c.length),p.push(a.line+c.length)):p.push(a.line),bc=p,cW(100),bl.push({from:a.line,to:b.line+1,diff:q}),bm={from:a,to:b,text:c},cl(d,e,s(bf.from.line),s(bf.to.line)),R.style.height=bb.length*cK()+2*cL()+"px"}function bS(a,b,c){function d(d){if(I(d,b))return d;if(!I(c,d))return e;var f=d.line+a.length-(c.line-b.line)-1,g=d.ch;return d.line==c.line&&(g+=a[a.length-1].length-(c.ch-(c.line==b.line?b.ch:0))),{line:f,ch:g}}b=co(b),c?c=co(c):c=b,a=O(a);var e;return bU(a,b,c,function(a){return e=a,{from:d(bf.from),to:d(bf.to)}}),e}function bT(a,b){bU(O(a),bf.from,bf.to,function(a){return b=="end"?{from:a,to:a}:b=="start"?{from:bf.from,to:bf.from}:{from:bf.from,to:a}})}function bU(a,b,c,d){var e=a.length==1?a[0].length+b.ch:a[a.length-1].length,f=d({line:b.line+a.length-1,ch:e});bN(b,c,a,f.from,f.to)}function bV(a,b){var c=a.line,d=b.line;if(c==d)return bb[c].text.slice(a.ch,b.ch);var e=[bb[c].text.slice(a.ch)];for(var f=c+1;f=a)return{line:c,ch:a-d};++c,d=e+1}}if(bo||!be)return;var a=!1,b=D.value,c=P(D);if(!c)return!1;var a=bu.text!=b,d=bh,e=a||c.start!=bu.start||c.end!=(d?bu.start:bu.end);if(!e&&!d)return!1;if(a){bg=bh=null;if(g.readOnly)return bk=!0,"changed"}var h=f(c.start,bu.from),i=f(c.end,bu.from);if(d){var j=c.start==d.anchor?i:h,k=bg?bf.to:c.start==d.anchor?h:i;(bf.inverted=I(j,k))?(h=j,i=k):(bh=null,h=k,i=j)}h.line==i.line&&h.line==bf.from.line&&h.line==bf.to.line&&!bg&&(bk=!1);if(a){var l=0,m=b.length,n=Math.min(m,bu.text.length),o,p=bu.from,q=-1;while(l-1?l-q:l,s=bu.to-1,t=bu.text.length;for(;;){o=bu.text.charAt(t);if(b.charAt(m)!=o){++m,++t;break}o=="\n"&&s--;if(t<=l||m<=l)break;--m,--t}var q=bu.text.lastIndexOf("\n",t-1),u=q==-1?t:t-q-1;bN({line:p,ch:r},{line:s,ch:u},O(b.slice(l,m)),h,i);if(p!=s||h.line!=p)bk=!0}else cl(h,i);return bu.text=b,bu.start=c.start,bu.end=c.end,a?"changed":e?"moved":!1}function b_(){var a=[],b=Math.max(0,bf.from.line-1),c=Math.min(bb.length,bf.to.line+2);for(var d=b;db)&&X.scrollIntoView()}function cc(){var a=cI(bf.inverted?bf.from:bf.to);return cd(a.x,a.y,a.x,a.yBot)}function cd(a,b,c,d){var e=cM(),f=cL(),h=cK();b+=f,d+=f,a+=e,c+=e;var i=E.clientHeight,j=E.scrollTop,k=!1,l=!0;bj+i&&(E.scrollTop=d+h-i,k=!0);var m=E.clientWidth,n=E.scrollLeft,o=g.fixedGutter?U.clientWidth:0;return am+n&&(E.scrollLeft=c+10-m,k=!0,c>R.clientWidth&&(l=!1)),k&&g.onScroll&&g.onScroll(bB),l}function ce(){var a=cK(),b=E.scrollTop-cL();return{from:Math.min(bb.length,Math.max(0,Math.floor(b/a))),to:Math.min(bb.length,Math.ceil((b+E.clientHeight)/a))}}function cf(a){if(!E.clientWidth){bq=br=0;return}var b=a===!0?[]:[{from:bq,to:br,domStart:0}];for(var c=0,d=a.length||0;cj.from&&f.push({from:j.from,to:e.from,domStart:j.domStart}),e.to=m)break;if(j.domStart>o||j.from>q)n.push({from:q,to:j.from,domSize:j.domStart-o,domStart:o}),r+=j.from-q;q=j.to,o=j.domStart+(j.to-j.from)}if(o!=p||q!=m)r+=Math.abs(m-q),n.push({from:q,to:m,domSize:p-o,domStart:o}),m-q!=p-o&&(bp=!0);if(!n.length)return;Y.style.display="none",r>(k.to-k.from)*.3?cg(l=Math.max(k.from-10,0),m=Math.min(k.to+7,bb.length)):ch(n),Y.style.display="";var s=l!=bq||m!=br||bs!=E.clientHeight;bq=l,br=m,T.style.top=l*cK()+"px",s&&(bs=E.clientHeight,R.style.height=bb.length*cK()+2*cL()+"px"),(s||bp)&&ci(),bx==null&&(bx=cF(bw)),bx>E.clientWidth?(W.style.width=bx+"px",R.style.width="",R.style.width=E.scrollWidth+"px"):W.style.width=R.style.width="";if(Y.childNodes.length!=br-bq)throw new Error("BAD PATCH! "+JSON.stringify(n)+" size="+(br-bq)+" nodes="+Y.childNodes.length);cj()}function cg(a,b){var c=[],d={line:a,ch:0},e=I(bf.from,d)&&!I(bf.to,d);for(var f=a;f0;--k)Y.removeChild(j?j.previousSibling:Y.lastChild);else if(i){for(var k=Math.max(0,i);k>0;--k)Y.insertBefore(n.createElement("pre"),j);for(var k=Math.max(0,-i);k>0;--k)Y.removeChild(j?j.previousSibling:Y.lastChild)}var l=Y.childNodes[h.domStart+d],m=b=h.from;for(var k=h.from;k':"
      ",f,"
      ")}U.style.display="none",V.innerHTML=c.join("");var h=String(bb.length).length,i=V.firstChild,j=G(i),k="";while(j.length+k.length=bb.length)return{line:bb.length-1,ch:bb[bb.length-1].text.length};var b=a.ch,c=bb[a.line].text.length;return b==null||b>c?{line:a.line,ch:c}:b<0?{line:a.line,ch:0}:a}function cp(a){var b=Math.floor(E.clientHeight/cK()),c=bf.inverted?bf.from:bf.to;cm(c.line+Math.max(b-1,1)*(a?1:-1),c.ch,!0)}function cq(a){var b=a?{line:0,ch:0}:{line:bb.length-1,ch:bb[bb.length-1].text.length};ck(b,b)}function cr(){var a=bb.length-1;cl({line:0,ch:0},{line:a,ch:bb[a].text.length})}function cs(a){var b=bb[a.line].text,c=a.ch,d=a.ch;while(c>0&&/\w/.test(b.charAt(c-1)))--c;while(d-1&&(a==null&&(a=f),b=f)}a!=null&&bl.push({from:a,to:b+1})}}function cB(a,b,c){return typeof a=="number"&&(a=bb[cn(a)]),a.gutterMarker={text:b,style:c},bp=!0,a}function cC(a){typeof a=="number"&&(a=bb[cn(a)]),a.gutterMarker=null,bp=!0}function cD(a,b){if(typeof a=="number"){var c=a;a=bb[cn(a)]}else{var c=N(bb,a);if(c==-1)return null}return a.className!=b&&(a.className=b,bl.push({from:c,to:c+1})),a}function cE(a){if(typeof a=="number"){var b=a;a=bb[a];if(!a)return null}else{var b=N(bb,a);if(b==-1)return null}var c=a.gutterMarker;return{line:b,text:a.text,markerText:c&&c.text,markerClass:c&&c.style}}function cF(a){return S.innerHTML="
      x
      ",S.firstChild.firstChild.firstChild.nodeValue=a,S.firstChild.firstChild.offsetWidth||10}function cG(a,b){return b==0?0:(S.innerHTML="
      "+bb[a].getHTML(null,null,!1,b)+"
      ",S.firstChild.firstChild.offsetWidth)}function cH(a,b){function e(a){return S.innerHTML="
      "+c.getHTML(null,null,!1,a)+"
      ",S.firstChild.firstChild.offsetWidth}if(b<=0)return 0;var c=bb[a],d=c.text,f=0,g=0,h=d.length,i,j=Math.min(h,Math.ceil(b/cF("x")));for(;;){var k=e(j);if(k<=b&&ji)return h;j=Math.floor(h*.8),k=e(j),kb-g?f:h;var l=Math.ceil((f+h)/2),m=e(l);m>b?(h=l,i=m):(f=l,g=m)}}function cI(a,b){var c=cK(),d=a.line-(b?bq:0);return{x:cG(a.line,a.ch),y:d*c,yBot:(d+1)*c}}function cJ(a){var b=cI(a,!0),c=F(W);return{x:c.left+b.x,y:c.top+b.y,yBot:c.top+b.yBot}}function cK(){var a=Y.childNodes.length;return a?Y.offsetHeight/a||1:(S.innerHTML="
      x
      ",S.firstChild.offsetHeight||1)}function cL(){return W.offsetTop}function cM(){return W.offsetLeft}function cN(a,b){var c=F(E,!0),d,e;try{d=a.clientX,e=a.clientY}catch(a){return null}if(!b&&(d-c.left>E.clientWidth||e-c.top>E.clientHeight))return null;var f=F(W,!0),g=bq+Math.floor((e-f.top)/cK());return co({line:g,ch:cH(cn(g),d-f.left)})}function cO(a){function e(){var a=O(D.value).join("\n");a!=d&&c$(bT)(a,"end"),C.style.position="relative",D.style.cssText=c,bo=!1,b_(),bY()}var b=cN(a);if(!b||window.opera)return;(H(bf.from,bf.to)||I(b,bf.from)||!I(b,bf.to))&&c$(cm)(b.line,b.ch);var c=D.style.cssText;C.style.position="absolute",D.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(a.clientY-5)+"px; left: "+(a.clientX-5)+"px; z-index: 1000; background: white; "+"border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",bo=!0;var d=D.value=bW();ca(),Q(D,0,D.value.length);if(v){o(a);var f=r(window,"mouseup",function(){f(),setTimeout(e,20)},!0)}else setTimeout(e,50)}function cP(){clearInterval(_);var a=!0;X.style.visibility="",_=setInterval(function(){X.style.visibility=(a=!a)?"":"hidden"},650)}function cR(a){function p(a,b,c){if(!a.text)return;var d=a.styles,e=g?0:a.text.length-1,f;for(var i=g?0:d.length-2,j=g?d.length:-2;i!=j;i+=2*h){var k=d[i];if(d[i+1]!=null&&d[i+1]!=m){e+=h*k.length;continue}for(var l=g?0:k.length-1,p=g?k.length:-1;l!=p;l+=h,e+=h)if(e>=b&&e"==g)n.push(f);else{if(n.pop()!=q.charAt(0))return{pos:e,match:!1};if(!n.length)return{pos:e,match:!0}}}}}var b=bf.inverted?bf.from:bf.to,c=bb[b.line],d=b.ch-1,e=d>=0&&cQ[c.text.charAt(d)]||cQ[c.text.charAt(++d)];if(!e)return;var f=e.charAt(0),g=e.charAt(1)==">",h=g?1:-1,i=c.styles;for(var j=d+1,k=0,l=i.length;ke;--d){if(d==0)return 0;var f=bb[d-1];if(f.stateAfter)return d;var g=f.indentation();if(c==null||b>g)c=d-1,b=g}return c}function cT(a){var b=cS(a),c=b&&bb[b-1].stateAfter;c?c=e(ba,c):c=f(ba);for(var d=b;d=bb.length)continue;var d=cS(c),h=d&&bb[d-1].stateAfter;h?h=e(ba,h):h=f(ba);var i=0,j=ba.compareStates,k=!1;for(var l=d,m=bb.length;la){bc.push(l),cW(g.workDelay),k&&bl.push({from:c,to:l+1});return}var p=n.highlight(ba,h);p&&(k=!0),n.stateAfter=e(ba,h);if(j){if(o&&j(o,h))break}else if(p!==!1||!o)i=0;else if(++i>3)break}k&&bl.push({from:c,to:l+1})}b&&g.onHighlightComplete&&g.onHighlightComplete(bB)}function cW(a){if(!bc.length)return;$.set(a,c$(cV))}function cX(){bk=null,bl=[],bm=bn=!1}function cY(){var a=!1;bn&&(a=!cc()),bl.length?cf(bl):(bn&&cj(),bp&&ci()),a&&cc(),bn&&(cb(),cP()),be&&!bo&&(bk===!0||bk!==!1&&bn)&&b_(),bn&&g.matchBrackets&&setTimeout(c$(function(){bv&&(bv(),bv=null),cR(!1)}),20);var b=bm;bn&&g.onCursorActivity&&g.onCursorActivity(bB),b&&g.onChange&&bB&&g.onChange(bB,b)}function c$(a){return function(){cZ++||cX();try{var b=a.apply(this,arguments)}finally{--cZ||cY()}return b}}function c_(a,b,c){this.atOccurrence=!1,c==null&&(c=typeof a=="string"&&a==a.toLowerCase()),b&&typeof b=="object"?b=co(b):b={line:0,ch:0},this.pos={from:b,to:b};if(typeof a!="string")this.matches=function(b,c){if(b){var d=bb[c.line].text.slice(0,c.ch),e=d.match(a),f=0;while(e){var g=d.indexOf(e[0]);f+=g,d=d.slice(g+1);var h=d.match(a);if(h)e=h;else break;f++}}else var d=bb[c.line].text.slice(c.ch),e=d.match(a),f=e&&c.ch+d.indexOf(e[0]);if(e)return{from:{line:c.line,ch:f},to:{line:c.line,ch:f+e[0].length},match:e}};else{c&&(a=a.toLowerCase());var d=c?function(a){return a.toLowerCase()}:function(a){return a},e=a.split("\n");e.length==1?this.matches=function(b,c){var e=d(bb[c.line].text),f=a.length,g;if(b?c.ch>=f&&(g=e.lastIndexOf(a,c.ch-f))!=-1:(g=e.indexOf(a,c.ch))!=-1)return{from:{line:c.line,ch:g},to:{line:c.line,ch:g+f}}}:this.matches=function(a,b){var c=b.line,f=a?e.length-1:0,g=e[f],h=d(bb[c].text),i=a?h.indexOf(g)+g.length:h.lastIndexOf(g);if(a?i>=b.ch||i!=g.length:i<=b.ch||i!=h.length-g.length)return;for(;;){if(a?!c:c==bb.length-1)return;h=d(bb[c+=a?-1:1].text),g=e[a?--f:++f];if(f>0&&f
      '+'
      '+'
      '+'
      '+'
      '+'
      '+'
       
      '+"
      "+"
      ",b.appendChild?b.appendChild(x):b(x);var C=x.firstChild,D=C.firstChild,E=x.lastChild,R=E.firstChild,S=R.firstChild,T=S.nextSibling,U=T.firstChild,V=U.firstChild,W=U.nextSibling.firstChild,X=W.firstChild,Y=X.nextSibling;g.tabindex!=null&&(D.tabindex=g.tabindex),!g.gutter&&!g.lineNumbers&&(U.style.display="none");var Z=new s,$=new s,_,ba,bb=[new h("")],bc,bd=new j,be;cy();var bf={from:{line:0,ch:0},to:{line:0,ch:0},inverted:!1},bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq=0,br=0,bs=0,bt=null,bu,bv,bw="",bx;c$(function(){bC(g.value||""),bk=!1})(),r(E,"mousedown",c$(bE)),r(E,"dblclick",c$(bF)),r(W,"dragstart",bH),v||r(E,"contextmenu",cO),r(E,"scroll",function(){cf([]),g.fixedGutter&&(U.style.left=E.scrollLeft+"px"),g.onScroll&&g.onScroll(bB)}),r(window,"resize",function(){cf(!0)}),r(D,"keyup",c$(bJ)),r(D,"keydown",c$(bI)),r(D,"keypress",c$(bK)),r(D,"focus",bL),r(D,"blur",bM),r(E,"dragenter",o),r(E,"dragover",o),r(E,"drop",c$(bG)),r(E,"paste",function(){ca(),bZ()}),r(D,"paste",function(){bZ()}),r(D,"cut",function(){bZ()});var by;try{by=n.activeElement==D}catch(bz){}by?setTimeout(bL,20):bM();var bB=x.CodeMirror={getValue:bD,setValue:c$(bC),getSelection:bW,replaceSelection:c$(bT),focus:function(){ca(),bL(),bZ()},setOption:function(a,b){g[a]=b,a=="lineNumbers"||a=="gutter"||a=="firstLineNumber"?c$(cz)():a=="mode"||a=="indentUnit"?cy():a=="readOnly"&&b=="nocursor"?D.blur():a=="theme"&&(E.className=E.className.replace(/cm-s-\w+/,"cm-s-"+b))},getOption:function(a){return g[a]},undo:c$(bP),redo:c$(bQ),indentLine:c$(function(a,b){bA(a)&&cx(a,b==null?"smart":b?"add":"subtract")}),historySize:function(){return{undo:bd.done.length,redo:bd.undone.length}},matchBrackets:c$(function(){cR(!0)}),getTokenAt:function(a){return a=co(a),bb[a.line].getTokenAt(ba,cT(a.line),a.ch)},getStateAfter:function(a){return a=cn(a==null?bb.length-1:a),cT(a+1)},cursorCoords:function(a){return a==null&&(a=bf.inverted),cJ(a?bf.from:bf.to)},charCoords:function(a){return cJ(co(a))},coordsChar:function(a){var b=F(W),c=cn(Math.min(bb.length-1,bq+Math.floor((a.y-b.top)/cK())));return co({line:c,ch:cH(cn(c),a.x-b.left)})},getSearchCursor:function(a,b,c){return new c_(a,b,c)},markText:c$(function(a,b,c){return c$(cA(a,b,c))}),setMarker:c$(cB),clearMarker:c$(cC),setLineClass:c$(cD),lineInfo:cE,addWidget:function(a,b,c,d,e){a=cI(co(a));var f=a.yBot,g=a.x;b.style.position="absolute",R.appendChild(b);if(d=="over")f=a.y;else if(d=="near"){var h=Math.max(E.offsetHeight,bb.length*cK()),i=Math.max(R.clientWidth,W.clientWidth)-cM();a.yBot+b.offsetHeight>h&&a.y>b.offsetHeight&&(f=a.y-b.offsetHeight),g+b.offsetWidth>i&&(g=i-b.offsetWidth)}b.style.top=f+cL()+"px",b.style.left=b.style.right="",e=="right"?(g=R.clientWidth-b.offsetWidth,b.style.right="0px"):(e=="left"?g=0:e=="middle"&&(g=(R.clientWidth-b.offsetWidth)/2),b.style.left=g+cM()+"px"),c&&cd(g,f,g+b.offsetWidth,f+b.offsetHeight)},lineCount:function(){return bb.length},getCursor:function(a){return a==null&&(a=bf.inverted),J(a?bf.from:bf.to)},somethingSelected:function(){return!H(bf.from,bf.to)},setCursor:c$(function(a,b){b==null&&typeof a.line=="number"?cm(a.line,a.ch):cm(a,b)}),setSelection:c$(function(a,b){cl(co(a),co(b||a))}),getLine:function(a){if(bA(a))return bb[a].text},setLine:c$(function(a,b){bA(a)&&bS(b,{line:a,ch:0},{line:a,ch:bb[a].text.length})}),removeLine:c$(function(a){bA(a)&&bS("",{line:a,ch:0},co({line:a+1,ch:0}))}),replaceRange:c$(bS),getRange:function(a,b){return bV(co(a),co(b))},operation:function(a){return c$(a)()},refresh:function(){cf(!0)},getInputField:function(){return D},getWrapperElement:function(){return x},getScrollerElement:function(){return E},getGutterElement:function(){return U}},bX=!1,cQ={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},cZ=0;c_.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(a){function d(a){var c={line:a,ch:0};return b.pos={from:c,to:c},b.atOccurrence=!1,!1}var b=this,c=co(a?this.pos.from:this.pos.to);for(;;){if(this.pos=this.matches(a,c))return this.atOccurrence=!0,this.pos.match||!0;if(a){if(!c.line)return d(0);c={line:c.line-1,ch:bb[c.line-1].text.length}}else{if(c.line==bb.length-1)return d(bb.length);c={line:c.line+1,ch:0}}}},from:function(){if(this.atOccurrence)return J(this.pos.from)},to:function(){if(this.atOccurrence)return J(this.pos.to)},replace:function(a){var b=this;this.atOccurrence&&c$(function(){b.pos.to=bS(a,b.pos.from,b.pos.to)})()}};for(var da in d)d.propertyIsEnumerable(da)&&!bB.propertyIsEnumerable(da)&&(bB[da]=d[da]);return bB}function e(a,b){if(b===!0)return b;if(a.copyState)return a.copyState(b);var c={};for(var d in b){var e=b[d];e instanceof Array&&(e=e.concat([])),c[d]=e}return c}function f(a,b,c){return a.startState?a.startState(b,c):!0}function g(a){this.pos=this.start=0,this.string=a}function h(a,b){this.styles=b||[a,null],this.stateAfter=null,this.text=a,this.marked=this.gutterMarker=this.className=null}function i(a,b,c,d){for(var e=0,f=0,g=0;fa&&d.push(h.slice(a-f,Math.min(h.length,b-f)),c[e+1]),i>=a&&(g=1)):g==1&&(i>b?d.push(h.slice(0,b-f),c[e+1]):d.push(h,c[e+1])),f=i}}function j(){this.time=0,this.done=[],this.undone=[]}function k(){o(this)}function l(a){return a.stop||(a.stop=k),a}function m(a){a.preventDefault?a.preventDefault():a.returnValue=!1}function n(a){a.stopPropagation?a.stopPropagation():a.cancelBubble=!0}function o(a){m(a),n(a)}function p(a){return a.target||a.srcElement}function q(a){if(a.which)return a.which;if(a.button&1)return 1;if(a.button&2)return 3;if(a.button&4)return 2}function r(a,b,c,d){function e(a){c(a||window.event)}if(typeof a.addEventListener=="function"){a.addEventListener(b,e,!1);if(d)return function(){a.removeEventListener(b,e,!1)}}else{a.attachEvent("on"+b,e);if(d)return function(){a.detachEvent("on"+b,e)}}}function s(){this.id=null}function D(a,b){b==null&&(b=a.search(/[^\s\u00a0]/),b==-1&&(b=a.length));for(var c=0,d=0;c=0&&d>=0;--c,--d)if(a.charAt(c)!=b.charAt(d))break;return d+1}function N(a,b){if(a.indexOf)return a.indexOf(b);for(var c=0,d=a.length;c=this.string.length},sol:function(){return this.pos==0},peek:function(){return this.string.charAt(this.pos)},next:function(){if(this.posb},eatSpace:function(){var a=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>a},skipToEnd:function(){this.pos=this.string.length},skipTo:function(a){var b=this.string.indexOf(a,this.pos);if(b>-1)return this.pos=b,!0},backUp:function(a){this.pos-=a},column:function(){return D(this.string,this.start)},indentation:function(){return D(this.string)},match:function(a,b,c){if(typeof a!="string"){var e=this.string.slice(this.pos).match(a);return e&&b!==!1&&(this.pos+=e[0].length),e}function d(a){return c?a.toLowerCase():a}if(d(this.string).indexOf(d(a),this.pos)==this.pos)return b!==!1&&(this.pos+=a.length),!0},current:function(){return this.string.slice(this.start,this.pos)}},a.StringStream=g,h.prototype={replace:function(a,b,c){var d=[],e=this.marked;i(0,a,this.styles,d),c&&d.push(c,null),i(b,this.text.length,this.styles,d),this.styles=d,this.text=this.text.slice(0,a)+c+this.text.slice(b),this.stateAfter=null;if(e){var f=c.length-(b-a),g=this.text.length;function h(a){return a<=Math.min(b,b+f)?a:a+f}for(var j=0;j=g?l=!0:(k.from=h(k.from),k.to!=null&&(k.to=h(k.to)));if(l||k.from>=k.to)e.splice(j,1),j--}}},split:function(a,b){var c=[b,null];return i(a,this.text.length,this.styles,c),new h(b+this.text.slice(a),c)},addMark:function(a,b,c){var d=this.marked,e={from:a,to:b,style:c};return this.marked==null&&(this.marked=[]),this.marked.push(e),this.marked.sort(function(a,b){return a.from-b.from}),e},removeMark:function(a){var b=this.marked;if(!b)return;for(var c=0;c5e3){d[e++]=this.text.slice(c.pos),d[e++]=null;break}}return d.length!=e&&(d.length=e,f=!0),e&&d[e-2]!=i&&(f=!0),f||(d.length<5&&this.text.length<10?null:!1)},getTokenAt:function(a,b,c){var d=this.text,e=new g(d);while(e.pos',L(a),""):e.push(L(a))}var e=[];c&&e.push(this.className?'
      ':"
      ");var g=this.styles,h=this.text,i=this.marked;a==b&&(a=null);var j=h.length;d!=null&&(j=Math.min(d,j));if(!h&&d==null)f(" ",a!=null&&b==null?"CodeMirror-selected":null);else if(!i&&a==null)for(var k=0,l=0;lj&&(m=m.slice(0,j-l)),l+=o,f(m,n&&"cm-"+n)}else{var p=0,k=0,q="",n,r=0,s=-1,t=null;function u(){i&&(s+=1,t=sp)v=a;else if(b==null||b>p)w=" CodeMirror-selected",b!=null&&(v=Math.min(v,b));while(t&&t.to!=null&&t.to<=p)u();t&&(t.from>p?v=Math.min(v,t.from):(w+=" "+t.style,t.to!=null&&(v=Math.min(v,t.to))));for(;;){var x=p+q.length,y=n;w&&(y=n?n+w:w),f(x>v?q.slice(0,v-p):q,y);if(x>=v){q=q.slice(v-p),p=v;break}p=x,q=g[k++],n="cm-"+g[k++]}}a!=null&&b==null&&f(" ","CodeMirror-selected")}return c&&e.push("
      "),e.join("")}},j.prototype={addChange:function(a,b,c){this.undone.length=0;var d=+(new Date),e=this.done[this.done.length-1];if(d-this.time>400||!e||e.start>a+b||e.start+e.added=0;--g)e.old.unshift(c[g]);e.added+=e.start-a,e.start=a}else e.start-1&&(y="\r\n")})();var z=8,A=/Mac/.test(navigator.platform),B={};for(var C=35;C<=40;++C)B[C]=B["c"+C]=!0;var K=document.createElement("div");a.htmlEscape=L;var O,P,Q;return"\n\nb".split(/\n/).length!=3?O=function(a){var b=0,c,d=[];while((c=a.indexOf("\n",b))>-1)d.push(a.slice(b,a.charAt(c-1)=="\r"?c-1:c)),b=c+1;return d.push(a.slice(b)),d}:O=function(a){return a.split(/\r?\n/)},a.splitLines=O,window.getSelection?(P=function(a){try{return{start:a.selectionStart,end:a.selectionEnd}}catch(b){return null}},x?Q=function(a,b,c){b==c?a.setSelectionRange(b,c):(a.setSelectionRange(b,c-1),window.getSelection().modify("extend","forward","character"))}:Q=function(a,b,c){try{a.setSelectionRange(b,c)}catch(d){}}):(P=function(a){try{var b=a.ownerDocument.selection.createRange()}catch(c){return null}if(!b||b.parentElement()!=a)return null;var d=a.value,e=d.length,f=a.createTextRange();f.moveToBookmark(b.getBookmark());var g=a.createTextRange();g.collapse(!1);if(f.compareEndPoints("StartToEnd",g)>-1)return{start:e,end:e};var h=-f.moveStart("character",-e);for(var i=d.indexOf("\r");i>-1&&i-1)return{start:h,end:e};var j=-f.moveEnd("character",-e);for(var i=d.indexOf("\r");i>-1&&i-1&&h-1&&h"):b?g.push(''+CodeMirror.htmlEscape(a)+""):g.push(CodeMirror.htmlEscape(a))}}var h=CodeMirror.splitLines(a),i=CodeMirror.startState(d);for(var j=0,k=h.length;j").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
      a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="
      "+""+"
      ",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="
      t
      ",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
      ",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( 3 | a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

      ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
      ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,"
      ","
      "],thead:[1,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],col:[2,"","
      "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
      ","
      "]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f 4 | .clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
      ").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); --------------------------------------------------------------------------------